Commit c04b3c78 authored by ssid's avatar ssid Committed by Commit Bot

Track tasks run by task runner wrapper

Chained tasks and async tasks are traced using the wrapper class name.
Add trace events to track these tasks

BUG=1136635

Change-Id: Ibafce336fbfc4f7491bd196b93b92bf42ad143e4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2491402Reviewed-by: default avatarTommy Nyquist <nyquist@chromium.org>
Commit-Queue: ssid <ssid@chromium.org>
Cr-Commit-Position: refs/heads/master@{#821440}
parent 26713999
...@@ -51,7 +51,7 @@ public abstract class AsyncTask<Result> { ...@@ -51,7 +51,7 @@ public abstract class AsyncTask<Result> {
private static final StealRunnableHandler STEAL_RUNNABLE_HANDLER = new StealRunnableHandler(); private static final StealRunnableHandler STEAL_RUNNABLE_HANDLER = new StealRunnableHandler();
private final Callable<Result> mWorker; private final Callable<Result> mWorker;
private final FutureTask<Result> mFuture; private final NamedFutureTask mFuture;
private volatile @Status int mStatus = Status.PENDING; private volatile @Status int mStatus = Status.PENDING;
...@@ -397,6 +397,14 @@ public abstract class AsyncTask<Result> { ...@@ -397,6 +397,14 @@ public abstract class AsyncTask<Result> {
return AsyncTask.this.getClass(); return AsyncTask.this.getClass();
} }
@Override
@SuppressWarnings("NoDynamicStringsInTraceEventCheck")
public void run() {
try (TraceEvent e = TraceEvent.scoped("AsyncTask.run: " + mFuture.getBlamedClass())) {
super.run();
}
}
@Override @Override
protected void done() { protected void done() {
try { try {
......
...@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.init; ...@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.init;
import android.util.Pair; import android.util.Pair;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.TraceEvent;
import org.chromium.base.task.PostTask; import org.chromium.base.task.PostTask;
import org.chromium.base.task.TaskTraits; import org.chromium.base.task.TaskTraits;
...@@ -27,10 +28,14 @@ public class ChainedTasks { ...@@ -27,10 +28,14 @@ public class ChainedTasks {
private final Runnable mRunAndPost = new Runnable() { private final Runnable mRunAndPost = new Runnable() {
@Override @Override
@SuppressWarnings("NoDynamicStringsInTraceEventCheck")
public void run() { public void run() {
if (mTasks.isEmpty()) return; if (mTasks.isEmpty()) return;
Pair<TaskTraits, Runnable> pair = mTasks.pop(); Pair<TaskTraits, Runnable> pair = mTasks.pop();
pair.second.run(); try (TraceEvent e = TraceEvent.scoped(
"ChainedTask.run: " + pair.second.getClass().getName())) {
pair.second.run();
}
if (!mTasks.isEmpty()) PostTask.postTask(mTasks.peek().first, this); if (!mTasks.isEmpty()) PostTask.postTask(mTasks.peek().first, this);
} }
}; };
......
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