devtools_instrumentation.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. #ifndef ANDROID_WEBVIEW_COMMON_DEVTOOLS_INSTRUMENTATION_H_
  5. #define ANDROID_WEBVIEW_COMMON_DEVTOOLS_INSTRUMENTATION_H_
  6. #include "base/trace_event/trace_event.h"
  7. namespace android_webview {
  8. namespace devtools_instrumentation {
  9. namespace internal {
  10. constexpr const char* Category() {
  11. // Declared as a constexpr function to have an external linkage and to be
  12. // known at compile-time.
  13. return "Java,devtools,disabled-by-default-devtools.timeline";
  14. }
  15. const char kEmbedderCallback[] = "EmbedderCallback";
  16. const char kCallbackNameArgument[] = "callbackName";
  17. } // namespace internal
  18. class ScopedEmbedderCallbackTask {
  19. public:
  20. explicit ScopedEmbedderCallbackTask(const char* callback_name) {
  21. TRACE_EVENT_BEGIN1(internal::Category(), internal::kEmbedderCallback,
  22. internal::kCallbackNameArgument, callback_name);
  23. }
  24. ScopedEmbedderCallbackTask(const ScopedEmbedderCallbackTask&) = delete;
  25. ScopedEmbedderCallbackTask& operator=(const ScopedEmbedderCallbackTask&) =
  26. delete;
  27. ~ScopedEmbedderCallbackTask() {
  28. TRACE_EVENT_END0(internal::Category(), internal::kEmbedderCallback);
  29. }
  30. };
  31. } // namespace devtools_instrumentation
  32. } // namespace android_webview
  33. #endif // ANDROID_WEBVIEW_COMMON_DEVTOOLS_INSTRUMENTATION_H_