Merge "Accessibility settings interaction controls category restructure, add system controls fragment for related accessibility services."
diff --git a/color-check-baseline.xml b/color-check-baseline.xml
index 768929b..eac6d3c 100644
--- a/color-check-baseline.xml
+++ b/color-check-baseline.xml
@@ -2,6 +2,18 @@
 <issues format="4">
 
     <issue
+        id="LintError"
+        severity="Error"
+        message="No `.class` files were found in project &quot;.&quot;, so none of the classfile based checks could be run. Does the project need to be built first?"
+        category="Lint"
+        priority="10"
+        summary="Lint Failure"
+        explanation="This issue type represents a problem running lint itself. Examples include failure to find bytecode for source files (which means certain detectors could not be run), parsing errors in lint configuration files, etc.&#xA;These errors are not errors in your own code, but they are shown to make it clear that some checks were not completed.">
+        <location
+            file="."/>
+    </issue>
+
+    <issue
         id="HardCodedColor"
         severity="Error"
         message="Avoid using hardcoded color"
@@ -2281,6 +2293,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_about_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_about_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_accessibility_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2313,6 +2341,38 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_accessibility_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_accessibility_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_accessibility_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_accessibility_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_accounts_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2329,6 +2389,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_accounts_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_accounts_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_app_and_notification_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2345,6 +2421,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_app_and_notification_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_apps_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_battery_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2361,6 +2453,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_battery_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_battery_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_connected_device_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2377,6 +2485,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_connected_device_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_connected_device_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_display_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2393,6 +2517,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_display_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_display_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_emergency_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2409,6 +2549,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_emergency_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_emergency_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_location_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2425,6 +2581,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_location_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_location_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_network_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2441,6 +2613,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_network_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_network_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_generic_icon_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2473,6 +2661,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_generic_icon_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_notification_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_privacy_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2489,6 +2693,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_privacy_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_privacy_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_security_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2505,6 +2725,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_security_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_security_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_sound_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2521,6 +2757,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_sound_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_sound_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_storage_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2537,6 +2789,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_storage_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_storage_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_support_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2569,6 +2837,38 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_support_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_support_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_support_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_support_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_system_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2585,6 +2885,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_system_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_system_dashboard_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="            android:color=&quot;@color/homepage_wallpaper_background&quot; />"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2601,6 +2917,22 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="            android:color=&quot;@color/homepage_wallpaper_background&quot; />"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/ic_homepage_wallpaper_v2.xml"
+            line="24"
+            column="13"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="                    android:color=&quot;@color/notification_block_color&quot;/>"
         errorLine2="                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2957,7 +3289,7 @@
         errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/layout/screen_zoom_preview_1.xml"
-            line="44"
+            line="45"
             column="17"/>
     </issue>
 
@@ -2973,7 +3305,7 @@
         errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/layout/screen_zoom_preview_1.xml"
-            line="45"
+            line="46"
             column="17"/>
     </issue>
 
@@ -2989,7 +3321,7 @@
         errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/layout/screen_zoom_preview_1.xml"
-            line="54"
+            line="55"
             column="17"/>
     </issue>
 
@@ -3005,7 +3337,7 @@
         errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/layout/screen_zoom_preview_1.xml"
-            line="55"
+            line="56"
             column="17"/>
     </issue>
 
@@ -3021,7 +3353,7 @@
         errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/layout/screen_zoom_preview_1.xml"
-            line="64"
+            line="65"
             column="17"/>
     </issue>
 
@@ -3037,7 +3369,7 @@
         errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/layout/screen_zoom_preview_1.xml"
-            line="65"
+            line="66"
             column="17"/>
     </issue>
 
@@ -3053,7 +3385,7 @@
         errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/layout/screen_zoom_preview_1.xml"
-            line="74"
+            line="75"
             column="17"/>
     </issue>
 
@@ -3069,7 +3401,7 @@
         errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/layout/screen_zoom_preview_1.xml"
-            line="75"
+            line="76"
             column="17"/>
     </issue>
 
@@ -3129,11 +3461,27 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="    &lt;string name=&quot;sync_plug&quot; msgid=&quot;7956982719077985381&quot;>&quot;‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‏‎‏‎‎‎‎‎‎‎‎‎‎‏‏‎‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‎‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎&quot;&lt;font fgcolor=&quot;#ffffffff&quot;>&quot;‎‏‎‎‏‏‏‎Welcome to Google sync!‎‏‎‎‏‏‎&quot;&lt;/font>&quot;‎‏‎‎‏‏‏‎ ‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎A Google approach to syncing data to allow access to your contacts, appointments, and more from wherever you are.‎‏‎‎‏‎&quot;&lt;/string>"
+        errorLine2="                                                                                                                                                                         ~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/values-en-rXC/strings.xml"
+            line="2815"
+            column="170"/>
+    </issue>
+
+    <issue
+        id="HardCodedColor"
+        severity="Error"
+        message="Avoid using hardcoded color"
+        category="Correctness"
+        priority="4"
+        summary="Using hardcoded color"
+        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="    &lt;string name=&quot;sync_plug&quot; msgid=&quot;7956982719077985381&quot;>&lt;font fgcolor=&quot;#ffffffff&quot;>&quot;Welcome to Google sync!&quot;&lt;/font>&quot; \nA Google approach to syncing data to allow access to your contacts, appointments and more from wherever you are.&quot;&lt;/string>"
         errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values-en-rAU/strings.xml"
-            line="2818"
+            line="2816"
             column="64"/>
     </issue>
 
@@ -3149,7 +3497,7 @@
         errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values-en-rCA/strings.xml"
-            line="2818"
+            line="2816"
             column="64"/>
     </issue>
 
@@ -3165,7 +3513,7 @@
         errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values-en-rGB/strings.xml"
-            line="2818"
+            line="2816"
             column="64"/>
     </issue>
 
@@ -3181,7 +3529,7 @@
         errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values-en-rIN/strings.xml"
-            line="2818"
+            line="2816"
             column="64"/>
     </issue>
 
@@ -3193,22 +3541,6 @@
         priority="4"
         summary="Using hardcoded color"
         explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
-        errorLine1="    &lt;string name=&quot;sync_plug&quot; msgid=&quot;7956982719077985381&quot;>&quot;‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‏‎‏‎‎‎‎‎‎‎‎‎‎‏‏‎‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‎‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎&quot;&lt;font fgcolor=&quot;#ffffffff&quot;>&quot;‎‏‎‎‏‏‏‎Welcome to Google sync!‎‏‎‎‏‏‎&quot;&lt;/font>&quot;‎‏‎‎‏‏‏‎ ‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎A Google approach to syncing data to allow access to your contacts, appointments, and more from wherever you are.‎‏‎‎‏‎&quot;&lt;/string>"
-        errorLine2="                                                                                                                                                                         ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="res/values-en-rXC/strings.xml"
-            line="2818"
-            column="170"/>
-    </issue>
-
-    <issue
-        id="HardCodedColor"
-        severity="Error"
-        message="Avoid using hardcoded color"
-        category="Correctness"
-        priority="4"
-        summary="Using hardcoded color"
-        explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.&#xA;This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
         errorLine1="    &lt;string name=&quot;sync_plug&quot;>&lt;font fgcolor=&quot;#ffffffff&quot;>Welcome to Google sync!&lt;/font>"
         errorLine2="                                   ~~~~~~~~~~~~~~~~~~~">
         <location
@@ -3245,7 +3577,7 @@
         errorLine2="                                           ^">
         <location
             file="res/values/styles.xml"
-            line="428"
+            line="434"
             column="44"/>
     </issue>
 
@@ -3261,7 +3593,7 @@
         errorLine2="                                           ^">
         <location
             file="res/values/styles.xml"
-            line="434"
+            line="440"
             column="44"/>
     </issue>
 
@@ -3277,7 +3609,7 @@
         errorLine2="                                           ^">
         <location
             file="res/values/styles.xml"
-            line="435"
+            line="441"
             column="44"/>
     </issue>
 
@@ -3293,7 +3625,7 @@
         errorLine2="                                 ^">
         <location
             file="res/values/styles.xml"
-            line="471"
+            line="477"
             column="34"/>
     </issue>
 
