Commit 50f371fc authored by Alex Leung's avatar Alex Leung Committed by Commit Bot

[Chromecast] Move elideLogcat to background thread.

BUG=b:113066827

Change-Id: Ic0e1d434eadbddf38f0fc6b2a5a6b1f364e947af
Reviewed-on: https://chromium-review.googlesource.com/1188588Reviewed-by: default avatarLuke Halliwell <halliwell@chromium.org>
Commit-Queue: Alex Leung <alexleung@google.com>
Cr-Commit-Position: refs/heads/master@{#586036}
parent 7e6a7aed
......@@ -4,6 +4,9 @@
package org.chromium.chromecast.shell;
import android.os.SystemClock;
import org.chromium.base.AsyncTask;
import org.chromium.base.Log;
import org.chromium.base.VisibleForTesting;
......@@ -17,26 +20,37 @@ import java.io.IOException;
* Javascript console messages.
*/
abstract class ElidedLogcatProvider {
private static final String TAG = "cr_ElidedLogcatProvider";
private static final String TAG = "cr_ElidedLogcatProv";
protected abstract void getRawLogcat(RawLogcatCallback rawLogcatCallback);
protected interface RawLogcatCallback { public void onLogsDone(BufferedReader logsFileReader); }
public interface LogcatCallback { public void onLogsDone(String logs); }
protected interface RawLogcatCallback {
public void onLogsDone(BufferedReader logsFileReader);
}
public interface LogcatCallback {
public void onLogsDone(String logs);
}
public void getElidedLogcat(LogcatCallback callback) {
getRawLogcat((BufferedReader logsFileReader)
-> callback.onLogsDone(elideLogcat(logsFileReader)));
getRawLogcat((BufferedReader logsFileReader) -> {
// Run elideLogcat in background thread because it can be very slow
new AsyncTaskRunner(AsyncTask.THREAD_POOL_EXECUTOR).doAsync(
() -> elideLogcat(logsFileReader), callback::onLogsDone);
});
}
@VisibleForTesting
protected static String elideLogcat(BufferedReader logsFileReader) {
long startTimeMillis = SystemClock.elapsedRealtime();
StringBuilder builder = new StringBuilder();
try (BufferedReader autoClosableBufferedReader = logsFileReader) {
String logLn;
while ((logLn = autoClosableBufferedReader.readLine()) != null) {
builder.append(LogcatElision.elide(logLn + "\n"));
}
long elapsedMillis = SystemClock.elapsedRealtime() - startTimeMillis;
Log.i(TAG, "elideLogcat took " + elapsedMillis + " ms");
} catch (IOException e) {
Log.e(TAG, "Can't read logs", e);
} finally {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment