diff --git a/Android.bp b/Android.bp
index 76264d1..8c2c414 100644
--- a/Android.bp
+++ b/Android.bp
@@ -5053,6 +5053,8 @@
         "protos/perfetto/metrics/android/startup_metric.proto",
         "protos/perfetto/metrics/android/surfaceflinger.proto",
         "protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto",
+        "protos/perfetto/metrics/android/sysui_slice_performance_statistical_data.proto",
+        "protos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.proto",
         "protos/perfetto/metrics/android/task_names.proto",
         "protos/perfetto/metrics/android/thread_time_in_state_metric.proto",
         "protos/perfetto/metrics/android/trace_quality.proto",
@@ -5136,6 +5138,8 @@
         "protos/perfetto/metrics/android/startup_metric.proto",
         "protos/perfetto/metrics/android/surfaceflinger.proto",
         "protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto",
+        "protos/perfetto/metrics/android/sysui_slice_performance_statistical_data.proto",
+        "protos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.proto",
         "protos/perfetto/metrics/android/task_names.proto",
         "protos/perfetto/metrics/android/thread_time_in_state_metric.proto",
         "protos/perfetto/metrics/android/trace_quality.proto",
@@ -5202,6 +5206,8 @@
         "protos/perfetto/metrics/android/startup_metric.proto",
         "protos/perfetto/metrics/android/surfaceflinger.proto",
         "protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto",
+        "protos/perfetto/metrics/android/sysui_slice_performance_statistical_data.proto",
+        "protos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.proto",
         "protos/perfetto/metrics/android/task_names.proto",
         "protos/perfetto/metrics/android/thread_time_in_state_metric.proto",
         "protos/perfetto/metrics/android/trace_quality.proto",
@@ -11507,6 +11513,7 @@
         "src/trace_processor/metrics/sql/android/startup/thread_state_breakdown.sql",
         "src/trace_processor/metrics/sql/android/sysui_notif_shade_list_builder_metric.sql",
         "src/trace_processor/metrics/sql/android/sysui_notif_shade_list_builder_slices.sql",
+        "src/trace_processor/metrics/sql/android/sysui_update_notif_on_ui_mode_changed_metric.sql",
         "src/trace_processor/metrics/sql/android/unsymbolized_frames.sql",
         "src/trace_processor/metrics/sql/chrome/actual_power_by_category.sql",
         "src/trace_processor/metrics/sql/chrome/actual_power_by_rail_mode.sql",
diff --git a/BUILD b/BUILD
index 26b5fac..300819c 100644
--- a/BUILD
+++ b/BUILD
@@ -1923,6 +1923,7 @@
         "src/trace_processor/metrics/sql/android/startup/thread_state_breakdown.sql",
         "src/trace_processor/metrics/sql/android/sysui_notif_shade_list_builder_metric.sql",
         "src/trace_processor/metrics/sql/android/sysui_notif_shade_list_builder_slices.sql",
+        "src/trace_processor/metrics/sql/android/sysui_update_notif_on_ui_mode_changed_metric.sql",
         "src/trace_processor/metrics/sql/android/unsymbolized_frames.sql",
     ],
 )
@@ -4125,6 +4126,8 @@
         "protos/perfetto/metrics/android/startup_metric.proto",
         "protos/perfetto/metrics/android/surfaceflinger.proto",
         "protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto",
+        "protos/perfetto/metrics/android/sysui_slice_performance_statistical_data.proto",
+        "protos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.proto",
         "protos/perfetto/metrics/android/task_names.proto",
         "protos/perfetto/metrics/android/thread_time_in_state_metric.proto",
         "protos/perfetto/metrics/android/trace_quality.proto",
diff --git a/protos/perfetto/metrics/android/BUILD.gn b/protos/perfetto/metrics/android/BUILD.gn
index df31abf..d7771af 100644
--- a/protos/perfetto/metrics/android/BUILD.gn
+++ b/protos/perfetto/metrics/android/BUILD.gn
@@ -23,7 +23,9 @@
     "ad_services_metric.proto",
     "android_blocking_call.proto",
     "android_blocking_calls_cuj_metric.proto",
+    "sysui_slice_performance_statistical_data.proto",
     "sysui_notif_shade_list_builder_metric.proto",
+    "sysui_update_notif_on_ui_mode_changed_metric.proto",
     "android_boot.proto",
     "android_frame_timeline_metric.proto",
     "android_sysui_notifications_blocking_calls_metric.proto",