diff --git a/res/drawable/ic_homepage_about_v2.xml b/res/drawable/ic_homepage_about_v2.xml
new file mode 100644
index 0000000..c069bfc
--- /dev/null
+++ b/res/drawable/ic_homepage_about_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_about_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_phone_info" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_accessibility_v2.xml b/res/drawable/ic_homepage_accessibility_v2.xml
new file mode 100644
index 0000000..24ca8cf
--- /dev/null
+++ b/res/drawable/ic_homepage_accessibility_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_accessibility_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_settings_accessibility" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_accounts_v2.xml b/res/drawable/ic_homepage_accounts_v2.xml
new file mode 100644
index 0000000..6ea981f
--- /dev/null
+++ b/res/drawable/ic_homepage_accounts_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_accounts_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_settings_accounts" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_apps_v2.xml b/res/drawable/ic_homepage_apps_v2.xml
new file mode 100644
index 0000000..c6ac0c4
--- /dev/null
+++ b/res/drawable/ic_homepage_apps_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_app_and_notification_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_apps" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_battery_v2.xml b/res/drawable/ic_homepage_battery_v2.xml
new file mode 100644
index 0000000..680031f
--- /dev/null
+++ b/res/drawable/ic_homepage_battery_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_battery_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_settings_battery_white" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_connected_device_v2.xml b/res/drawable/ic_homepage_connected_device_v2.xml
new file mode 100644
index 0000000..f3e95d2
--- /dev/null
+++ b/res/drawable/ic_homepage_connected_device_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_connected_device_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_devices_other" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_display_v2.xml b/res/drawable/ic_homepage_display_v2.xml
new file mode 100644
index 0000000..e4014ee
--- /dev/null
+++ b/res/drawable/ic_homepage_display_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_display_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_settings_display_white" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_emergency_v2.xml b/res/drawable/ic_homepage_emergency_v2.xml
new file mode 100644
index 0000000..86d1470
--- /dev/null
+++ b/res/drawable/ic_homepage_emergency_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_emergency_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_settings_emergency" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_location_v2.xml b/res/drawable/ic_homepage_location_v2.xml
new file mode 100644
index 0000000..5dc72eb
--- /dev/null
+++ b/res/drawable/ic_homepage_location_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_location_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_settings_location"/>
+</layer-list>
diff --git a/res/drawable/ic_homepage_network_v2.xml b/res/drawable/ic_homepage_network_v2.xml
new file mode 100644
index 0000000..d3b33e9
--- /dev/null
+++ b/res/drawable/ic_homepage_network_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_network_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_settings_wireless_white" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_notification_v2.xml b/res/drawable/ic_homepage_notification_v2.xml
new file mode 100644
index 0000000..9b57456
--- /dev/null
+++ b/res/drawable/ic_homepage_notification_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2020 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_generic_icon_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_notifications_white" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_privacy_v2.xml b/res/drawable/ic_homepage_privacy_v2.xml
new file mode 100644
index 0000000..56e6da8
--- /dev/null
+++ b/res/drawable/ic_homepage_privacy_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_privacy_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_settings_privacy"/>
+</layer-list>
diff --git a/res/drawable/ic_homepage_security_v2.xml b/res/drawable/ic_homepage_security_v2.xml
new file mode 100644
index 0000000..5e33add
--- /dev/null
+++ b/res/drawable/ic_homepage_security_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_security_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_settings_security_white" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_sound_v2.xml b/res/drawable/ic_homepage_sound_v2.xml
new file mode 100644
index 0000000..8561820
--- /dev/null
+++ b/res/drawable/ic_homepage_sound_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_sound_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_volume_up_24dp" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_storage_v2.xml b/res/drawable/ic_homepage_storage_v2.xml
new file mode 100644
index 0000000..1a8b7d2
--- /dev/null
+++ b/res/drawable/ic_homepage_storage_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_storage_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_storage_white" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_support_v2.xml b/res/drawable/ic_homepage_support_v2.xml
new file mode 100644
index 0000000..8139973
--- /dev/null
+++ b/res/drawable/ic_homepage_support_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_support_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_help" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_system_dashboard_v2.xml b/res/drawable/ic_homepage_system_dashboard_v2.xml
new file mode 100644
index 0000000..7c016a2
--- /dev/null
+++ b/res/drawable/ic_homepage_system_dashboard_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_system_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_settings_system_dashboard_white" />
+</layer-list>
diff --git a/res/drawable/ic_homepage_wallpaper_v2.xml b/res/drawable/ic_homepage_wallpaper_v2.xml
new file mode 100644
index 0000000..ee16339
--- /dev/null
+++ b/res/drawable/ic_homepage_wallpaper_v2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2021 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.
+  -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item>
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
+            android:width="@dimen/homepage_image_size"
+            android:height="@dimen/homepage_image_size"
+            android:color="@color/homepage_wallpaper_background" />
+    </item>
+
+    <item
+        android:width="@dimen/dashboard_tile_foreground_image_size"
+        android:height="@dimen/dashboard_tile_foreground_image_size"
+        android:start="@dimen/homepage_foreground_image_inset"
+        android:top="@dimen/homepage_foreground_image_inset"
+        android:drawable="@drawable/ic_settings_wallpaper_white" />
+</layer-list>
diff --git a/res/layout/emergency_gesture_switch_bar.xml b/res/layout/emergency_gesture_switch_bar.xml
deleted file mode 100644
index 2524601..0000000
--- a/res/layout/emergency_gesture_switch_bar.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2020 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.
-  -->
-
-<!-- For use in a LayoutPreference -->
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_height="wrap_content"
-    android:layout_width="match_parent"
-    android:orientation="vertical"
-    android:importantForAccessibility="no">
-
-    <com.android.settings.widget.SwitchBar
-        android:id="@+id/switch_bar"
-        android:minHeight="?android:attr/actionBarSize"
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        android:paddingStart="0dp"
-        android:theme="?attr/switchBarTheme"/>
-    <TextView
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        android:layout_marginStart="@dimen/actionbar_subsettings_contentInsetStart"
-        android:layout_marginVertical="16dp"
-        android:text="@string/emergency_gesture_screen_summary"/>
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/homepage_preference.xml b/res/layout/homepage_preference.xml
new file mode 100644
index 0000000..c08a74f
--- /dev/null
+++ b/res/layout/homepage_preference.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2021 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.
+  -->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="72dp"
+    android:gravity="center_vertical"
+    android:paddingStart="24dp"
+    android:paddingEnd="24dp"
+    android:background="?android:attr/selectableItemBackground"
+    android:clipToPadding="false"
+    android:baselineAligned="false">
+
+    <LinearLayout
+        android:id="@+id/icon_frame"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:gravity="start|center_vertical"
+        android:orientation="horizontal"
+        android:paddingTop="4dp"
+        android:paddingBottom="4dp"
+        android:layout_marginEnd="16dp">
+
+        <androidx.preference.internal.PreferenceImageView
+            android:id="@android:id/icon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            app:maxWidth="48dp"
+            app:maxHeight="48dp"/>
+
+    </LinearLayout>
+
+    <RelativeLayout
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:paddingTop="16dp"
+        android:paddingBottom="16dp">
+
+        <TextView
+            android:id="@android:id/title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:textAppearance="@style/TextAppearance.HomepagePreferenceTitle"
+            android:ellipsize="marquee"/>
+    </RelativeLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/search_bar.xml b/res/layout/search_bar.xml
index d3e98c3..c4dd15d 100644
--- a/res/layout/search_bar.xml
+++ b/res/layout/search_bar.xml
@@ -20,7 +20,10 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_margin="@dimen/search_bar_margin"
+    android:layout_marginTop="@dimen/search_bar_margin"
+    android:layout_marginStart="@dimen/search_bar_margin"
+    android:layout_marginEnd="@dimen/search_bar_margin"
+    android:layout_marginBottom="16dp"
     app:layout_scrollFlags="scroll|enterAlways">
 
     <com.google.android.material.card.MaterialCardView
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index bc01d59..7bd5971 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -116,6 +116,12 @@
     <!-- Dashboard foreground image inset (from background edge to foreground edge) -->
     <dimen name="dashboard_tile_foreground_image_inset">6dp</dimen>
 
+    <!-- Homepage image tile size -->
+    <dimen name="homepage_image_size">48dp</dimen>
+
+    <!-- Homepage foreground image inset (from background edge to foreground edge) -->
+    <dimen name="homepage_foreground_image_inset">12dp</dimen>
+
     <!-- Preference icon foreground image inset (from background edge to foreground edge) -->
     <dimen name="preference_icon_foreground_image_inset">12dp</dimen>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 94b4949..7c03010 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5116,7 +5116,7 @@
     <string name="accessibility_disable_animations">Remove animations</string>
     <!-- Title for the accessibility preference for primary mono. [CHAR LIMIT=35] -->
     <string name="accessibility_toggle_primary_mono_title">Mono audio</string>
-    <!-- Summary for the accessibility preference for primary mono. [CHAR LIMIT=50] -->
+    <!-- Summary for the accessibility preference for primary mono. [CHAR LIMIT=60] -->
     <string name="accessibility_toggle_primary_mono_summary">Combine channels when playing audio</string>
     <!-- Title for the accessibility preference for primary balance. [CHAR LIMIT=35] -->
     <string name="accessibility_toggle_primary_balance_title">Audio balance</string>
@@ -11670,11 +11670,9 @@
     <!-- Option for prevent ringing setting -->
     <string name="prevent_ringing_option_none">Do nothing</string>
     <!-- Summary for prevent ringing setting -->
-    <string name="prevent_ringing_option_vibrate_summary">On (vibrate)</string>
+    <string name="prevent_ringing_option_vibrate_summary">Vibrate</string>
     <!-- Summary for prevent ringing setting -->
-    <string name="prevent_ringing_option_mute_summary">On (mute)</string>
-    <!-- Summary for prevent ringing setting -->
-    <string name="prevent_ringing_option_none_summary">Off</string>
+    <string name="prevent_ringing_option_mute_summary">Mute</string>
 
     <!-- Title for detail page of wifi network [CHAR LIMIT=30] -->
     <string name="pref_title_network_details">Network details</string>
@@ -12585,4 +12583,8 @@
     <string name="category_name_others">Others</string>
     <!-- General category name [CHAR LIMIT=none] -->
     <string name="category_name_general">General</string>
+
+    <!-- Do not translate. Title for prevent ringing main switch. [CHAR LIMIT=50] -->
+    <string name="prevent_ringing_main_switch_title" translatable="false">Use prevent ringing</string>
+
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 4ab1e6c..e75766d 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -312,6 +312,12 @@
         <item name="android:textSize">@dimen/search_bar_text_size</item>
     </style>
 
+    <style name="TextAppearance.HomepagePreferenceTitle"
+           parent="@*android:style/TextAppearance.DeviceDefault">
+        <item name="android:fontFamily">google-sans</item>
+        <item name="android:textSize">20sp</item>
+    </style>
+
     <style name="TextAppearance.HomepageCardTitle"
            parent="@*android:style/TextAppearance.DeviceDefault.Subhead">
         <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item>
diff --git a/res/xml/app_notification_settings.xml b/res/xml/app_notification_settings.xml
index b3a1117..877b38b 100644
--- a/res/xml/app_notification_settings.xml
+++ b/res/xml/app_notification_settings.xml
@@ -22,9 +22,8 @@
         android:key="pref_app_header"
         android:layout="@layout/settings_entity_header" />
 
-    <com.android.settingslib.widget.LayoutPreference
-        android:key="block"
-        android:layout="@layout/styled_switch_bar" />
+    <com.android.settingslib.widget.MainSwitchPreference
+        android:key="block" />
 
     <com.android.settings.notification.app.NotificationFooterPreference
         android:key="block_desc" />
diff --git a/res/xml/emergency_gesture_settings.xml b/res/xml/emergency_gesture_settings.xml
index 2e1a259..2f53a90 100644
--- a/res/xml/emergency_gesture_settings.xml
+++ b/res/xml/emergency_gesture_settings.xml
@@ -20,16 +20,18 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:title="@string/emergency_gesture_screen_title">
 
+    <com.android.settingslib.widget.MainSwitchPreference
+        android:key="gesture_emergency_button_switch_bar"
+        app:controller="com.android.settings.gestures.EmergencyGesturePreferenceController" />
+
     <com.android.settings.widget.VideoPreference
         android:key="emergency_gesture_screen_video"
         app:animation="@raw/gesture_double_tap"
         app:preview="@drawable/gesture_double_tap"/>
 
-    <com.android.settingslib.widget.LayoutPreference
-        android:key="gesture_emergency_button_switch_bar"
-        android:layout="@layout/emergency_gesture_switch_bar"
-        app:controller="com.android.settings.gestures.EmergencyGesturePreferenceController"
-        app:allowDividerBelow="true"/>
+    <com.android.settingslib.widget.TopIntroPreference
+        android:title="@string/emergency_gesture_screen_summary"
+        app:allowDividerBelow="true" />
 
     <SwitchPreference
         android:key="emergency_gesture_sound"
