diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-02-13 15:05:36 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-02-14 10:33:47 +0000 |
commit | e684a3455bcc29a6e3e66a004e352dea4e1141e7 (patch) | |
tree | d55b4003bde34d7d05f558f02cfd82b2a66a7aac /chromium/base/trace_event/builtin_categories.h | |
parent | 2b94bfe47ccb6c08047959d1c26e392919550e86 (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.h | 373 |
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_ |