diff --git a/protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto b/protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto
index 0ead104..485be64 100644
--- a/protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto
+++ b/protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto
@@ -17,22 +17,7 @@
 syntax = "proto2";
 
 package perfetto.protos;
-
-// Statistical performance data row for a set of slices
-message SysUiSlicePerformanceStatisticalData {
-  // Name of the Slice
-  optional string name = 1;
-  // Number of times it happened within the CUJ
-  optional int64 cnt = 2;
-  // Average duration within the CUJ
-  optional int64 avg_dur_ms = 3;
-  // Maximal duration within the CUJ
-  optional int64 max_dur_ms = 4;
-  // Average duration within the CUJ in nanoseconds
-  optional int64 avg_dur_ns = 6;
-  // Maximal duration within the CUJ in nanoseconds
-  optional int64 max_dur_ns = 7;
-}
+import "protos/perfetto/metrics/android/sysui_slice_performance_statistical_data.proto";
 
 // System UI Notifications ShadeListBuilder.buildList slices.
 // Shows count, average duration, and max duration for each.
diff --git a/protos/perfetto/metrics/android/sysui_slice_performance_statistical_data.proto b/protos/perfetto/metrics/android/sysui_slice_performance_statistical_data.proto
new file mode 100644
index 0000000..5fe588f
--- /dev/null
+++ b/protos/perfetto/metrics/android/sysui_slice_performance_statistical_data.proto
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+// Statistical performance data row for a set of slices
+message SysUiSlicePerformanceStatisticalData {
+  // Name of the Slice
+  optional string name = 1;
+  // Number of times it happened within the CUJ
+  optional int64 cnt = 2;
+  // Average duration within the CUJ
+  optional int64 avg_dur_ms = 3;
+  // Maximal duration within the CUJ
+  optional int64 max_dur_ms = 4;
+  // Average duration within the CUJ in nanoseconds
+  optional int64 avg_dur_ns = 6;
+  // Maximal duration within the CUJ in nanoseconds
+  optional int64 max_dur_ns = 7;
+}
\ No newline at end of file
diff --git a/protos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.proto b/protos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.proto
new file mode 100644
index 0000000..3128c32
--- /dev/null
+++ b/protos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.proto
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+
+package perfetto.protos;
+
+import "protos/perfetto/metrics/android/sysui_slice_performance_statistical_data.proto";
+
+// System UI Notifications ShadeListBuilder.buildList slices.
+// Shows count, average duration, and max duration for each.
+message SysuiUpdateNotifOnUiModeChangedMetric {
+  optional SysUiSlicePerformanceStatisticalData all_slices_performance = 1;
+  // Data row for a single slice
+  message SliceDuration {
+    // Name of the Slice
+    optional string name = 1;
+
+    // Duration in ms
+    optional int64 dur_ms = 2;
+
+    // Duration in ns
+    optional int64 dur_ns = 3;
+  }
+  repeated SliceDuration slice = 2;
+}
\ No newline at end of file
diff --git a/protos/perfetto/metrics/metrics.proto b/protos/perfetto/metrics/metrics.proto
index ec250f1..5587efa 100644
--- a/protos/perfetto/metrics/metrics.proto
+++ b/protos/perfetto/metrics/metrics.proto
@@ -21,6 +21,7 @@
 import "protos/perfetto/metrics/android/ad_services_metric.proto";
 import "protos/perfetto/metrics/android/android_boot.proto";
 import "protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto";
+import "protos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.proto";
 import "protos/perfetto/metrics/android/android_frame_timeline_metric.proto";
 import "protos/perfetto/metrics/android/anr_metric.proto";
 import "protos/perfetto/metrics/android/batt_metric.proto";
@@ -112,7 +113,7 @@
 
 // Root message for all Perfetto-based metrics.
 //
