• 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  optional uint32 ipc_hash = 1;
50  // The delay in microseconds that was specified, if any, when this task was
51  // posted. This is only valid for delayed tasks.
52  optional uint64 task_delay_us = 2;
53}
54
55message ChromeBrowserContext {
56  reserved 1;
57  optional string id = 2;
58}
59
60message ChromeProfileDestroyer {
61  optional fixed64 profile_ptr = 1;
62  optional bool is_off_the_record = 2;
63  optional string otr_profile_id = 3;
64  optional uint32 host_count_at_creation = 4;
65  optional uint32 host_count_at_destruction = 5;
66  optional fixed64 render_process_host_ptr = 6;
67}
68
69message ChromeTaskPostedToDisabledQueue {
70  optional string task_queue_name = 1;
71  optional uint64 time_since_disabled_ms = 2;
72  optional uint32 ipc_hash = 3;
73  optional uint64 source_location_iid = 4;
74}
75
76message ChromeRasterTask {
77  optional int64 source_frame_number = 1;
78}
79
80message ChromeMessagePumpForUI {
81  // The MSG defined in winuser.h.
82  optional uint32 message_id = 1;
83}
84
85// An enumeration specifying the reason of the RenderFrame deletion.
86// This is copied from content/common/frame.mojom.
87enum FrameDeleteIntention {
88  // The frame being deleted isn't a (speculative) main frame.
89  FRAME_DELETE_INTENTION_NOT_MAIN_FRAME = 0;
90
91  // The frame being deleted is a speculative main frame, and it is being
92  // deleted as part of the shutdown for that WebContents. The entire RenderView
93  // etc will be destroyed by a separate IPC sent later.
94  FRAME_DELETE_INTENTION_SPECULATIVE_MAIN_FRAME_FOR_SHUTDOWN = 1;
95
96  // The frame being deleted is a speculative main frame, and it is being
97  // deleted because the speculative navigation was cancelled. This is not part
98  // of shutdown.
99  FRAME_DELETE_INTENTION_SPECULATIVE_MAIN_FRAME_FOR_NAVIGATION_CANCELLED = 2;
100}
101
102message RenderFrameImplDeletion {
103  // The intent for the deletion.
104  optional FrameDeleteIntention intent = 1;
105
106  // Whether the frame that's about to be deleted has a pending navigation
107  // commit.
108  optional bool has_pending_commit = 2;
109
110  // Whether the frame that's about to be deleted has a pending cross-document
111  // navigation commit.
112  optional bool has_pending_cross_document_commit = 3;
113
114  // The FrameTreeNode ID of the frame that's about to be deleted.
115  optional uint64 frame_tree_node_id = 4;
116}
117
118// Matches content::ShouldSwapBrowsingInstance.
119enum ShouldSwapBrowsingInstance {
120  // Was used for all "no BrowsingInstance swap" scenarios, now broken down in
121  // separate reasons.
122  SHOULD_SWAP_BROWSING_INSTANCE_NO = 0;
123
124  // Forced BrowsingInstance swap.
125  SHOULD_SWAP_BROWSING_INSTANCE_YES_FORCE_SWAP = 1;
126
127  // Proactive BrowsingInstance swap for cross-site navigation.
128  SHOULD_SWAP_BROWSING_INSTANCE_YES_CROSS_SITE_PROACTIVE_SWAP = 2;
129
130  // Proactive BrowsingInstance swap for same-site navigation.
131  SHOULD_SWAP_BROWSING_INSTANCE_YES_SAME_SITE_PROACTIVE_SWAP = 3;
132
133  SHOULD_SWAP_BROWSING_INSTANCE_NO_PROACTIVE_SWAP_DISABLED = 4;
134  SHOULD_SWAP_BROWSING_INSTANCE_NO_NOT_MAIN_FRAME = 5;
135  SHOULD_SWAP_BROWSING_INSTANCE_NO_HAS_RELATED_ACTIVE_CONTENTS = 6;
136  SHOULD_SWAP_BROWSING_INSTANCE_NO_DOES_NOT_HAVE_SITE = 7;
137  SHOULD_SWAP_BROWSING_INSTANCE_NO_SOURCE_URL_SCHEME_NOT_HTTP_OR_HTTPS = 8;
138  SHOULD_SWAP_BROWSING_INSTANCE_NO_DESTINATION_URL_SCHEME_NOT_HTTP_OR_HTTPS = 9;
139  SHOULD_SWAP_BROWSING_INSTANCE_NO_SAME_SITE_NAVIGATION = 10;
140  SHOULD_SWAP_BROWSING_INSTANCE_NO_RELOADING_ERROR_PAGE = 11;
141  SHOULD_SWAP_BROWSING_INSTANCE_NO_ALREADY_HAS_MATCHING_BROWSING_INSTANCE = 12;
142  SHOULD_SWAP_BROWSING_INSTANCE_NO_RENDERER_DEBUG_URL = 13;
143  SHOULD_SWAP_BROWSING_INSTANCE_NO_NOT_NEEDED_FOR_BACK_FORWARD_CACHE = 14;
144  SHOULD_SWAP_BROWSING_INSTANCE_NO_SAME_DOCUMENT_NAVIGATION = 15;
145  SHOULD_SWAP_BROWSING_INSTANCE_NO_SAME_URL_NAVIGATION = 16;
146  SHOULD_SWAP_BROWSING_INSTANCE_NO_WILL_REPLACE_ENTRY = 17;
147  SHOULD_SWAP_BROWSING_INSTANCE_NO_RELOAD = 18;
148  SHOULD_SWAP_BROWSING_INSTANCE_NO_GUEST = 19;
149  SHOULD_SWAP_BROWSING_INSTANCE_NO_HAS_NOT_COMMITTED_ANY_NAVIGATION = 20;
150  // The following reason was deprecated from https://crrev.com/c/3858766
151  SHOULD_SWAP_BROWSING_INSTANCE_NO_UNLOAD_HANDLER_EXISTS_ON_SAME_SITE_NAVIGATION =
152      21;
153  SHOULD_SWAP_BROWSING_INSTANCE_NO_NOT_PRIMARY_MAIN_FRAME = 22;
154}
155
156message ShouldSwapBrowsingInstancesResult {
157  // The FrameTreeNode ID.
158  optional uint64 frame_tree_node_id = 1;
159
160  // Whether a navigation will do a BrowsingInstance swap or not.
161  optional ShouldSwapBrowsingInstance result = 2;
162}
163
164message FrameTreeNodeInfo {
165  // The FrameTreeNode ID.
166  optional uint64 frame_tree_node_id = 1;
167
168  // Whether the frame is a main frame or not.
169  optional bool is_main_frame = 2;
170
171  // Whether there's a speculative RenderFrameHost or not.
172  optional bool has_speculative_render_frame_host = 3;
173
174  optional RenderFrameHost current_frame_host = 4;
175  optional RenderFrameHost speculative_frame_host = 5;
176
177  // NOTE: this proto must be kept consistent with
178  // content::FrameType.
179  enum FrameType {
180    UNSPECIFIED_FRAME_TYPE = 0;
181    SUBFRAME = 1;
182    PRIMARY_MAIN_FRAME = 2;
183    PRERENDER_MAIN_FRAME = 3;
184    FENCED_FRAME_ROOT = 4;
185  }
186
187  optional FrameType frame_type = 6;
188
189  // Additional untyped debug information associated with this
190  // FrameTreeNode, populated via TracedProto::AddDebugAnnotations API.
191  repeated DebugAnnotation debug_annotations = 99;
192}
193
194message ChromeHashedPerformanceMark {
195  optional uint32 site_hash = 1;
196  optional string site = 2;
197  optional uint32 mark_hash = 3;
198  optional string mark = 4;
199
200  // A randomly generated unique identifier for a given ExecutionContext
201  // (document, worker, etc). Used to be able to correlate events in a process
202  // where there are multiple execution contexts from the same site.
203  optional uint32 execution_context_id = 5;
204
205  // Indicates the sequence number of this particular mark being emitted from
206  // a particular site in the scope of a single ExecutionContext. Typical
207  // sites emit batches of events that are correlated in time (a thing started,
208  // a thing reached a given milestone, a thing completed). When these events
209  // are intermixed it is useful to know which ones are semantically related.
210  // The value is generated by the content itself, but shifted by a fixed
211  // random offset at runtime so as to limit usage as a side channel.
212  optional uint32 sequence_number = 6;
213}
214
215// Sent on SQL errors where we need string diagnostics. Corresponds to
216// `Database::DatabaseDiagnostics` in the Chrome SQL code. Does not contain any
217// PII, because the bound values are not included in the SQL statement.
218message ChromeSqlDiagnostics {
219  optional int32 reported_sqlite_error_code = 1;
220  optional int32 error_code = 2;
221  optional int32 last_errno = 3;
222  optional string sql_statement = 4;
223  optional int32 version = 5;
224
225  // Most rows in 'sql_schema' have a non-NULL 'sql' column. Those rows' 'sql'
226  // contents are logged here, one element per row.
227  repeated string schema_sql_rows = 6;
228
229  // Some rows of 'sql_schema' have a NULL 'sql' column. They are typically
230  // autogenerated indices, like "sqlite_autoindex_downloads_slices_1". These
231  // are also logged here by their 'name' column, one element per row.
232  repeated string schema_other_row_names = 7;
233
234  optional bool has_valid_header = 8;
235  optional bool has_valid_schema = 9;
236  optional string error_message = 10;
237}
238
239message ChromeWebAppBadNavigate {
240  optional bool is_kiosk = 1;
241  optional bool has_hosted_app_controller = 2;
242  optional string app_name = 3;
243  optional uint32 system_app_type = 4;
244  optional bool web_app_provider_registry_ready = 5;
245  optional bool system_web_app_manager_synchronized = 6;
246}
247
248// These IDs are generated at compile time and differ for each chrome version.
249// IDs are stable on for a given chrome version but are changing when resources
250// are added or removed to chrome.
251message ResourceBundle {
252  optional uint32 resource_id = 1;
253}
254
255// Information about RenderProcessHost.
256message RenderProcessHost {
257  // Unique Id to identify the RenderProcessHost. This is the browser-side,
258  // persistent id for this RenderProcessHost that stays constant even across OS
259  // layer processes managed by this RenderProcessHost.
260  optional uint32 id = 1;
261  // See ProcessLock::ToString().
262  optional string process_lock = 2;
263  // The PID of the child process.
264  optional int32 child_process_id = 3;
265
266  // Details about the associated browser context.
267  optional ChromeBrowserContext browser_context = 4;
268
269  // Additional untyped debug information associated with this
270  // RenderProcessHost, populated via TracedProto::AddDebugAnnotations API.
271  repeated DebugAnnotation debug_annotations = 99;
272}
273
274message RenderProcessHostListener {
275  // Routing ID of the listener to the RenderProcessHost, recorded when a new ID
276  // is added or when an ID is removed.
277  optional uint32 routing_id = 1;
278}
279
280message RenderProcessHostCleanup {
281  // Number of IPC listeners registered to the host when Cleanup() was called.
282  optional uint32 listener_count = 1;
283  // Number of "keep alive" references active in the RenderProcessHost, recorded
284  // when Cleanup() was called.
285  optional uint32 keep_alive_ref_count = 2;
286  // Number of "shutdown delay" references active in the RenderProcessHost,
287  // recorded when Cleanup() was called.
288  optional uint32 shutdown_delay_ref_count = 3;
289  // Number of "worker delay" references active in the RenderProcessHost,
290  // recorded when Cleanup() was called.
291  optional uint32 worker_ref_count = 4;
292  // Number of "pending reuse" references active in the RenderProcessHost,
293  // recorded when Cleanup() was called.
294  optional uint32 pending_reuse_ref_count = 5;
295}
296
297message ChildProcessLauncherPriority {
298  // True if the new priority set to background.
299  optional bool is_backgrounded = 1;
300  // True if the renderer proecss has pending views.
301  optional bool has_pending_views = 2;
302
303  // Importance of the child process in Android.
304  enum Importance {
305    IMPORTANCE_NORMAL = 1;
306    IMPORTANCE_MODERATE = 2;
307    IMPORTANCE_IMPORTANT = 3;
308  }
309  optional Importance importance = 3;
310}
311
312// Information that identifies a Chrome Extension.
313message ChromeExtensionId {
314  // Unique id that identifies a Chrome Extension.
315  optional string extension_id = 1;
316
317  // Pseudonymized `extension_id` field (see also
318  // content::PseudonymizationUtil::PseudonymizeString method).
319  optional uint32 pseudonymized_extension_id = 2;
320}
321
322message SiteInstance {
323  // The ID of the SiteInstance.
324  optional int32 site_instance_id = 1;
325
326  // The ID of the BrowsingInstance that the SiteInstance belongs to.
327  optional int32 browsing_instance_id = 2;
328
329  // Whether the SiteInstance is the "default SiteInstance" or not. Non-isolated
330  // sites on Android are not assigned to their own specific per-site process,
331  // and shares SiteInstances with each other (the default SiteInstance).
332  optional bool is_default = 3;
333
334  // Whether this SiteInstance has a running process associated with it.
335  optional bool has_process = 4;
336
337  // Returns the total active WebContents count for this SiteInstance and all
338  // related SiteInstances in the same BrowsingInstance.
339  optional int32 related_active_contents_count = 5;
340
341  // The number of active RenderFrameHosts this SiteInstance's SiteInstanceGroup
342  // has.
343  optional int32 active_rfh_count = 6;
344
345  // The SiteInstanceGroup this SiteInstance belongs to.
346  optional SiteInstanceGroup site_instance_group = 7;
347
348  // Additional untyped debug information associated with this
349  // SiteInstance, populated via TracedProto::AddDebugAnnotations API.
350  repeated DebugAnnotation debug_annotations = 99;
351}
352
353message SiteInstanceGroup {
354  // The ID of the SiteInstanceGroup.
355  optional int32 site_instance_group_id = 1;
356
357  // The number of active frames in this SiteInstanceGroup.
358  optional int32 active_frame_count = 2;
359
360  // The process ID of the SiteInstanceGroup.
361  optional RenderProcessHost process = 3;
362
363  // Additional untyped debug information associated with this
364  // SiteInstanceGroup, populated via TracedProto::AddDebugAnnotations API.
365  repeated DebugAnnotation debug_annotations = 99;
366}
367
368// Next ID: 7
369message RenderViewHost {
370  // The RenderViewHostMapId for the RenderViewHost.
371  optional int32 rvh_map_id = 1;
372
373  // The routing ID for the RenderViewHost.
374  optional int32 routing_id = 2;
375
376  // The process ID of the RenderViewHost. Deprecated in favour of |process|.
377  optional int32 process_id = 3;
378
379  // Process this RenderViewHost is associated with.
380  optional RenderProcessHost process = 6;
381
382  // Whether the RenderViewHost is in back/forward cache or not.
383  optional bool is_in_back_forward_cache = 4;
384
385  // Whether the renderer-side RenderView is created.
386  optional bool renderer_view_created = 5;
387
388  // Additional untyped debug information associated with this
389  // RenderViewHost, populated via TracedProto::AddDebugAnnotations API.
390  repeated DebugAnnotation debug_annotations = 99;
391}
392
393message RenderFrameProxyHost {
394  // The routing ID for the RenderFrameProxyHost.
395  optional int32 routing_id = 1;
396
397  // The process ID of the RenderFrameProxyHost.
398  optional int32 process_id = 2;
399
400  // The RenderViewHostMapId of the RenderViewHost associated with the
401  // RenderFrameProxyHost.
402  optional int32 rvh_map_id = 3;
403
404  // The SiteInstanceId of the SiteInstance associated with the
405  // RenderFrameProxyHost.
406  optional int32 site_instance_id = 4;
407
408  // Whether the renderer-side RenderFrameProxy is live or not.
409  optional bool is_render_frame_proxy_live = 5;
410
411  // The SiteInstanceGroupId of the SiteInstanceGroup associated with the
412  // RenderFrameProxyHost.
413  optional int32 site_instance_group_id = 6;
414
415  // Additional untyped debug information associated with this
416  // RenderFrameProxyHost, populated via TracedProto::AddDebugAnnotations API.
417  repeated DebugAnnotation debug_annotations = 99;
418}
419
420message AndroidView {
421  optional int32 id = 1;
422  optional int32 parent_id = 2;
423  optional bool is_shown = 3;
424  optional bool is_dirty = 4;
425  optional string class_name = 5;
426  optional string resource_name = 6;
427}
428
429message AndroidActivity {
430  optional string name = 1;
431  repeated AndroidView view = 2;
432}
433
434message AndroidViewDump {
435  repeated AndroidActivity activity = 1;
436}
437
438message ParkableStringCompressInBackground {
439  // The size of the string that is being compressed, in bytes.
440  optional int32 size_bytes = 1;
441}
442
443message ParkableStringUnpark {
444  // The size of the string that is being unparked, in bytes.
445  optional int32 size_bytes = 1;
446
447  // The elapsed time since the string was written to disk (in seconds), or -1
448  // if it hadn't yet been written to disk.
449  optional int32 time_since_last_disk_write_sec = 2;
450}
451
452message ChromeSamplingProfilerSampleCollected {
453  optional int32 frame_count = 1;
454
455  enum WriteStatus {
456    WRITE_STATUS_NONE = 0;
457    WRITE_STATUS_BUFFERING_SAMPLE = 1;
458    WRITE_STATUS_WRITING_BUFFERED = 2;
459    WRITE_STATUS_WRITING_TO_TRACE = 3;
460  }
461  optional WriteStatus write_status = 2;
462
463  optional int32 sampled_thread_id = 3;
464}
465
466// Reports the latency caused by each breakdown in the
467// SendBeginMainFrameToCommit stage of the PipelineReporter.
468message SendBeginMainFrameToCommitBreakdown {
469  // Handle input events breakdown
470  optional uint64 handle_input_events_us = 1;
471
472  // Animate breakdown
473  optional uint64 animate_us = 2;
474
475  // Style update breakdown
476  optional uint64 style_update_us = 3;
477
478  // Layout update breakdown
479  optional uint64 layout_update_us = 4;
480
481  // Accessibility update breakdown
482  optional uint64 accessibility_update_us = 12;
483
484  // Prepaint breakdown
485  optional uint64 prepaint_us = 5;
486
487  // Compositing inputs breakdown
488  optional uint64 compositing_inputs_us = 6;
489
490  // Compositing assignments breakdown
491  optional uint64 compositing_assignments_us = 7;
492
493  // Paint breakdown
494  optional uint64 paint_us = 8;
495
496  // Composite commit breakdown
497  optional uint64 composite_commit_us = 9;
498
499  // Update layers breakdown
500  optional uint64 update_layers_us = 10;
501
502  // Beginmainsenttostarted breakdown
503  optional uint64 begin_main_sent_to_started_us = 11;
504}
505
506message GlobalRenderFrameHostId {
507  optional int32 routing_id = 1;
508  optional int32 process_id = 2;
509}
510
511message BrowsingContextState {
512  // The ID of the BrowsingInstance that the BrowsingContextState belongs to.
513  optional int32 browsing_instance_id = 1;
514
515  // Additional untyped debug information associated with this
516  // FrameTreeNode, populated via TracedProto::AddDebugAnnotations API.
517  repeated DebugAnnotation debug_annotations = 99;
518}
519
520message RenderFrameHost {
521  optional RenderProcessHost process = 1;
522  optional GlobalRenderFrameHostId render_frame_host_id = 2;
523
524  // NOTE: this proto must be kept consistent with
525  // RenderFrameHostImpl::LifecycleStateImpl.
526  enum LifecycleState {
527    UNSPECIFIED = 0;
528    SPECULATIVE = 1;
529    PENDING_COMMIT = 2;
530    PRERENDERING = 3;
531    ACTIVE = 4;
532    IN_BACK_FORWARD_CACHE = 5;
533    RUNNING_UNLOAD_HANDLERS = 6;
534    READY_TO_BE_DELETED = 7;
535  }
536
537  optional LifecycleState lifecycle_state = 3;
538  optional string origin = 4;
539  optional string url = 5;
540  optional uint64 frame_tree_node_id = 6;
541  optional SiteInstance site_instance = 7;
542  optional RenderFrameHost parent = 8;
543  optional RenderFrameHost outer_document = 9;
544  optional RenderFrameHost embedder = 10;
545  optional BrowsingContextState browsing_context_state = 11;
546  optional FrameTreeNodeInfo.FrameType frame_type = 12;
547
548  // Additional untyped debug information associated with this
549  // RenderViewHost, populated via TracedProto::AddDebugAnnotations API.
550  repeated DebugAnnotation debug_annotations = 99;
551}
552
553message ChromeThreadPoolTask {
554  enum Priority {
555    PRIORITY_UNSPECIFIED = 0;
556    PRIORITY_BEST_EFFORT = 1;
557    PRIORITY_USER_VISIBLE = 2;
558    PRIORITY_USER_BLOCKING = 3;
559  }
560
561  enum ExecutionMode {
562    EXECTUION_MODE_UNSPECIFIED = 0;
563    EXECUTION_MODE_PARALLEL = 1;
564    EXECUTION_MODE_SEQUENCED = 2;
565    EXECUTION_MODE_SINGLE_THREAD = 3;
566    EXECUTION_MODE_JOB = 4;
567  }
568
569  enum ShutdownBehavior {
570    SHUTDOWN_BEHAVIOR_UNSPECIFIED = 0;
571    SHUTDOWN_BEHAVIOR_CONTINUE_ON_SHUTDOWN = 1;
572    SHUTDOWN_BEHAVIOR_SKIP_ON_SHUTDOWN = 2;
573    SHUTDOWN_BEHAVIOR_BLOCK_SHUTDOWN = 3;
574  }
575
576  optional Priority task_priority = 1;
577  optional ExecutionMode execution_mode = 2;
578  optional int64 sequence_token = 3;
579  optional ShutdownBehavior shutdown_behavior = 4;
580}
581
582// TODO(crbug.com/1258495): Add more information.
583message BackForwardCacheCanStoreDocumentResult {
584  enum BackForwardCacheNotRestoredReason {
585    NOT_MAIN_FRAME = 1;
586    // BackForwardCache is disabled due to low memory device, base::Feature or
587    // command line. Note that the more specific NotRestoredReasons
588    // BACK_FORWARD_CACHE_DISABLED_BY_LOW_MEMORY and
589    // BACK_FORWARD_CACHE_DISABLED_BY_COMMAND_LINE will also be set as other
590    // reasons along with this when appropriate.
591    BACK_FORWARD_CACHE_DISABLED = 2;
592    RELATED_ACTIVE_CONTENTS_EXIST = 3;
593    HTTP_STATUS_NOT_OK = 4;
594    SCHEME_NOT_HTTP_OR_HTTPS = 5;
595    LOADING = 6;
596    WAS_GRANTED_MEDIA_ACCESS = 7;
597    BLOCKLISTED_FEATURES = 8;
598    DISABLE_FOR_RENDER_FRAME_HOST_CALLED = 9;
599    DOMAIN_NOT_ALLOWED = 10;
600    HTTP_METHOD_NOT_GET = 11;
601    SUBFRAME_IS_NAVIGATING = 12;
602    TIMEOUT = 13;
603    CACHE_LIMIT = 14;
604    JAVASCRIPT_EXECUTION = 15;
605    RENDERER_PROCESS_KILLED = 16;
606    RENDERER_PROCESS_CRASHED = 17;
607    GRANTED_MEDIA_STREAM_ACCESS = 19;
608    SCHEDULER_TRACKED_FEATURE_USED = 20;
609    CONFLICTING_BROWSING_INSTANCE = 21;
610    CACHE_FLUSHED = 22;
611    SERVICE_WORKER_VERSION_ACTIVATION = 23;
612    SESSION_RESTORED = 24;
613    UNKNOWN = 25;
614    SERVICE_WORKER_POST_MESSAGE = 26;
615    ENTERED_BACK_FORWARD_CACHE_BEFORE_SERVICE_WORKER_HOST_ADDED = 27;
616    NOT_MOST_RECENT_NAVIGATION_ENTRY = 28;
617    SERVICE_WORKER_CLAIM = 29;
618    IGNORE_EVENT_AND_EVICT = 30;
619    HAVE_INNER_CONTENTS = 31;
620    TIMEOUT_PUTTING_IN_CACHE = 32;
621    // BackForwardCache is disabled due to low memory device.
622    BACK_FORWARD_CACHE_DISABLED_BY_LOW_MEMORY = 33;
623    // BackForwardCache is disabled due to command-line switch (may include
624    // cases where the embedder disabled it due to, e.g., enterprise policy).
625    BACK_FORWARD_CACHE_DISABLED_BY_COMMAND_LINE = 34;
626    NETWORK_REQUEST_REDIRECTED = 35;
627    NETWORK_REQUEST_TIMEOUT = 36;
628    NETWORK_EXCEEDS_BUFFER_LIMIT = 37;
629    NAVIGATION_CANCELLED_WHILE_RESTORING = 38;
630    BACK_FORWARD_CACHE_DISABLED_FOR_PRERENDER = 39;
631    USER_AGENT_OVERRIDE_DIFFERS = 40;
632    NETWORK_REQUEST_DATAPIPE_DRAINED_AS_BYTES_CONSUMER = 41;
633    FOREGROUND_CACHE_LIMIT = 42;
634    BROWSING_INSTANCE_NOT_SWAPPED = 43;
635    BACK_FORWARD_CACHE_DISABLED_FOR_DELEGATE = 44;
636    OPT_IN_UNLOAD_HEADER_NOT_PRESENT = 45;
637    UNLOAD_HANDLER_EXISTS_IN_MAIN_FRAME = 46;
638    UNLOAD_HANDLER_EXISTS_IN_SUBFRAME = 47;
639    SERVICE_WORKER_UNREGISTRATION = 48;
640    CACHE_CONTROL_NO_STORE = 49;
641    CACHE_CONTROL_NO_STORE_COOKIE_MODIFIED = 50;
642    CACHE_CONTROL_NO_STORE_HTTP_ONLY_COOKIE_MODIFIED = 51;
643    NO_RESPONSE_HEAD = 52;
644    ACTIVATION_NAVIGATION_DISALLOWED_FOR_BUG_1234857 = 53;
645    ERROR_DOCUMENT = 54;
646    FENCED_FRAMES_EMBEDDER = 55;
647  }
648
649  optional BackForwardCacheNotRestoredReason
650      back_forward_cache_not_restored_reason = 1;
651}
652
653message RendererMainThreadTaskExecution {
654  enum TaskType {
655    TASK_TYPE_UNKNOWN = 0;
656    TASK_TYPE_DOM_MANIPULATION = 1;
657    TASK_TYPE_USER_INTERACTION = 2;
658    TASK_TYPE_NETWORKING = 3;
659    TASK_TYPE_NETWORKING_CONTROL = 4;
660    TASK_TYPE_HISTORY_TRAVERSAL = 5;
661    TASK_TYPE_EMBED = 6;
662    TASK_TYPE_MEDIA_ELEMENT_EVENT = 7;
663    TASK_TYPE_CANVAS_BLOB_SERIALIZATION = 8;
664    TASK_TYPE_MICROTASK = 9;
665    TASK_TYPE_JAVASCRIPT_TIMER_DELAYED_HIGH_NESTING = 10;
666    TASK_TYPE_REMOTE_EVENT = 11;
667    TASK_TYPE_WEB_SOCKET = 12;
668    TASK_TYPE_POSTED_MESSAGE = 13;
669    TASK_TYPE_UNSHIPPED_PORT_MESSAGE = 14;
670    TASK_TYPE_FILE_READING = 15;
671    TASK_TYPE_DATABASE_ACCESS = 16;
672    TASK_TYPE_PRESENTATION = 17;
673    TASK_TYPE_SENSOR = 18;
674    TASK_TYPE_PERFORMANCE_TIMELINE = 19;
675    TASK_TYPE_WEB_GL = 20;
676    TASK_TYPE_IDLE_TASK = 21;
677    TASK_TYPE_MISC_PLATFORM_API = 22;
678    TASK_TYPE_INTERNAL_DEFAULT = 23;
679    TASK_TYPE_INTERNAL_LOADING = 24;
680
681    TASK_TYPE_INTERNAL_TEST = 26;
682    TASK_TYPE_INTERNAL_WEB_CRYPTO = 27;
683
684    TASK_TYPE_INTERNAL_MEDIA = 29;
685    TASK_TYPE_INTERNAL_MEDIA_REALTIME = 30;
686
687    TASK_TYPE_INTERNAL_USER_INTERACTION = 32;
688    TASK_TYPE_INTERNAL_INSPECTOR = 33;
689
690    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_V8 = 37;
691    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_COMPOSITOR = 38;
692    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_DEFAULT = 39;
693    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_INPUT = 40;
694    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_IDLE = 41;
695
696    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_CONTROL = 43;
697    TASK_TYPE_INTERNAL_INTERSECTION_OBSERVER = 44;
698    TASK_TYPE_COMPOSITOR_THREAD_TASK_QUEUE_DEFAULT = 45;
699    TASK_TYPE_WORKER_THREAD_TASK_QUEUE_DEFAULT = 46;
700    TASK_TYPE_WORKER_THREAD_TASK_QUEUE_V8 = 47;
701    TASK_TYPE_WORKER_THREAD_TASK_QUEUE_COMPOSITOR = 48;
702    TASK_TYPE_COMPOSITOR_THREAD_TASK_QUEUE_INPUT = 49;
703
704    // TODO(crbug.com/860545): Obsolete. Remove.
705    TASK_TYPE_NETWORKING_WITH_URL_LOADER_ANNOTATION = 50;
706
707    TASK_TYPE_WORKER_ANIMATION = 51;
708
709    TASK_TYPE_INTERNAL_TRANSLATION = 55;
710    TASK_TYPE_FONT_LOADING = 56;
711    TASK_TYPE_APPLICATION_LIFECYCLE = 57;
712    TASK_TYPE_BACKGROUND_FETCH = 58;
713    TASK_TYPE_PERMISSION = 59;
714    TASK_TYPE_SERVICE_WORKER_CLIENT_MESSAGE = 60;
715    TASK_TYPE_INTERNAL_CONTENT_CAPTURE = 61;
716    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_MEMORY_PURGE = 62;
717    TASK_TYPE_INTERNAL_NAVIGATION_ASSOCIATED = 63;
718    TASK_TYPE_INTERNAL_NAVIGATION_ASSOCIATED_UNFREEZABLE = 64;
719    TASK_TYPE_INTERNAL_CONTINUE_SCRIPT_LOADING = 65;
720    TASK_TYPE_WEB_LOCKS = 66;
721    TASK_TYPE_WEB_SCHEDULING_POSTED_TASK = 67;
722    TASK_TYPE_INTERNAL_FRAME_LIFE_CYCLE_CONTROL = 68;
723    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_NON_WAKING = 69;
724    TASK_TYPE_INTERNAL_FIND_IN_PAGE = 70;
725    TASK_TYPE_INTERNAL_HIGH_PRIORITY_LOCAL_FRAME = 71;
726    TASK_TYPE_JAVASCRIPT_TIMER_IMMEDIATE = 72;
727    TASK_TYPE_JAVASCRIPT_TIMER_DELAYED_LOW_NESTING = 73;
728    TASK_TYPE_MAIN_THREAD_TASK_QUEUE_IPC_TRACKING = 74;
729    TASK_TYPE_NETWORKING_UNFREEZABLE = 75;
730    TASK_TYPE_WAKE_LOCK = 76;
731    TASK_TYPE_INTERNAL_INPUT_BLOCKING = 77;
732    TASK_TYPE_WEB_GPU = 78;
733    TASK_TYPE_INTERNAL_POST_MESSAGE_FORWARDING = 79;
734    TASK_TYPE_INTERNAL_NAVIGATION_CANCELLATION = 80;
735    TASK_TYPE_LOW_PRIORITY_SCRIPT_EXECUTION = 81;
736    TASK_TYPE_STORAGE = 82;
737  }
738
739  enum FrameType {
740    FRAME_TYPE_UNSPECIFIED = 0;
741    FRAME_TYPE_MAIN_FRAME = 1;
742    FRAME_TYPE_SAME_ORIGIN_SUBFRAME = 2;
743    FRAME_TYPE_CROSS_ORIGIN_SUBFRAME = 3;
744  }
745
746  optional TaskType task_type = 1;
747
748  // FrameScheduler related data
749  optional bool frame_visible = 2;
750  optional bool page_visible = 3;
751  optional FrameType frame_type = 4;
752  optional bool is_ad_frame = 5;
753}
754
755message EventLatency {
756  enum EventType {
757    EVENT_TYPE_UNSPECIFIED = 0;
758    MOUSE_PRESSED = 1;
759    MOUSE_RELEASED = 2;
760    MOUSE_WHEEL = 3;
761    KEY_PRESSED = 4;
762    KEY_RELEASED = 5;
763    TOUCH_PRESSED = 6;
764    TOUCH_RELEASED = 7;
765    TOUCH_MOVED = 8;
766    GESTURE_SCROLL_BEGIN = 9;
767    GESTURE_SCROLL_UPDATE = 10;
768    GESTURE_SCROLL_END = 11;
769    GESTURE_DOUBLE_TAP = 12;
770    GESTURE_LONG_PRESS = 13;
771    GESTURE_LONG_TAP = 14;
772    GESTURE_SHOW_PRESS = 15;
773    GESTURE_TAP = 16;
774    GESTURE_TAP_CANCEL = 17;
775    GESTURE_TAP_DOWN = 18;
776    GESTURE_TAP_UNCONFIRMED = 19;
777    GESTURE_TWO_FINGER_TAP = 20;
778    FIRST_GESTURE_SCROLL_UPDATE = 21;
779    MOUSE_DRAGGED = 22;
780    GESTURE_PINCH_BEGIN = 23;
781    GESTURE_PINCH_END = 24;
782    GESTURE_PINCH_UPDATE = 25;
783    INERTIAL_GESTURE_SCROLL_UPDATE = 26;
784  }
785
786  optional EventType event_type = 1;
787  optional bool has_high_latency = 2;
788  repeated string high_latency_stage = 3;
789}
790
791message ProcessSingleton {
792  enum RemoteProcessInteractionResult {
793    INTERACTION_RESULT_UNSPECIFIED = 0;
794    TERMINATE_FAILED = 1;
795    REMOTE_PROCESS_NOT_FOUND = 2;
796    TERMINATE_WAIT_TIMEOUT = 3;
797    RUNNING_PROCESS_NOTIFY_ERROR = 4;
798    TERMINATE_NOT_ENOUGH_PERMISSIONS = 5;
799    REMOTE_PROCESS_SHUTTING_DOWN = 6;
800    PROFILE_UNLOCKED = 7;
801    PROFILE_UNLOCKED_BEFORE_KILL = 8;
802    SAME_BROWSER_INSTANCE = 9;
803    SAME_BROWSER_INSTANCE_BEFORE_KILL = 10;
804    FAILED_TO_EXTRACT_PID = 11;
805    INVALID_LOCK_FILE = 12;
806    ORPHANED_LOCK_FILE = 13;
807    USER_REFUSED_TERMINATION = 14;
808    TERMINATE_SUCCEEDED = 100;
809  }
810
811  enum RemoteHungProcessTerminateReason {
812    TERMINATE_REASON_UNSPECIFIED = 0;
813    USER_ACCEPTED_TERMINATION = 1;
814    NO_VISIBLE_WINDOW_FOUND = 2;
815    NOTIFY_ATTEMPTS_EXCEEDED = 3;
816    SOCKET_WRITE_FAILED = 4;
817    SOCKET_READ_FAILED = 5;
818  }
819
820  optional RemoteProcessInteractionResult remote_process_interaction_result = 1;
821  optional RemoteHungProcessTerminateReason remote_process_terminate_reason = 2;
822}
823
824message NavigationHandle {
825  optional int64 navigation_id = 1;
826  optional bool has_committed = 2;
827  optional bool is_error_page = 3;
828  optional FrameTreeNodeInfo frame_tree_node = 4;
829  optional RenderFrameHost render_frame_host = 5;
830
831  // Additional untyped debug information associated with this
832  // NavigationHandle/Request, populated via TracedProto::AddDebugAnnotations
833  // API.
834  repeated DebugAnnotation debug_annotations = 99;
835}
836
837enum DeviceThermalState {
838  DEVICE_THERMAL_STATE_UNKNOWN = 0;
839  DEVICE_THERMAL_STATE_NOMINAL = 1;
840  DEVICE_THERMAL_STATE_FAIR = 2;
841  DEVICE_THERMAL_STATE_SERIOUS = 3;
842  DEVICE_THERMAL_STATE_CRITICAL = 4;
843}
844
845// Used to log which Android IPC was called and how long it took.
846message AndroidIPC {
847  optional string name = 1;
848  optional int64 dur_ms = 2;
849}
850
851message SequenceManagerTask {
852  enum Priority {
853    UNKNOWN = 0;
854    CONTROL_PRIORITY = 1;
855    HIGHEST_PRIORITY = 2;
856    VERY_HIGH_PRIORITY = 3;
857    HIGH_PRIORITY = 4;
858    NORMAL_PRIORITY = 5;
859    LOW_PRIORITY = 6;
860    BEST_EFFORT_PRIORITY = 7;
861
862    // Renderer-specific priorities.
863    HIGH_PRIORITY_CONTINUATION = 8;
864    NORMAL_PRIORITY_CONTINUATION = 9;
865    LOW_PRIORITY_CONTINUATION = 10;
866  }
867
868  enum QueueName {
869    UNKNOWN_TQ = 0;
870    DEFAULT_TQ = 1;
871    TASK_ENVIRONMENT_DEFAULT_TQ = 2;
872    TEST2_TQ = 3;
873    TEST_TQ = 4;
874    CONTROL_TQ = 5;
875
876    SUBTHREAD_CONTROL_TQ = 6;
877    SUBTHREAD_DEFAULT_TQ = 7;
878    SUBTHREAD_INPUT_TQ = 8;
879
880    UI_BEST_EFFORT_TQ = 9;
881    UI_BOOTSTRAP_TQ = 10;
882    UI_CONTROL_TQ = 11;
883    UI_DEFAULT_TQ = 12;
884    UI_NAVIGATION_NETWORK_RESPONSE_TQ = 13;
885    UI_RUN_ALL_PENDING_TQ = 14;
886    UI_SERVICE_WORKER_STORAGE_CONTROL_RESPONSE_TQ = 15;
887    UI_THREAD_TQ = 16;
888    UI_USER_BLOCKING_TQ = 17;
889    UI_USER_INPUT_TQ = 18;
890    UI_USER_VISIBLE_TQ = 19;
891
892    IO_BEST_EFFORT_TQ = 20;
893    IO_BOOTSTRAP_TQ = 21;
894    IO_CONTROL_TQ = 22;
895    IO_DEFAULT_TQ = 23;
896    IO_NAVIGATION_NETWORK_RESPONSE_TQ = 24;
897    IO_RUN_ALL_PENDING_TQ = 25;
898    IO_SERVICE_WORKER_STORAGE_CONTROL_RESPONSE_TQ = 26;
899    IO_THREAD_TQ = 27;
900    IO_USER_BLOCKING_TQ = 28;
901    IO_USER_INPUT_TQ = 29;
902    IO_USER_VISIBLE_TQ = 30;
903
904    COMPOSITOR_TQ = 31;
905    DETACHED_TQ = 32;
906    FRAME_DEFERRABLE_TQ = 33;
907    FRAME_LOADING_CONTROL_TQ = 34;
908    FRAME_LOADING_TQ = 35;
909    FRAME_PAUSABLE_TQ = 36;
910    FRAME_THROTTLEABLE_TQ = 37;
911    FRAME_UNPAUSABLE_TQ = 38;
912    IDLE_TQ = 39;
913    INPUT_TQ = 40;
914    IPC_TRACKING_FOR_CACHED_PAGES_TQ = 41;
915    NON_WAKING_TQ = 42;
916    OTHER_TQ = 43;
917    V8_TQ = 44;
918    WEB_SCHEDULING_TQ = 45;
919
920    WORKER_IDLE_TQ = 46;
921    WORKER_PAUSABLE_TQ = 47;
922    WORKER_THREAD_INTERNAL_TQ = 48;
923    WORKER_THROTTLEABLE_TQ = 49;
924    WORKER_UNPAUSABLE_TQ = 50;
925    WORKER_WEB_SCHEDULING_TQ = 51;
926
927    UI_USER_BLOCKING_DEFERRABLE_TQ = 52;
928    IO_USER_BLOCKING_DEFERRABLE_TQ = 53;
929  }
930
931  optional Priority priority = 1;
932  optional QueueName queue_name = 2;
933}
934
935message AndroidToolbar {
936  enum BlockCaptureReason {
937    BLOCKED_UNKNOWN = 0;
938    BLOCKED_TOOLBAR_OR_RESULT_NULL = 1;
939    BLOCKED_VIEW_NOT_DIRTY = 2;
940    BLOCKED_SNAPSHOT_SAME = 3;
941    BLOCKED_URL_BAR_HAS_FOCUS = 4;
942    BLOCKED_URL_BAR_FOCUS_IN_PROGRESS = 5;
943    BLOCKED_OPTIONAL_BUTTON_ANIMATION_IN_PROGRESS = 6;
944    BLOCKED_STATUS_ICON_ANIMATION_IN_PROGRESS = 7;
945    BLOCKED_SCROLL_ABLATION = 8;
946    BLOCKED_BROWSER_CONTROLS_LOCKED = 9;
947    BLOCKED_TAB_SWITCHER_MODE = 10;
948    BLOCKED_COMPOSITOR_IN_MOTION = 11;
949    BLOCKED_NTP_Y_TRANSLATION = 12;
950  }
951  enum AllowCaptureReason {
952    ALLOWED_UNKNOWN = 0;
953    ALLOWED_FORCE_CAPTURE = 1;
954    ALLOWED_SNAPSHOT_DIFFERENCE = 2;
955  }
956  enum SnapshotDifference {
957    DIFF_NONE = 0;
958    DIFF_NULL = 1;
959    DIFF_TINT = 2;
960    DIFF_TAB_COUNT = 3;
961    DIFF_OPTIONAL_BUTTON = 4;
962    DIFF_VISUAL_STATE = 5;
963    DIFF_SECURITY_ICON = 6;
964    DIFF_SHOWING_UPDATE_BADGE = 7;
965    DIFF_PAINT_PREVIEW = 8;
966    DIFF_PROGRESS = 9;
967    DIFF_LOCATION_BAR_WIDTH = 10;
968    DIFF_URL_TEXT = 11;
969    DIFF_HOME_BUTTON = 12;
970    DIFF_TITLE_TEXT = 13;
971    DIFF_CCT_ANIMATION = 14;
972    DIFF_BOOKMARK_BUTTON = 15;
973    DIFF_BACK_BUTTON = 16;
974    DIFF_FORWARD_BUTTON = 17;
975    DIFF_RELOAD_BUTTON = 18;
976  }
977
978  optional BlockCaptureReason block_capture_reason = 1;
979  optional AllowCaptureReason allow_capture_reason = 2;
980  optional SnapshotDifference snapshot_difference = 3;
981}
982
983message ActiveProcesses {
984  repeated int32 pid = 1;
985}
986
987message UkmPageLoadTimingUpdate {
988  // This can be used to uniquely identify a navigation from the point of view
989  // of UKM.
990  optional int64 ukm_source_id = 1;
991
992  // The URL of a page can change throughout its lifetime. This is the current
993  // url when this timing update was dispatched.
994  optional string latest_url = 2;
995
996  // Latest fully aggregated value of Cumulative Layout Shift.
997  optional float latest_cumulative_layout_shift = 3;
998
999  // Latest fully aggregated value of Largest Contentful Paint.
1000  optional double latest_largest_contentful_paint_ms = 4;
1001
1002  optional double first_contentful_paint_ms = 5;
1003}
1004
1005// A serialisation of v8StackFrame class.
1006message V8StackFrame {
1007  // Code location (path to the script and line/column number)
1008  message ScriptLocation {
1009    optional string source_url = 1;
1010    optional int64 line_number = 2;
1011    optional int64 column_number = 3;
1012  }
1013
1014  // The name of the function that was called
1015  optional string function_name = 1;
1016
1017  // If the function was defined in a script, contains the location within the
1018  // script.
1019  optional ScriptLocation script_location = 2;
1020}
1021
1022// Serializes the blink::ExecutionContext object.
1023message BlinkExecutionContext {
1024  // Definition of different context types.
1025  enum ContextType {
1026    UNKNOWN_CONTEXT = 0;
1027    WINDOW = 1;
1028    WORKLET = 2;
1029    DEDICATED_WORKER = 3;
1030    SHARED_WORKER = 4;
1031    SERVICE_WORKER = 5;
1032  }
1033
1034  // Definition of world type.
1035  enum WorldType {
1036    WORLD_UNKNOWN = 0;
1037    WORLD_MAIN = 1;
1038    WORLD_ISOLATED = 2;
1039    WORLD_INSPECTOR_ISOLATED = 3;
1040    WORLD_REG_EXP = 4;
1041    WORLD_FOR_V8_CONTEXT_SNAPSHOT_NON_MAIN = 5;
1042    WORLD_WORKER = 6;
1043    WORLD_SHADOW_REALM = 7;
1044  }
1045
1046  optional ContextType type = 1;
1047  // Contains url of frame or worker.
1048  optional string url = 2;
1049  // The origin of the execution context.
1050  optional string origin = 3;
1051  // The world type of the execution context.
1052  optional WorldType world_type = 4;
1053}
1054
1055// Serializes the blink::SourceLocation object.
1056message BlinkSourceLocation {
1057  optional string function_name = 1;
1058  optional int32 script_id = 2;
1059  optional string url = 3;
1060  optional int32 line_number = 4;
1061  optional int32 column_number = 5;
1062  optional string stack_trace = 6;
1063  repeated V8StackFrame stack_frames = 7;
1064}
1065
1066// Contains the meta information for high entropy events (like api calls)
1067// that are to be traced for debugging in the context of identifiability study.
1068message BlinkHighEntropyAPI {
1069  // Serialization of a parameter passed to a javascript function.
1070  // Contains the stringified type of the object and some string representation
1071  // of its value.
1072  message JSFunctionArgument {
1073    // Definition of different types of function parameters.
1074    enum ArgumentType {
1075      UNKNOWN_TYPE = 0;
1076      NULL_TYPE = 1;
1077      UNDEFINED = 2;
1078      BIGINT = 3;
1079      BOOLEAN = 4;
1080      FUNCTION = 5;
1081      NUMBER = 6;
1082      STRING = 7;
1083      SYMBOL = 8;
1084      OBJECT = 9;
1085    }
1086    optional ArgumentType type = 1;
1087    optional string value = 2;
1088  }
1089
1090  // Describes a Javascript API call.
1091  message CalledJsApi {
1092    // Contains class and function name of api called
1093    // similar to "Navigator.languages.get".
1094    optional string identifier = 1;
1095    repeated JSFunctionArgument func_arguments = 2;
1096
1097    // Deprecated in favour of outer source_location.
1098    optional BlinkSourceLocation source_location = 3;
1099  }
1100  optional BlinkExecutionContext execution_context = 1;
1101  optional CalledJsApi called_api = 2;
1102  optional BlinkSourceLocation source_location = 3;
1103
1104  // Describes lookup of a font.
1105  message FontLookup {
1106    enum FontLookupType {
1107      FONT_LOOKUP_UNKNOWN_TYPE = 0;
1108      FONT_LOOKUP_UNIQUE_OR_FAMILY_NAME = 1;
1109      FONT_LOOKUP_UNIQUE_NAME_ONLY = 2;
1110    }
1111    optional FontLookupType type = 1;
1112    optional string name = 2;
1113    optional uint64 weight = 3;
1114    optional uint64 width = 4;
1115    optional uint64 slope = 5;
1116  }
1117  optional FontLookup font_lookup = 4;
1118}
1119
1120// Contains information about a tab switch measurement.
1121message TabSwitchMeasurement {
1122  // Possible outcomes of a tab switch. Maps to
1123  // blink::ContentToVisibleTimeReporter::TabSwitchResult.
1124  enum Result {
1125    RESULT_UNSPECIFIED = 0;
1126    // A frame was successfully presented after a tab switch.
1127    RESULT_SUCCESS = 1;
1128    // Tab was hidden before a frame was presented after a tab switch.
1129    RESULT_INCOMPLETE = 2;
1130    // TabWasShown called twice for a frame without TabWasHidden between. Treat
1131    // the first TabWasShown as an incomplete tab switch.
1132    RESULT_MISSED_TAB_HIDE = 3;
1133  }
1134
1135  // State of the target tab. Corresponds to the suffixes of the
1136  // Browser.TabSwitchResult2.* histograms.
1137  enum TabState {
1138    STATE_UNSPECIFIED = 0;
1139    // The tab has frames in the frame cache, which can be composited in the
1140    // browser process.
1141    STATE_WITH_SAVED_FRAMES = 1;
1142    // The tab has no frames in the frame cache so must be rendered and
1143    // composited in a renderer process.
1144    STATE_LOADED_NO_SAVED_FRAMES = 2;
1145    // The tab has no frames in the frame cache and is not fully loaded, so it
1146    // must be reloaded before it can be rendered and composited in a renderer
1147    // process.
1148    STATE_NOT_LOADED_NO_SAVED_FRAMES = 3;
1149  }
1150
1151  optional Result result = 1;
1152  optional TabState tab_state = 2;
1153}
1154
1155// Data about scroll deltas and offsets.
1156// All values are in physical screen pixels.
1157message ScrollDeltas {
1158  // The trace_id of the current input.
1159  optional int64 trace_id = 1;
1160  // The original delta for current input. That is, this is the delta that
1161  // the Browser receives from Android, but already scaled to the device's
1162  // screen.
1163  optional float original_delta_x = 2;
1164  optional float original_delta_y = 3;
1165  // The trace_id of the input that the current input is coalesced with.
1166  // If input is not coalesced, this field is null.
1167  optional int64 coalesced_to_trace_id = 4;
1168  // The delta which arrived to compositor.
1169  // This is the sum of all the inputs coalesced together
1170  // with the resampler applied to them.
1171  // This delta is used to calculate a |visual_offset|.
1172  optional float provided_to_compositor_delta_x = 5;
1173  optional float provided_to_compositor_delta_y = 6;
1174  // The offset which compositor set.
1175  optional int64 visual_offset_x = 7;
1176  optional int64 visual_offset_y = 8;
1177
1178  // Data which GPU returns.
1179  // Number of inputs which were shown together in one GPU frame.
1180  optional int32 event_count_in_gpu_frame = 9;
1181  // The trace_ids of inputs which were shown together in one GPU frame.
1182  repeated int64 trace_ids_in_gpu_frame = 10;
1183  // The sum of original deltas of inputs which were shown together in one GPU
1184  // frame.
1185  optional float original_delta_in_gpu_frame_y = 11;
1186  // The sum of predicted deltas of inputs which were shown together in one GPU
1187  // frame.
1188  optional float predicted_delta_in_gpu_frame_y = 12;
1189  // The array of original deltas of inputs which were shown together in one GPU
1190  // frame.
1191  repeated float segregated_original_deltas_in_gpu_frame_y = 13;
1192  // The array of predicted deltas of inputs which were shown together in one
1193  // GPU frame.
1194  repeated float segregated_predicted_deltas_in_gpu_frame_y = 14;
1195}
1196
1197message ChromeTrackEvent {
1198  // Extension range for Chrome: 1000-1999
1199  // Next ID: 1048
1200  extend TrackEvent {
1201    optional ChromeAppState chrome_app_state = 1000;
1202
1203    optional ChromeMemoryPressureNotification
1204        chrome_memory_pressure_notification = 1001;
1205
1206    optional ChromeTaskAnnotator chrome_task_annotator = 1002;
1207
1208    optional ChromeBrowserContext chrome_browser_context = 1003;
1209
1210    optional ChromeProfileDestroyer chrome_profile_destroyer = 1004;
1211
1212    optional ChromeTaskPostedToDisabledQueue
1213        chrome_task_posted_to_disabled_queue = 1005;
1214
1215    optional ChromeRasterTask chrome_raster_task = 1006;
1216
1217    optional ChromeMessagePumpForUI chrome_message_pump_for_ui = 1007;
1218
1219    optional RenderFrameImplDeletion render_frame_impl_deletion = 1008;
1220
1221    optional ShouldSwapBrowsingInstancesResult
1222        should_swap_browsing_instances_result = 1009;
1223
1224    optional FrameTreeNodeInfo frame_tree_node_info = 1010;
1225
1226    optional ChromeHashedPerformanceMark chrome_hashed_performance_mark = 1011;
1227
1228    optional RenderProcessHost render_process_host = 1012;
1229    optional RenderProcessHostCleanup render_process_host_cleanup = 1013;
1230    optional RenderProcessHostListener render_process_host_listener_changed =
1231        1014;
1232    optional ChildProcessLauncherPriority child_process_launcher_priority =
1233        1015;
1234
1235    optional ResourceBundle resource_bundle = 1016;
1236
1237    optional ChromeWebAppBadNavigate chrome_web_app_bad_navigate = 1017;
1238
1239    optional ChromeExtensionId chrome_extension_id = 1018;
1240
1241    optional SiteInstance site_instance = 1019;
1242
1243    optional RenderViewHost render_view_host = 1020;
1244
1245    optional RenderFrameProxyHost render_frame_proxy_host = 1021;
1246
1247    optional AndroidViewDump android_view_dump = 1022;
1248
1249    optional ParkableStringCompressInBackground
1250        parkable_string_compress_in_background = 1023;
1251    optional ParkableStringUnpark parkable_string_unpark = 1024;
1252
1253    optional ChromeSamplingProfilerSampleCollected
1254        chrome_sampling_profiler_sample_completed = 1025;
1255    optional SendBeginMainFrameToCommitBreakdown
1256        send_begin_mainframe_to_commit_breakdown = 1026;
1257
1258    optional GlobalRenderFrameHostId global_render_frame_host_id = 1027;
1259
1260    optional RenderFrameHost render_frame_host = 1028;
1261
1262    optional ChromeThreadPoolTask thread_pool_task = 1029;
1263
1264    optional BackForwardCacheCanStoreDocumentResult
1265        back_forward_cache_can_store_document_result = 1030;
1266
1267    optional RendererMainThreadTaskExecution
1268        renderer_main_thread_task_execution = 1031;
1269
1270    optional EventLatency event_latency = 1032;
1271
1272    optional ProcessSingleton process_singleton = 1033;
1273
1274    optional SiteInstanceGroup site_instance_group = 1034;
1275
1276    optional BrowsingContextState browsing_context_state = 1035;
1277
1278    optional DeviceThermalState device_thermal_state = 1036;
1279
1280    optional NavigationHandle navigation = 1037;
1281
1282    optional AndroidIPC android_ipc = 1038;
1283
1284    optional ChromeSqlDiagnostics sql_diagnostics = 1039;
1285
1286    optional SequenceManagerTask sequence_manager_task = 1040;
1287
1288    optional AndroidToolbar android_toolbar = 1041;
1289
1290    optional ActiveProcesses active_processes = 1042;
1291
1292    optional BlinkTaskScope blink_task_scope = 1043;
1293
1294    optional UkmPageLoadTimingUpdate ukm_page_load_timing_update = 1044;
1295
1296    optional BlinkHighEntropyAPI high_entropy_api = 1045;
1297
1298    optional TabSwitchMeasurement tab_switch_measurement = 1046;
1299
1300    optional ScrollDeltas scroll_deltas = 1047;
1301  }
1302}
1303