1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef ANDROID_WEBVIEW_COMMON_DEVTOOLS_INSTRUMENTATION_H_
6 #define ANDROID_WEBVIEW_COMMON_DEVTOOLS_INSTRUMENTATION_H_
7 
8 #include "base/macros.h"
9 #include "base/trace_event/trace_event.h"
10 
11 namespace android_webview {
12 namespace devtools_instrumentation {
13 
14 namespace internal {
Category()15 constexpr const char* Category() {
16   // Declared as a constexpr function to have an external linkage and to be
17   // known at compile-time.
18   return "Java,devtools,disabled-by-default-devtools.timeline";
19 }
20 const char kEmbedderCallback[] = "EmbedderCallback";
21 const char kCallbackNameArgument[] = "callbackName";
22 }  // namespace internal
23 
24 class ScopedEmbedderCallbackTask {
25  public:
ScopedEmbedderCallbackTask(const char * callback_name)26   explicit ScopedEmbedderCallbackTask(const char* callback_name) {
27     TRACE_EVENT_BEGIN1(internal::Category(), internal::kEmbedderCallback,
28                        internal::kCallbackNameArgument, callback_name);
29   }
~ScopedEmbedderCallbackTask()30   ~ScopedEmbedderCallbackTask() {
31     TRACE_EVENT_END0(internal::Category(), internal::kEmbedderCallback);
32   }
33 
34  private:
35   DISALLOW_COPY_AND_ASSIGN(ScopedEmbedderCallbackTask);
36 };
37 
38 }  // namespace devtools_instrumentation
39 }  // namespace android_webview
40 
41 #endif  // ANDROID_WEBVIEW_COMMON_DEVTOOLS_INSTRUMENTATION_H_
42