• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2020 The Chromium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5syntax = "proto2";
6
7import public "protos/perfetto/trace/track_event/track_event.proto";
8import public "protos/perfetto/trace/track_event/debug_annotation.proto";
9
10package perfetto.protos;
11
12enum ChromeAppState {
13  APP_STATE_FOREGROUND = 1;
14  APP_STATE_BACKGROUND = 2;
15}
16
17enum MemoryPressureLevel {
18  MEMORY_PRESSURE_LEVEL_NONE = 0;
19  MEMORY_PRESSURE_LEVEL_MODERATE = 1;
20  MEMORY_PRESSURE_LEVEL_CRITICAL = 2;
21}
22
23message ChromeMemoryPressureNotification {
24  optional MemoryPressureLevel level = 1;
25
26  // ID of interned source location where MemoryPressureListener was created
27  optional uint64 creation_location_iid = 2;
28}
29
30message BlinkTaskScope {
31  enum TaskScopeType {
32    TASK_SCOPE_UNKNOWN = 0;
33    TASK_SCOPE_CALLBACK = 1;
34    TASK_SCOPE_SCHEDULED_ACTION = 2;
35    TASK_SCOPE_SCRIPT_EXECUTION = 3;
36    TASK_SCOPE_POST_MESSAGE = 4;
37    TASK_SCOPE_POP_STATE = 5;
38    TASK_SCOPE_SCHEDULER_POST_TASK = 6;
39    TASK_SCOPE_REQUEST_IDLE_CALLBACK = 7;
40  }
41  optional TaskScopeType type = 1;
42  optional int64 scope_task_id = 2;
43  optional int64 running_task_id_to_be_restored = 3;
44  optional int64 continuation_task_id_to_be_restored = 4;
45  optional int64 parent_task_id = 5;
46}
47
48message ChromeTaskAnnotator {
49  enum DelayPolicy {
50    FLEXIBLE_NO_SOONER = 0;
51    FLEXIBLE_PREFER_EARLY = 1;
52    PRECISE = 2;
53  }
54  optional uint32 ipc_hash = 1;
55  // The delay in microseconds that was specified, if any, when this task was
56  // posted. This is only valid for delayed tasks.
57  optional uint64 task_delay_us = 2;
58  optional DelayPolicy delay_policy = 3;
59}
60
61message ChromeBrowserContext {
62  reserved 1;
63  optional string id = 2;
64}
65
66message ChromeProfileDestroyer {
67  optional fixed64 profile_ptr = 1;
68  optional bool is_off_the_record = 2;
69  optional string otr_profile_id = 3;
70  optional uint32 host_count_at_creation = 4;
71  optional uint32 host_count_at_destruction = 5;
72  optional fixed64 render_process_host_ptr = 6;
73}
74
75message ChromeTaskPostedToDisabledQueue {
76  optional string task_queue_name = 1;
77  optional uint64 time_since_disabled_ms = 2;
78  optional uint32 ipc_hash = 3;
79  optional uint64 source_location_iid = 4;
80}
81
82message ChromeRasterTask {
83  optional int64 source_frame_number = 1;
84}
85
86message ChromeMessagePumpForUI {
87  // The MSG defined in winuser.h.
88  optional uint32 message_id = 1;
89}
90
91// An enumeration specifying the reason of the RenderFrame deletion.
92// This is copied from content/common/frame.mojom.
93enum FrameDeleteIntention {
94  // The frame being deleted isn't a (speculative) main frame.
95  FRAME_DELETE_INTENTION_NOT_MAIN_FRAME = 0;
96
97  // The frame being deleted is a speculative main frame, and it is being
98  // deleted as part of the shutdown for that WebContents. The entire RenderView
99  // etc will be destroyed by a separate IPC sent later.
100  FRAME_DELETE_INTENTION_SPECULATIVE_MAIN_FRAME_FOR_SHUTDOWN = 1;
101
102  // The frame being deleted is a speculative main frame, and it is being
103  // deleted because the speculative navigation was cancelled. This is not part
104  // of shutdown.
105  FRAME_DELETE_INTENTION_SPECULATIVE_MAIN_FRAME_FOR_NAVIGATION_CANCELLED = 2;
106}
107
108message RenderFrameImplDeletion {
109  // The intent for the deletion.
110  optional FrameDeleteIntention intent = 1;
111
112  // Whether the frame that's about to be deleted has a pending navigation
113  // commit.
114  optional bool has_pending_commit = 2;
115
116  // Whether the frame that's about to be deleted has a pending cross-document
117  // navigation commit.
118  optional bool has_pending_cross_document_commit = 3;
119
120  // The FrameTreeNode ID of the frame that's about to be deleted.
121  optional uint64 frame_tree_node_id = 4;
122}
123
124// Matches content::ShouldSwapBrowsingInstance.
125enum ShouldSwapBrowsingInstance {
126  // Was used for all "no BrowsingInstance swap" scenarios, now broken down in
127  // separate reasons.
128  SHOULD_SWAP_BROWSING_INSTANCE_NO = 0;
129
130  // Forced BrowsingInstance swap.
131  SHOULD_SWAP_BROWSING_INSTANCE_YES_FORCE_SWAP = 1;
132
133  // Proactive BrowsingInstance swap for cross-site navigation.
134  SHOULD_SWAP_BROWSING_INSTANCE_YES_CROSS_SITE_PROACTIVE_SWAP = 2;
135
136  // Proactive BrowsingInstance swap for same-site navigation.
137  SHOULD_SWAP_BROWSING_INSTANCE_YES_SAME_SITE_PROACTIVE_SWAP = 3;
138
139  SHOULD_SWAP_BROWSING_INSTANCE_NO_PROACTIVE_SWAP_DISABLED = 4;
140  SHOULD_SWAP_BROWSING_INSTANCE_NO_NOT_MAIN_FRAME = 5;
141  SHOULD_SWAP_BROWSING_INSTANCE_NO_HAS_RELATED_ACTIVE_CONTENTS = 6;
142  SHOULD_SWAP_BROWSING_INSTANCE_NO_DOES_NOT_HAVE_SITE = 7;
143  SHOULD_SWAP_BROWSING_INSTANCE_NO_SOURCE_URL_SCHEME_NOT_HTTP_OR_HTTPS = 8;
144  SHOULD_SWAP_BROWSING_INSTANCE_NO_DESTINATION_URL_SCHEME_NOT_HTTP_OR_HTTPS = 9;
145  SHOULD_SWAP_BROWSING_INSTANCE_NO_SAME_SITE_NAVIGATION = 10;
146  SHOULD_SWAP_BROWSING_INSTANCE_NO_RELOADING_ERROR_PAGE = 11;
147  SHOULD_SWAP_BROWSING_INSTANCE_NO_ALREADY_HAS_MATCHING_BROWSING_INSTANCE = 12;
148  SHOULD_SWAP_BROWSING_INSTANCE_NO_RENDERER_DEBUG_URL = 13;
149  SHOULD_SWAP_BROWSING_INSTANCE_NO_NOT_NEEDED_FOR_BACK_FORWARD_CACHE = 14;
150  SHOULD_SWAP_BROWSING_INSTANCE_NO_SAME_DOCUMENT_NAVIGATION = 15;
151  SHOULD_SWAP_BROWSING_INSTANCE_NO_SAME_URL_NAVIGATION = 16;
152  SHOULD_SWAP_BROWSING_INSTANCE_NO_WILL_REPLACE_ENTRY = 17;
153  SHOULD_SWAP_BROWSING_INSTANCE_NO_RELOAD = 18;
154  SHOULD_SWAP_BROWSING_INSTANCE_NO_GUEST = 19;
155  SHOULD_SWAP_BROWSING_INSTANCE_NO_HAS_NOT_COMMITTED_ANY_NAVIGATION = 20;
156  // The following reason was deprecated from https://crrev.com/c/3858766
157  SHOULD_SWAP_BROWSING_INSTANCE_NO_UNLOAD_HANDLER_EXISTS_ON_SAME_SITE_NAVIGATION =
158      21;
159  SHOULD_SWAP_BROWSING_INSTANCE_NO_NOT_PRIMARY_MAIN_FRAME = 22;
160}
161
162message ShouldSwapBrowsingInstancesResult {
163  // The FrameTreeNode ID.
164  optional uint64 frame_tree_node_id = 1;
165
166  // Whether a navigation will do a BrowsingInstance swap or not.
167  optional ShouldSwapBrowsingInstance result = 2;
168}
169
170message FrameTreeNodeInfo {
171  // The FrameTreeNode ID.
172  optional uint64 frame_tree_node_id = 1;
173
174  // Whether the frame is a main frame or not.
175  optional bool is_main_frame = 2;
176
177  // Whether there's a speculative RenderFrameHost or not.
178  optional bool has_speculative_render_frame_host = 3;
179
180  optional RenderFrameHost current_frame_host = 4;
181  optional RenderFrameHost speculative_frame_host = 5;
182
183  // NOTE: this proto must be kept consistent with
184  // content::FrameType.
185  enum FrameType {
186    UNSPECIFIED_FRAME_TYPE = 0;
187    SUBFRAME = 1;
188    PRIMARY_MAIN_FRAME = 2;
189    PRERENDER_MAIN_FRAME = 3;
190    FENCED_FRAME_ROOT = 4;
191  }
192
193  optional FrameType frame_type = 6;
194
195  // Additional untyped debug information associated with this
196  // FrameTreeNode, populated via TracedProto::AddDebugAnnotations API.
197  repeated DebugAnnotation debug_annotations = 99;
198}
199
200message ChromeHashedPerformanceMark {
201  optional uint32 site_hash = 1;
202  optional string site = 2;
203  optional uint32 mark_hash = 3;
204  optional string mark = 4;
205
206  // A randomly generated unique identifier for a given ExecutionContext
207  // (document, worker, etc). Used to be able to correlate events in a process
208  // where there are multiple execution contexts from the same site.
209  optional uint32 execution_context_id = 5;
210
211  // Indicates the sequence number of this particular mark being emitted from
212  // a particular site in the scope of a single ExecutionContext. Typical
213  // sites emit batches of events that are correlated in time (a thing started,
214  // a thing reached a given milestone, a thing completed). When these events
215  // are intermixed it is useful to know which ones are semantically related.
216  // The value is generated by the content itself, but shifted by a fixed
217  // random offset at runtime so as to limit usage as a side channel.
218  optional uint32 sequence_number = 6;
219}
220
221// Sent on SQL errors where we need string diagnostics. Corresponds to
222// `Database::DatabaseDiagnostics` in the Chrome SQL code. Does not contain any
223// PII, because the bound values are not included in the SQL statement.
224message ChromeSqlDiagnostics {
225  optional int32 reported_sqlite_error_code = 1;
226  optional int32 error_code = 2;
227  optional int32 last_errno = 3;
228  optional string sql_statement = 4;
229  optional int32 version = 5;
230
231  // Most rows in 'sql_schema' have a non-NULL 'sql' column. Those rows' 'sql'
232  // contents are logged here, one element per row.
233  repeated string schema_sql_rows = 6;
234
235  // Some rows of 'sql_schema' have a NULL 'sql' column. They are typically
236  // autogenerated indices, like "sqlite_autoindex_downloads_slices_1". These
237  // are also logged here by their 'name' column, one element per row.
238  repeated string schema_other_row_names = 7;
239
240  optional bool has_valid_header = 8;
241  optional bool has_valid_schema = 9;
242  optional string error_message = 10;
243}
244
245message ChromeWebAppBadNavigate {
246  optional bool is_kiosk = 1;
247  optional bool has_hosted_app_controller = 2;
248  optional string app_name = 3;
249  optional uint32 system_app_type = 4;
250  optional bool web_app_provider_registry_ready = 5;
251  optional bool system_web_app_manager_synchronized = 6;
252}
253
254// These IDs are generated at compile time and differ for each chrome version.
255// IDs are stable on for a given chrome version but are changing when resources
256// are added or removed to chrome.
257message ResourceBundle {
258  optional uint32 resource_id = 1;
259}
260
261// Information about RenderProcessHost.
262message RenderProcessHost {
263  // Unique Id to identify the RenderProcessHost. This is the browser-side,
264  // persistent id for this RenderProcessHost that stays constant even across OS
265  // layer processes managed by this RenderProcessHost.
266  optional uint32 id = 1;
267  // See ProcessLock::ToString().
268  optional string process_lock = 2;
269  // The PID of the child process.
270  optional int32 child_process_id = 3;
271
272  // Details about the associated browser context.
273  optional ChromeBrowserContext browser_context = 4;
274
275  // Additional untyped debug information associated with this
276  // RenderProcessHost, populated via TracedProto::AddDebugAnnotations API.
277  repeated DebugAnnotation debug_annotations = 99;
278}
279
280message RenderProcessHostListener {
281  // Routing ID of the listener to the RenderProcessHost, recorded when a new ID
282  // is added or when an ID is removed.
283  optional uint32 routing_id = 1;
284}
285
286message RenderProcessHostCleanup {
287  // Number of IPC listeners registered to the host when Cleanup() was called.
288  optional uint32 listener_count = 1;
289  // Number of "keep alive" references active in the RenderProcessHost, recorded
290  // when Cleanup() was called.
291  optional uint32 keep_alive_ref_count = 2;
292  // Number of "shutdown delay" references active in the RenderProcessHost,
293  // recorded when Cleanup() was called.
294  optional uint32 shutdown_delay_ref_count = 3;
295  // Number of "worker delay" references active in the RenderProcessHost,
296  // recorded when Cleanup() was called.
297  optional uint32 worker_ref_count = 4;
298  // Number of "pending reuse" references active in the RenderProcessHost,
299  // recorded when Cleanup() was called.
300  optional uint32 pending_reuse_ref_count = 5;
301}
302
303message ChildProcessLauncherPriority {
304  // True if the new priority set to background.
305  optional bool is_backgrounded = 1;
306  // True if the renderer proecss has pending views.
307  optional bool has_pending_views = 2;
308
309  // Importance of the child process in Android.
310  enum Importance {
311    IMPORTANCE_NORMAL = 1;
312    IMPORTANCE_MODERATE = 2;
313    IMPORTANCE_IMPORTANT = 3;
314  }
315  optional Importance importance = 3;
316}
317
318// Information that identifies a Chrome Extension.
319message ChromeExtensionId {
320  // Unique id that identifies a Chrome Extension.
321  optional string extension_id = 1;
322
323  // Pseudonymized `extension_id` field (see also
324  // content::PseudonymizationUtil::PseudonymizeString method).
325  optional uint32 pseudonymized_extension_id = 2;
326}
327
328message SiteInstance {
329  // The ID of the SiteInstance.
330  optional int32 site_instance_id = 1;
331
332  // The ID of the BrowsingInstance that the SiteInstance belongs to.
333  optional int32 browsing_instance_id = 2;
334
335  // Whether the SiteInstance is the "default SiteInstance" or not. Non-isolated
336  // sites on Android are not assigned to their own specific per-site process,
337  // and shares SiteInstances with each other (the default SiteInstance).
338  optional bool is_default = 3;
339
340  // Whether this SiteInstance has a running process associated with it.
341  optional bool has_process = 4;
342
343  // Returns the total active WebContents count for this SiteInstance and all
344  // related SiteInstances in the same BrowsingInstance.
345  optional int32 related_active_contents_count = 5;
346
347  // The number of active RenderFrameHosts this SiteInstance's SiteInstanceGroup
348  // has.
349  optional int32 active_rfh_count = 6;
350
351  // The SiteInstanceGroup this SiteInstance belongs to.
352  optional SiteInstanceGroup site_instance_group = 7;
353
354  // Additional untyped debug information associated with this
355  // SiteInstance, populated via TracedProto::AddDebugAnnotations API.
356  repeated DebugAnnotation debug_annotations = 99;
357}
358
359message SiteInstanceGroup {
360  // The ID of the SiteInstanceGroup.
361  optional int32 site_instance_group_id = 1;
362
363  // The number of active frames in this SiteInstanceGroup.
364  optional int32 active_frame_count = 2;
365
366  // The process ID of the SiteInstanceGroup.
367  optional RenderProcessHost process = 3;
368
369  // Additional untyped debug information associated with this
370  // SiteInstanceGroup, populated via TracedProto::AddDebugAnnotations API.
371  repeated DebugAnnotation debug_annotations = 99;
372}
373
374// Next ID: 7
375message RenderViewHost {
376  // The RenderViewHostMapId for the RenderViewHost.
377  optional int32 rvh_map_id = 1;
378
379  // The routing ID for the RenderViewHost.
380  optional int32 routing_id = 2;
381
382  // The process ID of the RenderViewHost. Deprecated in favour of |process|.
383  optional int32 process_id = 3;
384
385  // Process this RenderViewHost is associated with.
386  optional RenderProcessHost process = 6;
387
388  // Whether the RenderViewHost is in back/forward cache or not.
389  optional bool is_in_back_forward_cache = 4;
390
391  // Whether the renderer-side RenderView is created.
392  optional bool renderer_view_created = 5;
393
394  // Additional untyped debug information associated with this
395  // RenderViewHost, populated via TracedProto::AddDebugAnnotations API.
396  repeated DebugAnnotation debug_annotations = 99;
397}
398
399message RenderFrameProxyHost {
400  // The routing ID for the RenderFrameProxyHost.
401  optional int32 routing_id = 1;
402
403  // The process ID of the RenderFrameProxyHost.
404  optional int32 process_id = 2;
405
406  // The RenderViewHostMapId of the RenderViewHost associated with the
407  // RenderFrameProxyHost.
408  optional int32 rvh_map_id = 3;
409
410  // The SiteInstanceId of the SiteInstance associated with the
411  // RenderFrameProxyHost.
412  optional int32 site_instance_id = 4;
413
414  // Whether the renderer-side RenderFrameProxy is live or not.
415  optional bool is_render_frame_proxy_live = 5;
416
417  // The SiteInstanceGroupId of the SiteInstanceGroup associated with the
418  // RenderFrameProxyHost.
419  optional int32 site_instance_group_id = 6;
420
421  // Additional untyped debug information associated with this
422  // RenderFrameProxyHost, populated via TracedProto::AddDebugAnnotations API.
423  repeated DebugAnnotation debug_annotations = 99;
424}
425
426message AndroidView {
427  optional int32 id = 1;
428  optional int32 parent_id = 2;
429  optional bool is_shown = 3;
430  optional bool is_dirty = 4;
431  optional string class_name = 5;
432  optional string resource_name = 6;
433}
434
435message AndroidActivity {
436  optional string name = 1;
437  repeated AndroidView view = 2;
438}
439
440message AndroidViewDump {
441  repeated AndroidActivity activity = 1;
442}
443
444message ParkableStringCompressInBackground {
445  // The size of the string that is being compressed, in bytes.
446  optional int32 size_bytes = 1;
447}
448
449message ParkableStringUnpark {
450  // The size of the string that is being unparked, in bytes.
451  optional int32 size_bytes = 1;
452
453  // The elapsed time since the string was written to disk (in seconds), or -1
454  // if it hadn't yet been written to disk.
455  optional int32 time_since_last_disk_write_sec = 2;
456}
457
458message ChromeSamplingProfilerSampleCollected {
459  optional int32 frame_count = 1;
460
461  enum WriteStatus {
462    WRITE_STATUS_NONE = 0;
463    WRITE_STATUS_BUFFERING_SAMPLE = 1;
464    WRITE_STATUS_WRITING_BUFFERED = 2;
465    WRITE_STATUS_WRITING_TO_TRACE = 3;
466  }
467  optional WriteStatus write_status = 2;
468
469  optional int32 sampled_thread_id = 3;
470}
471
472// Reports the latency caused by each breakdown in the
473// SendBeginMainFrameToCommit stage of the PipelineReporter.
474message SendBeginMainFrameToCommitBreakdown {
475  // Handle input events breakdown
476  optional uint64 handle_input_events_us = 1;
477
478  // Animate breakdown
479  optional uint64 animate_us = 2;
480
481  // Style update breakdown
482  optional uint64 style_update_us = 3;
483
484  // Layout update breakdown
485  optional uint64 layout_update_us = 4;
486
487  // Accessibility update breakdown
488  optional uint64 accessibility_update_us = 12;
489
490  // Prepaint breakdown
491  optional uint64 prepaint_us = 5;
492
493  // Compositing inputs breakdown
494  optional uint64 compositing_inputs_us = 6;
495
496  // Compositing assignments breakdown
497  optional uint64 compositing_assignments_us = 7;
498
499  // Paint breakdown
500  optional uint64 paint_us = 8;
501
502  // Composite commit breakdown
503  optional uint64 composite_commit_us = 9;
504
505  // Update layers breakdown
506  optional uint64 update_layers_us = 10;
507
508  // Beginmainsenttostarted breakdown
509  optional uint64 begin_main_sent_to_started_us = 11;
510}
511
512message GlobalRenderFrameHostId {
513  optional int32 routing_id = 1;
514  optional int32 process_id = 2;
515}
516
517message BrowsingContextState {
518  // The ID of the BrowsingInstance that the BrowsingContextState belongs to.
519  optional int32 browsing_instance_id = 1;
520
521  // The ID of the CoopRelatedGroup that the BrowsingContextState belongs to.
522  optional int32 coop_related_group_id = 2 [deprecated = true];
523
524  // The token of the CoopRelatedGroup that the BrowsingContextState belongs to.
525  optional string coop_related_group_token = 3;
526
527  // Additional untyped debug information associated with this
528  // FrameTreeNode, populated via TracedProto::AddDebugAnnotations API.
529  repeated DebugAnnotation debug_annotations = 99;
530}
531
532message RenderFrameHost {
533  optional RenderProcessHost process = 1;
534  optional GlobalRenderFrameHostId render_frame_host_id = 2;
535
536  // NOTE: this proto must be kept consistent with
537  // RenderFrameHostImpl::LifecycleStateImpl.
538  enum LifecycleState {
539    UNSPECIFIED = 0;
540    SPECULATIVE = 1;
541    PENDING_COMMIT = 2;
542    PRERENDERING = 3;
543    ACTIVE = 4;
544    IN_BACK_FORWARD_CACHE = 5;
545    RUNNING_UNLOAD_HANDLERS = 6;
546    READY_TO_BE_DELETED = 7;
547  }
548
549  optional LifecycleState lifecycle_state = 3;
550  optional string origin = 4;
551  optional string url = 5;
552  optional uint64 frame_tree_node_id = 6;
553  optional SiteInstance site_instance = 7;
554  optional RenderFrameHost parent = 8;
555  optional RenderFrameHost outer_document = 9;
556  optional RenderFrameHost embedder = 10;
557  optional BrowsingContextState browsing_context_state = 11;
558  optional FrameTreeNodeInfo.FrameType frame_type = 12;
559
560  // Additional untyped debug information associated with this
561  // RenderViewHost, populated via TracedProto::AddDebugAnnotations API.
562  repeated DebugAnnotation debug_annotations = 99;
563}
564
565message ChromeThreadPoolTask {
566  enum Priority {
567    PRIORITY_UNSPECIFIED = 0;
568    PRIORITY_BEST_EFFORT = 1;
569    PRIORITY_USER_VISIBLE = 2;
570    PRIORITY_USER_BLOCKING = 3;
571  }
572
573  enum ExecutionMode {
574    EXECTUION_MODE_UNSPECIFIED = 0;
575    EXECUTION_MODE_PARALLEL = 1;
576    EXECUTION_MODE_SEQUENCED = 2;
577    EXECUTION_MODE_SINGLE_THREAD = 3;
578    EXECUTION_MODE_JOB = 4;
579  }
580
581  enum ShutdownBehavior {
582    SHUTDOWN_BEHAVIOR_UNSPECIFIED = 0;
583    SHUTDOWN_BEHAVIOR_CONTINUE_ON_SHUTDOWN = 1;
584    SHUTDOWN_BEHAVIOR_SKIP_ON_SHUTDOWN = 2;
585    SHUTDOWN_BEHAVIOR_BLOCK_SHUTDOWN = 3;
586  }
587
588  optional Priority task_priority = 1;
589  optional ExecutionMode execution_mode = 2;
590  optional int64 sequence_token = 3;
591  optional ShutdownBehavior shutdown_behavior = 4;
592}
593
594// TODO(crbug.com/1258495): Add more information.
595message BackForwardCacheCanStoreDocumentResult {
596  enum BackForwardCacheNotRestoredReason {
597    NOT_MAIN_FRAME = 1;
598    // BackForwardCache is disabled due to low memory device, base::Feature or
599    // command line. Note that the more specific NotRestoredReasons
600    // BACK_FORWARD_CACHE_DISABLED_BY_LOW_MEMORY and
601    // BACK_FORWARD_CACHE_DISABLED_BY_COMMAND_LINE will also be set as other
602    // reasons along with this when appropriate.
603    BACK_FORWARD_CACHE_DISABLED = 2;
604    RELATED_ACTIVE_CONTENTS_EXIST = 3;
605    HTTP_STATUS_NOT_OK = 4;
606    SCHEME_NOT_HTTP_OR_HTTPS = 5;
607    LOADING = 6;
608    WAS_GRANTED_MEDIA_ACCESS = 7;
609    BLOCKLISTED_FEATURES = 8;
610    DISABLE_FOR_RENDER_FRAME_HOST_CALLED = 9;
611    DOMAIN_NOT_ALLOWED = 10;
612    HTTP_METHOD_NOT_GET = 11;
613    SUBFRAME_IS_NAVIGATING = 12;
614    TIMEOUT = 13;
615    CACHE_LIMIT = 14;
616    JAVASCRIPT_EXECUTION = 15;
617    RENDERER_PROCESS_KILLED = 16;
618    RENDERER_PROCESS_CRASHED = 17;
619    GRANTED_MEDIA_STREAM_ACCESS = 19;
620    SCHEDULER_TRACKED_FEATURE_USED = 20;
621    CONFLICTING_BROWSING_INSTANCE = 21;
622    CACHE_FLUSHED = 22;
623    SERVICE_WORKER_VERSION_ACTIVATION = 23;
624    SESSION_RESTORED = 24;
625    UNKNOWN = 25;
626    SERVICE_WORKER_POST_MESSAGE = 26;
627    ENTERED_BACK_FORWARD_CACHE_BEFORE_SERVICE_WORKER_HOST_ADDED = 27;
628    NOT_MOST_RECENT_NAVIGATION_ENTRY = 28;
629    SERVICE_WORKER_CLAIM = 29;
630    IGNORE_EVENT_AND_EVICT = 30;
631    HAVE_INNER_CONTENTS = 31;
632    TIMEOUT_PUTTING_IN_CACHE = 32;
633    // BackForwardCache is disabled due to low memory device.
634    BACK_FORWARD_CACHE_DISABLED_BY_LOW_MEMORY = 33;
635    // BackForwardCache is disabled due to command-line switch (may include
636    // cases where the embedder disabled it due to, e.g., enterprise policy).
637    BACK_FORWARD_CACHE_DISABLED_BY_COMMAND_LINE = 34;
638    NETWORK_REQUEST_REDIRECTED = 35;
639    NETWORK_REQUEST_TIMEOUT = 36;
640    NETWORK_EXCEEDS_BUFFER_LIMIT = 37;
641    NAVIGATION_CANCELLED_WHILE_RESTORING = 38;
642    BACK_FORWARD_CACHE_DISABLED_FOR_PRERENDER = 39;
643    USER_AGENT_OVERRIDE_DIFFERS = 40;
644    NETWORK_REQUEST_DATAPIPE_DRAINED_AS_BYTES_CONSUMER = 41;
645    FOREGROUND_CACHE_LIMIT = 42;
646    BROWSING_INSTANCE_NOT_SWAPPED = 43;
647    BACK_FORWARD_CACHE_DISABLED_FOR_DELEGATE = 44;
648    OPT_IN_UNLOAD_HEADER_NOT_PRESENT = 45;
649    UNLOAD_HANDLER_EXISTS_IN_MAIN_FRAME = 46;
650    UNLOAD_HANDLER_EXISTS_IN_SUBFRAME = 47;
651    SERVICE_WORKER_UNREGISTRATION = 48;
652    CACHE_CONTROL_NO_STORE = 49;
653    CACHE_CONTROL_NO_STORE_COOKIE_MODIFIED = 50;
654    CACHE_CONTROL_NO_STORE_HTTP_ONLY_COOKIE_MODIFIED = 51;
655    NO_RESPONSE_HEAD = 52;
656    ACTIVATION_NAVIGATION_DISALLOWED_FOR_BUG_1234857 = 53;
657    ERROR_DOCUMENT = 54;
658    FENCED_FRAMES_EMBEDDER = 55;
659    COOKIE_DISABLED = 56;
660    HTTP_AUTH_REQUIRED = 57;
661    COOKIE_FLUSHED = 58;
662  }
663
664  optional BackForwardCacheNotRestoredReason
665      back_forward_cache_not_restored_reason = 1;
666}
667
668message RendererMainThreadTaskExecution {
669  enum TaskType {
670    TASK_TYPE_UNKNOWN = 0;
671    TASK_TYPE_DOM_MANIPULATION = 1;
672    TASK_TYPE_USER_INTERACTION = 2;
673    TASK_TYPE_NETWORKING = 3;
674    TASK_TYPE_NETWORKING_CONTROL = 4;
675    TASK_TYPE_HISTORY_TRAVERSAL = 5;
676    TASK_TYPE_EMBED = 6;
677    TASK_TYPE_MEDIA_ELEMENT_EVENT = 7;
678    TASK_TYPE_CANVAS_BLOB_SERIALIZATION = 8;
679    TASK_TYPE_MICROTASK = 9;
680    TASK_TYPE_JAVASCRIPT_TIMER_DELAYED_HIGH_NESTING = 10;
681    TASK_TYPE_REMOTE_EVENT = 11;
682    TASK_TYPE_WEB_SOCKET = 12;
683    TASK_TYPE_POSTED_MESSAGE = 13;
684    TASK_TYPE_UNSHIPPED_PORT_MESSAGE = 14;
685    TASK_TYPE_FILE_READING = 15;
686    TASK_TYPE_DATABASE_ACCESS = 16;
687    TASK_TYPE_PRESENTATION = 17;
688    TASK_TYPE_SENSOR = 18;
689    TASK_TYPE_PERFORMANCE_TIMELINE = 19;
690    TASK_TYPE_WEB_GL = 20;
691    TASK_TYPE_IDLE_TASK = 21;
692    TASK_TYPE_MISC_PLATFORM_API = 22;
693    TASK_TYPE_INTERNAL_DEFAULT = 23;
694    TASK_TYPE_INTERNAL_LOADING = 24;
695
696    TASK_TYPE_INTERNAL_TEST = 26;
697    TASK_TYPE_INTERNAL_WEB_CRYPTO = 27;
698
699    TASK_TYPE_INTERNAL_MEDIA = 29;
700    TASK_TYPE_INTERNAL_MEDIA_REALTIME = 30;
701
702    TASK_TYPE_INTERNAL_USER_INTERACTION = 32;
703    TASK_TYPE_INTERNAL_INSPECTOR = 33;
704
705    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_V8 = 37;
706    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_COMPOSITOR = 38;
707    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_DEFAULT = 39;
708    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_INPUT = 40;
709    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_IDLE = 41;
710
711    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_CONTROL = 43;
712    TASK_TYPE_INTERNAL_INTERSECTION_OBSERVER = 44;
713    TASK_TYPE_COMPOSITOR_THREAD_TASK_QUEUE_DEFAULT = 45;
714    TASK_TYPE_WORKER_THREAD_TASK_QUEUE_DEFAULT = 46;
715    TASK_TYPE_WORKER_THREAD_TASK_QUEUE_V8 = 47;
716    TASK_TYPE_WORKER_THREAD_TASK_QUEUE_COMPOSITOR = 48;
717    TASK_TYPE_COMPOSITOR_THREAD_TASK_QUEUE_INPUT = 49;
718
719    // TODO(crbug.com/860545): Obsolete. Remove.
720    TASK_TYPE_NETWORKING_WITH_URL_LOADER_ANNOTATION = 50;
721
722    TASK_TYPE_WORKER_ANIMATION = 51;
723
724    TASK_TYPE_INTERNAL_TRANSLATION = 55;
725    TASK_TYPE_FONT_LOADING = 56;
726    TASK_TYPE_APPLICATION_LIFECYCLE = 57;
727    TASK_TYPE_BACKGROUND_FETCH = 58;
728    TASK_TYPE_PERMISSION = 59;
729    TASK_TYPE_SERVICE_WORKER_CLIENT_MESSAGE = 60;
730    TASK_TYPE_INTERNAL_CONTENT_CAPTURE = 61;
731    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_MEMORY_PURGE = 62;
732    TASK_TYPE_INTERNAL_NAVIGATION_ASSOCIATED = 63;
733    TASK_TYPE_INTERNAL_NAVIGATION_ASSOCIATED_UNFREEZABLE = 64;
734    TASK_TYPE_INTERNAL_CONTINUE_SCRIPT_LOADING = 65;
735    TASK_TYPE_WEB_LOCKS = 66;
736    TASK_TYPE_WEB_SCHEDULING_POSTED_TASK = 67;
737    TASK_TYPE_INTERNAL_FRAME_LIFE_CYCLE_CONTROL = 68;
738    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_NON_WAKING = 69;
739    TASK_TYPE_INTERNAL_FIND_IN_PAGE = 70;
740    TASK_TYPE_INTERNAL_HIGH_PRIORITY_LOCAL_FRAME = 71;
741    TASK_TYPE_JAVASCRIPT_TIMER_IMMEDIATE = 72;
742    TASK_TYPE_JAVASCRIPT_TIMER_DELAYED_LOW_NESTING = 73;
743    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_IPC_TRACKING = 74;
744    TASK_TYPE_NETWORKING_UNFREEZABLE = 75;
745    TASK_TYPE_WAKE_LOCK = 76;
746    TASK_TYPE_INTERNAL_INPUT_BLOCKING = 77;
747    TASK_TYPE_WEB_GPU = 78;
748    TASK_TYPE_INTERNAL_POST_MESSAGE_FORWARDING = 79;
749    TASK_TYPE_INTERNAL_NAVIGATION_CANCELLATION = 80;
750    TASK_TYPE_LOW_PRIORITY_SCRIPT_EXECUTION = 81;
751    TASK_TYPE_STORAGE = 82;
752    TASK_TYPE_NETWORKING_UNFREEZABLE_IMAGE_LOADING = 83;
753    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_V8_LOW_PRIORITY = 84;
754  }
755
756  enum FrameType {
757    FRAME_TYPE_UNSPECIFIED = 0;
758    FRAME_TYPE_MAIN_FRAME = 1;
759    FRAME_TYPE_SAME_ORIGIN_SUBFRAME = 2;
760    FRAME_TYPE_CROSS_ORIGIN_SUBFRAME = 3;
761  }
762
763  optional TaskType task_type = 1;
764
765  // FrameScheduler related data
766  optional bool frame_visible = 2;
767  optional bool page_visible = 3;
768  optional FrameType frame_type = 4;
769  optional bool is_ad_frame = 5;
770}
771
772message EventLatency {
773  enum EventType {
774    EVENT_TYPE_UNSPECIFIED = 0;
775    MOUSE_PRESSED = 1;
776    MOUSE_RELEASED = 2;
777    MOUSE_WHEEL = 3;
778    KEY_PRESSED = 4;
779    KEY_RELEASED = 5;
780    TOUCH_PRESSED = 6;
781    TOUCH_RELEASED = 7;
782    TOUCH_MOVED = 8;
783    GESTURE_SCROLL_BEGIN = 9;
784    GESTURE_SCROLL_UPDATE = 10;
785    GESTURE_SCROLL_END = 11;
786    GESTURE_DOUBLE_TAP = 12;
787    GESTURE_LONG_PRESS = 13;
788    GESTURE_LONG_TAP = 14;
789    GESTURE_SHOW_PRESS = 15;
790    GESTURE_TAP = 16;
791    GESTURE_TAP_CANCEL = 17;
792    GESTURE_TAP_DOWN = 18;
793    GESTURE_TAP_UNCONFIRMED = 19;
794    GESTURE_TWO_FINGER_TAP = 20;
795    FIRST_GESTURE_SCROLL_UPDATE = 21;
796    MOUSE_DRAGGED = 22;
797    GESTURE_PINCH_BEGIN = 23;
798    GESTURE_PINCH_END = 24;
799    GESTURE_PINCH_UPDATE = 25;
800    INERTIAL_GESTURE_SCROLL_UPDATE = 26;
801    MOUSE_MOVED_EVENT = 27;
802  }
803
804  optional EventType event_type = 1;
805  optional bool has_high_latency = 2;
806  repeated string high_latency_stage = 3;
807  // This is same as LatencyInfo's trace_id, using the name event_latency_id to
808  // move away from the generic trace_id name used at other places as well.
809  optional int64 event_latency_id = 4;
810  // This is set only for scroll updates and is based on the
811  // Event.ScrollJank.DelayedFramesPercentage.FixedWindow metric.
812  optional bool is_janky_scrolled_frame = 5;
813}
814
815message ProcessSingleton {
816  enum RemoteProcessInteractionResult {
817    INTERACTION_RESULT_UNSPECIFIED = 0;
818    TERMINATE_FAILED = 1;
819    REMOTE_PROCESS_NOT_FOUND = 2;
820    TERMINATE_WAIT_TIMEOUT = 3;
821    RUNNING_PROCESS_NOTIFY_ERROR = 4;
822    TERMINATE_NOT_ENOUGH_PERMISSIONS = 5;
823    REMOTE_PROCESS_SHUTTING_DOWN = 6;
824    PROFILE_UNLOCKED = 7;
825    PROFILE_UNLOCKED_BEFORE_KILL = 8;
826    SAME_BROWSER_INSTANCE = 9;
827    SAME_BROWSER_INSTANCE_BEFORE_KILL = 10;
828    FAILED_TO_EXTRACT_PID = 11;
829    INVALID_LOCK_FILE = 12;
830    ORPHANED_LOCK_FILE = 13;
831    USER_REFUSED_TERMINATION = 14;
832    TERMINATE_SUCCEEDED = 100;
833  }
834
835  enum RemoteHungProcessTerminateReason {
836    TERMINATE_REASON_UNSPECIFIED = 0;
837    USER_ACCEPTED_TERMINATION = 1;
838    NO_VISIBLE_WINDOW_FOUND = 2;
839    NOTIFY_ATTEMPTS_EXCEEDED = 3;
840    SOCKET_WRITE_FAILED = 4;
841    SOCKET_READ_FAILED = 5;
842  }
843
844  optional RemoteProcessInteractionResult remote_process_interaction_result = 1;
845  optional RemoteHungProcessTerminateReason remote_process_terminate_reason = 2;
846}
847
848message NavigationHandle {
849  optional int64 navigation_id = 1;
850  optional bool has_committed = 2;
851  optional bool is_error_page = 3;
852  optional FrameTreeNodeInfo frame_tree_node = 4;
853  optional RenderFrameHost render_frame_host = 5;
854
855  // Additional untyped debug information associated with this
856  // NavigationHandle/Request, populated via TracedProto::AddDebugAnnotations
857  // API.
858  repeated DebugAnnotation debug_annotations = 99;
859}
860
861enum DeviceThermalState {
862  DEVICE_THERMAL_STATE_UNKNOWN = 0;
863  DEVICE_THERMAL_STATE_NOMINAL = 1;
864  DEVICE_THERMAL_STATE_FAIR = 2;
865  DEVICE_THERMAL_STATE_SERIOUS = 3;
866  DEVICE_THERMAL_STATE_CRITICAL = 4;
867}
868
869// Used to log which Android IPC was called and how long it took.
870message AndroidIPC {
871  optional string name = 1;
872  optional int64 dur_ms = 2;
873}
874
875message SequenceManagerTask {
876  enum Priority {
877    UNKNOWN = 0;
878    CONTROL_PRIORITY = 1;
879    HIGHEST_PRIORITY = 2;
880    VERY_HIGH_PRIORITY = 3;
881    HIGH_PRIORITY = 4;
882    NORMAL_PRIORITY = 5;
883    LOW_PRIORITY = 6;
884    BEST_EFFORT_PRIORITY = 7;
885
886    // Renderer-specific priorities.
887    HIGH_PRIORITY_CONTINUATION = 8;
888    NORMAL_PRIORITY_CONTINUATION = 9;
889    LOW_PRIORITY_CONTINUATION = 10;
890    EXTREMELY_HIGH_PRIORITY = 11;
891  }
892
893  enum QueueName {
894    UNKNOWN_TQ = 0;
895    DEFAULT_TQ = 1;
896    TASK_ENVIRONMENT_DEFAULT_TQ = 2;
897    TEST2_TQ = 3;
898    TEST_TQ = 4;
899    CONTROL_TQ = 5;
900
901    SUBTHREAD_CONTROL_TQ = 6;
902    SUBTHREAD_DEFAULT_TQ = 7;
903    SUBTHREAD_INPUT_TQ = 8;
904
905    UI_BEST_EFFORT_TQ = 9;
906    UI_BOOTSTRAP_TQ = 10;
907    UI_CONTROL_TQ = 11;
908    UI_DEFAULT_TQ = 12;
909    UI_NAVIGATION_NETWORK_RESPONSE_TQ = 13;
910    UI_RUN_ALL_PENDING_TQ = 14;
911    UI_SERVICE_WORKER_STORAGE_CONTROL_RESPONSE_TQ = 15;
912    UI_THREAD_TQ = 16;
913    UI_USER_BLOCKING_TQ = 17;
914    UI_USER_INPUT_TQ = 18;
915    UI_USER_VISIBLE_TQ = 19;
916
917    IO_BEST_EFFORT_TQ = 20;
918    IO_BOOTSTRAP_TQ = 21;
919    IO_CONTROL_TQ = 22;
920    IO_DEFAULT_TQ = 23;
921    IO_NAVIGATION_NETWORK_RESPONSE_TQ = 24;
922    IO_RUN_ALL_PENDING_TQ = 25;
923    IO_SERVICE_WORKER_STORAGE_CONTROL_RESPONSE_TQ = 26;
924    IO_THREAD_TQ = 27;
925    IO_USER_BLOCKING_TQ = 28;
926    IO_USER_INPUT_TQ = 29;
927    IO_USER_VISIBLE_TQ = 30;
928
929    COMPOSITOR_TQ = 31;
930    DETACHED_TQ = 32;
931    FRAME_DEFERRABLE_TQ = 33;
932    FRAME_LOADING_CONTROL_TQ = 34;
933    FRAME_LOADING_TQ = 35;
934    FRAME_PAUSABLE_TQ = 36;
935    FRAME_THROTTLEABLE_TQ = 37;
936    FRAME_UNPAUSABLE_TQ = 38;
937    IDLE_TQ = 39;
938    INPUT_TQ = 40;
939    IPC_TRACKING_FOR_CACHED_PAGES_TQ = 41;
940    NON_WAKING_TQ = 42;
941    OTHER_TQ = 43;
942    V8_TQ = 44;
943    WEB_SCHEDULING_TQ = 45;
944
945    WORKER_IDLE_TQ = 46;
946    WORKER_PAUSABLE_TQ = 47;
947    WORKER_THREAD_INTERNAL_TQ = 48;
948    WORKER_THROTTLEABLE_TQ = 49;
949    WORKER_UNPAUSABLE_TQ = 50;
950    WORKER_WEB_SCHEDULING_TQ = 51;
951
952    UI_USER_BLOCKING_DEFERRABLE_TQ = 52;
953    IO_USER_BLOCKING_DEFERRABLE_TQ = 53;
954
955    UI_BEFORE_UNLOAD_BROWSER_RESPONSE_TQ = 54;
956    IO_BEFORE_UNLOAD_BROWSER_RESPONSE_TQ = 55;
957
958    V8_LOW_PRIORITY_TQ = 56;
959  }
960
961  optional Priority priority = 1;
962  optional QueueName queue_name = 2;
963}
964
965message AndroidToolbar {
966  enum BlockCaptureReason {
967    BLOCKED_UNKNOWN = 0;
968    BLOCKED_TOOLBAR_OR_RESULT_NULL = 1;
969    BLOCKED_VIEW_NOT_DIRTY = 2;
970    BLOCKED_SNAPSHOT_SAME = 3;
971    BLOCKED_URL_BAR_HAS_FOCUS = 4;
972    BLOCKED_URL_BAR_FOCUS_IN_PROGRESS = 5;
973    BLOCKED_OPTIONAL_BUTTON_ANIMATION_IN_PROGRESS = 6;
974    BLOCKED_STATUS_ICON_ANIMATION_IN_PROGRESS = 7;
975    BLOCKED_SCROLL_ABLATION = 8;
976    BLOCKED_BROWSER_CONTROLS_LOCKED = 9;
977    BLOCKED_TAB_SWITCHER_MODE = 10;
978    BLOCKED_COMPOSITOR_IN_MOTION = 11;
979    BLOCKED_NTP_Y_TRANSLATION = 12;
980    BLOCKED_FULLSCREEN = 13;
981  }
982  enum AllowCaptureReason {
983    ALLOWED_UNKNOWN = 0;
984    ALLOWED_FORCE_CAPTURE = 1;
985    ALLOWED_SNAPSHOT_DIFFERENCE = 2;
986  }
987  enum SnapshotDifference {
988    DIFF_NONE = 0;
989    DIFF_NULL = 1;
990    DIFF_TINT = 2;
991    DIFF_TAB_COUNT = 3;
992    DIFF_OPTIONAL_BUTTON = 4;
993    DIFF_VISUAL_STATE = 5;
994    DIFF_SECURITY_ICON = 6;
995    DIFF_SHOWING_UPDATE_BADGE = 7;
996    DIFF_PAINT_PREVIEW = 8;
997    DIFF_PROGRESS = 9;
998    DIFF_LOCATION_BAR_WIDTH = 10;
999    DIFF_URL_TEXT = 11;
1000    DIFF_HOME_BUTTON = 12;
1001    DIFF_TITLE_TEXT = 13;
1002    DIFF_CCT_ANIMATION = 14;
1003    DIFF_BOOKMARK_BUTTON = 15;
1004    DIFF_BACK_BUTTON = 16;
1005    DIFF_FORWARD_BUTTON = 17;
1006    DIFF_RELOAD_BUTTON = 18;
1007  }
1008
1009  optional BlockCaptureReason block_capture_reason = 1;
1010  optional AllowCaptureReason allow_capture_reason = 2;
1011  optional SnapshotDifference snapshot_difference = 3;
1012}
1013
1014message ActiveProcesses {
1015  repeated int32 pid = 1;
1016}
1017
1018message UkmPageLoadTimingUpdate {
1019  // This can be used to uniquely identify a navigation from the point of view
1020  // of UKM.
1021  optional int64 ukm_source_id = 1;
1022
1023  // The URL of a page can change throughout its lifetime. This is the current
1024  // url when this timing update was dispatched.
1025  optional string latest_url = 2;
1026
1027  // Latest fully aggregated value of Cumulative Layout Shift.
1028  optional float latest_cumulative_layout_shift = 3;
1029
1030  // Latest fully aggregated value of Largest Contentful Paint.
1031  optional double latest_largest_contentful_paint_ms = 4;
1032
1033  optional double first_contentful_paint_ms = 5;
1034}
1035
1036// A serialisation of v8StackFrame class.
1037message V8StackFrame {
1038  // Code location (path to the script and line/column number)
1039  message ScriptLocation {
1040    optional string source_url = 1;
1041    optional int64 line_number = 2;
1042    optional int64 column_number = 3;
1043  }
1044
1045  // The name of the function that was called
1046  optional string function_name = 1;
1047
1048  // If the function was defined in a script, contains the location within the
1049  // script.
1050  optional ScriptLocation script_location = 2;
1051}
1052
1053// Serializes the blink::ExecutionContext object.
1054message BlinkExecutionContext {
1055  // Definition of different context types.
1056  enum ContextType {
1057    UNKNOWN_CONTEXT = 0;
1058    WINDOW = 1;
1059    WORKLET = 2;
1060    DEDICATED_WORKER = 3;
1061    SHARED_WORKER = 4;
1062    SERVICE_WORKER = 5;
1063  }
1064
1065  // Definition of world type.
1066  enum WorldType {
1067    WORLD_UNKNOWN = 0;
1068    WORLD_MAIN = 1;
1069    WORLD_ISOLATED = 2;
1070    WORLD_INSPECTOR_ISOLATED = 3;
1071    WORLD_REG_EXP = 4;
1072    WORLD_FOR_V8_CONTEXT_SNAPSHOT_NON_MAIN = 5;
1073    WORLD_WORKER = 6;
1074    WORLD_SHADOW_REALM = 7;
1075  }
1076
1077  optional ContextType type = 1;
1078  // Contains url of frame or worker.
1079  optional string url = 2;
1080  // The origin of the execution context.
1081  optional string origin = 3;
1082  // The world type of the execution context.
1083  optional WorldType world_type = 4;
1084}
1085
1086// Serializes the blink::SourceLocation object.
1087message BlinkSourceLocation {
1088  optional string function_name = 1;
1089  optional int32 script_id = 2;
1090  optional string url = 3;
1091  optional int32 line_number = 4;
1092  optional int32 column_number = 5;
1093  optional string stack_trace = 6;
1094  repeated V8StackFrame stack_frames = 7;
1095}
1096
1097// Contains the meta information for high entropy events (like api calls)
1098// that are to be traced for debugging in the context of identifiability study.
1099message BlinkHighEntropyAPI {
1100  // Serialization of a parameter passed to a javascript function.
1101  // Contains the stringified type of the object and some string representation
1102  // of its value.
1103  message JSFunctionArgument {
1104    // Definition of different types of function parameters.
1105    enum ArgumentType {
1106      UNKNOWN_TYPE = 0;
1107      NULL_TYPE = 1;
1108      UNDEFINED = 2;
1109      BIGINT = 3;
1110      BOOLEAN = 4;
1111      FUNCTION = 5;
1112      NUMBER = 6;
1113      STRING = 7;
1114      SYMBOL = 8;
1115      OBJECT = 9;
1116    }
1117    optional ArgumentType type = 1;
1118    optional string value = 2;
1119  }
1120
1121  // Describes a Javascript API call.
1122  message CalledJsApi {
1123    // Contains class and function name of api called
1124    // similar to "Navigator.languages.get".
1125    optional string identifier = 1;
1126    repeated JSFunctionArgument func_arguments = 2;
1127
1128    // Deprecated in favour of outer source_location. Not filled anymore in
1129    // newer versions of chrome.
1130    optional BlinkSourceLocation source_location = 3 [deprecated = true];
1131  }
1132  optional BlinkExecutionContext execution_context = 1;
1133  optional CalledJsApi called_api = 2;
1134  optional BlinkSourceLocation source_location = 3;
1135
1136  // Describes lookup of a font.
1137  message FontLookup {
1138    enum FontLookupType {
1139      FONT_LOOKUP_UNKNOWN_TYPE = 0;
1140      FONT_LOOKUP_UNIQUE_OR_FAMILY_NAME = 1;
1141      FONT_LOOKUP_UNIQUE_NAME_ONLY = 2;
1142    }
1143    optional FontLookupType type = 1;
1144    optional string name = 2;
1145    optional uint64 weight = 3;
1146    optional uint64 width = 4;
1147    optional uint64 slope = 5;
1148  }
1149  optional FontLookup font_lookup = 4;
1150}
1151
1152// Contains information about a tab switch measurement.
1153message TabSwitchMeasurement {
1154  // Possible outcomes of a tab switch. Maps to
1155  // blink::ContentToVisibleTimeReporter::TabSwitchResult.
1156  enum Result {
1157    RESULT_UNSPECIFIED = 0;
1158    // A frame was successfully presented after a tab switch.
1159    RESULT_SUCCESS = 1;
1160    // Tab was hidden before a frame was presented after a tab switch.
1161    RESULT_INCOMPLETE = 2;
1162    // TabWasShown called twice for a frame without TabWasHidden between. Treat
1163    // the first TabWasShown as an incomplete tab switch.
1164    RESULT_MISSED_TAB_HIDE = 3;
1165  }
1166
1167  // State of the target tab. Corresponds to the suffixes of the
1168  // Browser.TabSwitchResult2.* histograms.
1169  enum TabState {
1170    STATE_UNSPECIFIED = 0;
1171    // The tab has frames in the frame cache, which can be composited in the
1172    // browser process.
1173    STATE_WITH_SAVED_FRAMES = 1;
1174    // The tab has no frames in the frame cache so must be rendered and
1175    // composited in a renderer process.
1176    STATE_LOADED_NO_SAVED_FRAMES = 2;
1177    // The tab has no frames in the frame cache and is not fully loaded, so it
1178    // must be reloaded before it can be rendered and composited in a renderer
1179    // process.
1180    STATE_NOT_LOADED_NO_SAVED_FRAMES = 3;
1181  }
1182
1183  optional Result result = 1;
1184  optional TabState tab_state = 2;
1185}
1186
1187// Data about scroll deltas and offsets.
1188// All values are in physical screen pixels.
1189message ScrollDeltas {
1190  // The trace_id of the current input.
1191  optional int64 trace_id = 1;
1192  // The original delta for current input. That is, this is the delta that
1193  // the Browser receives from Android, but already scaled to the device's
1194  // screen.
1195  optional float original_delta_x = 2;
1196  optional float original_delta_y = 3;
1197  // The trace_id of the input that the current input is coalesced with.
1198  // If input is not coalesced, this field is null.
1199  optional int64 coalesced_to_trace_id = 4;
1200  // The delta which arrived to compositor.
1201  // This is the sum of all the inputs coalesced together
1202  // with the resampler applied to them.
1203  // This delta is used to calculate a |visual_offset|.
1204  optional float provided_to_compositor_delta_x = 5;
1205  optional float provided_to_compositor_delta_y = 6;
1206  // The offset which compositor set.
1207  optional int64 visual_offset_x = 7;
1208  optional int64 visual_offset_y = 8;
1209
1210  // Data which GPU returns.
1211  // Number of inputs which were shown together in one GPU frame.
1212  optional int32 event_count_in_gpu_frame = 9;
1213  // The trace_ids of inputs which were shown together in one GPU frame.
1214  repeated int64 trace_ids_in_gpu_frame = 10;
1215  // The sum of original deltas of inputs which were shown together in one GPU
1216  // frame.
1217  optional float original_delta_in_gpu_frame_y = 11;
1218  // The sum of predicted deltas of inputs which were shown together in one GPU
1219  // frame.
1220  optional float predicted_delta_in_gpu_frame_y = 12;
1221  // The array of original deltas of inputs which were shown together in one GPU
1222  // frame.
1223  repeated float segregated_original_deltas_in_gpu_frame_y = 13;
1224  // The array of predicted deltas of inputs which were shown together in one
1225  // GPU frame.
1226  repeated float segregated_predicted_deltas_in_gpu_frame_y = 14;
1227}
1228
1229// Debug information for system layer of audio rendering on Windows.
1230message WinRenderAudioFromSource {
1231  // Buffer size used by the platform.
1232  optional uint32 iaudioclient_buffer_size_frames = 1;
1233  // Number of available frames in the platform buffer.
1234  optional uint32 iaudioclient_buffer_unfilled_frames = 2;
1235  // Number of frames requested from the audio stream client.
1236  optional uint32 packet_size_frames = 3;
1237  // Total number of frames requested from the client and written to the
1238  // platform buffer during the stream lifetime.
1239  optional uint64 num_written_frames = 4;
1240  // Total number of frames played by the platform during the stream lifetime.
1241  optional uint64 num_played_out_frames = 5;
1242  // Device frequency reported by the platform; used to convert the stream
1243  // position to frames.
1244  optional uint64 iaudioclock_device_frequency = 6;
1245  // Stream position reported by the platform.
1246  optional uint64 iaudioclock_stream_position = 7;
1247  // Performance counter position reported by the platform.
1248  optional uint64 iaudioclock_qpc_position = 8;
1249  // Stream position increase since the last call, converted to milliseconds.
1250  optional int64 iaudioclock_stream_position_increase_ms = 9;
1251  // Performance counter position since the last call, converted to
1252  // milliseconds.
1253  optional int64 iaudioclock_qpc_position_increase_ms = 10;
1254  // Estimated playout delay, milliseconds.
1255  optional int64 playout_delay_ms = 11;
1256};
1257
1258// Debug information for system layer of audio rendering on Mac.
1259message MacAUHALStream {
1260  // The number of frames that the stream requests from the audio source.
1261  optional int32 input_buffer_size = 1;
1262  // The number of frames that the OS requests for playout.
1263  optional uint32 output_buffer_size = 2;
1264  // Sample rate of the stream.
1265  optional int32 sample_rate = 3;
1266  // The time that the audio requested by the OS is expected to play out.
1267  optional int64 os_request_playout_timeticks_us = 4;
1268  // Total number of frames requested from the audio source.
1269  optional int32 source_request_frames = 5;
1270  // The delay between the request for audio from the source and when the audio
1271  // is expected to be played out.
1272  optional int64 source_request_playout_delay_us = 6;
1273  // The time when the audio that is requested from the source is expected to
1274  // play out.
1275  optional int64 source_request_playout_timeticks_us = 7;
1276  // The time when audio audio is requested from the source.
1277  optional int64 source_request_current_timeticks_us = 8;
1278  // The audio playout latency that comes from hardware, in milliseconds.
1279  optional int64 hardware_latency_us = 9;
1280  // Whether the kAudioTimeStampHostTimeValid is set on the output
1281  // AudioTimeStamp.
1282  optional bool audiotimestamp_host_time_valid = 10;
1283  // The playout time based on the machine time from AudioTimeStamp.
1284  optional int64 audiotimestamp_mach_timeticks_us = 11;
1285  // The time that the audio requested by the os is expected to be consumed by
1286  // the hardware. Measured in frames since the start of playout.
1287  optional double audiotimestamp_sample_time_frames = 12;
1288  // The time that the previous audio requested by the os was expected to be
1289  // consumed by the hardware. Measured in frames since the start of playout.
1290  optional double audiotimestamp_last_sample_time_frames = 13;
1291  // The duration of audio that was estimated to be lost in the case of a
1292  // glitch.
1293  optional int64 lost_audio_duration_us = 14;
1294};
1295
1296// Debug information for system layer of audio rendering using ALSA on Linux.
1297message LinuxAlsaOutput {
1298  // The delay between the request for audio from the source and when the audio
1299  // is expected to be played out.
1300  optional int64 source_request_playout_delay_us = 1;
1301  // The number of bytes that are already present in the buffer on a call to
1302  // BufferPacket.
1303  optional int32 forward_bytes = 2;
1304  // Sample rate of the stream.
1305  optional int32 sample_rate = 3;
1306  // Delay obtained by the OS in frames.
1307  optional int32 getcurrentdelay_pcm_delay_frames = 4;
1308  // The number of frames in ALSA's buffer.
1309  optional int32 getcurrentdelay_alsa_buffer_frames = 5;
1310  // The number of frames that can be written to in ALSA's buffer.
1311  optional int32 getcurrentdelay_available_frames = 6;
1312  // The final delay that GetCurrentDelay arrives on, in frames.
1313  optional int32 getcurrentdelay_final_delay_frames = 7;
1314};
1315
1316// Debug information for system layer of audio rendering using Pulse on Linux.
1317message LinuxPulseOutput {
1318  // The delay between the request for audio from the source and when the audio
1319  // is expected to be played out.
1320  optional int64 source_request_playout_delay_us = 1;
1321  // Sample rate of the stream.
1322  optional int32 sample_rate = 2;
1323  // The number of frames that the stream requests from the audio source.
1324  optional int32 input_buffer_size_frames = 3;
1325  // The number of bytes that the OS requests.
1326  optional uint32 stream_request_bytes = 4;
1327  // The number of bytes in a single frame.
1328  optional uint32 frame_size_bytes = 5;
1329};
1330
1331// Debug information for system layer of audio rendering on ChromeOS.
1332message CrasUnified {
1333  // The total duration of silence due to missing samples during the stream.
1334  optional int64 underrun_duration_us = 1;
1335  // Previous underrun duration, used for calculating the length of silence
1336  // since the last callback.
1337  optional int64 last_underrun_duration_us = 2;
1338  // Difference in total underrun duration since the last callback. Logged only
1339  // when positive, which is when a glitch occurs.
1340  optional int64 underrun_glitch_duration_us = 3;
1341  // OS playout latency reported by cras.
1342  optional int64 latency_us = 4;
1343  // The number of frames that the stream requests from the audio source.
1344  optional int32 requested_frames = 5;
1345  // The number of frames that the source provided.
1346  optional uint32 filled_frames = 6;
1347  // Sample rate of the stream.
1348  optional int32 sample_rate = 7;
1349};
1350
1351message ChromeUnguessableToken {
1352  optional uint64 low_token = 1;
1353  optional uint64 high_token = 2;
1354}
1355
1356message FrameSinkId {
1357  optional uint32 frame_sink_client_id = 1;
1358  optional uint32 frame_sink_id = 2;
1359}
1360
1361message LocalSurfaceId {
1362  optional uint32 parent_sequence_number = 1;
1363  optional uint32 child_sequence_number = 2;
1364  optional ChromeUnguessableToken unguessable_token = 3;
1365}
1366
1367message ChromeGraphicsPipeline {
1368  enum StepName {
1369    STEP_UNKNOWN = 0;
1370    STEP_DID_NOT_PRODUCE_FRAME = 1;
1371    STEP_GENERATE_COMPOSITOR_FRAME = 2;
1372    STEP_GENERATE_RENDER_PASS = 3;
1373    STEP_ISSUE_BEGIN_FRAME = 4;
1374    STEP_RECEIVE_COMPOSITOR_FRAME = 5;
1375    STEP_RECEIVE_BEGIN_FRAME = 6;
1376    STEP_RECEIVE_BEGIN_FRAME_DISCARD = 7;
1377    STEP_SEND_BEGIN_MAIN_FRAME = 8;
1378    STEP_SUBMIT_COMPOSITOR_FRAME = 9;
1379    STEP_SURFACE_AGGREGATION = 10;
1380    STEP_SEND_BUFFER_SWAP = 11;
1381    STEP_BUFFER_SWAP_POST_SUBMIT = 12;
1382    STEP_FINISH_BUFFER_SWAP = 13;
1383    STEP_SWAP_BUFFERS_ACK = 14;
1384  }
1385  enum FrameSkippedReason {
1386    SKIPPED_REASON_UNKNOWN = 0;
1387    SKIPPED_REASON_RECOVER_LATENCY = 1;
1388    SKIPPED_REASON_NO_DAMAGE = 2;
1389    SKIPPED_REASON_WAITING_ON_MAIN = 3;
1390    SKIPPED_REASON_DRAW_THROTTLED = 4;
1391  }
1392  optional StepName step = 1;
1393  optional FrameSinkId frame_sink_id = 2;
1394  optional int64 display_trace_id = 3;
1395  optional LocalSurfaceId local_surface_id = 4;
1396  optional int64 frame_sequence = 5;
1397  optional FrameSkippedReason frame_skipped_reason = 6;
1398};
1399
1400message LibunwindstackUnwinder {
1401  // The enum is a copy of ErrorCode enum inside third_party/libunwindstack,
1402  // ideally this should be in sync with that.
1403  enum ErrorCode {
1404    ERROR_NONE = 0;            // No error.
1405    ERROR_MEMORY_INVALID = 1;  // Memory read failed.
1406    ERROR_UNWIND_INFO = 2;     // Unable to use unwind information to unwind.
1407    ERROR_UNSUPPORTED = 3;     // Encountered unsupported feature.
1408    ERROR_INVALID_MAP = 4;     // Unwind in an invalid map.
1409    ERROR_MAX_FRAMES_EXCEEDED = 5;  // The number of frames exceed the total
1410                                    // allowed.
1411    ERROR_REPEATED_FRAME = 6;  // The last frame has the same pc/sp as the next.
1412    ERROR_INVALID_ELF = 7;     // Unwind in an invalid elf.
1413    ERROR_THREAD_DOES_NOT_EXIST = 8;  // Attempt to unwind a local thread that
1414                                      // does not exist.
1415    ERROR_THREAD_TIMEOUT = 9;  // Timeout trying to unwind a local thread.
1416    ERROR_SYSTEM_CALL = 10;    // System call failed while unwinding.
1417    ERROR_BAD_ARCH = 11;       // Arch invalid (none, or mismatched).
1418    ERROR_MAPS_PARSE = 12;     // Failed to parse maps data.
1419    ERROR_INVALID_PARAMETER_LIBUNWINDSTACK =
1420        13;                  // Invalid parameter passed to function.
1421    ERROR_PTRACE_CALL = 14;  // Ptrace call failed while unwinding.
1422  }
1423  optional ErrorCode error_code = 1;
1424  optional int32 num_frames = 2;
1425};
1426
1427message ScrollPredictorMetrics {
1428  message EventFrameValue {
1429    optional int64 event_trace_id = 1;
1430    // The fractional pixels (can be fractional after the predictor adjusts in
1431    // resampling of input) that the page was scrolled by this frame.
1432    optional float delta_value_pixels = 2;
1433  };
1434  // Data from the previous, current, and next frame used to determine the
1435  // values below as according to the metric doc:
1436  // http://doc/1Y0u0Tq5eUZff75nYUzQVw6JxmbZAW9m64pJidmnGWsY.
1437  optional EventFrameValue prev_event_frame_value = 1;
1438  optional EventFrameValue cur_event_frame_value = 2;
1439  optional EventFrameValue next_event_frame_value = 3;
1440  // This is the amount of delta processed in this frame that was above the
1441  // janky threshold (as defined by
1442  // http://doc/1Y0u0Tq5eUZff75nYUzQVw6JxmbZAW9m64pJidmnGWsY)
1443  optional float janky_value_pixels = 4;
1444  // True if we are also missing frames (so multiple frames are being presented
1445  // at once).
1446  optional bool has_missed_vsyncs = 5;
1447  // True if we're moving less than the slow scroll threshold as defined by the
1448  // doc above.
1449  optional bool is_slow_scroll = 6;
1450};
1451
1452//
1453// Critical User Interaction metrics
1454//
1455
1456message PageLoad {
1457  optional int64 navigation_id = 1;
1458  optional string url = 2;
1459}
1460
1461message StartUp {
1462  // This enum must be kept up to date with LaunchCauseMetrics.LaunchCause.
1463  enum LaunchCauseType {
1464    OTHER = 0;
1465    CUSTOM_TAB = 1;
1466    TWA = 2;
1467    RECENTS = 3;
1468    RECENTS_OR_BACK = 4;
1469    FOREGROUND_WHEN_LOCKED = 5;
1470    MAIN_LAUNCHER_ICON = 6;
1471    MAIN_LAUNCHER_ICON_SHORTCUT = 7;
1472    HOME_SCREEN_WIDGET = 8;
1473    OPEN_IN_BROWSER_FROM_MENU = 9;
1474    EXTERNAL_SEARCH_ACTION_INTENT = 10;
1475    NOTIFICATION = 11;
1476    EXTERNAL_VIEW_INTENT = 12;
1477    OTHER_CHROME = 13;
1478    WEBAPK_CHROME_DISTRIBUTOR = 14;
1479    WEBAPK_OTHER_DISTRIBUTOR = 15;
1480    HOME_SCREEN_SHORTCUT = 16;
1481    SHARE_INTENT = 17;
1482    NFC = 18;
1483  }
1484
1485  optional int64 activity_id = 1;
1486  // deprecated field 2.
1487  optional LaunchCauseType launch_cause = 3;
1488}
1489
1490message WebContentInteraction {
1491  enum Type {
1492    INTERACTION_UNSPECIFIED = 0;
1493    INTERACTION_KEYBOARD = 1;
1494    INTERACTION_CLICK_TAP = 2;
1495    INTERACTION_DRAG = 3;
1496  }
1497
1498  optional Type type = 1;
1499  optional int64 total_duration_ms = 2;
1500}
1501
1502message ChromeTrackEvent {
1503  // Extension range for Chrome: 1000-1999
1504  // Next ID: 1059
1505  extend TrackEvent {
1506    optional ChromeAppState chrome_app_state = 1000;
1507
1508    optional ChromeMemoryPressureNotification
1509        chrome_memory_pressure_notification = 1001;
1510
1511    optional ChromeTaskAnnotator chrome_task_annotator = 1002;
1512
1513    optional ChromeBrowserContext chrome_browser_context = 1003;
1514
1515    optional ChromeProfileDestroyer chrome_profile_destroyer = 1004;
1516
1517    optional ChromeTaskPostedToDisabledQueue
1518        chrome_task_posted_to_disabled_queue = 1005;
1519
1520    optional ChromeRasterTask chrome_raster_task = 1006;
1521
1522    optional ChromeMessagePumpForUI chrome_message_pump_for_ui = 1007;
1523
1524    optional RenderFrameImplDeletion render_frame_impl_deletion = 1008;
1525
1526    optional ShouldSwapBrowsingInstancesResult
1527        should_swap_browsing_instances_result = 1009;
1528
1529    optional FrameTreeNodeInfo frame_tree_node_info = 1010;
1530
1531    optional ChromeHashedPerformanceMark chrome_hashed_performance_mark = 1011;
1532
1533    optional RenderProcessHost render_process_host = 1012;
1534    optional RenderProcessHostCleanup render_process_host_cleanup = 1013;
1535    optional RenderProcessHostListener render_process_host_listener_changed =
1536        1014;
1537    optional ChildProcessLauncherPriority child_process_launcher_priority =
1538        1015;
1539
1540    optional ResourceBundle resource_bundle = 1016;
1541
1542    optional ChromeWebAppBadNavigate chrome_web_app_bad_navigate = 1017;
1543
1544    optional ChromeExtensionId chrome_extension_id = 1018;
1545
1546    optional SiteInstance site_instance = 1019;
1547
1548    optional RenderViewHost render_view_host = 1020;
1549
1550    optional RenderFrameProxyHost render_frame_proxy_host = 1021;
1551
1552    optional AndroidViewDump android_view_dump = 1022;
1553
1554    optional ParkableStringCompressInBackground
1555        parkable_string_compress_in_background = 1023;
1556    optional ParkableStringUnpark parkable_string_unpark = 1024;
1557
1558    optional ChromeSamplingProfilerSampleCollected
1559        chrome_sampling_profiler_sample_completed = 1025;
1560    optional SendBeginMainFrameToCommitBreakdown
1561        send_begin_mainframe_to_commit_breakdown = 1026;
1562
1563    optional GlobalRenderFrameHostId global_render_frame_host_id = 1027;
1564
1565    optional RenderFrameHost render_frame_host = 1028;
1566
1567    optional ChromeThreadPoolTask thread_pool_task = 1029;
1568
1569    optional BackForwardCacheCanStoreDocumentResult
1570        back_forward_cache_can_store_document_result = 1030;
1571
1572    optional RendererMainThreadTaskExecution
1573        renderer_main_thread_task_execution = 1031;
1574
1575    optional EventLatency event_latency = 1032;
1576
1577    optional ProcessSingleton process_singleton = 1033;
1578
1579    optional SiteInstanceGroup site_instance_group = 1034;
1580
1581    optional BrowsingContextState browsing_context_state = 1035;
1582
1583    optional DeviceThermalState device_thermal_state = 1036;
1584
1585    optional NavigationHandle navigation = 1037;
1586
1587    optional AndroidIPC android_ipc = 1038;
1588
1589    optional ChromeSqlDiagnostics sql_diagnostics = 1039;
1590
1591    optional SequenceManagerTask sequence_manager_task = 1040;
1592
1593    optional AndroidToolbar android_toolbar = 1041;
1594
1595    optional ActiveProcesses active_processes = 1042;
1596
1597    optional BlinkTaskScope blink_task_scope = 1043;
1598
1599    optional UkmPageLoadTimingUpdate ukm_page_load_timing_update = 1044;
1600
1601    optional BlinkHighEntropyAPI high_entropy_api = 1045;
1602
1603    optional TabSwitchMeasurement tab_switch_measurement = 1046;
1604
1605    optional ScrollDeltas scroll_deltas = 1047;
1606
1607    optional WinRenderAudioFromSource win_render_audio_from_source = 1048;
1608
1609    optional MacAUHALStream mac_auhal_stream = 1049;
1610
1611    optional LinuxAlsaOutput linux_alsa_output = 1050;
1612
1613    optional LinuxPulseOutput linux_pulse_output = 1051;
1614
1615    optional ChromeGraphicsPipeline chrome_graphics_pipeline = 1052;
1616
1617    optional CrasUnified chromeos_cras_unified = 1053;
1618
1619    optional LibunwindstackUnwinder libunwindstack_unwinder = 1054;
1620
1621    optional ScrollPredictorMetrics scroll_predictor_metrics = 1055;
1622
1623    optional PageLoad page_load = 1056;
1624
1625    optional StartUp startup = 1057;
1626
1627    optional WebContentInteraction web_content_interaction = 1058;
1628  }
1629}
1630