diff --git a/res/xml/prevent_ringing_gesture_settings.xml b/res/xml/prevent_ringing_gesture_settings.xml
index 67a9c9b..4080375 100644
--- a/res/xml/prevent_ringing_gesture_settings.xml
+++ b/res/xml/prevent_ringing_gesture_settings.xml
@@ -20,16 +20,15 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:title="@string/gesture_prevent_ringing_screen_title">
 
+    <com.android.settingslib.widget.MainSwitchPreference
+        android:key="gesture_prevent_ringing_switch" />
+
     <com.android.settings.widget.VideoPreference
         android:key="gesture_prevent_ringing_video"
         app:animation="@raw/gesture_prevent_ringing"
         app:preview="@drawable/gesture_prevent_ringing"
         app:controller="com.android.settings.widget.VideoPreferenceController" />
 
-    <com.android.settingslib.widget.LayoutPreference
-        android:key="gesture_prevent_ringing_switch"
-        android:layout="@layout/styled_switch_bar" />
-
     <PreferenceCategory
         android:key="gesture_prevent_ringing_category"
         android:title="@string/gesture_prevent_ringing_title" />
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
index fc5c3e2..31571f6 100644
--- a/res/xml/sound_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -118,7 +118,7 @@
         settings:controller="com.android.settings.sound.MediaControlsParentPreferenceController"
         settings:keywords="@string/keywords_media_controls"/>
 
-    <Preference
+    <com.android.settings.widget.PrimarySwitchPreference
         android:key="gesture_prevent_ringing_sound"
         android:title="@string/gesture_prevent_ringing_sound_title"
         android:order="-107"
diff --git a/res/xml/sound_settings_v2.xml b/res/xml/sound_settings_v2.xml
new file mode 100644
index 0000000..9699240
--- /dev/null
+++ b/res/xml/sound_settings_v2.xml
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/sound_settings"
+    android:key="sound_settings"
+    settings:keywords="@string/keywords_sounds"
+    settings:initialExpandedChildrenCount="9">
+
+    <!-- Remote volume group -->
+    <PreferenceCategory
+        android:key="remote_media_group"
+        android:title=""
+        android:order="-185"
+        settings:allowDividerBelow="true"
+        settings:controller="com.android.settings.notification.RemoteVolumeGroupController">
+    </PreferenceCategory>
+
+    <!-- Media volume -->
+    <com.android.settings.notification.VolumeSeekBarPreference
+        android:key="media_volume"
+        android:icon="@drawable/ic_media_stream"
+        android:title="@string/media_volume_option_title"
+        android:order="-180"
+        settings:controller="com.android.settings.notification.MediaVolumePreferenceController"/>
+
+    <!-- Media output switcher -->
+    <Preference
+        android:key="media_output"
+        android:title="@string/media_output_title"
+        android:dialogTitle="@string/media_output_title"
+        android:order="-175"
+        settings:searchable="false"
+        settings:controller="com.android.settings.sound.MediaOutputPreferenceController"/>
+
+    <!-- Call volume -->
+    <com.android.settings.notification.VolumeSeekBarPreference
+        android:key="call_volume"
+        android:icon="@drawable/ic_local_phone_24_lib"
+        android:title="@string/call_volume_option_title"
+        android:order="-170"
+        settings:controller="com.android.settings.notification.CallVolumePreferenceController"/>
+
+    <!-- Hands free profile output switcher -->
+    <ListPreference
+        android:key="take_call_on_output"
+        android:title="@string/take_call_on_title"
+        android:dialogTitle="@string/take_call_on_title"
+        android:order="-165"
+        settings:searchable="false"
+        settings:controller="com.android.settings.sound.HandsFreeProfileOutputPreferenceController"/>
+
+    <!-- Ring volume -->
+    <com.android.settings.notification.VolumeSeekBarPreference
+        android:key="ring_volume"
+        android:icon="@drawable/ic_notifications"
+        android:title="@string/ring_volume_option_title"
+        android:order="-160"
+        settings:controller="com.android.settings.notification.RingVolumePreferenceController"/>
+
+
+    <!-- Alarm volume -->
+    <com.android.settings.notification.VolumeSeekBarPreference
+        android:key="alarm_volume"
+        android:icon="@*android:drawable/ic_audio_alarm"
+        android:title="@string/alarm_volume_option_title"
+        android:order="-150"
+        settings:controller="com.android.settings.notification.AlarmVolumePreferenceController"/>
+
+    <!-- Notification volume -->
+    <com.android.settings.notification.VolumeSeekBarPreference
+        android:key="notification_volume"
+        android:icon="@drawable/ic_notifications"
+        android:title="@string/notification_volume_option_title"
+        android:order="-140"
+        settings:controller="com.android.settings.notification.NotificationVolumePreferenceController"/>
+
+    <!-- Also vibrate for calls -->
+    <Preference
+        android:fragment="com.android.settings.sound.VibrateForCallsPreferenceFragment"
+        android:key="vibrate_for_calls"
+        android:title="@string/vibrate_when_ringing_title"
+        android:order="-130"
+        settings:controller="com.android.settings.sound.VibrateForCallsPreferenceController"
+        settings:keywords="@string/keywords_vibrate_for_calls"/>
+
+    <!-- Interruptions -->
+    <com.android.settingslib.RestrictedPreference
+        android:key="zen_mode"
+        android:title="@string/zen_mode_settings_title"
+        android:fragment="com.android.settings.notification.zen.ZenModeSettings"
+        android:order="-120"
+        settings:useAdminDisabledSummary="true"
+        settings:keywords="@string/keywords_sounds_and_notifications_interruptions"
+        settings:allowDividerAbove="true"
+        settings:controller="com.android.settings.notification.zen.ZenModePreferenceController"/>
+
+    <Preference
+        android:key="media_controls_summary"
+        android:title="@string/media_controls_title"
+        android:fragment="com.android.settings.sound.MediaControlsSettings"
+        android:order="-110"
+        settings:controller="com.android.settings.sound.MediaControlsParentPreferenceController"
+        settings:keywords="@string/keywords_media_controls"/>
+
+    <com.android.settings.widget.PrimarySwitchPreference
+        android:key="gesture_prevent_ringing_sound"
+        android:title="@string/gesture_prevent_ringing_sound_title"
+        android:order="-107"
+        android:fragment="com.android.settings.gestures.PreventRingingGestureSettings"
+        settings:controller="com.android.settings.gestures.PreventRingingParentPreferenceController"/>
+
+    <!-- Phone ringtone -->
+    <com.android.settings.DefaultRingtonePreference
+        android:key="phone_ringtone"
+        android:title="@string/ringtone_title"
+        android:dialogTitle="@string/ringtone_title"
+        android:summary="@string/summary_placeholder"
+        android:ringtoneType="ringtone"
+        android:order="-100"
+        settings:keywords="@string/sound_settings"/>
+
+    <!-- Default notification ringtone -->
+    <com.android.settings.DefaultRingtonePreference
+        android:key="notification_ringtone"
+        android:title="@string/notification_ringtone_title"
+        android:dialogTitle="@string/notification_ringtone_title"
+        android:summary="@string/summary_placeholder"
+        android:ringtoneType="notification"
+        android:order="-90"/>
+
+    <!-- Default alarm ringtone -->
+    <com.android.settings.DefaultRingtonePreference
+        android:key="alarm_ringtone"
+        android:title="@string/alarm_ringtone_title"
+        android:dialogTitle="@string/alarm_ringtone_title"
+        android:summary="@string/summary_placeholder"
+        android:persistent="false"
+        android:ringtoneType="alarm"
+        android:order="-80"/>
+
+    <!-- Other sounds -->
+    <PreferenceCategory
+          android:key="other_sounds_and_vibrations_category"
+          android:title="@string/other_sound_category_preference_title"
+          android:order="-50">
+
+        <!-- Dial pad tones -->
+        <SwitchPreference
+          android:key="dial_pad_tones"
+          android:title="@string/dial_pad_tones_title"/>
+
+        <!-- Screen locking sounds -->
+        <SwitchPreference
+          android:key="screen_locking_sounds"
+          android:title="@string/screen_locking_sounds_title"/>
+
+        <!-- Charging sounds -->
+        <SwitchPreference
+          android:key="charging_sounds"
+          android:title="@string/charging_sounds_title"/>
+
+        <!-- Docking sounds -->
+        <SwitchPreference
+          android:key="docking_sounds"
+          android:title="@string/docking_sounds_title"/>
+
+        <!-- Touch sounds -->
+        <SwitchPreference
+          android:key="touch_sounds"
+          android:title="@string/touch_sounds_title"/>
+
+        <!-- Vibrate on touch -->
+        <SwitchPreference
+          android:key="vibrate_on_touch"
+          android:title="@string/vibrate_on_touch_title"
+          android:summary="@string/vibrate_on_touch_summary"
+          settings:keywords="@string/keywords_vibrate_on_touch"/>
+
+        <!-- Dock speaker plays -->
+        <DropDownPreference
+          android:key="dock_audio_media"
+          android:title="@string/dock_audio_media_title"
+          android:summary="%s"/>
+
+        <!-- Boot sounds -->
+        <SwitchPreference
+          android:key="boot_sounds"
+          android:title="@string/boot_sounds_title"/>
+
+        <!-- Emergency tone -->
+        <DropDownPreference
+          android:key="emergency_tone"
+          android:title="@string/emergency_tone_title"
+          android:summary="%s"/>
+    </PreferenceCategory>
+
+    <com.android.settings.widget.WorkOnlyCategory
+        android:key="sound_work_settings_section"
+        android:title="@string/sound_work_settings"
+        android:order="100">
+
+                <!-- Use the same sounds of the work profile -->
+                <SwitchPreference
+                    android:key="work_use_personal_sounds"
+                    android:title="@string/work_use_personal_sounds_title"
+                    android:summary="@string/work_use_personal_sounds_summary"
+                    android:disableDependentsState="true"/>
+
+                <!-- Work phone ringtone -->
+                <com.android.settings.DefaultRingtonePreference
+                    android:key="work_ringtone"
+                    android:title="@string/work_ringtone_title"
+                    android:dialogTitle="@string/work_alarm_ringtone_title"
+                    android:ringtoneType="ringtone"
+                    android:dependency="work_use_personal_sounds"/>
+
+                <!-- Default work notification ringtone -->
+                <com.android.settings.DefaultRingtonePreference
+                    android:key="work_notification_ringtone"
+                    android:title="@string/work_notification_ringtone_title"
+                    android:dialogTitle="@string/work_alarm_ringtone_title"
+                    android:ringtoneType="notification"
+                    android:dependency="work_use_personal_sounds"/>
+
+                <!-- Default work alarm ringtone -->
+                <com.android.settings.DefaultRingtonePreference
+                    android:key="work_alarm_ringtone"
+                    android:title="@string/work_alarm_ringtone_title"
+                    android:dialogTitle="@string/work_alarm_ringtone_title"
+                    android:persistent="false"
+                    android:ringtoneType="alarm"
+                    android:dependency="work_use_personal_sounds"/>
+
+    </com.android.settings.widget.WorkOnlyCategory>
+</PreferenceScreen>
diff --git a/res/xml/top_level_settings_grouped.xml b/res/xml/top_level_settings_grouped.xml
index 1a82e2d..9f87ffc 100644
--- a/res/xml/top_level_settings_grouped.xml
+++ b/res/xml/top_level_settings_grouped.xml
@@ -20,17 +20,17 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:key="top_level_settings_grouped">
 