-// Next id: 60
+// Next id: 61
 message TraceMetrics {
   reserved 4, 10, 13, 14, 16, 19;
 
@@ -274,6 +275,8 @@
   optional AdServicesMetric ad_services_metric = 58;
 
   optional SysuiNotifShadeListBuilderMetric sysui_notif_shade_list_builder_metric = 59;
+
+  optional SysuiUpdateNotifOnUiModeChangedMetric sysui_update_notif_on_ui_mode_changed_metric = 60;
   // Demo extensions.
   extensions 450 to 499;
 
diff --git a/protos/perfetto/metrics/perfetto_merged_metrics.proto b/protos/perfetto/metrics/perfetto_merged_metrics.proto
index 63fe631..abdbb2b 100644
--- a/protos/perfetto/metrics/perfetto_merged_metrics.proto
+++ b/protos/perfetto/metrics/perfetto_merged_metrics.proto
@@ -2210,22 +2210,10 @@
 
 // End of protos/perfetto/metrics/android/surfaceflinger.proto
 
-// Begin of protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto
-
-// Data row for a single slice
-message SliceInfo {
-  // Name of the Slice
-  optional string name = 1;
-
-  // Duration in ms
-  optional int64 dur_ms = 2;
-
-  // Duration in ns
-  optional int64 dur_ns = 3;
-}
+// Begin of protos/perfetto/metrics/android/sysui_slice_performance_statistical_data.proto
 
 // Statistical performance data row for a set of slices
-message SlicePerformanceInfo {
+message SysUiSlicePerformanceStatisticalData {
   // Name of the Slice
   optional string name = 1;
   // Number of times it happened within the CUJ
@@ -2239,17 +2227,52 @@
   // Maximal duration within the CUJ in nanoseconds
   optional int64 max_dur_ns = 7;
 }
+// End of protos/perfetto/metrics/android/sysui_slice_performance_statistical_data.proto
 
+// Begin of protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto
 // System UI Notifications ShadeListBuilder.buildList slices.
 // Shows count, average duration, and max duration for each.
 message SysuiNotifShadeListBuilderMetric {
-  optional SlicePerformanceInfo all_slices_performance = 1;
-  optional SlicePerformanceInfo slices_with_inflation_performance = 2;
-  optional SlicePerformanceInfo slices_with_modification_performance = 3;
-  repeated SliceInfo slice = 4;
+  optional SysUiSlicePerformanceStatisticalData all_slices_performance = 1;
+  optional SysUiSlicePerformanceStatisticalData slices_with_inflation_performance = 2;
+  optional SysUiSlicePerformanceStatisticalData slices_with_modification_performance = 3;
+
+  // Data row for a single slice
+  message SliceDuration {
+    // Name of the Slice
+    optional string name = 1;
+
+    // Duration in ms
+    optional int64 dur_ms = 2;
+
+    // Duration in ns
+    optional int64 dur_ns = 3;
+  }
+  repeated SliceDuration slice = 4;
 }
 // End of protos/perfetto/metrics/android/sysui_notif_shade_list_builder_metric.proto
 
+// Begin of protos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.proto
+
+// System UI Notifications ShadeListBuilder.buildList slices.
+// Shows count, average duration, and max duration for each.
+message SysuiUpdateNotifOnUiModeChangedMetric {
+  optional SysUiSlicePerformanceStatisticalData all_slices_performance = 1;
+  // Data row for a single slice
+  message SliceDuration {
+    // Name of the Slice
+    optional string name = 1;
+
+    // Duration in ms
+    optional int64 dur_ms = 2;
+
+    // Duration in ns
+    optional int64 dur_ns = 3;
+  }
+  repeated SliceDuration slice = 2;
+}
+// End of protos/perfetto/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.proto
+
 // Begin of protos/perfetto/metrics/android/task_names.proto
 
 message AndroidTaskNames {
@@ -2364,7 +2387,7 @@
 
 // Root message for all Perfetto-based metrics.
 //
-// Next id: 60
+// Next id: 61
 message TraceMetrics {
   reserved 4, 10, 13, 14, 16, 19;
 
@@ -2526,6 +2549,8 @@
   optional AdServicesMetric ad_services_metric = 58;
 
   optional SysuiNotifShadeListBuilderMetric sysui_notif_shade_list_builder_metric = 59;
+
+  optional SysuiUpdateNotifOnUiModeChangedMetric sysui_update_notif_on_ui_mode_changed_metric = 60;
   // Demo extensions.
   extensions 450 to 499;
 
diff --git a/python/perfetto/trace_processor/metrics.descriptor b/python/perfetto/trace_processor/metrics.descriptor
index 1fb3d89..b4c46bc 100644
--- a/python/perfetto/trace_processor/metrics.descriptor
+++ b/python/perfetto/trace_processor/metrics.descriptor
Binary files differ
diff --git a/src/trace_processor/metrics/sql/android/BUILD.gn b/src/trace_processor/metrics/sql/android/BUILD.gn
index e6247a2..54545cf 100644
--- a/src/trace_processor/metrics/sql/android/BUILD.gn
+++ b/src/trace_processor/metrics/sql/android/BUILD.gn
@@ -26,6 +26,7 @@
     "android_blocking_calls_cuj_metric.sql",
     "sysui_notif_shade_list_builder_metric.sql",
     "sysui_notif_shade_list_builder_slices.sql",
+    "sysui_update_notif_on_ui_mode_changed_metric.sql",
     "android_boot.sql",
     "android_camera.sql",
     "android_camera_unagg.sql",
diff --git a/src/trace_processor/metrics/sql/android/sysui_update_notif_on_ui_mode_changed_metric.sql b/src/trace_processor/metrics/sql/android/sysui_update_notif_on_ui_mode_changed_metric.sql
new file mode 100644
index 0000000..ef89a3e
--- /dev/null
+++ b/src/trace_processor/metrics/sql/android/sysui_update_notif_on_ui_mode_changed_metric.sql
@@ -0,0 +1,70 @@
+--
+-- Copyright 2023 The Android Open Source Project
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+--     https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+INCLUDE PERFETTO MODULE android.slices;
+
+-- Table of updateNotifOnUiModeChanged slices
+DROP TABLE IF EXISTS sysui_update_notif_on_ui_mode_changed_slices;
+CREATE PERFETTO TABLE sysui_update_notif_on_ui_mode_changed_slices AS
+SELECT
+  s.name name,
+  dur,
+  s.id id
+FROM slice s
+  JOIN thread_track ON thread_track.id = s.track_id
+  JOIN thread USING (utid)
+WHERE
+  thread.is_main_thread AND
+  s.dur > 0 AND (
+    s.name GLOB 'updateNotifOnUiModeChanged'
+  );
+
+-- Table of updateNotifOnUiModeChanged slices statistical performance information
+DROP TABLE IF EXISTS sysui_update_notif_on_ui_mode_changed_metric;
+CREATE PERFETTO TABLE sysui_update_notif_on_ui_mode_changed_metric AS
+SELECT
+  s.name name,
+  COUNT(s.name) AS count,
+  cast(avg(dur) as int) average_dur_ns,
+  max(dur) maximum_dur_ns
+FROM sysui_update_notif_on_ui_mode_changed_slices s
+GROUP BY s.name;
+
+DROP VIEW IF EXISTS sysui_update_notif_on_ui_mode_changed_metric_output;
+CREATE PERFETTO VIEW sysui_update_notif_on_ui_mode_changed_metric_output AS
+SELECT SysuiUpdateNotifOnUiModeChangedMetric(
+        'all_slices_performance', (
+            SELECT SysUiSlicePerformanceStatisticalData(
+                'name', a.name,
+                'cnt', a.count,
+                'avg_dur_ms', cast (a.average_dur_ns / 1000000 as int),
+                'max_dur_ms', cast (a.maximum_dur_ns / 1000000 as int),
+                'avg_dur_ns', a.average_dur_ns,
+                'max_dur_ns', a.maximum_dur_ns
+            )
+            FROM sysui_update_notif_on_ui_mode_changed_metric a
+        ),
+        'slice', (
+            SELECT RepeatedField(
+                SysuiUpdateNotifOnUiModeChangedMetric_SliceDuration(
+                    'name', a.name,
+                    'dur_ms', cast (a.dur / 1000000 as int),
+                    'dur_ns', a.dur
+                )
+            )
+            FROM sysui_update_notif_on_ui_mode_changed_slices a
+            ORDER BY dur DESC
+        )
+);
\ No newline at end of file
diff --git a/test/trace_processor/diff_tests/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.out b/test/trace_processor/diff_tests/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.out
new file mode 100644
index 0000000..882253e
--- /dev/null
+++ b/test/trace_processor/diff_tests/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.out
@@ -0,0 +1,20 @@
+sysui_update_notif_on_ui_mode_changed_metric {
+  all_slices_performance {
+    name: "updateNotifOnUiModeChanged"
+    cnt: 2
+    avg_dur_ms: 35
+    max_dur_ms: 40
+    avg_dur_ns: 35000002
+    max_dur_ns: 40000003
+  }
+  slice {
+  name: "updateNotifOnUiModeChanged"
+  dur_ms: 30
+  dur_ns: 30000002
+  }
+  slice {
+  name: "updateNotifOnUiModeChanged"
+  dur_ms: 40
+  dur_ns: 40000003
+  }
+}
\ No newline at end of file
diff --git a/test/trace_processor/diff_tests/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.py b/test/trace_processor/diff_tests/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.py
new file mode 100644
index 0000000..5892b09
--- /dev/null
+++ b/test/trace_processor/diff_tests/metrics/android/sysui_update_notif_on_ui_mode_changed_metric.py
@@ -0,0 +1,102 @@
+#!/usr/bin/env python3
+# Copyright (C) 2023 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from os import sys, path
+import synth_common
+
+# com.android.systemui
+SYSUI_PID = 1000
+
+THIRD_PROCESS_PID = 3000
+
+# duration for each child slice
+child_slice_dur = 10_000_000
+
+# parent slice idle duration
+parent_slice_idle_dur = 10_000_000
+
+# List of inflation-related descendant slices of interesting slices
+inflation_child_slice_names = [
+    'HybridGroupManager#inflateHybridView',
+    'NotifChildCont#recreateHeader',
+]
+
+# List of Shade-node-modification-related descendant slices of interesting slices
+modification_child_slice_names = [
+    'ShadeNode#addChildAt',
+    'ShadeNode#removeChildAt',
+    'ShadeNode#moveChildTo',
+]
+
+
+def add_main_thread_atrace(trace, ts, ts_end, buf, pid):
+    trace.add_atrace_begin(ts=ts, tid=pid, pid=pid, buf=buf)
+    trace.add_atrace_end(ts=ts_end, tid=pid, pid=pid)
+
+
+# Creates a trace that has the interesting slices that we are querying for
+# A ShadeListBuilder.buildList slice that has one of each of the inflation_child_slice_names
+# A ShadeListBuilder.buildList slice that has one of each of the modification_child_slice_names
+def add_slices(trace, pid):
+    slice_ts = 2_000_000
+    slice_ts = add_slice_with_children(trace, pid, slice_ts, 'updateNotifOnUiModeChanged', inflation_child_slice_names)
+    add_slice_with_children(trace, pid, slice_ts, 'updateNotifOnUiModeChanged', modification_child_slice_names)
+
+# Add a slice with a set of children slices, return the parent slice's end ts
+def add_slice_with_children(trace, pid, current_ts, parent_name, children_list):
+    ts_end = current_ts + parent_slice_idle_dur + len(children_list) * (child_slice_dur + 1)
+    # add the parent slice
+    add_main_thread_atrace(
+        trace,
+        ts=current_ts,
+        ts_end=ts_end,
+        buf=parent_name,
+        pid=pid)
+    current_ts += parent_slice_idle_dur
+    # Add the children
+    for child_name in children_list:
+        ts_child_end = current_ts + child_slice_dur + 1
+        add_main_thread_atrace(
+            trace,
+            ts=current_ts,
+            ts_end=ts_child_end,
+            buf=child_name,
+            pid=pid)
+        current_ts = ts_child_end
+    return ts_end
+
+def add_process(trace, package_name, uid, pid):
+    trace.add_package_list(ts=0, name=package_name, uid=uid, version_code=1)
+    trace.add_process(
+        pid=pid, ppid=0, cmdline=package_name, uid=uid)
+    trace.add_thread(tid=pid, tgid=pid, cmdline="MainThread", name="MainThread")
+
+
+def setup_trace():
+    trace = synth_common.create_trace()
+    trace.add_packet()
+    add_process(trace, package_name="com.android.systemui", uid=10001,
+                pid=SYSUI_PID)
+    trace.add_ftrace_packet(cpu=0)
+    return trace
+
+
+trace = setup_trace()
+
+
+add_slices(trace, pid=SYSUI_PID)
+
+# See test_sysui_update_notif_on_ui_mode_changed.
+sys.stdout.buffer.write(trace.trace.SerializeToString())
\ No newline at end of file
diff --git a/test/trace_processor/diff_tests/metrics/android/tests.py b/test/trace_processor/diff_tests/metrics/android/tests.py
index 7774420..e2af7bb 100644
--- a/test/trace_processor/diff_tests/metrics/android/tests.py
+++ b/test/trace_processor/diff_tests/metrics/android/tests.py
@@ -139,6 +139,12 @@
           query=Metric('sysui_notif_shade_list_builder_metric'),
           out=Path('sysui_notif_shade_list_builder_metric.out'))
 
+  def test_sysui_update_notif_on_ui_mode_changed(self):
+      return DiffTestBlueprint(
+          trace=Path('sysui_update_notif_on_ui_mode_changed_metric.py'),
+          query=Metric('sysui_update_notif_on_ui_mode_changed_metric'),
+          out=Path('sysui_update_notif_on_ui_mode_changed_metric.out'))
+
   def test_monitor_contention_metric(self):
     return DiffTestBlueprint(
         trace=DataPath('android_monitor_contention_trace.atr'),
