summaryrefslogtreecommitdiffstats
path: root/chromium/base/trace_event/builtin_categories.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-13 15:05:36 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-14 10:33:47 +0000
commite684a3455bcc29a6e3e66a004e352dea4e1141e7 (patch)
treed55b4003bde34d7d05f558f02cfd82b2a66a7aac /chromium/base/trace_event/builtin_categories.h
parent2b94bfe47ccb6c08047959d1c26e392919550e86 (diff)
BASELINE: Update Chromium to 72.0.3626.110 and Ninja to 1.9.0
Change-Id: Ic57220b00ecc929a893c91f5cc552f5d3e99e922 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/base/trace_event/builtin_categories.h')
-rw-r--r--chromium/base/trace_event/builtin_categories.h373
1 files changed, 373 insertions, 0 deletions
diff --git a/chromium/base/trace_event/builtin_categories.h b/chromium/base/trace_event/builtin_categories.h
new file mode 100644
index 00000000000..e362ff543b4
--- /dev/null
+++ b/chromium/base/trace_event/builtin_categories.h
@@ -0,0 +1,373 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BASE_TRACE_EVENT_BUILTIN_CATEGORIES_H_
+#define BASE_TRACE_EVENT_BUILTIN_CATEGORIES_H_
+
+#include "base/macros.h"
+#include "base/stl_util.h"
+#include "base/trace_event/common/trace_event_common.h"
+#include "build/build_config.h"
+
+// List of builtin category names. If you want to use a new category name in
+// your code and you get a static assert, this is the right place to register
+// the name. If the name is going to be used only for testing, please add it to
+// |kIgnoredCategoriesForTesting| instead.
+// Parameter |X| must be a *macro* that takes a single |name| string argument,
+// denoting a category name.
+#define INTERNAL_TRACE_LIST_BUILTIN_CATEGORIES(X) \
+ /* These entries must go first to be consistent with the \
+ * CategoryRegistry::kCategory* consts.*/ \
+ X("tracing categories exhausted; must increase kMaxCategories") \
+ X("tracing already shutdown") \
+ X("__metadata") \
+ /* The rest of the list is in alphabetical order */ \
+ X("accessibility") \
+ X("AccountFetcherService") \
+ X("android_webview") \
+ X("audio") \
+ X("base") \
+ X("benchmark") \
+ X("blink") \
+ X("blink.animations") \
+ X("blink.console") \
+ X("blink_gc") \
+ X("blink.net") \
+ X("blink_style") \
+ X("blink.user_timing") \
+ X("Blob") \
+ X("browser") \
+ X("browsing_data") \
+ X("CacheStorage") \
+ X("camera") \
+ X("cast_perf_test") \
+ X("cast.stream") \
+ X("cc") \
+ X("cc.debug") \
+ X("cdp.perf") \
+ X("chromeos") \
+ X("cma") \
+ X("compositor") \
+ X("content") \
+ X("cpu_profiler") \
+ X("devtools") \
+ X("devtools.timeline") \
+ X("devtools.timeline.async") \
+ X("download") \
+ X("download_service") \
+ X("drm") \
+ X("drmcursor") \
+ X("dwrite") \
+ X("DXVA Decoding") \
+ X("EarlyJava") \
+ X("evdev") \
+ X("event") \
+ X("exo") \
+ X("explore_sites") \
+ X("FileSystem") \
+ X("file_system_provider") \
+ X("font_loader") \
+ X("font_service") \
+ X("GAMEPAD") \
+ X("gpu") \
+ X("gpu.capture") \
+ X("headless") \
+ X("hwoverlays") \
+ X("identity") \
+ X("IndexedDB") \
+ X("input") \
+ X("io") \
+ X("ipc") \
+ X("Java") \
+ X("jni") \
+ X("jpeg") \
+ X("latency") \
+ X("latencyInfo") \
+ X("leveldb") \
+ X("loader") \
+ X("loading") \
+ X("login") \
+ X("media") \
+ X("media_router") \
+ X("memory") \
+ X("midi") \
+ X("mojom") \
+ X("mus") \
+ X("native") \
+ X("navigation") \
+ X("net") \
+ X("netlog") \
+ X("offline_pages") \
+ X("omnibox") \
+ X("oobe") \
+ X("ozone") \
+ X("p2p") \
+ X("page-serialization") \
+ X("pepper") \
+ X("ppapi") \
+ X("ppapi proxy") \
+ X("rail") \
+ X("renderer") \
+ X("renderer_host") \
+ X("renderer.scheduler") \
+ X("RLZ") \
+ X("safe_browsing") \
+ X("screenlock_monitor") \
+ X("sequence_manager") \
+ X("service_manager") \
+ X("ServiceWorker") \
+ X("shell") \
+ X("shortcut_viewer") \
+ X("shutdown") \
+ X("SiteEngagement") \
+ X("skia") \
+ X("startup") \
+ X("sync") \
+ X("sync_lock_contention") \
+ X("task_scheduler") \
+ X("test_gpu") \
+ X("test_tracing") \
+ X("toplevel") \
+ X("ui") \
+ X("v8") \
+ X("v8.execute") \
+ X("ValueStoreFrontend::Backend") \
+ X("views") \
+ X("views.frame") \
+ X("viz") \
+ X("vk") \
+ X("wayland") \
+ X("Wayland") \
+ X("webaudio") \
+ X("WebCore") \
+ X("webrtc") \
+ X(TRACE_DISABLED_BY_DEFAULT("animation-worklet")) \
+ X(TRACE_DISABLED_BY_DEFAULT("audio-worklet")) \
+ X(TRACE_DISABLED_BY_DEFAULT("blink.debug")) \
+ X(TRACE_DISABLED_BY_DEFAULT("blink.debug.layout")) \
+ X(TRACE_DISABLED_BY_DEFAULT("blink.debug.layout.trees")) \
+ X(TRACE_DISABLED_BY_DEFAULT("blink.feature_usage")) \
+ X(TRACE_DISABLED_BY_DEFAULT("blink_gc")) \
+ X(TRACE_DISABLED_BY_DEFAULT("blink.image_decoding")) \
+ X(TRACE_DISABLED_BY_DEFAULT("blink.invalidation")) \
+ X(TRACE_DISABLED_BY_DEFAULT("cc")) \
+ X(TRACE_DISABLED_BY_DEFAULT("cc.debug")) \
+ X(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf")) \
+ X(TRACE_DISABLED_BY_DEFAULT("cc.debug.display_items")) \
+ X(TRACE_DISABLED_BY_DEFAULT("cc.debug.ipc")) \
+ X(TRACE_DISABLED_BY_DEFAULT("cc.debug.picture")) \
+ X(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler")) \
+ X(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler.frames")) \
+ X(TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler.now")) \
+ X(TRACE_DISABLED_BY_DEFAULT("cpu_profiler")) \
+ X(TRACE_DISABLED_BY_DEFAULT("cpu_profiler.debug")) \
+ X(TRACE_DISABLED_BY_DEFAULT("devtools.screenshot")) \
+ X(TRACE_DISABLED_BY_DEFAULT("devtools.timeline")) \
+ X(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.frame")) \
+ X(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking")) \
+ X(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.layers")) \
+ X(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.picture")) \
+ X(TRACE_DISABLED_BY_DEFAULT("file")) \
+ X(TRACE_DISABLED_BY_DEFAULT("gpu_cmd_queue")) \
+ X(TRACE_DISABLED_BY_DEFAULT("gpu.debug")) \
+ X(TRACE_DISABLED_BY_DEFAULT("gpu_decoder")) \
+ X(TRACE_DISABLED_BY_DEFAULT("gpu.device")) \
+ X(TRACE_DISABLED_BY_DEFAULT("gpu.service")) \
+ X(TRACE_DISABLED_BY_DEFAULT("ipc.flow")) \
+ X(TRACE_DISABLED_BY_DEFAULT("layer-element")) \
+ X(TRACE_DISABLED_BY_DEFAULT("lighthouse")) \
+ X(TRACE_DISABLED_BY_DEFAULT("loading")) \
+ X(TRACE_DISABLED_BY_DEFAULT("memory_coordinator")) \
+ X(TRACE_DISABLED_BY_DEFAULT("memory-infra")) \
+ X(TRACE_DISABLED_BY_DEFAULT("memory-infra.v8.code_stats")) \
+ X(TRACE_DISABLED_BY_DEFAULT("net")) \
+ X(TRACE_DISABLED_BY_DEFAULT("network")) \
+ X(TRACE_DISABLED_BY_DEFAULT("paint-worklet")) \
+ X(TRACE_DISABLED_BY_DEFAULT("power")) \
+ X(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler")) \
+ X(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler.debug")) \
+ X(TRACE_DISABLED_BY_DEFAULT("sequence_manager")) \
+ X(TRACE_DISABLED_BY_DEFAULT("sequence_manager.debug")) \
+ X(TRACE_DISABLED_BY_DEFAULT("sequence_manager.verbose_snapshots")) \
+ X(TRACE_DISABLED_BY_DEFAULT("skia")) \
+ X(TRACE_DISABLED_BY_DEFAULT("skia.gpu")) \
+ X(TRACE_DISABLED_BY_DEFAULT("skia.gpu.cache")) \
+ X(TRACE_DISABLED_BY_DEFAULT("SyncFileSystem")) \
+ X(TRACE_DISABLED_BY_DEFAULT("system_stats")) \
+ X(TRACE_DISABLED_BY_DEFAULT("task_scheduler_diagnostics")) \
+ X(TRACE_DISABLED_BY_DEFAULT("task_scheduler.flow")) \
+ X(TRACE_DISABLED_BY_DEFAULT("toplevel.flow")) \
+ X(TRACE_DISABLED_BY_DEFAULT("v8.compile")) \
+ X(TRACE_DISABLED_BY_DEFAULT("v8.cpu_profiler")) \
+ X(TRACE_DISABLED_BY_DEFAULT("v8.cpu_profiler.hires")) \
+ X(TRACE_DISABLED_BY_DEFAULT("v8.gc")) \
+ X(TRACE_DISABLED_BY_DEFAULT("v8.gc_stats")) \
+ X(TRACE_DISABLED_BY_DEFAULT("v8.ic_stats")) \
+ X(TRACE_DISABLED_BY_DEFAULT("v8.runtime")) \
+ X(TRACE_DISABLED_BY_DEFAULT("v8.runtime_stats")) \
+ X(TRACE_DISABLED_BY_DEFAULT("v8.runtime_stats_sampling")) \
+ X(TRACE_DISABLED_BY_DEFAULT("viz.debug.overlay_planes")) \
+ X(TRACE_DISABLED_BY_DEFAULT("viz.hit_testing_flow")) \
+ X(TRACE_DISABLED_BY_DEFAULT("viz.overdraw")) \
+ X(TRACE_DISABLED_BY_DEFAULT("viz.quads")) \
+ X(TRACE_DISABLED_BY_DEFAULT("viz.surface_id_flow")) \
+ X(TRACE_DISABLED_BY_DEFAULT("viz.surface_lifetime")) \
+ X(TRACE_DISABLED_BY_DEFAULT("viz.triangles")) \
+ X(TRACE_DISABLED_BY_DEFAULT("worker.scheduler"))
+
+#define INTERNAL_TRACE_INIT_CATEGORY_NAME(name) name,
+
+#define INTERNAL_TRACE_INIT_CATEGORY(name) {0, 0, name},
+
+namespace base {
+namespace trace_event {
+
+// Constexpr version of string comparison operator. |a| and |b| must be valid
+// C-style strings known at compile-time.
+constexpr bool StrEqConstexpr(const char* a, const char* b) {
+ for (; *a != '\0' && *b != '\0'; ++a, ++b) {
+ if (*a != *b)
+ return false;
+ }
+ return *a == *b;
+}
+
+// Tests for |StrEqConstexpr()|.
+static_assert(StrEqConstexpr("foo", "foo"), "strings should be equal");
+static_assert(!StrEqConstexpr("foo", "Foo"), "strings should not be equal");
+static_assert(!StrEqConstexpr("foo", "foo1"), "strings should not be equal");
+static_assert(!StrEqConstexpr("foo2", "foo"), "strings should not be equal");
+static_assert(StrEqConstexpr("", ""), "strings should be equal");
+static_assert(!StrEqConstexpr("foo", ""), "strings should not be equal");
+static_assert(!StrEqConstexpr("", "foo"), "strings should not be equal");
+static_assert(!StrEqConstexpr("ab", "abc"), "strings should not be equal");
+static_assert(!StrEqConstexpr("abc", "ab"), "strings should not be equal");
+
+// Static-only class providing access to the compile-time registry of trace
+// categories.
+class BuiltinCategories {
+ public:
+ // Returns a built-in category name at |index| in the registry.
+ static constexpr const char* At(size_t index) {
+ return kBuiltinCategories[index];
+ }
+
+ // Returns the amount of built-in categories in the registry.
+ static constexpr size_t Size() { return base::size(kBuiltinCategories); }
+
+ // Returns whether the category is either:
+ // - Properly registered in the builtin list.
+ // - Constists of several categories separated by commas.
+ // - Used only in tests.
+ // All trace categories are checked against this. A static_assert is triggered
+ // if at least one category fails this check.
+ static constexpr bool IsAllowedCategory(const char* category) {
+#if defined(OS_WIN) && defined(COMPONENT_BUILD)
+ return true;
+#else
+ return IsBuiltinCategory(category) ||
+ IsCommaSeparatedCategoryGroup(category) ||
+ IsCategoryForTesting(category);
+#endif
+ }
+
+ private:
+ // The array of built-in category names used for compile-time lookup.
+ static constexpr const char* kBuiltinCategories[] = {
+ INTERNAL_TRACE_LIST_BUILTIN_CATEGORIES(
+ INTERNAL_TRACE_INIT_CATEGORY_NAME)};
+
+ // The array of category names used only for testing. It's kept separately
+ // from the main list to avoid allocating the space for them in the binary.
+ static constexpr const char* kCategoriesForTesting[] = {
+ "\001\002\003\n\r",
+ "a",
+ "all",
+ "b",
+ "b1",
+ "c",
+ "c0",
+ "c1",
+ "c2",
+ "c3",
+ "c4",
+ "cat",
+ "cat1",
+ "cat2",
+ "cat3",
+ "cat4",
+ "cat5",
+ "cat6",
+ "category",
+ "drink",
+ "excluded_cat",
+ "filtered_cat",
+ "foo",
+ "inc",
+ "inc2",
+ "included",
+ "inc_wildcard_",
+ "inc_wildcard_abc",
+ "inc_wildchar_bla_end",
+ "inc_wildchar_x_end",
+ "kTestCategory",
+ "log",
+ "noise",
+ "other_included",
+ "test",
+ "test_category",
+ "Testing",
+ "TraceEventAgentTestCategory",
+ "unfiltered_cat",
+ "whitewashed",
+ "x",
+ TRACE_DISABLED_BY_DEFAULT("c9"),
+ TRACE_DISABLED_BY_DEFAULT("cat"),
+ TRACE_DISABLED_BY_DEFAULT("filtered_cat"),
+ TRACE_DISABLED_BY_DEFAULT("NotTesting"),
+ TRACE_DISABLED_BY_DEFAULT("Testing"),
+ TRACE_DISABLED_BY_DEFAULT("unfiltered_cat")};
+
+ // Returns whether |str| is in |array| of |array_len|.
+ static constexpr bool IsStringInArray(const char* str,
+ const char* const array[],
+ size_t array_len) {
+ for (size_t i = 0; i < array_len; ++i) {
+ if (StrEqConstexpr(str, array[i]))
+ return true;
+ }
+ return false;
+ }
+
+ // Returns whether |category_group| contains a ',' symbol, denoting that an
+ // event belongs to several categories. We don't add such strings in the
+ // builtin list but allow them to pass the static assert.
+ static constexpr bool IsCommaSeparatedCategoryGroup(
+ const char* category_group) {
+ for (; *category_group != '\0'; ++category_group) {
+ if (*category_group == ',')
+ return true;
+ }
+ return false;
+ }
+
+ // Returns whether |category| is used only for testing.
+ static constexpr bool IsCategoryForTesting(const char* category) {
+ return IsStringInArray(category, kCategoriesForTesting,
+ base::size(kCategoriesForTesting));
+ }
+
+ // Returns whether |category| is registered in the builtin list.
+ static constexpr bool IsBuiltinCategory(const char* category) {
+ return IsStringInArray(category, kBuiltinCategories,
+ base::size(kBuiltinCategories));
+ }
+
+ DISALLOW_IMPLICIT_CONSTRUCTORS(BuiltinCategories);
+};
+
+} // namespace trace_event
+} // namespace base
+
+#endif // BASE_TRACE_EVENT_BUILTIN_CATEGORIES_H_