-    <Preference
+    <com.android.settings.homepage.HomePagePreference
         android:fragment="com.android.settings.network.NetworkDashboardFragment"
-        android:icon="@drawable/ic_homepage_network"
+        android:icon="@drawable/ic_homepage_network_v2"
         android:key="top_level_network"
         android:order="-140"
         android:title="@string/network_dashboard_title"
         settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/>
 
-    <Preference
+    <com.android.settings.homepage.HomePagePreference
         android:fragment="com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment"
-        android:icon="@drawable/ic_homepage_connected_device"
+        android:icon="@drawable/ic_homepage_connected_device_v2"
         android:key="top_level_connected_devices"
         android:order="-130"
         android:title="@string/connected_devices_dashboard_title"
@@ -40,16 +40,16 @@
         android:key="apps"
         android:order="-120"
         settings:allowDividerAbove="false">
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.applications.AppAndNotificationDashboardFragment"
-            android:icon="@drawable/ic_homepage_apps"
+            android:icon="@drawable/ic_homepage_apps_v2"
             android:key="top_level_apps_and_notifs"
             android:order="-120"
             android:title="@string/apps_dashboard_title"/>
 
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.notification.ConfigureNotificationSettings"
-            android:icon="@drawable/ic_homepage_notification"
+            android:icon="@drawable/ic_homepage_notification_v2"
             android:key="top_level_notification"
             android:order="-110"
             android:title="@string/configure_notification_settings"/>
@@ -61,47 +61,47 @@
         android:key="phone_essential"
         android:order="-100"
         settings:allowDividerAbove="false">
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.fuelgauge.PowerUsageSummary"
-            android:icon="@drawable/ic_homepage_battery"
+            android:icon="@drawable/ic_homepage_battery_v2"
             android:key="top_level_battery"
             android:order="-100"
             android:title="@string/power_usage_summary_title"
             settings:controller="com.android.settings.fuelgauge.TopLevelBatteryPreferenceController"/>
 
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.deviceinfo.StorageSettings"
-            android:icon="@drawable/ic_homepage_storage"
+            android:icon="@drawable/ic_homepage_storage_v2"
             android:key="top_level_storage"
             android:order="-90"
             android:title="@string/storage_settings"
             settings:controller="com.android.settings.deviceinfo.TopLevelStoragePreferenceController"/>
 
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.notification.SoundSettings"
-            android:icon="@drawable/ic_homepage_sound"
+            android:icon="@drawable/ic_homepage_sound_v2"
             android:key="top_level_sound"
             android:order="-80"
             android:title="@string/sound_settings"/>
 
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.DisplaySettings"
-            android:icon="@drawable/ic_homepage_display"
+            android:icon="@drawable/ic_homepage_display_v2"
             android:key="top_level_display"
             android:order="-70"
             android:title="@string/display_settings"
             settings:controller="com.android.settings.display.TopLevelDisplayPreferenceController"/>
 
-        <com.android.settingslib.RestrictedTopLevelPreference
-            android:icon="@drawable/ic_homepage_wallpaper"
+        <com.android.settings.homepage.RestrictedHomepagePreference
+            android:icon="@drawable/ic_homepage_wallpaper_v2"
             android:key="top_level_wallpaper"
             android:order="-60"
             android:title="@string/wallpaper_settings_title"
             settings:controller="com.android.settings.display.TopLevelWallpaperPreferenceController"/>
 
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.accessibility.AccessibilitySettings"
-            android:icon="@drawable/ic_homepage_accessibility"
+            android:icon="@drawable/ic_homepage_accessibility_v2"
             android:key="top_level_accessibility"
             android:order="-50"
             android:title="@string/accessibility_settings"
@@ -112,45 +112,44 @@
         android:key="privacy_and_security"
         android:order="-40"
         settings:allowDividerAbove="false">
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.privacy.PrivacyDashboardFragment"
-            android:icon="@drawable/ic_homepage_privacy"
+            android:icon="@drawable/ic_homepage_privacy_v2"
             android:key="top_level_privacy"
             android:order="-40"
             android:title="@string/privacy_dashboard_title"/>
 
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.location.LocationSettings"
-            android:icon="@drawable/ic_homepage_location"
+            android:icon="@drawable/ic_homepage_location_v2"
             android:key="top_level_location"
             android:order="-30"
             android:title="@string/location_settings_title"
             settings:controller="com.android.settings.location.TopLevelLocationPreferenceController"/>
 
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.security.SecuritySettings"
-            android:icon="@drawable/ic_homepage_security"
+            android:icon="@drawable/ic_homepage_security_v2"
             android:key="top_level_security"
             android:order="-20"
             android:title="@string/security_settings_title"
             settings:controller="com.android.settings.security.TopLevelSecurityEntryPreferenceController"/>
 
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:key="top_level_emergency"
             android:title="@string/emergency_settings_preference_title"
-            android:icon="@drawable/ic_homepage_emergency"
+            android:icon="@drawable/ic_homepage_emergency_v2"
             android:order="-10"
             android:fragment="com.android.settings.emergency.EmergencyDashboardFragment"/>
-
     </PreferenceCategory>
 
     <PreferenceCategory
         android:key="accounts"
         android:order="-10"
         settings:allowDividerAbove="false">
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.accounts.AccountDashboardFragment"
-            android:icon="@drawable/ic_homepage_accounts"
+            android:icon="@drawable/ic_homepage_accounts_v2"
             android:key="top_level_accounts"
             android:order="-10"
             android:title="@string/account_dashboard_title"
@@ -161,23 +160,23 @@
         android:key="system"
         android:order="10"
         settings:allowDividerAbove="false">
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.system.SystemDashboardFragment"
-            android:icon="@drawable/ic_homepage_system_dashboard"
+            android:icon="@drawable/ic_homepage_system_dashboard_v2"
             android:key="top_level_system"
             android:order="10"
             android:title="@string/header_category_system"/>
 
-        <Preference
+        <com.android.settings.homepage.HomePagePreference
             android:fragment="com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment"
-            android:icon="@drawable/ic_homepage_about"
+            android:icon="@drawable/ic_homepage_about_v2"
             android:key="top_level_about_device"
             android:order="20"
             android:title="@string/about_settings"
             settings:controller="com.android.settings.deviceinfo.aboutphone.TopLevelAboutDevicePreferenceController"/>
 
-        <Preference
-            android:icon="@drawable/ic_homepage_support"
+        <com.android.settings.homepage.HomePagePreference
+            android:icon="@drawable/ic_homepage_support_v2"
             android:key="top_level_support"
             android:order="100"
             android:title="@string/page_tab_title_support"
diff --git a/res/xml/zen_mode_event_rule_settings.xml b/res/xml/zen_mode_event_rule_settings.xml
index 46b95e1..d6a0e68 100644
--- a/res/xml/zen_mode_event_rule_settings.xml
+++ b/res/xml/zen_mode_event_rule_settings.xml
@@ -27,13 +27,12 @@
         android:selectable="false"
         settings:allowDividerBelow="true" />
 
+    <com.android.settingslib.widget.MainSwitchPreference
+        android:key="zen_automatic_rule_switch" />
+
     <com.android.settingslib.widget.ActionButtonsPreference
         android:key="zen_action_buttons" />
 
-    <com.android.settingslib.widget.LayoutPreference
-        android:key="zen_automatic_rule_switch"
-        android:layout="@layout/styled_switch_bar" />
-
     <!-- During events for -->
     <DropDownPreference
         android:key="calendar"
diff --git a/res/xml/zen_mode_schedule_rule_settings.xml b/res/xml/zen_mode_schedule_rule_settings.xml
index cab8731..874f5c9 100644
--- a/res/xml/zen_mode_schedule_rule_settings.xml
+++ b/res/xml/zen_mode_schedule_rule_settings.xml
@@ -27,13 +27,12 @@
         android:selectable="false"
         settings:allowDividerBelow="true"/>
 
+    <com.android.settingslib.widget.MainSwitchPreference
+        android:key="zen_automatic_rule_switch" />
+
     <com.android.settingslib.widget.ActionButtonsPreference
         android:key="zen_action_buttons"/>
 
-    <com.android.settingslib.widget.LayoutPreference
-        android:key="zen_automatic_rule_switch"
-        android:layout="@layout/styled_switch_bar" />
-
     <!-- Days -->
     <Preference
         android:key="days"
diff --git a/src/com/android/settings/TestingSettingsBroadcastReceiver.java b/src/com/android/settings/TestingSettingsBroadcastReceiver.java
index 0e1296b..30a0d79 100644
--- a/src/com/android/settings/TestingSettingsBroadcastReceiver.java
+++ b/src/com/android/settings/TestingSettingsBroadcastReceiver.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
 package com.android.settings;
 
 import android.content.BroadcastReceiver;
@@ -15,7 +31,8 @@
 
     @Override
     public void onReceive(Context context, Intent intent) {
-        if (intent.getAction().equals(TelephonyManager.ACTION_SECRET_CODE)) {
+        if (intent != null && intent.getAction() != null
+                && intent.getAction().equals(TelephonyManager.ACTION_SECRET_CODE)) {
             Intent i = new Intent(Intent.ACTION_MAIN);
             i.setClass(context, TestingSettingsActivity.class);
             i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
diff --git a/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java b/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java
index 67c3650..b09d180 100644
--- a/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java
+++ b/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java
@@ -136,6 +136,6 @@
         final Intent intent = new Intent(ACTION_BLUETOOTH_SLICE_CHANGED)
                 .setClass(context, SliceBroadcastReceiver.class);
         return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
+                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE);
     }
 }
