Extract trace from TaskAnnotator::RunTask to its call sites

This extracts TRACE_EVENT() that brackets the task being executed
from TaskAnnotator::RunTask() to its call sites, so that it covers
time spent in the task observers on the top level (i.e. in MessageLoop).

BUG=508005
TBR=chirantan

Review URL: https://codereview.chromium.org/1237283006

Cr-Commit-Position: refs/heads/master@{#339091}


CrOS-Libchrome-Original-Commit: 596ad0cca35be6b20afba297d3e8c26ae52e3ec2
diff --git a/base/message_loop/message_loop.cc b/base/message_loop/message_loop.cc
index d4f9c54..6bd6730 100644
--- a/base/message_loop/message_loop.cc
+++ b/base/message_loop/message_loop.cc
@@ -19,6 +19,7 @@
 #include "base/thread_task_runner_handle.h"
 #include "base/threading/thread_local.h"
 #include "base/time/time.h"
+#include "base/trace_event/trace_event.h"
 #include "base/tracked_objects.h"
 
 #if defined(OS_MACOSX)
@@ -473,10 +474,11 @@
 
   HistogramEvent(kTaskRunEvent);
 
+  TRACE_TASK_EXECUTION("toplevel", pending_task);
+
   FOR_EACH_OBSERVER(TaskObserver, task_observers_,
                     WillProcessTask(pending_task));
-  task_annotator_.RunTask(
-      "MessageLoop::PostTask", "MessageLoop::RunTask", pending_task);
+  task_annotator_.RunTask("MessageLoop::PostTask", pending_task);
   FOR_EACH_OBSERVER(TaskObserver, task_observers_,
                     DidProcessTask(pending_task));