Check compilation state is run-from-apk for slow startup reason.

Bug: 242184600

Testing: unit/diff tests.

Change-Id: Idcbb7c4b17ed9959dd368c50afac51cc38494f23
diff --git a/src/trace_processor/metrics/sql/android/android_startup.sql b/src/trace_processor/metrics/sql/android/android_startup.sql
index 78f5f26..91b9b0e 100644
--- a/src/trace_processor/metrics/sql/android/android_startup.sql
+++ b/src/trace_processor/metrics/sql/android/android_startup.sql
@@ -411,6 +411,10 @@
         WHERE MISSING_BASELINE_PROFILE_FOR_LAUNCH(launches.id, launches.package)
 
         UNION ALL
+        SELECT 'Optimized artifacts missing, run from apk'
+        WHERE  RUN_FROM_APK_FOR_LAUNCH(launches.id)
+
+        UNION ALL
         SELECT 'Startup running concurrent to launch'
         WHERE EXISTS(
           SELECT package
diff --git a/src/trace_processor/metrics/sql/android/startup/slice_functions.sql b/src/trace_processor/metrics/sql/android/startup/slice_functions.sql
index a66a6ee..c619e57 100644
--- a/src/trace_processor/metrics/sql/android/startup/slice_functions.sql
+++ b/src/trace_processor/metrics/sql/android/startup/slice_functions.sql
@@ -182,6 +182,26 @@
   '
 );
 
+SELECT CREATE_FUNCTION(
+  'RUN_FROM_APK_FOR_LAUNCH(launch_id LONG)',
+  'BOOL',
+  '
+    SELECT EXISTS(
+      SELECT slice_name
+      FROM (
+        SELECT *
+        FROM SLICES_FOR_LAUNCH_AND_SLICE_NAME(
+          $launch_id,
+          "location=* status=* filter=* reason=*"
+        )
+      )
+      WHERE
+        STR_SPLIT(STR_SPLIT(slice_name, " filter=", 1), " reason=", 0)
+          GLOB ("*" || "run-from-apk" || "*")
+    )
+  '
+);
+
 SELECT CREATE_VIEW_FUNCTION(
   'BINDER_TRANSACTION_REPLY_SLICES_FOR_LAUNCH(launch_id INT, threshold DOUBLE)',
   'name STRING',
diff --git a/test/trace_processor/startup/android_startup_breakdown.out b/test/trace_processor/startup/android_startup_breakdown.out
index ddd1703..d58a886 100644
--- a/test/trace_processor/startup/android_startup_breakdown.out
+++ b/test/trace_processor/startup/android_startup_breakdown.out
@@ -108,6 +108,7 @@
     slow_start_reason: "Time spent in view inflation"
     slow_start_reason: "Time spent in ResourcesManager#getResources"
     slow_start_reason: "No baseline or cloud profiles"
+    slow_start_reason: "Optimized artifacts missing, run from apk"
     startup_type: "cold"
   }
 }
diff --git a/test/trace_processor/startup/android_startup_breakdown_slow.out b/test/trace_processor/startup/android_startup_breakdown_slow.out
index 31a87e0..fec1c2e 100644
--- a/test/trace_processor/startup/android_startup_breakdown_slow.out
+++ b/test/trace_processor/startup/android_startup_breakdown_slow.out
@@ -107,6 +107,7 @@
     slow_start_reason: "Time spent in bindApplication"
     slow_start_reason: "Time spent in view inflation"
     slow_start_reason: "Time spent in ResourcesManager#getResources"
+    slow_start_reason: "Optimized artifacts missing, run from apk"
     startup_type: "cold"
   }
 }