diff --git a/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java b/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
index beef4f3..5118b27 100644
--- a/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
+++ b/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
@@ -25,6 +25,7 @@
 import android.content.pm.ResolveInfo;
 import android.os.UserHandle;
 import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
 import android.util.Log;
 
 import androidx.preference.Preference;
@@ -32,6 +33,8 @@
 
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.FeatureFlags;
+import com.android.settings.homepage.RestrictedHomepagePreference;
 import com.android.settingslib.RestrictedLockUtilsInternal;
 import com.android.settingslib.RestrictedTopLevelPreference;
 
@@ -89,7 +92,11 @@
 
     @Override
     public void updateState(Preference preference) {
-        disablePreferenceIfManaged((RestrictedTopLevelPreference) preference);
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            disablePreferenceIfManaged((RestrictedHomepagePreference) preference);
+        } else {
+            disablePreferenceIfManaged((RestrictedTopLevelPreference) preference);
+        }
     }
 
     @Override
@@ -133,4 +140,18 @@
             }
         }
     }
+
+    private void disablePreferenceIfManaged(RestrictedHomepagePreference pref) {
+        final String restriction = DISALLOW_SET_WALLPAPER;
+        if (pref != null) {
+            pref.setDisabledByAdmin(null);
+            if (RestrictedLockUtilsInternal.hasBaseUserRestriction(mContext,
+                    restriction, UserHandle.myUserId())) {
+                // Do not show the admin dialog for system restriction.
+                pref.setEnabled(false);
+            } else {
+                pref.checkRestrictionAndSetDisabled(restriction);
+            }
+        }
+    }
 }
diff --git a/src/com/android/settings/gestures/EmergencyGesturePreferenceController.java b/src/com/android/settings/gestures/EmergencyGesturePreferenceController.java
index 6f0357f..2415526 100644
--- a/src/com/android/settings/gestures/EmergencyGesturePreferenceController.java
+++ b/src/com/android/settings/gestures/EmergencyGesturePreferenceController.java
@@ -21,18 +21,19 @@
 import android.widget.Switch;
 
 import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
-import com.android.settings.widget.SwitchBar;
-import com.android.settingslib.widget.LayoutPreference;
+import com.android.settingslib.widget.MainSwitchPreference;
+import com.android.settingslib.widget.OnMainSwitchChangeListener;
 
 /**
  * Preference controller for emergency gesture setting
  */
 public class EmergencyGesturePreferenceController extends BasePreferenceController implements
-        SwitchBar.OnSwitchChangeListener {
+        OnMainSwitchChangeListener {
 
     @VisibleForTesting
     static final int ON = 1;
@@ -41,7 +42,7 @@
 
     private static final String SECURE_KEY = Settings.Secure.EMERGENCY_GESTURE_ENABLED;
 
-    private SwitchBar mSwitchBar;
+    private MainSwitchPreference mSwitchBar;
 
     public EmergencyGesturePreferenceController(Context context, String key) {
         super(context, key);
@@ -61,13 +62,11 @@
     @Override
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
-        final LayoutPreference pref = screen.findPreference(mPreferenceKey);
-        mSwitchBar = pref.findViewById(R.id.switch_bar);
-        mSwitchBar.setSwitchBarText(R.string.emergency_gesture_switchbar_title,
-                R.string.emergency_gesture_switchbar_title);
+        final Preference pref = screen.findPreference(mPreferenceKey);
+        mSwitchBar = (MainSwitchPreference) pref;
+        mSwitchBar.setTitle(mContext.getString(R.string.emergency_gesture_switchbar_title));
         mSwitchBar.addOnSwitchChangeListener(this);
-        mSwitchBar.setChecked(isChecked());
-        mSwitchBar.show();
+        mSwitchBar.updateStatus(isChecked());
     }
 
     @VisibleForTesting
diff --git a/src/com/android/settings/gestures/PreventRingingParentPreferenceController.java b/src/com/android/settings/gestures/PreventRingingParentPreferenceController.java
index 7c7be09..ca1f1c7 100644
--- a/src/com/android/settings/gestures/PreventRingingParentPreferenceController.java
+++ b/src/com/android/settings/gestures/PreventRingingParentPreferenceController.java
@@ -20,21 +20,85 @@
 import static android.provider.Settings.Secure.VOLUME_HUSH_MUTE;
 import static android.provider.Settings.Secure.VOLUME_HUSH_VIBRATE;
 
+import android.content.ContentResolver;
 import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
 import android.provider.Settings;
 
-import com.android.settings.R;
-import com.android.settings.core.BasePreferenceController;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
 
-public class PreventRingingParentPreferenceController extends BasePreferenceController {
+import com.android.settings.R;
+import com.android.settings.core.TogglePreferenceController;
+import com.android.settings.widget.PrimarySwitchPreference;
+import com.android.settingslib.core.lifecycle.LifecycleObserver;
+import com.android.settingslib.core.lifecycle.events.OnStart;
+import com.android.settingslib.core.lifecycle.events.OnStop;
+
+/** The controller manages the behaviour of the Prevent Ringing gesture setting. */
+public class PreventRingingParentPreferenceController extends TogglePreferenceController
+        implements LifecycleObserver, OnStart, OnStop {
 
     final String SECURE_KEY = VOLUME_HUSH_GESTURE;
 
+    private PrimarySwitchPreference mPreference;
+    private SettingObserver mSettingObserver;
+
     public PreventRingingParentPreferenceController(Context context, String preferenceKey) {
         super(context, preferenceKey);
     }
 
     @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mPreference = screen.findPreference(getPreferenceKey());
+        mSettingObserver = new SettingObserver(mPreference);
+    }
+
+    @Override
+    public boolean isChecked() {
+        final int preventRinging = Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.VOLUME_HUSH_GESTURE,
+                Settings.Secure.VOLUME_HUSH_VIBRATE);
+        return preventRinging != Settings.Secure.VOLUME_HUSH_OFF;
+    }
+
+    @Override
+    public boolean setChecked(boolean isChecked) {
+        final int preventRingingSetting = Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.VOLUME_HUSH_GESTURE, Settings.Secure.VOLUME_HUSH_VIBRATE);
+        final int newRingingSetting = preventRingingSetting == Settings.Secure.VOLUME_HUSH_OFF
+                ? Settings.Secure.VOLUME_HUSH_VIBRATE
+                : preventRingingSetting;
+
+        return Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.VOLUME_HUSH_GESTURE, isChecked
+                        ? newRingingSetting
+                        : Settings.Secure.VOLUME_HUSH_OFF);
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+        final int value = Settings.Secure.getInt(
+                mContext.getContentResolver(), SECURE_KEY, VOLUME_HUSH_VIBRATE);
+        CharSequence summary;
+        switch (value) {
+            case VOLUME_HUSH_VIBRATE:
+                summary = mContext.getText(R.string.prevent_ringing_option_vibrate_summary);
+                break;
+            case VOLUME_HUSH_MUTE:
+                summary = mContext.getText(R.string.prevent_ringing_option_mute_summary);
+                break;
+            default:
+                summary = null;
+        }
+        preference.setSummary(summary);
+    }
+
+    @Override
     public int getAvailabilityStatus() {
         return mContext.getResources().getBoolean(
                 com.android.internal.R.bool.config_volumeHushGestureEnabled)
@@ -42,20 +106,45 @@
     }
 
     @Override
-    public CharSequence getSummary() {
-        int value = Settings.Secure.getInt(
-                mContext.getContentResolver(), SECURE_KEY, VOLUME_HUSH_VIBRATE);
-        int summary;
-        switch (value) {
-            case VOLUME_HUSH_VIBRATE:
-                summary = R.string.prevent_ringing_option_vibrate_summary;
-                break;
-            case VOLUME_HUSH_MUTE:
-                summary = R.string.prevent_ringing_option_mute_summary;
-                break;
-            default:
-                summary = R.string.prevent_ringing_option_none_summary;
+    public void onStart() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver());
+            mSettingObserver.onChange(false, null);
         }
-        return mContext.getText(summary);
+    }
+
+    @Override
+    public void onStop() {
+        if (mSettingObserver != null) {
+            mSettingObserver.unregister(mContext.getContentResolver());
+        }
+    }
+
+    private class SettingObserver extends ContentObserver {
+        private final Uri mVolumeHushGestureUri = Settings.Secure.getUriFor(
+                Settings.Secure.VOLUME_HUSH_GESTURE);
+
+        private final Preference mPreference;
+
+        SettingObserver(Preference preference) {
+            super(new Handler());
+            mPreference = preference;
+        }
+
+        public void register(ContentResolver cr) {
+            cr.registerContentObserver(mVolumeHushGestureUri, false, this);
+        }
+
+        public void unregister(ContentResolver cr) {
+            cr.unregisterContentObserver(this);
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            super.onChange(selfChange, uri);
+            if (uri == null || mVolumeHushGestureUri.equals(uri)) {
+                updateState(mPreference);
+            }
+        }
     }
 }
diff --git a/src/com/android/settings/gestures/PreventRingingSwitchPreferenceController.java b/src/com/android/settings/gestures/PreventRingingSwitchPreferenceController.java
index 9545939..642623a 100644
--- a/src/com/android/settings/gestures/PreventRingingSwitchPreferenceController.java
+++ b/src/com/android/settings/gestures/PreventRingingSwitchPreferenceController.java
@@ -16,11 +16,7 @@
 
 package com.android.settings.gestures;
 
-import android.content.ContentResolver;
 import android.content.Context;
-import android.database.ContentObserver;
-import android.net.Uri;
-import android.os.Handler;
 import android.provider.Settings;
 import android.widget.Switch;
 
@@ -30,19 +26,18 @@
 
 import com.android.settings.R;
 import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settings.widget.SwitchBar;
 import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.widget.LayoutPreference;
+import com.android.settingslib.widget.MainSwitchPreference;
+import com.android.settingslib.widget.OnMainSwitchChangeListener;
 
 public class PreventRingingSwitchPreferenceController extends AbstractPreferenceController
