// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
option java_package = "org.chromium.components.metrics";
option java_outer_classname = "ExecutionContextProtos";
package metrics;
// Enums corresponding to the Chrome execution context in which data was
// collected.
// Chrome process type. Derived from content/public/common/process_type.h.
enum Process {
UNKNOWN_PROCESS = 0;
BROWSER_PROCESS = 1;
RENDERER_PROCESS = 2;
GPU_PROCESS = 3;
UTILITY_PROCESS = 4;
ZYGOTE_PROCESS = 5;
SANDBOX_HELPER_PROCESS = 6;
PPAPI_PLUGIN_PROCESS = 7;
PPAPI_BROKER_PROCESS = 8;
NETWORK_SERVICE_PROCESS = 10;
// A Chrome process not identified by any other enum. Defined for the benefit
// of Chrome OS. Do not use for the Chrome sampling profiler; define a new
// enum instead.
OTHER_PROCESS = 9;
}
// Chrome thread. This list is not exhaustive.
enum Thread {
UNKNOWN_THREAD = 0;
// The 'main thread' in various processes. In browser process, this is
// sometimes also called the 'ui thread'.
MAIN_THREAD = 1;
FILE_THREAD = 2; // Deprecated.
FILE_USER_BLOCKING_THREAD = 3; // Deprecated.
PROCESS_LAUNCHER_THREAD = 4; // Deprecated.
CACHE_THREAD = 5; // Deprecated.
IO_THREAD = 6;
DB_THREAD = 7; // Deprecated.
GPU_MAIN_THREAD = 8; // Deprecated.
RENDER_THREAD = 9; // Deprecated.
UTILITY_THREAD = 10; // Deprecated.
// Compositor thread (can be in both renderer and gpu processes).
COMPOSITOR_THREAD = 11;
// Task scheduler thread.
SCHEDULER_WORKER_THREAD = 13;
COMPOSITOR_TILE_WORKER_THREAD = 14;
SERVICE_WORKER_THREAD = 15;
// DedicatedWorker thread in the renderer process.
DEDICATED_WORKER_THREAD = 18;
// Thread pool thread (can be in different Chrome processes).
THREAD_POOL_THREAD = 16;
// GPU memory thread (in renderer process).
GPU_MEMORY_THREAD = 17;
// The thread for Chrome memory tracing (can be in different processes).
MEMORY_INFRA_THREAD = 19;
// Media thread (in renderer process).
MEDIA_THREAD = 20;
// WebRTC threads, e.g. WebRTC_Signaling,WebRTC_Network (in renderer process).
WEBRTC_THREAD = 21;
// DRM threads (in GPU process).
DRM_THREAD = 22;
// Audio device threads (in renderer process), a worker thread type used to
// transfer data between the browser and the renderer process.
AUDIO_DEVICE_THREAD = 23;
// Audio threads that are not in the renderer processes.
AUDIO_THREAD = 24;
// Dav1d worker threads (in renderer process), which runs the AV1 codec.
DAV1D_WORKER_THREAD = 25;
// Stack sampling profiler uses this thread to periodically stop a thread
// and get stack execution information.
// Spawned at
// https://source.chromium.org/chromium/chromium/src/+/main:base/profiler/stack_sampling_profiler.cc;l=379;drc=ada6c70d141251b40840a6cab657737bf63eed9d.
STACK_SAMPLING_THREAD = 26;
// Used for batching frames for video streams.
// Spawned at
// https://source.chromium.org/chromium/chromium/src/+/main:content/renderer/renderer_blink_platform_impl.cc;l=988;drc=7172fffc3c545134d5c88af8ab07b04fcb1d628e.
VIDEO_FRAME_COMPOSITOR_THREAD = 27;
// Display Compositor thread (in GPU process).
DISPLAY_COMPOSITOR_THREAD = 28;
// Codec worker thread.
// Spawned at
// https://source.chromium.org/chromium/chromium/src/+/main:media/base/codec_worker_impl.h;drc=923a33e9d5e24f4fb64f40dd2ffc182b2de93b0f;l=41.
CODEC_WORKER_THREAD = 29;
// A Chrome thread not identified by any other enum. Defined for the benefit
// of Chrome OS. Do not use for the Chrome sampling profiler; define a new
// enum instead.
OTHER_THREAD = 12;
}
// Process phases, or where in the lifetime of the process it is such as
// startup, normal operation, shutdown, etc. These don't necessarily occur in
// the order defined here so it's fine to add new ones to further segregrate
// the lifetime of a process.
enum ProcessPhase {
// The browser's main message loop has been started.
// Based on histogram Startup.MessageLoopStartTime
MAIN_LOOP_START = 0;
// The beginning of navigation in the first web contents' main frame.
// Based on histogram Startup.FirstWebContents.MainNavigationStart
MAIN_NAVIGATION_START = 1;
// The navigation is committed (first bytes received) in the first web
// contents' main frame.
// Based on histogram Startup.FirstWebContents.MainNavigationFinished
MAIN_NAVIGATION_FINISHED = 2;
// First non-empty paint of the first web contents.
// Based on histogram Startup.FirstWebContents.NonEmptyPaint2
FIRST_NONEMPTY_PAINT = 3;
// Process shutdown has begun.
SHUTDOWN_START = 4;
}