1*6777b538SAndroid Build Coastguard Worker-- Copyright 2023 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker-- Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker-- found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard WorkerINCLUDE PERFETTO MODULE slices.with_context; 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker-- Access all startups, including those that don't lead to any visible content. 8*6777b538SAndroid Build Coastguard Worker-- If TimeToFirstVisibleContent is available, then this event will be the 9*6777b538SAndroid Build Coastguard Worker-- main event of the startup. Otherwise, the event for the start timestamp will 10*6777b538SAndroid Build Coastguard Worker-- be used. 11*6777b538SAndroid Build Coastguard WorkerCREATE PERFETTO VIEW _startup_start_events AS 12*6777b538SAndroid Build Coastguard WorkerWITH 13*6777b538SAndroid Build Coastguard Workerstarts AS ( 14*6777b538SAndroid Build Coastguard Worker SELECT 15*6777b538SAndroid Build Coastguard Worker name, 16*6777b538SAndroid Build Coastguard Worker EXTRACT_ARG(arg_set_id, 'startup.activity_id') AS activity_id, 17*6777b538SAndroid Build Coastguard Worker ts, 18*6777b538SAndroid Build Coastguard Worker dur, 19*6777b538SAndroid Build Coastguard Worker upid AS browser_upid 20*6777b538SAndroid Build Coastguard Worker FROM thread_slice 21*6777b538SAndroid Build Coastguard Worker WHERE name = 'Startup.ActivityStart' 22*6777b538SAndroid Build Coastguard Worker), 23*6777b538SAndroid Build Coastguard Workertimes_to_first_visible_content AS ( 24*6777b538SAndroid Build Coastguard Worker SELECT 25*6777b538SAndroid Build Coastguard Worker name, 26*6777b538SAndroid Build Coastguard Worker EXTRACT_ARG(arg_set_id, 'startup.activity_id') AS activity_id, 27*6777b538SAndroid Build Coastguard Worker ts, 28*6777b538SAndroid Build Coastguard Worker dur, 29*6777b538SAndroid Build Coastguard Worker upid AS browser_upid 30*6777b538SAndroid Build Coastguard Worker FROM process_slice 31*6777b538SAndroid Build Coastguard Worker WHERE name = 'Startup.TimeToFirstVisibleContent2' 32*6777b538SAndroid Build Coastguard Worker), 33*6777b538SAndroid Build Coastguard Workerall_activity_ids AS ( 34*6777b538SAndroid Build Coastguard Worker SELECT 35*6777b538SAndroid Build Coastguard Worker DISTINCT activity_id, 36*6777b538SAndroid Build Coastguard Worker browser_upid 37*6777b538SAndroid Build Coastguard Worker FROM starts 38*6777b538SAndroid Build Coastguard Worker UNION ALL 39*6777b538SAndroid Build Coastguard Worker SELECT 40*6777b538SAndroid Build Coastguard Worker DISTINCT activity_id, 41*6777b538SAndroid Build Coastguard Worker browser_upid 42*6777b538SAndroid Build Coastguard Worker FROM times_to_first_visible_content 43*6777b538SAndroid Build Coastguard Worker), 44*6777b538SAndroid Build Coastguard Workeractivity_ids AS ( 45*6777b538SAndroid Build Coastguard Worker SELECT 46*6777b538SAndroid Build Coastguard Worker DISTINCT activity_id, 47*6777b538SAndroid Build Coastguard Worker browser_upid 48*6777b538SAndroid Build Coastguard Worker FROM all_activity_ids 49*6777b538SAndroid Build Coastguard Worker) 50*6777b538SAndroid Build Coastguard WorkerSELECT 51*6777b538SAndroid Build Coastguard Worker activity_ids.activity_id, 52*6777b538SAndroid Build Coastguard Worker 'Startup' AS name, 53*6777b538SAndroid Build Coastguard Worker IFNULL(times_to_first_visible_content.ts, starts.ts) AS startup_begin_ts, 54*6777b538SAndroid Build Coastguard Worker times_to_first_visible_content.ts + 55*6777b538SAndroid Build Coastguard Worker times_to_first_visible_content.dur AS first_visible_content_ts, 56*6777b538SAndroid Build Coastguard Worker activity_ids.browser_upid 57*6777b538SAndroid Build Coastguard WorkerFROM activity_ids 58*6777b538SAndroid Build Coastguard Worker LEFT JOIN times_to_first_visible_content using(activity_id, browser_upid) 59*6777b538SAndroid Build Coastguard Worker LEFT JOIN starts using(activity_id, browser_upid); 60*6777b538SAndroid Build Coastguard Worker 61*6777b538SAndroid Build Coastguard Worker-- Chrome launch causes, not recorded at start time; use the activity id to 62*6777b538SAndroid Build Coastguard Worker-- join with the actual startup events. 63*6777b538SAndroid Build Coastguard WorkerCREATE PERFETTO VIEW _launch_causes AS 64*6777b538SAndroid Build Coastguard WorkerSELECT 65*6777b538SAndroid Build Coastguard Worker EXTRACT_ARG(arg_set_id, 'startup.activity_id') AS activity_id, 66*6777b538SAndroid Build Coastguard Worker EXTRACT_ARG(arg_set_id, 'startup.launch_cause') AS launch_cause, 67*6777b538SAndroid Build Coastguard Worker upid AS browser_upid 68*6777b538SAndroid Build Coastguard WorkerFROM thread_slice 69*6777b538SAndroid Build Coastguard WorkerWHERE name = 'Startup.LaunchCause'; 70*6777b538SAndroid Build Coastguard Worker 71*6777b538SAndroid Build Coastguard Worker-- Chrome startups, including launch cause. 72*6777b538SAndroid Build Coastguard WorkerCREATE PERFETTO TABLE chrome_startups( 73*6777b538SAndroid Build Coastguard Worker -- Unique ID 74*6777b538SAndroid Build Coastguard Worker id INT, 75*6777b538SAndroid Build Coastguard Worker -- Chrome Activity event id of the launch. 76*6777b538SAndroid Build Coastguard Worker activity_id INT, 77*6777b538SAndroid Build Coastguard Worker -- Name of the launch start event. 78*6777b538SAndroid Build Coastguard Worker name STRING, 79*6777b538SAndroid Build Coastguard Worker -- Timestamp that the startup occurred. 80*6777b538SAndroid Build Coastguard Worker startup_begin_ts INT, 81*6777b538SAndroid Build Coastguard Worker -- Timestamp to the first visible content. 82*6777b538SAndroid Build Coastguard Worker first_visible_content_ts INT, 83*6777b538SAndroid Build Coastguard Worker -- Launch cause. See Startup.LaunchCauseType in chrome_track_event.proto. 84*6777b538SAndroid Build Coastguard Worker launch_cause STRING, 85*6777b538SAndroid Build Coastguard Worker -- Process ID of the Browser where the startup occurred. 86*6777b538SAndroid Build Coastguard Worker browser_upid INT 87*6777b538SAndroid Build Coastguard Worker) AS 88*6777b538SAndroid Build Coastguard WorkerSELECT 89*6777b538SAndroid Build Coastguard Worker ROW_NUMBER() OVER (ORDER BY start_events.startup_begin_ts) AS id, 90*6777b538SAndroid Build Coastguard Worker start_events.activity_id, 91*6777b538SAndroid Build Coastguard Worker start_events.name, 92*6777b538SAndroid Build Coastguard Worker start_events.startup_begin_ts, 93*6777b538SAndroid Build Coastguard Worker start_events.first_visible_content_ts, 94*6777b538SAndroid Build Coastguard Worker launches.launch_cause, 95*6777b538SAndroid Build Coastguard Worker start_events.browser_upid 96*6777b538SAndroid Build Coastguard WorkerFROM _startup_start_events start_events 97*6777b538SAndroid Build Coastguard Worker LEFT JOIN _launch_causes launches 98*6777b538SAndroid Build Coastguard Worker USING(activity_id, browser_upid); 99