-        implements PreferenceControllerMixin, SwitchBar.OnSwitchChangeListener {
+        implements PreferenceControllerMixin, OnMainSwitchChangeListener {
 
     private static final String KEY = "gesture_prevent_ringing_switch";
     private final Context mContext;
-    private SettingObserver mSettingObserver;
 
     @VisibleForTesting
-    SwitchBar mSwitch;
+    MainSwitchPreference mSwitch;
 
     public PreventRingingSwitchPreferenceController(Context context) {
         super(context);
@@ -58,9 +53,8 @@
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
         if (isAvailable()) {
-            LayoutPreference pref = screen.findPreference(getPreferenceKey());
+            Preference pref = screen.findPreference(getPreferenceKey());
             if (pref != null) {
-                mSettingObserver = new SettingObserver(pref);
                 pref.setOnPreferenceClickListener(preference -> {
                     int preventRinging = Settings.Secure.getInt(mContext.getContentResolver(),
                             Settings.Secure.VOLUME_HUSH_GESTURE,
@@ -72,18 +66,17 @@
                                     : Settings.Secure.VOLUME_HUSH_VIBRATE);
                     return true;
                 });
-                mSwitch = pref.findViewById(R.id.switch_bar);
-                if (mSwitch != null) {
-                    mSwitch.addOnSwitchChangeListener(this);
-                    mSwitch.show();
-                }
+                mSwitch = (MainSwitchPreference) pref;
+                mSwitch.setTitle(mContext.getString(R.string.prevent_ringing_main_switch_title));
+                mSwitch.addOnSwitchChangeListener(this);
+                updateState(mSwitch);
             }
         }
     }
 
     public void setChecked(boolean isChecked) {
         if (mSwitch != null) {
-            mSwitch.setChecked(isChecked);
+            mSwitch.updateStatus(isChecked);
         }
     }
 
@@ -113,32 +106,4 @@
                         ? newRingingSetting
                         : Settings.Secure.VOLUME_HUSH_OFF);
     }
-
-    private class SettingObserver extends ContentObserver {
-        private final Uri VOLUME_HUSH_GESTURE = Settings.Secure.getUriFor(
-                Settings.Secure.VOLUME_HUSH_GESTURE);
-
-        private final Preference mPreference;
-
-        public SettingObserver(Preference preference) {
-            super(new Handler());
-            mPreference = preference;
-        }
-
-        public void register(ContentResolver cr) {
-            cr.registerContentObserver(VOLUME_HUSH_GESTURE, false, this);
-        }
-
-        public void unregister(ContentResolver cr) {
-            cr.unregisterContentObserver(this);
-        }
-
-        @Override
-        public void onChange(boolean selfChange, Uri uri) {
-            super.onChange(selfChange, uri);
-            if (uri == null || VOLUME_HUSH_GESTURE.equals(uri)) {
-                updateState(mPreference);
-            }
-        }
-    }
 }
diff --git a/src/com/android/settings/homepage/HomePagePreference.java b/src/com/android/settings/homepage/HomePagePreference.java
new file mode 100644
index 0000000..41d59b7
--- /dev/null
+++ b/src/com/android/settings/homepage/HomePagePreference.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+package com.android.settings.homepage;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.preference.Preference;
+
+import com.android.settings.R;
+
+/** A customized layout for homepage preference. */
+public class HomePagePreference extends Preference {
+
+    public HomePagePreference(Context context) {
+        super(context);
+        setLayoutResource(R.layout.homepage_preference);
+    }
+
+    public HomePagePreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        setLayoutResource(R.layout.homepage_preference);
+    }
+
+    public HomePagePreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, /* defStyleRes= */ 0);
+        setLayoutResource(R.layout.homepage_preference);
+    }
+
+    public HomePagePreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        setLayoutResource(R.layout.homepage_preference);
+    }
+}
diff --git a/src/com/android/settings/homepage/RestrictedHomepagePreference.java b/src/com/android/settings/homepage/RestrictedHomepagePreference.java
new file mode 100644
index 0000000..47b552c
--- /dev/null
+++ b/src/com/android/settings/homepage/RestrictedHomepagePreference.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+package com.android.settings.homepage;
+
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.util.AttributeSet;
+
+import androidx.core.content.res.TypedArrayUtils;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.settings.R;
+import com.android.settingslib.RestrictedPreferenceHelper;
+
+/** Homepage preference that can be disabled by a device admin using a user restriction. */
+public class RestrictedHomepagePreference extends HomePagePreference {
+    private RestrictedPreferenceHelper mHelper;
+
+    public RestrictedHomepagePreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        mHelper = new RestrictedPreferenceHelper(context, /* preference= */ this, attrs);
+    }
+
+    public RestrictedHomepagePreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, /* defStyleRes= */ 0);
+    }
+
+    public RestrictedHomepagePreference(Context context, AttributeSet attrs) {
+        this(context, attrs, TypedArrayUtils.getAttr(context, R.attr.preferenceStyle,
+                android.R.attr.preferenceStyle));
+    }
+
+    public RestrictedHomepagePreference(Context context) {
+        this(context, /* attrs= */ null);
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        mHelper.onBindViewHolder(holder);
+    }
+
+    @Override
+    public void performClick() {
+        if (!mHelper.performClick()) {
+            super.performClick();
+        }
+    }
+
+    @Override
+    protected void onAttachedToHierarchy(PreferenceManager preferenceManager) {
+        mHelper.onAttachedToHierarchy();
+        super.onAttachedToHierarchy(preferenceManager);
+    }
+
+    /**
+     * Set the user restriction and disable this preference.
+     *
+     * @param userRestriction constant from {@link android.os.UserManager}
+     */
+    public void checkRestrictionAndSetDisabled(String userRestriction) {
+        mHelper.checkRestrictionAndSetDisabled(userRestriction, UserHandle.myUserId());
+    }
+
+    /**
+     * Set the user restriction and disable this preference for the given user.
+     *
+     * @param userRestriction constant from {@link android.os.UserManager}
+     * @param userId          user to check the restriction for.
+     */
+    public void checkRestrictionAndSetDisabled(String userRestriction, int userId) {
+        mHelper.checkRestrictionAndSetDisabled(userRestriction, userId);
+    }
+
+    @Override
+    public void setEnabled(boolean enabled) {
+        if (enabled && isDisabledByAdmin()) {
+            mHelper.setDisabledByAdmin(/* admin= */ null);
+            return;
+        }
+        super.setEnabled(enabled);
+    }
+
+    /**
+     * Check whether this preference is disabled by admin.
+     *
+     * @return true if this preference is disabled by admin.
+     */
+    public boolean isDisabledByAdmin() {
+        return mHelper.isDisabledByAdmin();
+    }
+
+    /**
+     * Disable preference based on the enforce admin.
+     *
+     * @param admin details of the admin who enforced the restriction. If it is {@code null}, then
+     *              this preference will be enabled. Otherwise, it will be disabled.
+     */
+    public void setDisabledByAdmin(EnforcedAdmin admin) {
+        if (mHelper.setDisabledByAdmin(admin)) {
+            notifyChanged();
+        }
+    }
+}
diff --git a/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java b/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java
index 0ad241e..1b3ee10 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java
@@ -143,8 +143,8 @@
     private static RowBuilder buildRowBuilder(CharSequence title, CharSequence subTitle,
             IconCompat icon, Context context, Intent intent) {
         final SliceAction primarySliceAction = SliceAction.createDeeplink(
-                PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_MUTABLE_UNAUDITED), icon, ListBuilder.ICON_IMAGE,
-                title);
+                PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE),
+                icon, ListBuilder.ICON_IMAGE, title);
         return new RowBuilder()
                 .setTitleItem(icon, ListBuilder.ICON_IMAGE)
                 .setTitle(title)
diff --git a/src/com/android/settings/network/telephony/EuiccOperationSidecar.java b/src/com/android/settings/network/telephony/EuiccOperationSidecar.java
index a637cc2..0ee6d95 100644
--- a/src/com/android/settings/network/telephony/EuiccOperationSidecar.java
+++ b/src/com/android/settings/network/telephony/EuiccOperationSidecar.java
@@ -99,7 +99,8 @@
         Intent intent = new Intent(getReceiverAction());
         intent.putExtra(EXTRA_OP_ID, mOpId);
         return PendingIntent.getBroadcast(
-                getContext(), REQUEST_CODE, intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE_UNAUDITED);
+                getContext(), REQUEST_CODE, intent,
+                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
     }
 
     @Override
diff --git a/src/com/android/settings/network/telephony/MobileDataSlice.java b/src/com/android/settings/network/telephony/MobileDataSlice.java
index 7c9bac0..106f336 100644
--- a/src/com/android/settings/network/telephony/MobileDataSlice.java
+++ b/src/com/android/settings/network/telephony/MobileDataSlice.java
@@ -172,8 +172,8 @@
 
     private PendingIntent getPrimaryAction() {
         final Intent intent = getIntent();
-        return PendingIntent.getActivity(mContext, 0 /* requestCode */,
-                intent, PendingIntent.FLAG_MUTABLE_UNAUDITED /* flags */);
+        return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent,
+                PendingIntent.FLAG_IMMUTABLE);
     }
 
     /**
diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java
index 1ad093f..fc209b8 100644
--- a/src/com/android/settings/notification/SoundSettings.java
+++ b/src/com/android/settings/notification/SoundSettings.java
@@ -26,6 +26,7 @@
 import android.os.UserHandle;
 import android.preference.SeekBarVolumizer;
 import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.ListPreference;
@@ -33,6 +34,7 @@
 
 import com.android.settings.R;
 import com.android.settings.RingtonePreference;
+import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.OnActivityResultListener;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
@@ -152,6 +154,9 @@
 
     @Override
     protected int getPreferenceScreenResId() {
+        if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)) {
+            return R.xml.sound_settings_v2;
+        }
         return R.xml.sound_settings;
     }
 
diff --git a/src/com/android/settings/notification/zen/ZenAutomaticRuleSwitchPreferenceController.java b/src/com/android/settings/notification/zen/ZenAutomaticRuleSwitchPreferenceController.java
index cafb0d1..703ffae 100644
--- a/src/com/android/settings/notification/zen/ZenAutomaticRuleSwitchPreferenceController.java
+++ b/src/com/android/settings/notification/zen/ZenAutomaticRuleSwitchPreferenceController.java
@@ -25,18 +25,18 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
-import com.android.settings.widget.SwitchBar;
 import com.android.settingslib.core.lifecycle.Lifecycle;
-import com.android.settingslib.widget.LayoutPreference;
+import com.android.settingslib.widget.MainSwitchPreference;
+import com.android.settingslib.widget.OnMainSwitchChangeListener;
 
 public class ZenAutomaticRuleSwitchPreferenceController extends
         AbstractZenModeAutomaticRulePreferenceController implements
-        SwitchBar.OnSwitchChangeListener {
+        OnMainSwitchChangeListener {
 
     private static final String KEY = "zen_automatic_rule_switch";
     private AutomaticZenRule mRule;
     private String mId;
-    private SwitchBar mSwitchBar;
+    private MainSwitchPreference mSwitchBar;
 
     public ZenAutomaticRuleSwitchPreferenceController(Context context, Fragment parent,
             Lifecycle lifecycle) {
@@ -56,12 +56,11 @@
     @Override
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
-        LayoutPreference pref = screen.findPreference(KEY);
-        mSwitchBar = pref.findViewById(R.id.switch_bar);
+        final Preference pref = screen.findPreference(KEY);
+        mSwitchBar = (MainSwitchPreference) pref;
 
         if (mSwitchBar != null) {
-            mSwitchBar.setSwitchBarText(R.string.zen_mode_use_automatic_rule,
-                    R.string.zen_mode_use_automatic_rule);
+            mSwitchBar.setTitle(mContext.getString(R.string.zen_mode_use_automatic_rule));
             try {
                 pref.setOnPreferenceClickListener(preference -> {
                     mRule.setEnabled(!mRule.isEnabled());
@@ -72,7 +71,6 @@
             } catch (IllegalStateException e) {
                 // an exception is thrown if you try to add the listener twice
             }
-            mSwitchBar.show();
         }
     }
 
@@ -83,7 +81,7 @@
 
     public void updateState(Preference preference) {
         if (mRule != null) {
-            mSwitchBar.setChecked(mRule.isEnabled());
+            mSwitchBar.updateStatus(mRule.isEnabled());
         }
     }
 
diff --git a/src/com/android/settings/panel/InternetConnectivityPanel.java b/src/com/android/settings/panel/InternetConnectivityPanel.java
index 312bf75..64a4699 100644
--- a/src/com/android/settings/panel/InternetConnectivityPanel.java
+++ b/src/com/android/settings/panel/InternetConnectivityPanel.java
@@ -34,10 +34,6 @@
 
 /**
  * Represents the Internet Connectivity Panel.
- *
- * <p>
- * Displays Wifi (full Slice) and Airplane mode.
- * </p>
  */
 public class InternetConnectivityPanel implements PanelContent {
 
@@ -79,6 +75,21 @@
     }
 
     @Override
+    public boolean isCustomizedButtonUsed() {
+        return Utils.isProviderModelEnabled(mContext);
+    }
+
+    @Override
+    public CharSequence getCustomizedButtonTitle() {
+        return mContext.getText(R.string.settings_button);
+    }
+
+    @Override
+    public void onClickCustomizedButton() {
+        mContext.startActivity(getSeeMoreIntent());
+    }
+
+    @Override
     public int getMetricsCategory() {
         return SettingsEnums.PANEL_INTERNET_CONNECTIVITY;
     }
diff --git a/src/com/android/settings/panel/PanelFragment.java b/src/com/android/settings/panel/PanelFragment.java
index cc27683..8eec24f 100644
--- a/src/com/android/settings/panel/PanelFragment.java
+++ b/src/com/android/settings/panel/PanelFragment.java
@@ -452,13 +452,13 @@
     View.OnClickListener getSeeMoreListener() {
         return (v) -> {
             mPanelClosedKey = PanelClosedKeys.KEY_SEE_MORE;
+            final FragmentActivity activity = getActivity();
             if (mPanel.isCustomizedButtonUsed()) {
                 mPanel.onClickCustomizedButton();
             } else {
-                final FragmentActivity activity = getActivity();
                 activity.startActivityForResult(mPanel.getSeeMoreIntent(), 0);
-                activity.finish();
             }
+            activity.finish();
         };
     }
 
diff --git a/src/com/android/settings/sim/SimSelectNotification.java b/src/com/android/settings/sim/SimSelectNotification.java
index b4bd409..4b46939 100644
--- a/src/com/android/settings/sim/SimSelectNotification.java
+++ b/src/com/android/settings/sim/SimSelectNotification.java
@@ -226,7 +226,7 @@
         resultIntent.setPackage(SETTINGS_PACKAGE_NAME);
         resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         PendingIntent resultPendingIntent = PendingIntent.getActivity(context, 0, resultIntent,
-                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE_UNAUDITED);
+                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
         builder.setContentIntent(resultPendingIntent);
         NotificationManager notificationManager =
                 (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
@@ -264,7 +264,7 @@
         resultIntent.putExtra(Settings.EXTRA_SUB_ID, subId);
         resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         PendingIntent resultPendingIntent = PendingIntent.getActivity(context, 0, resultIntent,
-                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE_UNAUDITED);
+                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
         builder.setContentIntent(resultPendingIntent);
 
         // Notify the notification.
@@ -312,7 +312,7 @@
         resultIntent.putExtra(Intent.EXTRA_TEXT, "help_uri_sim_combination_warning");
 
         PendingIntent resultPendingIntent = PendingIntent.getActivity(context, 0, resultIntent,
-                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE_UNAUDITED);
+                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
         builder.setContentIntent(resultPendingIntent);
 
         NotificationManager notificationManager =
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
index afab8c3..4467d66 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
@@ -18,9 +18,9 @@
 
 import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
 
+import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
 import static com.android.settings.slices.CustomSliceRegistry.WIFI_CALLING_PREFERENCE_URI;
 import static com.android.settings.slices.CustomSliceRegistry.WIFI_CALLING_URI;
-import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
 
 import android.app.PendingIntent;
 import android.content.ComponentName;
@@ -539,7 +539,8 @@
      */
     public static PendingIntent getSettingsIntent(Context context) {
         final Intent intent = new Intent(Settings.ACTION_SETTINGS);
-        return PendingIntent.getActivity(context, 0 /* requestCode */, intent, PendingIntent.FLAG_MUTABLE_UNAUDITED /* flags */);
+        return PendingIntent.getActivity(context, 0 /* requestCode */, intent,
+                PendingIntent.FLAG_IMMUTABLE);
     }
 
     private PendingIntent getBroadcastIntent(String action) {
@@ -547,7 +548,7 @@
         intent.setClass(mContext, SliceBroadcastReceiver.class);
         intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
         return PendingIntent.getBroadcast(mContext, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE_UNAUDITED);
+                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
     }
 
     /**
@@ -557,7 +558,8 @@
         final Intent intent = new Intent(action);
         intent.setPackage(SETTINGS_PACKAGE_NAME);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, PendingIntent.FLAG_MUTABLE_UNAUDITED /* flags */);
+        return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent,
+                PendingIntent.FLAG_IMMUTABLE);
     }
 
     private Resources getResourcesForSubId(int subId) {
diff --git a/tests/robotests/src/com/android/settings/TestingSettingsBroadcastReceiverTest.java b/tests/robotests/src/com/android/settings/TestingSettingsBroadcastReceiverTest.java
new file mode 100644
index 0000000..10fdffb
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/TestingSettingsBroadcastReceiverTest.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2021 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.
+ */
+
+package com.android.settings;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.Application;
+import android.content.Context;
+import android.content.Intent;
+import android.telephony.TelephonyManager;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+
+@RunWith(RobolectricTestRunner.class)
+public class TestingSettingsBroadcastReceiverTest {
+
+    private Context mContext;
+    private Application mApplication;
+    private TestingSettingsBroadcastReceiver mReceiver;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mApplication = RuntimeEnvironment.application;
+        mReceiver = new TestingSettingsBroadcastReceiver();
+    }
+
+    @Test
+    public void onReceive_nullIntent_shouldNotCrash() {
+        final Intent intent = new Intent();
+
+        mReceiver.onReceive(mContext, null);
+        mReceiver.onReceive(mContext, intent);
+
+        final Intent next = Shadows.shadowOf(mApplication).getNextStartedActivity();
+        assertThat(next).isNull();
+    }
+
+    @Test
+    public void onReceive_wrongIntent_shouldNotStartActivity() {
+        final Intent intent = new Intent();
+        intent.setAction("");
+
+        mReceiver.onReceive(mContext, intent);
+
+        final Intent next = Shadows.shadowOf(mApplication).getNextStartedActivity();
+        assertThat(next).isNull();
+    }
+
+    @Test
+    public void onReceive_correctIntent_shouldStartActivity() {
+        final Intent intent = new Intent();
+        intent.setAction(TelephonyManager.ACTION_SECRET_CODE);
+
+        mReceiver.onReceive(mContext, intent);
+
+        final Intent next = Shadows.shadowOf(mApplication).getNextStartedActivity();
+        assertThat(next).isNotNull();
+        final String dest = next.getComponent().getClassName();
+        assertThat(dest).isEqualTo(Settings.TestingSettingsActivity.class.getName());
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/development/compat/PlatformCompatDashboardTest.java b/tests/robotests/src/com/android/settings/development/compat/PlatformCompatDashboardTest.java
index 15e9bda..dffd7fb 100644
--- a/tests/robotests/src/com/android/settings/development/compat/PlatformCompatDashboardTest.java
+++ b/tests/robotests/src/com/android/settings/development/compat/PlatformCompatDashboardTest.java
@@ -88,14 +88,16 @@
     public void setUp() throws RemoteException, NameNotFoundException {
         MockitoAnnotations.initMocks(this);
         mChanges = new CompatibilityChangeInfo[5];
-        mChanges[0] = new CompatibilityChangeInfo(1L, "Default_Enabled", 0, 0, false, false, "");
-        mChanges[1] = new CompatibilityChangeInfo(2L, "Default_Disabled", 0, 0, true, false, "");
-        mChanges[2] = new CompatibilityChangeInfo(3L, "Enabled_Since_SDK_1_1", -1, 1, false, false,
-                                                  "");
-        mChanges[3] = new CompatibilityChangeInfo(4L, "Enabled_Since_SDK_1_2", -1, 1, false, false,
-                                                  "");
-        mChanges[4] = new CompatibilityChangeInfo(5L, "Enabled_Since_SDK_2", -1, 2, false, false,
-                                                  "");
+        mChanges[0] = new CompatibilityChangeInfo(
+                1L, "Default_Enabled", 0, 0, false, false, "", false);
+        mChanges[1] = new CompatibilityChangeInfo(
+                2L, "Default_Disabled", 0, 0, true, false, "", false);
+        mChanges[2] = new CompatibilityChangeInfo(
+                3L, "Enabled_Since_SDK_1_1", -1, 1, false, false, "", false);
+        mChanges[3] = new CompatibilityChangeInfo(
+                4L, "Enabled_Since_SDK_1_2", -1, 1, false, false, "", false);
+        mChanges[4] = new CompatibilityChangeInfo(
+                5L, "Enabled_Since_SDK_2", -1, 2, false, false, "", false);
         when(mPlatformCompat.listUIChanges()).thenReturn(mChanges);
         when(mPlatformCompat.getOverrideValidator()).thenReturn(mOverrideValidator);
         // By default, allow any change
@@ -208,7 +210,8 @@
         for (int i = 0; i < mChanges.length; ++i) {
             changesToAdd.add(new CompatibilityChangeInfo(mChanges[i].getId(), mChanges[i].getName(),
                     -1, mChanges[i].getEnableSinceTargetSdk(), mChanges[i].getDisabled(),
-                    mChanges[i].getLoggingOnly(), mChanges[i].getDescription()));
+                    mChanges[i].getLoggingOnly(), mChanges[i].getDescription(),
+                    mChanges[i].getOverridable()));
         }
 
         PreferenceCategory category = mDashboard.createChangeCategoryPreference(changesToAdd,
diff --git a/tests/robotests/src/com/android/settings/gestures/PreventRingingParentPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/PreventRingingParentPreferenceControllerTest.java
index c752eb9..9e4877c 100644
--- a/tests/robotests/src/com/android/settings/gestures/PreventRingingParentPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/PreventRingingParentPreferenceControllerTest.java
@@ -32,6 +32,8 @@
 import android.content.res.Resources;
 import android.provider.Settings;
 
+import androidx.preference.Preference;
+
 import com.android.settings.R;
 
 import org.junit.Before;
@@ -50,12 +52,14 @@
 
     private Context mContext;
     private PreventRingingParentPreferenceController mController;
+    private Preference mPreference;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         mContext = spy(RuntimeEnvironment.application.getApplicationContext());
         mController = new PreventRingingParentPreferenceController(mContext, "test_key");
+        mPreference = new Preference(mContext);
     }
 
     @Test
@@ -80,17 +84,43 @@
     public void updateState_summaryUpdated() {
         Settings.Secure.putInt(mContext.getContentResolver(), VOLUME_HUSH_GESTURE,
                 VOLUME_HUSH_MUTE);
-        assertThat(mController.getSummary()).isEqualTo(mContext.getResources().getText(
+        mController.updateState(mPreference);
+        assertThat(mPreference.getSummary()).isEqualTo(mContext.getResources().getText(
                 R.string.prevent_ringing_option_mute_summary));
 
         Settings.Secure.putInt(mContext.getContentResolver(), VOLUME_HUSH_GESTURE,
                 VOLUME_HUSH_VIBRATE);
-        assertThat(mController.getSummary()).isEqualTo(mContext.getResources().getText(
+        mController.updateState(mPreference);
+        assertThat(mPreference.getSummary()).isEqualTo(mContext.getResources().getText(
                 R.string.prevent_ringing_option_vibrate_summary));
 
         Settings.Secure.putInt(mContext.getContentResolver(), VOLUME_HUSH_GESTURE,
                 VOLUME_HUSH_OFF);
-        assertThat(mController.getSummary()).isEqualTo(mContext.getResources().getText(
-                R.string.prevent_ringing_option_none_summary));
+        mController.updateState(mPreference);
+        assertThat(mPreference.getSummary()).isEqualTo(null);
+    }
+
+    @Test
+    public void isChecked_vibrate_shouldReturnTrue() {
+        Settings.Secure.putInt(mContext.getContentResolver(), VOLUME_HUSH_GESTURE,
+                VOLUME_HUSH_VIBRATE);
+
+        assertThat(mController.isChecked()).isTrue();
+    }
+
+    @Test
+    public void isChecked_mute_shouldReturnTrue() {
+        Settings.Secure.putInt(mContext.getContentResolver(), VOLUME_HUSH_GESTURE,
+                VOLUME_HUSH_MUTE);
+
+        assertThat(mController.isChecked()).isTrue();
+    }
+
+    @Test
+    public void isChecked_off_shouldReturnFalse() {
+        Settings.Secure.putInt(mContext.getContentResolver(), VOLUME_HUSH_GESTURE,
+                VOLUME_HUSH_OFF);
+
+        assertThat(mController.isChecked()).isFalse();
     }
 }
diff --git a/tests/robotests/src/com/android/settings/gestures/PreventRingingSwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/PreventRingingSwitchPreferenceControllerTest.java
index ccb2bf6..5f25759 100644
--- a/tests/robotests/src/com/android/settings/gestures/PreventRingingSwitchPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/PreventRingingSwitchPreferenceControllerTest.java
@@ -36,8 +36,7 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
-import com.android.settings.widget.SwitchBar;
-import com.android.settingslib.widget.LayoutPreference;
+import com.android.settingslib.widget.MainSwitchPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -63,7 +62,7 @@
         when(mResources.getBoolean(com.android.internal.R.bool.config_volumeHushGestureEnabled))
                 .thenReturn(true);
         mController = new PreventRingingSwitchPreferenceController(mContext);
-        mController.mSwitch = mock(SwitchBar.class);
+        mController.mSwitch = mock(MainSwitchPreference.class);
     }
 
     @Test
@@ -89,7 +88,7 @@
 
         mController.updateState(mPreference);
 
-        verify(mController.mSwitch, times(1)).setChecked(false);
+        verify(mController.mSwitch, times(1)).updateStatus(false);
     }
 
     @Test
@@ -99,7 +98,7 @@
 
         mController.updateState(mPreference);
 
-        verify(mController.mSwitch, times(1)).setChecked(true);
+        verify(mController.mSwitch, times(1)).updateStatus(true);
     }
 
     @Test
@@ -109,7 +108,7 @@
 
         mController.updateState(mPreference);
 
-        verify(mController.mSwitch, times(1)).setChecked(true);
+        verify(mController.mSwitch, times(1)).updateStatus(true);
     }
 
     @Test
@@ -161,13 +160,13 @@
     @Test
     public void testPreferenceClickListenerAttached() {
         PreferenceScreen preferenceScreen = mock(PreferenceScreen.class);
-        LayoutPreference mLayoutPreference = mock(LayoutPreference.class);
+        MainSwitchPreference preference = mock(MainSwitchPreference.class);
         when(preferenceScreen.findPreference(mController.getPreferenceKey())).thenReturn(
-                mLayoutPreference);
+                preference);
 
         mController.displayPreference(preferenceScreen);
 
-        verify(mLayoutPreference, times(1))
+        verify(preference, times(1))
                 .setOnPreferenceClickListener(any());
     }
 }
diff --git a/tests/robotests/src/com/android/settings/panel/InternetConnectivityPanelTest.java b/tests/robotests/src/com/android/settings/panel/InternetConnectivityPanelTest.java
index d9f56de..eb82d31 100644
--- a/tests/robotests/src/com/android/settings/panel/InternetConnectivityPanelTest.java
+++ b/tests/robotests/src/com/android/settings/panel/InternetConnectivityPanelTest.java
@@ -20,10 +20,12 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.net.Uri;
+import android.os.SystemProperties;
 
 import com.android.settings.network.AirplaneModePreferenceController;
 import com.android.settings.slices.CustomSliceRegistry;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -37,14 +39,25 @@
 public class InternetConnectivityPanelTest {
 
     private InternetConnectivityPanel mPanel;
+    private static final String SETTINGS_PROVIDER_MODEL =
+            "persist.sys.fflag.override.settings_provider_model";
+    private boolean mSettingsProviderModelState;
 
     @Before
     public void setUp() {
         mPanel = InternetConnectivityPanel.create(RuntimeEnvironment.application);
+        mSettingsProviderModelState = SystemProperties.getBoolean(SETTINGS_PROVIDER_MODEL, false);
+    }
+
+    @After
+    public void tearDown() {
+        SystemProperties.set(SETTINGS_PROVIDER_MODEL,
+                mSettingsProviderModelState ? "true" : "false");
     }
 
     @Test
-    public void getSlices_containsNecessarySlices() {
+    public void getSlices_providerModelDisabled_containsNecessarySlices() {
+        SystemProperties.set(SETTINGS_PROVIDER_MODEL, "false");
         final List<Uri> uris = mPanel.getSlices();
 
         assertThat(uris).containsExactly(
@@ -54,6 +67,16 @@
     }
 
     @Test
+    public void getSlices_providerModelEnabled_containsNecessarySlices() {
+        SystemProperties.set(SETTINGS_PROVIDER_MODEL, "true");
+        final List<Uri> uris = mPanel.getSlices();
+
+        assertThat(uris).containsExactly(
+                CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI,
+                CustomSliceRegistry.AIRPLANE_SAFE_NETWORKS_SLICE_URI);
+    }
+
+    @Test
     public void getSeeMoreIntent_notNull() {
         assertThat(mPanel.getSeeMoreIntent()).isNotNull();
     }
diff --git a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
index 84e88cb..e08893b 100644
--- a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
+++ b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
@@ -59,6 +59,7 @@
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.util.DisplayMetrics;
 
 import com.android.settings.R;
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
@@ -89,6 +90,8 @@
     private Resources mResources;
     @Mock
     private SubscriptionInfo mSubInfo;
+    @Mock
+    private DisplayMetrics mDisplayMetrics;
 
     private final String mFakeDisplayName = "fake_display_name";
     private final CharSequence mFakeNotificationChannelTitle = "fake_notification_channel_title";
@@ -141,6 +144,9 @@
                 .thenReturn(mFakeDualCdmaWarningTitle);
         when(mResources.getString(R.string.dual_cdma_sim_warning_notification_summary,
                 mSimCombinationName)).thenReturn(mFakeDualCdmaWarningSummary);
+
+        when(mResources.getDisplayMetrics()).thenReturn(mDisplayMetrics);
+        mDisplayMetrics.density = 1.5f;
     }
 
     @Test
@@ -275,4 +281,3 @@
         assertThat(notification.getValue().contentIntent).isNotNull();
     }
 }
-
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java
index 0dcf685..dbe7718 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java
@@ -397,14 +397,15 @@
         final Intent intent = new Intent(action);
         intent.setClass(mContext, SliceBroadcastReceiver.class);
         return PendingIntent.getBroadcast(mContext, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE_UNAUDITED);
+                PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
     }
 
     private PendingIntent getActivityIntent(String action) {
         final Intent intent = new Intent(action);
         intent.setPackage(SETTINGS_PACKAGE_NAME);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, PendingIntent.FLAG_MUTABLE_UNAUDITED /* flags */);
+        return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent,
+                PendingIntent.FLAG_IMMUTABLE);
     }
 
     private void assertTitle(List<SliceItem> sliceItems, String title) {