Merge "Fix array out of bounds in BiometricEnrollActivity" into sc-dev
diff --git a/color-check-baseline.xml b/color-check-baseline.xml
index e6bf1ec..48a204f 100644
--- a/color-check-baseline.xml
+++ b/color-check-baseline.xml
@@ -421,6 +421,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.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+        errorLine1="    <color name="biometric_enroll_intro_color_bar">#5bb974</color>"
+        errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/values-night/colors.xml"
+            line="46"
+            column="5"/>
+    </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;color name=&quot;biometric_enroll_intro_color_icon&quot;>#669df6&lt;/color>"
+        errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/values-night/colors.xml"
+            line="47"
+            column="5"/>
+    </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;color name=&quot;running_processes_system_ram&quot;>#ff384248&lt;/color>"
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -437,6 +469,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="    &lt;color name=&quot;biometric_enroll_intro_color_outline&quot;>#5e5e5e&lt;/color>"
+        errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/values-night/colors.xml"
+            line="48"
+            column="5"/>
+    </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;color name=&quot;running_processes_free_ram&quot;>#ffced7db&lt;/color>"
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -1285,11 +1333,59 @@
         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;color name=&quot;biometric_enroll_intro_color_bar&quot;>#1e8e3e&lt;/color>"
+        errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/values/colors.xml"
+            line="130"
+            column="5"/>
+    </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;color name=&quot;biometric_enroll_intro_color_icon&quot;>#1a73e8&lt;/color>"
+        errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/values/colors.xml"
+            line="131"
+            column="5"/>
+    </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;color name=&quot;biometric_enroll_intro_color_outline&quot;>#e3e3e3&lt;/color>"
+        errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/values/colors.xml"
+            line="132"
+            column="5"/>
+    </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;color name=&quot;notification_block_color&quot;>#ffff0000&lt;/color>"
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="130"
+            line="135"
             column="5"/>
     </issue>
 
@@ -1305,7 +1401,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="131"
+            line="136"
             column="5"/>
     </issue>
 
@@ -1321,7 +1417,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="132"
+            line="137"
             column="5"/>
     </issue>
 
@@ -1337,7 +1433,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="133"
+            line="138"
             column="5"/>
     </issue>
 
@@ -1353,7 +1449,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="134"
+            line="139"
             column="5"/>
     </issue>
 
@@ -1369,7 +1465,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="135"
+            line="140"
             column="5"/>
     </issue>
 
@@ -1385,7 +1481,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="142"
+            line="147"
             column="5"/>
     </issue>
 
@@ -1401,7 +1497,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="143"
+            line="148"
             column="5"/>
     </issue>
 
@@ -1417,7 +1513,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="144"
+            line="149"
             column="5"/>
     </issue>
 
@@ -1433,7 +1529,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="150"
+            line="155"
             column="5"/>
     </issue>
 
@@ -1449,7 +1545,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="152"
+            line="157"
             column="5"/>
     </issue>
 
@@ -1465,7 +1561,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="156"
+            line="161"
             column="5"/>
     </issue>
 
@@ -1481,7 +1577,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="157"
+            line="162"
             column="5"/>
     </issue>
 
@@ -1497,7 +1593,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="158"
+            line="163"
             column="5"/>
     </issue>
 
@@ -1513,7 +1609,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="159"
+            line="164"
             column="5"/>
     </issue>
 
@@ -1529,7 +1625,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="160"
+            line="165"
             column="5"/>
     </issue>
 
@@ -1545,7 +1641,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="161"
+            line="166"
             column="5"/>
     </issue>
 
@@ -1561,7 +1657,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="162"
+            line="167"
             column="5"/>
     </issue>
 
@@ -1577,7 +1673,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="163"
+            line="168"
             column="5"/>
     </issue>
 
@@ -1593,7 +1689,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="166"
+            line="171"
             column="5"/>
     </issue>
 
@@ -1609,7 +1705,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="167"
+            line="172"
             column="5"/>
     </issue>
 
@@ -1625,7 +1721,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="168"
+            line="173"
             column="5"/>
     </issue>
 
@@ -1641,7 +1737,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="169"
+            line="174"
             column="5"/>
     </issue>
 
@@ -1657,7 +1753,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="170"
+            line="175"
             column="5"/>
     </issue>
 
@@ -1673,7 +1769,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="171"
+            line="176"
             column="5"/>
     </issue>
 
@@ -1689,7 +1785,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="172"
+            line="177"
             column="5"/>
     </issue>
 
@@ -1705,7 +1801,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="173"
+            line="178"
             column="5"/>
     </issue>
 
@@ -1721,7 +1817,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="176"
+            line="181"
             column="5"/>
     </issue>
 
@@ -1737,7 +1833,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="177"
+            line="182"
             column="5"/>
     </issue>
 
@@ -1753,7 +1849,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="178"
+            line="183"
             column="5"/>
     </issue>
 
@@ -1769,7 +1865,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="179"
+            line="184"
             column="5"/>
     </issue>
 
@@ -1785,7 +1881,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="180"
+            line="185"
             column="5"/>
     </issue>
 
@@ -1801,7 +1897,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="181"
+            line="186"
             column="5"/>
     </issue>
 
@@ -1817,7 +1913,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="184"
+            line="189"
             column="5"/>
     </issue>
 
@@ -1833,7 +1929,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="185"
+            line="190"
             column="5"/>
     </issue>
 
@@ -1849,7 +1945,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="186"
+            line="191"
             column="5"/>
     </issue>
 
@@ -1865,7 +1961,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="187"
+            line="192"
             column="5"/>
     </issue>
 
@@ -1881,7 +1977,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="188"
+            line="193"
             column="5"/>
     </issue>
 
@@ -1897,7 +1993,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="189"
+            line="194"
             column="5"/>
     </issue>
 
@@ -1913,7 +2009,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="195"
+            line="200"
             column="5"/>
     </issue>
 
@@ -1929,7 +2025,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="196"
+            line="201"
             column="5"/>
     </issue>
 
@@ -1945,7 +2041,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="197"
+            line="202"
             column="5"/>
     </issue>
 
@@ -1961,7 +2057,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="198"
+            line="203"
             column="5"/>
     </issue>
 
@@ -1977,7 +2073,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="200"
+            line="205"
             column="5"/>
     </issue>
 
@@ -1993,7 +2089,7 @@
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values/colors.xml"
-            line="202"
+            line="207"
             column="5"/>
     </issue>
 
@@ -2101,6 +2197,230 @@
         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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="28"
+            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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="28"
+            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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="32"
+            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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="32"
+            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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="36"
+            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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="36"
+            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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="40"
+            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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="40"
+            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:fillColor=&quot;@color/biometric_enroll_intro_color_bar&quot;/>"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="45"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_bar&quot;/>"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="45"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_bar&quot;/>"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="48"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_bar&quot;/>"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="48"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_outline&quot;/>"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="51"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_outline&quot;/>"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/face_enroll_intro_illustration.xml"
+            line="51"
+            column="9"/>
+    </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:fillColor=&quot;@color/face_intro_outline&quot;"
         errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -2149,6 +2469,326 @@
         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:fillColor=&quot;@color/biometric_enroll_intro_color_bar&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="24"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_bar&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="24"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_bar&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="27"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_bar&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="27"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_bar&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="30"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_bar&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="30"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_bar&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="33"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_bar&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="33"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="36"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="36"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="39"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="39"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="42"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="42"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="45"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="45"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="48"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_icon&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="48"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_outline&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="51"
+            column="9"/>
+    </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:fillColor=&quot;@color/biometric_enroll_intro_color_outline&quot;"
+        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="res/drawable/fingerprint_enroll_introduction.xml"
+            line="51"
+            column="9"/>
+    </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/accessibility_magnification_background&quot;/>"
         errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
@@ -3493,27 +4133,11 @@
         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="3040"
-            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="3122"
+            line="3045"
             column="64"/>
     </issue>
 
@@ -3529,7 +4153,7 @@
         errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values-en-rCA/strings.xml"
-            line="3122"
+            line="3045"
             column="64"/>
     </issue>
 
@@ -3545,7 +4169,7 @@
         errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values-en-rGB/strings.xml"
-            line="3122"
+            line="3045"
             column="64"/>
     </issue>
 
@@ -3561,7 +4185,7 @@
         errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~">
         <location
             file="res/values-en-rIN/strings.xml"
-            line="3122"
+            line="3045"
             column="64"/>
     </issue>
 
@@ -3573,6 +4197,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="    &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="3045"
+            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
diff --git a/res/drawable/face_enroll_intro_illustration.xml b/res/drawable/face_enroll_intro_illustration.xml
new file mode 100644
index 0000000..0459ffd
--- /dev/null
+++ b/res/drawable/face_enroll_intro_illustration.xml
@@ -0,0 +1,52 @@
+<?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.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="412dp"
+        android:height="300dp"
+        android:viewportWidth="412"
+        android:viewportHeight="300">
+    <group>
+        <clip-path
+            android:pathData="M206,255.65A67.68,67.68 0,1 0,138.32 188,67.68 67.68,0 0,0 206,255.65Z"/>
+        <path
+            android:pathData="M237.58,172.63a4.51,4.51 0,1 1,-4.51 -4.51A4.51,4.51 0,0 1,237.58 172.63Z"
+            android:fillColor="@color/biometric_enroll_intro_color_icon"
+            android:fillType="evenOdd"/>
+        <path
+            android:pathData="M178.93,177.14a4.51,4.51 0,1 1,4.51 -4.51A4.51,4.51 0,0 1,178.93 177.14Z"
+            android:fillColor="@color/biometric_enroll_intro_color_icon"
+            android:fillType="evenOdd"/>
+        <path
+            android:pathData="M212.41,215.89a9.93,9.93 0,0 1,-16.34 -7.57v0l-3.6,0s0,0 0,0.06A13.53,13.53 0,0 0,206 221.85a12.81,12.81 0,0 0,1.39 -0.07,13.38 13.38,0 0,0 7.35,-3.13Z"
+            android:fillColor="@color/biometric_enroll_intro_color_icon"
+            android:fillType="evenOdd"/>
+        <path
+            android:pathData="M207.35,181.66v11.73h-7.22V197H211V181.66Z"
+            android:fillColor="@color/biometric_enroll_intro_color_icon"
+            android:fillType="evenOdd"/>
+    </group>
+    <path
+        android:pathData="M206,45.75a38,38 0,0 0,-14.87 3h0A38.16,38.16 0,0 0,167.79 84v19.21h7V84A31.17,31.17 0,0 1,193.86 55.2h0a31.24,31.24 0,0 1,38.43 11.93l5.88,-3.78A38.08,38.08 0,0 0,206 45.75Z"
+        android:fillColor="@color/biometric_enroll_intro_color_bar"/>
+    <path
+        android:pathData="M238.18,63.35l-5.89,3.78A31.11,31.11 0,0 1,237.21 84v42.55h7V84A38.11,38.11 0,0 0,238.18 63.35Z"
+        android:fillColor="@color/biometric_enroll_intro_color_bar"/>
+    <path
+        android:pathData="M271.77,254.25H140.23a14,14 0,0 1,-14 -14V138.51a14,14 0,0 1,14 -14H271.77a14,14 0,0 1,14 14V240.25A14,14 0,0 1,271.77 254.25ZM140.23,128.51a10,10 0,0 0,-10 10V240.25a10,10 0,0 0,10 10H271.77a10,10 0,0 0,10 -10V138.51a10,10 0,0 0,-10 -10Z"
+        android:fillColor="@color/biometric_enroll_intro_color_outline"/>
+</vector>
diff --git a/res/drawable/fingerprint_enroll_introduction.xml b/res/drawable/fingerprint_enroll_introduction.xml
index 9781c54..1ad4302 100644
--- a/res/drawable/fingerprint_enroll_introduction.xml
+++ b/res/drawable/fingerprint_enroll_introduction.xml
@@ -21,33 +21,33 @@
     android:viewportHeight="210.0"
     android:viewportWidth="210.0">
     <path
-        android:fillColor="#34A853"
+        android:fillColor="@color/biometric_enroll_intro_color_bar"
         android:pathData="M73.79,58.17h-7V38.96c0,-15.39 9.16,-29.21 23.34,-35.21l2.73,6.45c-11.58,4.9 -19.06,16.19 -19.06,28.76V58.17z" />
     <path
-        android:fillColor="#34A853"
+        android:fillColor="@color/biometric_enroll_intro_color_bar"
         android:pathData="M131.29,22.13C125.51,13.12 115.68,7.75 105,7.75c-4.21,0 -8.3,0.82 -12.15,2.45l-2.73,-6.45c4.71,-1.99 9.72,-3 14.87,-3c13.08,0 25.11,6.58 32.18,17.6L131.29,22.13z" />
     <path
-        android:fillColor="#34A853"
+        android:fillColor="@color/biometric_enroll_intro_color_bar"
         android:pathData="M143.21,62.11h-7V38.96c0,-5.99 -1.7,-11.81 -4.92,-16.83l5.89,-3.78c3.94,6.15 6.03,13.27 6.03,20.6V62.11z" />
     <path
-        android:fillColor="#34A853"
+        android:fillColor="@color/biometric_enroll_intro_color_bar"
         android:pathData="M136.21,62.11h7v19.4h-7z" />
     <path
-        android:fillColor="#3E82F1"
+        android:fillColor="@color/biometric_enroll_intro_color_icon"
         android:pathData="M125.03,118.78c-0.28,0 -0.55,-0.07 -0.79,-0.2c-6.61,-3.37 -12.33,-4.79 -19.19,-4.79c-6.82,0 -13.3,1.6 -19.19,4.79c-0.83,0.44 -1.86,0.14 -2.34,-0.68c-0.45,-0.82 -0.14,-1.87 0.69,-2.31c6.41,-3.43 13.44,-5.2 20.84,-5.2c7.34,0 13.75,1.6 20.77,5.17c0.86,0.44 1.17,1.46 0.72,2.28C126.24,118.44 125.65,118.78 125.03,118.78z" />
     <path
-        android:fillColor="#3E82F1"
+        android:fillColor="@color/biometric_enroll_intro_color_icon"
         android:pathData="M75.73,136.63c-0.34,0 -0.69,-0.1 -1,-0.31c-0.79,-0.54 -0.96,-1.6 -0.41,-2.38c3.41,-4.76 7.75,-8.5 12.92,-11.12c10.82,-5.51 24.67,-5.54 35.52,-0.03c5.17,2.62 9.51,6.32 12.92,11.05c0.55,0.75 0.38,1.84 -0.41,2.38c-0.79,0.54 -1.86,0.37 -2.41,-0.41c-3.1,-4.28 -7.03,-7.65 -11.68,-10c-9.89,-5 -22.53,-5 -32.38,0.03c-4.69,2.38 -8.61,5.78 -11.71,10.06C76.8,136.39 76.28,136.63 75.73,136.63z" />
     <path
-        android:fillColor="#3E82F1"
+        android:fillColor="@color/biometric_enroll_intro_color_icon"
         android:pathData="M97.27,177.67c-0.45,0 -0.9,-0.17 -1.21,-0.51c-3,-2.96 -4.62,-4.86 -6.92,-8.98c-2.38,-4.18 -3.62,-9.28 -3.62,-14.76c0,-10.1 8.75,-18.33 19.5,-18.33s19.5,8.23 19.5,18.33c0,0.95 -0.76,1.7 -1.72,1.7s-1.72,-0.75 -1.72,-1.7c0,-8.23 -7.2,-14.93 -16.05,-14.93s-16.05,6.7 -16.05,14.93c0,4.9 1.1,9.42 3.2,13.09c2.2,3.91 3.72,5.58 6.37,8.23c0.65,0.68 0.65,1.73 0,2.41C98.16,177.5 97.71,177.67 97.27,177.67z" />
     <path
-        android:fillColor="#3E82F1"
+        android:fillColor="@color/biometric_enroll_intro_color_icon"
         android:pathData="M121.97,171.38c-4.1,0 -7.72,-1.02 -10.68,-3.03c-5.13,-3.43 -8.2,-9.01 -8.2,-14.93c0,-0.95 0.76,-1.7 1.72,-1.7s1.72,0.75 1.72,1.7c0,4.79 2.48,9.32 6.68,12.1c2.45,1.63 5.31,2.41 8.75,2.41c0.83,0 2.2,-0.1 3.58,-0.34c0.93,-0.17 1.83,0.44 2,1.39c0.17,0.92 -0.45,1.8 -1.41,1.97C124.17,171.34 122.45,171.38 121.97,171.38z" />
     <path
-        android:fillColor="#3E82F1"
+        android:fillColor="@color/biometric_enroll_intro_color_icon"
         android:pathData="M115.04,178.38c-0.14,0 -0.31,-0.03 -0.45,-0.07c-5.48,-1.5 -9.06,-3.5 -12.82,-7.14c-4.82,-4.73 -7.48,-11.02 -7.48,-17.75c0,-5.51 4.75,-10 10.61,-10c5.86,0 10.61,4.49 10.61,10c0,3.64 3.2,6.6 7.17,6.6s7.17,-2.96 7.17,-6.6c0,-12.82 -11.2,-23.22 -24.98,-23.22c-9.78,0 -18.74,5.37 -22.77,13.7c-1.34,2.75 -2.03,5.98 -2.03,9.52c0,2.65 0.24,6.83 2.31,12.27c0.34,0.88 -0.1,1.87 -1,2.18c-0.9,0.34 -1.89,-0.14 -2.2,-0.99c-1.69,-4.45 -2.51,-8.87 -2.51,-13.46c0,-4.08 0.79,-7.79 2.34,-11.02c4.58,-9.49 14.75,-15.64 25.87,-15.64c15.68,0 28.42,11.93 28.42,26.62c0,5.51 -4.75,10 -10.61,10c-5.86,0 -10.61,-4.49 -10.61,-10c0,-3.64 -3.2,-6.6 -7.17,-6.6s-7.17,2.96 -7.17,6.6c0,5.81 2.27,11.25 6.44,15.33c3.27,3.2 6.41,4.96 11.27,6.29c0.93,0.24 1.45,1.19 1.21,2.07C116.49,177.87 115.77,178.38 115.04,178.38z" />
     <path
-        android:fillColor="#DADCE0"
+        android:fillColor="@color/biometric_enroll_intro_color_outline"
         android:pathData="M170.77,209.25H39.23c-7.72,0 -14,-6.28 -14,-14V93.51c0,-7.72 6.28,-14 14,-14h131.54c7.72,0 14,6.28 14,14v101.74C184.77,202.97 178.49,209.25 170.77,209.25zM39.23,83.51c-5.51,0 -10,4.49 -10,10v101.74c0,5.51 4.49,10 10,10h131.54c5.51,0 10,-4.49 10,-10V93.51c0,-5.51 -4.49,-10 -10,-10H39.23z" />
 </vector>
diff --git a/res/layout/face_enroll_introduction.xml b/res/layout/face_enroll_introduction.xml
index 7783d72..77a1019 100644
--- a/res/layout/face_enroll_introduction.xml
+++ b/res/layout/face_enroll_introduction.xml
@@ -27,7 +27,7 @@
     <LinearLayout
         style="@style/SudContentFrame"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
+        android:layout_height="wrap_content"
         android:clipChildren="false"
         android:clipToPadding="false"
         android:orientation="vertical">
@@ -42,24 +42,23 @@
         <FrameLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginBottom="12dp">
+            android:layout_marginTop="-24dp"
+            android:layout_marginBottom="4dp">
 
-            <com.google.android.setupdesign.view.IllustrationVideoView
-                android:id="@+id/illustration_normal"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+            <ImageView
                 style="@style/SudContentIllustration"
-                app:sudVideo="@raw/face_settings"/>
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:contentDescription="@null"
+                android:src="@drawable/face_enroll_intro_illustration"/>
 
         </FrameLayout>
 
-        <!-- Contains the buttons and extra information text at the bottom -->
+        <!-- Contains the extra information text at the bottom -->
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:layout_gravity="center_horizontal|bottom"
-            android:paddingTop="12dp">
+            android:orientation="vertical">
 
             <TextView
                 android:layout_width="match_parent"
diff --git a/res/layout/fingerprint_enroll_introduction.xml b/res/layout/fingerprint_enroll_introduction.xml
index 8e92bf4..beac124 100644
--- a/res/layout/fingerprint_enroll_introduction.xml
+++ b/res/layout/fingerprint_enroll_introduction.xml
@@ -64,7 +64,8 @@
                 android:layout_height="wrap_content"
                 android:textAlignment="viewStart"
                 android:paddingTop="12dp"
-                android:text="@string/security_settings_fingerprint_v2_enroll_introduction_footer_title_2" />
+                android:text="@string/security_settings_fingerprint_v2_enroll_introduction_footer_title_2"
+                android:textColor="?android:attr/textColorPrimary"/>
 
             <LinearLayout
                 android:layout_width="match_parent"
@@ -84,7 +85,8 @@
                 <TextView
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:text="@string/security_settings_fingerprint_v2_enroll_introduction_footer_message_2" />
+                    android:text="@string/security_settings_fingerprint_v2_enroll_introduction_footer_message_2"
+                    android:textColor="?android:attr/textColorPrimary"/>
             </LinearLayout>
 
             <LinearLayout
@@ -105,7 +107,8 @@
                 <TextView
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:text="@string/security_settings_fingerprint_v2_enroll_introduction_footer_message_3" />
+                    android:text="@string/security_settings_fingerprint_v2_enroll_introduction_footer_message_3"
+                    android:textColor="?android:attr/textColorPrimary"/>
             </LinearLayout>
 
             <!-- You're in control -->
@@ -115,7 +118,8 @@
                 android:layout_height="wrap_content"
                 android:textAlignment="viewStart"
                 android:paddingTop="12dp"
-                android:text="@string/security_settings_fingerprint_enroll_introduction_footer_title_1" />
+                android:text="@string/security_settings_fingerprint_enroll_introduction_footer_title_1"
+                android:textColor="?android:attr/textColorPrimary"/>
 
             <LinearLayout
                 android:layout_width="match_parent"
@@ -135,7 +139,8 @@
                 <TextView
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:text="@string/security_settings_fingerprint_v2_enroll_introduction_footer_message_4" />
+                    android:text="@string/security_settings_fingerprint_v2_enroll_introduction_footer_message_4"
+                    android:textColor="?android:attr/textColorPrimary"/>
             </LinearLayout>
 
         </LinearLayout>
@@ -147,7 +152,8 @@
             android:layout_height="wrap_content"
             android:textAlignment="viewStart"
             android:paddingTop="12dp"
-            android:text="@string/security_settings_fingerprint_enroll_introduction_footer_title_2" />
+            android:text="@string/security_settings_fingerprint_enroll_introduction_footer_title_2"
+            android:textColor="?android:attr/textColorPrimary"/>
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -167,7 +173,8 @@
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:text="@string/security_settings_fingerprint_v2_enroll_introduction_footer_message_5" />
+                android:text="@string/security_settings_fingerprint_v2_enroll_introduction_footer_message_5"
+                android:textColor="?android:attr/textColorPrimary"/>
         </LinearLayout>
 
         <LinearLayout
@@ -188,7 +195,8 @@
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:text="@string/security_settings_fingerprint_v2_enroll_introduction_message_learn_more" />
+                android:text="@string/security_settings_fingerprint_v2_enroll_introduction_message_learn_more"
+                android:textColor="?android:attr/textColorPrimary"/>
         </LinearLayout>
 
     </LinearLayout>
diff --git a/res/layout/font_size_activity.xml b/res/layout/font_size_activity.xml
index c3b26ae..8850f86 100644
--- a/res/layout/font_size_activity.xml
+++ b/res/layout/font_size_activity.xml
@@ -56,7 +56,6 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:gravity="center_vertical"
-                android:layoutDirection="ltr"
                 android:paddingTop="8dp">
 
                 <ImageView
diff --git a/res/layout/preference_battery_error.xml b/res/layout/preference_battery_error.xml
index 4efd13a..68ac6a2 100644
--- a/res/layout/preference_battery_error.xml
+++ b/res/layout/preference_battery_error.xml
@@ -24,6 +24,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_margin="8dp"
+        android:importantForAccessibility="yes"
         style="@style/ContextualCardStyle">
         <LinearLayout
             android:layout_width="match_parent"
@@ -46,16 +47,16 @@
                       android:layout_marginTop="12dp"
                       android:layout_marginBottom="16dp"
                       android:text="@string/battery_missing_message"
-                      android:textAppearance="?android:attr/textAppearanceSmall"
-                      android:textColor="?android:attr/textColorSecondary" />
+                      android:textAppearance="?android:attr/textAppearanceListItem" />
 
             <TextView android:id="@+id/link_text"
                       android:layout_width="wrap_content"
                       android:layout_height="wrap_content"
                       android:layout_gravity="end"
                       android:text="@string/battery_missing_link_message"
-                      android:textAppearance="?android:attr/textAppearanceSmall"
-                      android:textColor="@*android:color/material_red_A700" />
+                      android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+                      android:textColor="@*android:color/material_red_A700"
+                      android:contentDescription="@string/battery_missing_link_a11y_message" />
         </LinearLayout>
     </com.google.android.material.card.MaterialCardView>
 </FrameLayout>
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
index faf7962..0b68514 100644
--- a/res/values-night/colors.xml
+++ b/res/values-night/colors.xml
@@ -41,5 +41,10 @@
     <color name="color_surface_header">@*android:color/surface_header_dark</color>
     <!-- Dialog error color. -->
     <color name="settings_dialog_colorError">#f28b82</color> <!-- Red 300 -->
+
+    <!-- Face and fingerprint enrollment -->
+    <color name="biometric_enroll_intro_color_bar">#5bb974</color>
+    <color name="biometric_enroll_intro_color_icon">#669df6</color>
+    <color name="biometric_enroll_intro_color_outline">#5e5e5e</color>
 </resources>
 
diff --git a/res/values/colors.xml b/res/values/colors.xml
index bd41f1e..71d110b 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -126,6 +126,11 @@
     <color name="face_anim_particle_color_4">#fffdd835</color> <!-- Material Yellow 600 -->
     <color name="face_anim_particle_error">#ff9e9e9e</color> <!-- Material Gray 500 -->
 
+    <!-- Face and fingerprint enrollment -->
+    <color name="biometric_enroll_intro_color_bar">#1e8e3e</color>
+    <color name="biometric_enroll_intro_color_icon">#1a73e8</color>
+    <color name="biometric_enroll_intro_color_outline">#e3e3e3</color>
+
     <!-- notification settings -->
     <color name="notification_block_color">#ffff0000</color>
     <color name="notification_silence_color">#FF32c1de</color>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c6ea2d2..a02ac79 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -103,7 +103,7 @@
     <!-- Disclaimer for camera based rotate [CHAR_LIMIT=NONE] -->
     <string name="smart_rotate_text_headline">
         Face Detection uses the front-facing camera to improve Auto-rotate accuracy. Images are never stored or sent to Google.&lt;br>&lt;br>
-       &lt;a href="<xliff:g example="http://www.google.com" id="url">http://support.google.com/mobile?p=telephony_rtt</xliff:g>">Learn more&lt;/a>
+       &lt;a href="<xliff:g example="http://www.google.com" id="url">http://support.google.com/mobile?p=telephony_rtt</xliff:g>">Learn more about Auto-rotate screen&lt;/a>
     </string>
     <string name="font_size_preview_text_headline">Sample text</string>
     <string name="font_size_preview_text_title"
@@ -695,9 +695,8 @@
         emergency responders when you call or text an emergency number.
     </string>
     <!-- Location settings footer link to support page [CHAR LIMIT=NONE] -->
-    <string name="location_settings_footer_learn_more">
-        &lt;a href="<xliff:g example="http://www.google.com"
-        id="url"> https://support.google.com/android/answer/3467281</xliff:g>">Learn more&lt;/a>
+    <string name="location_settings_footer_learn_more_link" translatable="false">
+        https://support.google.com/android/answer/3467281
     </string>
     <!-- Location settings footer link content description [CHAR LIMIT=NONE] -->
     <string name="location_settings_footer_learn_more_content_description">
@@ -5335,8 +5334,8 @@
     <string name="accessibility_shortcut_edit_dialog_summary_software_gesture_talkback">Swipe up from the bottom of the screen with 3 fingers.\n\nTo switch between features, swipe up with 3 fingers and hold.</string>
     <!-- Summary for software shortcut in accessibility edit shortcut dialog when user had enabled the accessibility floating button mode (Floating over other apps). [CHAR LIMIT=NONE] -->
     <string name="accessibility_shortcut_edit_dialog_summary_software_floating"><annotation id="link">Customize accessibility button</annotation></string>
-    <!-- Summary for footer to show help link. [CHAR LIMIT=NONE] -->
-    <string name="footer_learn_more"><annotation id="link">Learn more</annotation></string>
+    <!-- Footer to show help link content description. [CHAR LIMIT=NONE] -->
+    <string name="footer_learn_more_content_description">Learn more about <xliff:g id="service" example="Select to Speak">%1$s</xliff:g></string>
     <!-- Title for hardware shortcut in accessibility edit shortcut dialog. [CHAR LIMIT=NONE] -->
     <string name="accessibility_shortcut_edit_dialog_title_hardware">Hold volume keys</string>
     <!-- Part of list to compose user's accessibility shortcut list. [CHAR LIMIT=NONE] -->
@@ -6052,7 +6051,7 @@
     <!-- Activity title for battery usage history details [CHAR LIMIT=60] -->
     <string name="history_details_title">History details</string>
     <!-- Preference title for advanced battery usage [CHAR LIMIT=40] -->
-    <string name="advanced_battery_preference_title">View battery usage</string>
+    <string name="advanced_battery_preference_title">Battery Usage</string>
     <!-- Preference summary for advanced battery usage, for past 24 hours [CHAR LIMIT=40] -->
     <string name="advanced_battery_preference_summary_with_hours">View usage for past 24 hours</string>
     <!-- Preference summary for advanced battery usage, from last full charge [CHAR LIMIT=40] -->
@@ -6100,7 +6099,7 @@
     <!-- Title for the battery limited temporarily tip [CHAR LIMIT=NONE] -->
     <string name="battery_tip_limited_temporarily_title">Charging temporarily limited</string>
     <!-- Summary for the battery limited temporarily tip [CHAR LIMIT=NONE] -->
-    <string name="battery_tip_limited_temporarily_summary">Battery limited temporarily. Learn more.</string>
+    <string name="battery_tip_limited_temporarily_summary">To preserve your battery. Learn more.</string>
     <!-- Message for battery tip dialog to show the status about the battery [CHAR LIMIT=NONE] -->
     <string name="battery_tip_dialog_message" product="default">Your phone has been used more than usual. Your battery may run out sooner than expected.\n\nTop apps by battery usage:</string>
     <!-- Message for battery tip dialog to show the status about the battery [CHAR LIMIT=NONE] -->
@@ -6201,9 +6200,11 @@
     <string name="battery_header_title_alternate"><xliff:g id="number" example="88">^1</xliff:g><small> <font size="20"><xliff:g id="unit" example="%">%</xliff:g></font></small></string>
 
     <!-- Summary for top level battery tile if battery is not present. [CHAR LIMIT=NONE] -->
-    <string name="battery_missing_message">Can’t update battery info</string>
+    <string name="battery_missing_message">Problem reading the battery meter.</string>
     <!-- Help text if battery is not present. [CHAR LIMIT=NONE] -->
     <string name="battery_missing_link_message"></string>
+    <!-- Accessibility description for battery missing link. [CHAR LIMIT=NONE] -->
+    <string name="battery_missing_link_a11y_message">Tap to learn more about this error</string>
 
     <!-- Title for force stop dialog [CHAR LIMIT=30] -->
     <string name="dialog_stop_title">Stop app?</string>
@@ -10473,13 +10474,13 @@
         Allowing <xliff:g id="app_name" example="Settings">%1$s</xliff:g> to always run in the background may reduce battery life.
         \n\nYou can change this later from Settings > Apps &amp; notifications.</string>
     <!-- Summary of power usage for an app [CHAR LIMIT=NONE] -->
-    <string name="battery_summary"><xliff:g id="percentage" example="2">%1$s</xliff:g> use since last full charge</string>
+    <string name="battery_summary"><xliff:g id="percentage" example="2">%1$s</xliff:g> use for past 24 hours</string>
 
     <!-- Title of a group of settings that let you manage settings that affect battery life [CHAR LIMIT=60] -->
     <string name="battery_power_management">Power management</string>
 
     <!-- Summary for app with no battery usage [CHAR LIMIT=NONE] -->
-    <string name="no_battery_summary">No battery use since last full charge</string>
+    <string name="no_battery_summary">No battery use for past 24 hours</string>
 
     <!-- Link to an apps notification settings [CHAR LIMIT=50] -->
     <string name="app_notification_preferences">App settings</string>
diff --git a/res/xml/auto_brightness_detail.xml b/res/xml/auto_brightness_detail.xml
index d0bf334..a7c85e8 100644
--- a/res/xml/auto_brightness_detail.xml
+++ b/res/xml/auto_brightness_detail.xml
@@ -27,10 +27,11 @@
         settings:preview="@drawable/aab_brightness"
         settings:controller="com.android.settings.widget.VideoPreferenceController"/>
 
-    <com.android.settingslib.widget.MainSwitchPreference
+    <com.android.settings.widget.SettingsMainSwitchPreference
         android:key="auto_brightness"
         android:title="@string/adaptive_brightness_main_switch_title"
         settings:keywords="@string/keywords_display_auto_brightness"
+        settings:userRestriction="no_config_brightness"
         settings:controller="com.android.settings.display.AutoBrightnessDetailPreferenceController"/>
 
     <com.android.settingslib.widget.FooterPreference
diff --git a/res/xml/location_settings.xml b/res/xml/location_settings.xml
index cffab3e..fe87efd 100644
--- a/res/xml/location_settings.xml
+++ b/res/xml/location_settings.xml
@@ -71,7 +71,6 @@
     <com.android.settingslib.widget.FooterPreference
         android:title="@string/location_settings_footer_general"
         android:key="location_footer"
-        android:selectable="false"
         settings:searchable="false"
         settings:controller="com.android.settings.location.LocationSettingsFooterPreferenceController"/>
 </PreferenceScreen>
diff --git a/res/xml/privacy_dashboard_settings.xml b/res/xml/privacy_dashboard_settings.xml
index 7c4966b..954d3ef 100644
--- a/res/xml/privacy_dashboard_settings.xml
+++ b/res/xml/privacy_dashboard_settings.xml
@@ -21,13 +21,11 @@
     android:key="privacy_dashboard_page"
     android:title="@string/privacy_dashboard_title">
 
-
     <!-- Work Policy info -->
     <Preference
         android:key="work_policy_info"
         android:title="@string/work_policy_privacy_settings"
         android:summary="@string/work_policy_privacy_settings_summary"
-        settings:allowDividerAbove="true"
         settings:controller="com.android.settings.privacy.WorkPolicyInfoPreferenceController"/>
 
     <!-- Connected work and personal apps -->
@@ -42,7 +40,6 @@
     <Preference
         android:key="privacy_accessibility_usage"
         android:title="@string/accessibility_usage_title"
-        settings:allowDividerAbove="true"
         settings:controller="com.android.settings.privacy.AccessibilityUsagePreferenceController">
         <intent android:action="android.intent.action.REVIEW_ACCESSIBILITY_SERVICES"/>
     </Preference>
@@ -52,7 +49,6 @@
         android:key="privacy_permissions_usage"
         android:title="@string/permissions_usage_title"
         android:summary="@string/permissions_usage_summary"
-        settings:allowDividerAbove="true"
         settings:searchable="false"
         settings:controller="com.android.settings.privacy.PrivacyHubPreferenceController">
         <intent android:action="android.intent.action.REVIEW_PERMISSION_USAGE"/>
diff --git a/res/xml/security_settings_face.xml b/res/xml/security_settings_face.xml
index 229c9df..6d7c0ba 100644
--- a/res/xml/security_settings_face.xml
+++ b/res/xml/security_settings_face.xml
@@ -70,21 +70,17 @@
             settings:controller="com.android.settings.biometrics.face.FaceSettingsLockscreenBypassPreferenceController" />
     </PreferenceCategory>
 
-    <PreferenceCategory
-        android:key="security_settings_face_button_category"
-        android:title="@string/security_settings_face_preference_title">
-        <com.android.settingslib.widget.LayoutPreference
-            android:key="security_settings_face_delete_faces_container"
-            android:title="@string/security_settings_face_settings_remove_face_model"
-            android:selectable="false"
-            android:layout="@layout/face_remove_button"/>
+    <com.android.settingslib.widget.LayoutPreference
+        android:key="security_settings_face_delete_faces_container"
+        android:title="@string/security_settings_face_settings_remove_face_model"
+        android:selectable="false"
+        android:layout="@layout/face_remove_button"/>
 
-        <com.android.settingslib.widget.LayoutPreference
-            android:key="security_settings_face_enroll_faces_container"
-            android:title="@string/security_settings_face_settings_enroll"
-            android:selectable="false"
-            android:layout="@layout/face_enroll_button"/>
-    </PreferenceCategory>
+    <com.android.settingslib.widget.LayoutPreference
+        android:key="security_settings_face_enroll_faces_container"
+        android:title="@string/security_settings_face_settings_enroll"
+        android:selectable="false"
+        android:layout="@layout/face_enroll_button"/>
 
     <com.android.settingslib.widget.FooterPreference
         android:key="security_face_footer"
diff --git a/src/com/android/settings/SettingsDumpService.java b/src/com/android/settings/SettingsDumpService.java
index a935c18..2a041f3 100644
--- a/src/com/android/settings/SettingsDumpService.java
+++ b/src/com/android/settings/SettingsDumpService.java
@@ -111,9 +111,9 @@
             for (SubscriptionInfo info : manager.getAvailableSubscriptionInfoList()) {
                 telephonyManager = telephonyManager
                         .createForSubscriptionId(info.getSubscriptionId());
-                NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll(
+                NetworkTemplate carrier = NetworkTemplate.buildTemplateCarrierMetered(
                         telephonyManager.getSubscriberId());
-                final JSONObject usage = dumpDataUsage(mobileAll, controller);
+                final JSONObject usage = dumpDataUsage(carrier, controller);
                 usage.put("subId", info.getSubscriptionId());
                 array.put(usage);
             }
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index a276ad7..b8ff60c 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -26,7 +26,6 @@
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.util.ArrayMap;
-import android.util.FeatureFlagUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -43,11 +42,8 @@
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settings.search.actionbar.SearchMenuController;
-import com.android.settings.support.actionbar.HelpMenuController;
 import com.android.settings.support.actionbar.HelpResourceProvider;
 import com.android.settings.widget.HighlightablePreferenceGroupAdapter;
 import com.android.settings.widget.LoadingViewController;
@@ -129,11 +125,6 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        // TODO(b/176883483): Remove both search and help menu if this feature rolled out
-        if (!FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)) {
-            SearchMenuController.init(this /* host */);
-            HelpMenuController.init(this /* host */);
-        }
 
         if (icicle != null) {
             mPreferenceHighlighted = icicle.getBoolean(SAVE_HIGHLIGHTED_KEY);
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 6d4ea26..90dad9d 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -110,7 +110,6 @@
 import com.android.internal.app.UnlaunchableAppActivity;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.widget.LockPatternUtils;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.dashboard.profileselector.ProfileFragmentBridge;
 import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
 import com.android.settings.password.ChooseLockSettingsHelper;
@@ -1228,10 +1227,7 @@
     }
 
     public static boolean isPageTransitionEnabled(Context context) {
-        final boolean isSilkyHome = FeatureFlagUtils.isEnabled(context, FeatureFlags.SILKY_HOME);
-        final boolean isTransitionEnabled = Settings.Global.getInt(context.getContentResolver(),
+        return Settings.Global.getInt(context.getContentResolver(),
                 SETTINGS_SHARED_AXIS_ENABLED, 0) == 1;
-
-        return isSilkyHome && isTransitionEnabled;
     }
 }
diff --git a/src/com/android/settings/accessibility/AccessibilityFooterPreference.java b/src/com/android/settings/accessibility/AccessibilityFooterPreference.java
index d68538e..67b7827 100644
--- a/src/com/android/settings/accessibility/AccessibilityFooterPreference.java
+++ b/src/com/android/settings/accessibility/AccessibilityFooterPreference.java
@@ -17,29 +17,19 @@
 package com.android.settings.accessibility;
 
 import android.content.Context;
-import android.content.Intent;
-import android.text.SpannableStringBuilder;
-import android.text.TextUtils;
 import android.text.method.LinkMovementMethod;
 import android.util.AttributeSet;
-import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import androidx.preference.PreferenceViewHolder;
 
-import com.android.settings.R;
-import com.android.settings.utils.AnnotationSpan;
-import com.android.settingslib.HelpUtils;
 import com.android.settingslib.widget.FooterPreference;
 
 /**
- * A custom preference acting as footer of a page. It has a field for icon and text. It is added
- * to screen as the last preference and groups of icon and text content in accessibility-focusable
- * {@link android.view.accessibility.AccessibilityNodeInfo} for TalkBack to use.
+ * A custom preference acting as footer of a page. Disables the movement method by default.
  */
 public final class AccessibilityFooterPreference extends FooterPreference {
 
-    private CharSequence mIconContentDescription;
     private boolean mLinkEnabled;
 
     public AccessibilityFooterPreference(Context context, AttributeSet attrs) {
@@ -65,33 +55,6 @@
         } else {
             title.setMovementMethod(/* movement= */ null);
         }
-
-        final LinearLayout infoFrame = holder.itemView.findViewById(R.id.icon_frame);
-        if (!TextUtils.isEmpty(mIconContentDescription)) {
-            // Groups related content.
-            infoFrame.setContentDescription(mIconContentDescription);
-            title.setFocusable(false);
-        } else {
-            infoFrame.setContentDescription(null);
-            title.setFocusable(true);
-        }
-    }
-
-    /**
-     * Sets the content description of the icon.
-     */
-    public void setIconContentDescription(CharSequence iconContentDescription) {
-        if (!TextUtils.equals(iconContentDescription, mIconContentDescription)) {
-            mIconContentDescription = iconContentDescription;
-            notifyChanged();
-        }
-    }
-
-    /**
-     * Gets the content description of the icon.
-     */
-    public CharSequence getIconContentDescription() {
-        return mIconContentDescription;
     }
 
     /**
@@ -110,23 +73,4 @@
     public boolean isLinkEnabled() {
         return mLinkEnabled;
     }
-
-    /**
-     * Appends {@link AnnotationSpan} with learn more link apart from the other text.
-     *
-     * @param helpLinkRes The Help Uri Resource key
-     */
-    public void appendHelpLink(int helpLinkRes) {
-        final SpannableStringBuilder sb = new SpannableStringBuilder();
-        sb.append(getTitle()).append("\n\n").append(getLearnMoreLink(getContext(), helpLinkRes));
-        setTitle(sb);
-    }
-
-    private CharSequence getLearnMoreLink(Context context, int helpLinkRes) {
-        final Intent helpIntent = HelpUtils.getHelpIntent(
-                context, context.getString(helpLinkRes), context.getClass().getName());
-        final AnnotationSpan.LinkInfo linkInfo = new AnnotationSpan.LinkInfo(
-                context, AnnotationSpan.LinkInfo.DEFAULT_ANNOTATION, helpIntent);
-        return AnnotationSpan.linkify(context.getText(R.string.footer_learn_more), linkInfo);
-    }
 }
diff --git a/src/com/android/settings/accessibility/AccessibilityFooterPreferenceController.java b/src/com/android/settings/accessibility/AccessibilityFooterPreferenceController.java
index 9fe4b3a..e3422e4 100644
--- a/src/com/android/settings/accessibility/AccessibilityFooterPreferenceController.java
+++ b/src/com/android/settings/accessibility/AccessibilityFooterPreferenceController.java
@@ -17,11 +17,13 @@
 package com.android.settings.accessibility;
 
 import android.content.Context;
+import android.content.Intent;
 
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.HelpUtils;
 
 /**
  * Base class for accessibility preference footer.
@@ -59,13 +61,24 @@
     protected abstract String getLabelName();
 
     private void updateFooterPreferences(AccessibilityFooterPreference footerPreference) {
-        final String iconContentDescription = mContext.getString(
-                R.string.accessibility_introduction_title, getLabelName());
-        footerPreference.setIconContentDescription(iconContentDescription);
+        final StringBuffer sb = new StringBuffer();
+        sb.append(mContext.getString(
+                R.string.accessibility_introduction_title, getLabelName()))
+                .append("\n\n")
+                .append(footerPreference.getTitle());
+        footerPreference.setContentDescription(sb);
 
         if (getHelpResource() != 0) {
-            footerPreference.appendHelpLink(getHelpResource());
-            footerPreference.setLinkEnabled(true);
+            footerPreference.setLearnMoreAction(view -> {
+                final Intent helpIntent = HelpUtils.getHelpIntent(
+                        mContext, mContext.getString(getHelpResource()),
+                        mContext.getClass().getName());
+                view.startActivityForResult(helpIntent, 0);
+            });
+
+            final String learnMoreContentDescription = mContext.getString(
+                    R.string.footer_learn_more_content_description, getLabelName());
+            footerPreference.setLearnMoreContentDescription(learnMoreContentDescription);
         }
     }
 }
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index 4b1725f..7c18943 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -55,6 +55,7 @@
 import com.android.settings.utils.LocaleUtils;
 import com.android.settings.widget.SettingsMainSwitchBar;
 import com.android.settings.widget.SettingsMainSwitchPreference;
+import com.android.settingslib.HelpUtils;
 import com.android.settingslib.accessibility.AccessibilityUtils;
 import com.android.settingslib.widget.OnMainSwitchChangeListener;
 
@@ -520,14 +521,25 @@
                 new AccessibilityFooterPreference(screen.getContext());
         htmlFooterPreference.setKey(KEY_HTML_DESCRIPTION_PREFERENCE);
         htmlFooterPreference.setSummary(htmlDescription);
+        htmlFooterPreference.setContentDescription(
+                generateFooterContentDescription(htmlDescription));
+
         // Only framework tools support help link
         if (getHelpResource() != 0) {
-            htmlFooterPreference.appendHelpLink(getHelpResource());
+            htmlFooterPreference.setLearnMoreAction(view -> {
+                final Intent helpIntent = HelpUtils.getHelpIntent(
+                        getContext(), getContext().getString(getHelpResource()),
+                        getContext().getClass().getName());
+                view.startActivityForResult(helpIntent, 0);
+            });
+
+            final String learnMoreContentDescription = getPrefContext().getString(
+                    R.string.footer_learn_more_content_description, mPackageName);
+            htmlFooterPreference.setLearnMoreContentDescription(learnMoreContentDescription);
             htmlFooterPreference.setLinkEnabled(true);
         } else {
             htmlFooterPreference.setLinkEnabled(false);
         }
-        htmlFooterPreference.setIconContentDescription(iconContentDescription);
         screen.addPreference(htmlFooterPreference);
     }
 
@@ -559,14 +571,33 @@
         final AccessibilityFooterPreference footerPreference =
                 new AccessibilityFooterPreference(screen.getContext());
         footerPreference.setSummary(summary);
-        footerPreference.setIconContentDescription(iconContentDescription);
+        footerPreference.setContentDescription(
+                generateFooterContentDescription(summary));
+
+        // Only framework tools support help link
         if (getHelpResource() != 0) {
-            footerPreference.appendHelpLink(getHelpResource());
-            footerPreference.setLinkEnabled(true);
+            footerPreference.setLearnMoreAction(view -> {
+                final Intent helpIntent = HelpUtils.getHelpIntent(
+                        getContext(), getContext().getString(getHelpResource()),
+                        getContext().getClass().getName());
+                view.startActivityForResult(helpIntent, 0);
+            });
+
+            final String learnMoreContentDescription = getPrefContext().getString(
+                    R.string.footer_learn_more_content_description, mPackageName);
+            footerPreference.setLearnMoreContentDescription(learnMoreContentDescription);
         }
         screen.addPreference(footerPreference);
     }
 
+    private CharSequence generateFooterContentDescription(CharSequence footerContent) {
+        final StringBuffer sb = new StringBuffer();
+        sb.append(getPrefContext().getString(
+                R.string.accessibility_introduction_title, mPackageName))
+                .append("\n\n")
+                .append(footerContent);
+        return sb;
+    }
     @VisibleForTesting
     void setupEditShortcutDialog(Dialog dialog) {
         final View dialogSoftwareView = dialog.findViewById(R.id.software_shortcut);
diff --git a/src/com/android/settings/applications/appinfo/ExtraAppInfoFeatureProvider.java b/src/com/android/settings/applications/appinfo/ExtraAppInfoFeatureProvider.java
index 4de1c2c..ec70f57 100644
--- a/src/com/android/settings/applications/appinfo/ExtraAppInfoFeatureProvider.java
+++ b/src/com/android/settings/applications/appinfo/ExtraAppInfoFeatureProvider.java
@@ -36,7 +36,12 @@
     void setPackageName(String packageName);
 
     /**
-     * gets the summary name
+     * Checks if enabled
+     */
+    boolean isEnabled(Context context);
+
+    /**
+     * Gets the summary name
      */
     String getSummary(Context context);
 }
diff --git a/src/com/android/settings/applications/appinfo/ExtraAppInfoFeatureProviderImpl.java b/src/com/android/settings/applications/appinfo/ExtraAppInfoFeatureProviderImpl.java
index 55b9bf0..7d800e6 100644
--- a/src/com/android/settings/applications/appinfo/ExtraAppInfoFeatureProviderImpl.java
+++ b/src/com/android/settings/applications/appinfo/ExtraAppInfoFeatureProviderImpl.java
@@ -39,6 +39,11 @@
     }
 
     @Override
+    public boolean isEnabled(Context context) {
+        return false;
+    }
+
+    @Override
     public String getSummary(Context context) {
         return "";
     }
diff --git a/src/com/android/settings/applications/appinfo/ExtraAppInfoPreferenceController.java b/src/com/android/settings/applications/appinfo/ExtraAppInfoPreferenceController.java
index 0d72b74..43796d0 100644
--- a/src/com/android/settings/applications/appinfo/ExtraAppInfoPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/ExtraAppInfoPreferenceController.java
@@ -20,6 +20,7 @@
 import android.text.TextUtils;
 
 import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
 
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.overlay.FeatureFactory;
@@ -55,6 +56,16 @@
         return mExtraAppInfoFeatureProvider.getSummary(mContext);
     }
 
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+
+        if (mExtraAppInfoFeatureProvider != null) {
+            final Preference preference = screen.findPreference(getPreferenceKey());
+            preference.setEnabled(mExtraAppInfoFeatureProvider.isEnabled(preference.getContext()));
+        }
+    }
+
     /**
      * Set the local package name
      */
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index d5162a85..164ef2d 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -123,7 +123,6 @@
 import com.android.settings.widget.LoadingViewController;
 import com.android.settings.wifi.AppStateChangeWifiStateBridge;
 import com.android.settings.wifi.ChangeWifiStateDetails;
-import com.android.settingslib.HelpUtils;
 import com.android.settingslib.applications.ApplicationsState;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
 import com.android.settingslib.applications.ApplicationsState.AppFilter;
@@ -661,10 +660,6 @@
         if (activity == null) {
             return;
         }
-        // TODO(b/176883483): Remove the help menu if this feature rolled out
-        if (!FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)) {
-            HelpUtils.prepareHelpMenuItem(activity, menu, getHelpResource(), getClass().getName());
-        }
         mOptionsMenu = menu;
         inflater.inflate(R.menu.manage_apps, menu);
 
diff --git a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java
index 09d8e71..a85382b 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java
@@ -18,6 +18,8 @@
 
 import android.app.admin.DevicePolicyManager;
 import android.content.Intent;
+import android.content.res.ColorStateList;
+import android.graphics.Color;
 import android.graphics.PorterDuff;
 import android.graphics.PorterDuffColorFilter;
 import android.os.Bundle;
@@ -25,14 +27,17 @@
 import android.os.UserManager;
 import android.util.Log;
 import android.view.View;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import androidx.annotation.ColorInt;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.R;
 import com.android.settings.SetupWizardUtils;
+import com.android.settings.Utils;
 import com.android.settings.password.ChooseLockGeneric;
 import com.android.settings.password.ChooseLockSettingsHelper;
 
@@ -183,6 +188,15 @@
     }
 
     @Override
+    protected void onPostCreate(@Nullable Bundle savedInstanceState) {
+        super.onPostCreate(savedInstanceState);
+        final LinearLayout buttonContainer = mFooterBarMixin.getButtonContainer();
+        if (buttonContainer != null) {
+            buttonContainer.setBackgroundColor(getBackgroundColor());
+        }
+    }
+
+    @Override
     protected void onResume() {
         super.onResume();
 
@@ -200,6 +214,12 @@
     }
 
     @Override
+    public void onAttachedToWindow() {
+        super.onAttachedToWindow();
+        getWindow().setStatusBarColor(getBackgroundColor());
+    }
+
+    @Override
     protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         outState.putBoolean(KEY_CONFIRMING_CREDENTIALS, mConfirmingCredentials);
@@ -335,4 +355,10 @@
         }
         return mIconColorFilter;
     }
+
+    @ColorInt
+    private int getBackgroundColor() {
+        final ColorStateList stateList = Utils.getColorAttr(this, android.R.attr.windowBackground);
+        return stateList != null ? stateList.getDefaultColor() : Color.TRANSPARENT;
+    }
 }
diff --git a/src/com/android/settings/core/SettingsBaseActivity.java b/src/com/android/settings/core/SettingsBaseActivity.java
index c5d86e1..fb9780f 100644
--- a/src/com/android/settings/core/SettingsBaseActivity.java
+++ b/src/com/android/settings/core/SettingsBaseActivity.java
@@ -67,7 +67,7 @@
     /**
      * What type of page transition should be apply.
      */
-    public static final String EXTRA_PAGE_TRANSITION_TYPE = "extra_page_transition_type";
+    public static final String EXTRA_PAGE_TRANSITION_TYPE = "page_transition_type";
 
     protected static final boolean DEBUG_TIMING = false;
     private static final String TAG = "SettingsBaseActivity";
diff --git a/src/com/android/settings/core/SubSettingLauncher.java b/src/com/android/settings/core/SubSettingLauncher.java
index 2ee404b..893d592 100644
--- a/src/com/android/settings/core/SubSettingLauncher.java
+++ b/src/com/android/settings/core/SubSettingLauncher.java
@@ -17,22 +17,17 @@
 package com.android.settings.core;
 
 import android.annotation.StringRes;
-import android.app.Activity;
-import android.app.ActivityOptions;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.text.TextUtils;
-import android.widget.Toolbar;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.fragment.app.Fragment;
 
-import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.SubSettings;
-import com.android.settings.Utils;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;
 
@@ -199,14 +194,6 @@
 
     @VisibleForTesting
     void launchForResult(Fragment listener, Intent intent, int requestCode) {
-        if (Utils.isPageTransitionEnabled(mContext)) {
-            final Activity activity = listener.getActivity();
-            final Toolbar toolbar = activity.findViewById(R.id.action_bar);
-            final Bundle bundle = ActivityOptions.makeSceneTransitionAnimation(activity, toolbar,
-                    "shared_element_view").toBundle();
-            listener.startActivityForResult(intent, requestCode, bundle);
-            return;
-        }
         listener.startActivityForResult(intent, requestCode);
     }
 
diff --git a/src/com/android/settings/datausage/lib/DataUsageLib.java b/src/com/android/settings/datausage/lib/DataUsageLib.java
index 786f0ec..93907aa 100644
--- a/src/com/android/settings/datausage/lib/DataUsageLib.java
+++ b/src/com/android/settings/datausage/lib/DataUsageLib.java
@@ -73,7 +73,7 @@
 
     private static NetworkTemplate getMobileTemplateForSubId(
             TelephonyManager telephonyManager, int subId) {
-        return NetworkTemplate.buildTemplateMobileAll(
+        return NetworkTemplate.buildTemplateCarrierMetered(
                 telephonyManager.getSubscriberId(subId));
     }
 }
diff --git a/src/com/android/settings/display/AutoBrightnessDetailPreferenceController.java b/src/com/android/settings/display/AutoBrightnessDetailPreferenceController.java
index 3138ae0..0a60ed3 100644
--- a/src/com/android/settings/display/AutoBrightnessDetailPreferenceController.java
+++ b/src/com/android/settings/display/AutoBrightnessDetailPreferenceController.java
@@ -21,7 +21,7 @@
 
 import androidx.preference.PreferenceScreen;
 
-import com.android.settingslib.widget.MainSwitchPreference;
+import com.android.settings.widget.SettingsMainSwitchPreference;
 import com.android.settingslib.widget.OnMainSwitchChangeListener;
 
 /**
@@ -51,7 +51,7 @@
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
 
-        MainSwitchPreference pref = (MainSwitchPreference) screen.findPreference(
+        SettingsMainSwitchPreference pref = (SettingsMainSwitchPreference) screen.findPreference(
                 getPreferenceKey());
         pref.addOnSwitchChangeListener(this);
         pref.updateStatus(isChecked());
diff --git a/src/com/android/settings/gestures/SystemNavigationGestureSettings.java b/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
index 388d87a..854efa0 100644
--- a/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
+++ b/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
@@ -30,18 +30,14 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.provider.Settings;
-import android.util.FeatureFlagUtils;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.actionbar.SearchMenuController;
-import com.android.settings.support.actionbar.HelpMenuController;
 import com.android.settings.support.actionbar.HelpResourceProvider;
 import com.android.settings.utils.CandidateInfoExtra;
 import com.android.settings.widget.RadioButtonPickerFragment;
@@ -76,11 +72,6 @@
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
-        // TODO(b/176883483): Remove both search and help menu if this feature rolled out
-        if (!FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)) {
-            SearchMenuController.init(this /* host */);
-            HelpMenuController.init(this /* host */);
-        }
 
         SuggestionFeatureProvider suggestionFeatureProvider = FeatureFactory.getFactory(context)
                 .getSuggestionFeatureProvider(context);
diff --git a/src/com/android/settings/inputmethod/UserDictionarySettings.java b/src/com/android/settings/inputmethod/UserDictionarySettings.java
index 5e3e749..f51629d 100644
--- a/src/com/android/settings/inputmethod/UserDictionarySettings.java
+++ b/src/com/android/settings/inputmethod/UserDictionarySettings.java
@@ -26,7 +26,6 @@
 import android.os.Bundle;
 import android.provider.UserDictionary;
 import android.text.TextUtils;
-import android.util.FeatureFlagUtils;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -45,7 +44,6 @@
 import androidx.loader.content.Loader;
 
 import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.core.instrumentation.Instrumentable;
@@ -106,10 +104,7 @@
     @Override
     public View onCreateView(
             LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        // TODO(b/176883483): Remove the title after material component updated
-        if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)) {
-            getActivity().setTitle(R.string.user_dict_settings_title);
-        }
+        getActivity().setTitle(R.string.user_dict_settings_title);
         // Show the language as a subtitle of the action bar
         final ActionBar actionBar = getActivity().getActionBar();
         if (actionBar != null) {
diff --git a/src/com/android/settings/location/LocationSettingsFooterPreferenceController.java b/src/com/android/settings/location/LocationSettingsFooterPreferenceController.java
index 281cc5a..a3b68be 100644
--- a/src/com/android/settings/location/LocationSettingsFooterPreferenceController.java
+++ b/src/com/android/settings/location/LocationSettingsFooterPreferenceController.java
@@ -31,6 +31,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
+import com.android.settingslib.HelpUtils;
 import com.android.settingslib.widget.FooterPreference;
 
 import java.util.ArrayList;
@@ -104,15 +105,22 @@
                     + footerString;
         }
         if (mFooterPreference != null) {
-            mFooterPreference.setTitle(Html.fromHtml(footerString
-                    + PARAGRAPH_SEPARATOR
-                    + mContext.getString(
-                    R.string.location_settings_footer_learn_more)));
-            mFooterPreference.setContentDescription(Html.fromHtml(footerString + mContext.getString(
-                    R.string.location_settings_footer_learn_more_content_description)));
+            mFooterPreference.setTitle(Html.fromHtml(footerString));
+            mFooterPreference.setLearnMoreAction(v -> openLocationLearnMoreLink());
+            mFooterPreference.setLearnMoreContentDescription(mContext.getString(
+                    R.string.location_settings_footer_learn_more_content_description));
         }
     }
 
+    private void openLocationLearnMoreLink() {
+        mFragment.startActivityForResult(
+                HelpUtils.getHelpIntent(
+                        mContext,
+                        mContext.getString(R.string.location_settings_footer_learn_more_link),
+                        /*backupContext=*/""),
+                /*requestCode=*/ 0);
+    }
+
     /**
      * Location footer preference group should always be displayed.
      */
diff --git a/src/com/android/settings/security/ResetCredentialsPreferenceController.java b/src/com/android/settings/security/ResetCredentialsPreferenceController.java
index 48e7f84..5234ba8 100644
--- a/src/com/android/settings/security/ResetCredentialsPreferenceController.java
+++ b/src/com/android/settings/security/ResetCredentialsPreferenceController.java
@@ -18,6 +18,8 @@
 
 import android.content.Context;
 import android.os.UserManager;
+import android.security.keystore.KeyProperties;
+import android.security.keystore2.AndroidKeyStoreLoadStoreParameter;
 
 import androidx.preference.PreferenceScreen;
 
@@ -35,6 +37,7 @@
     private static final String KEY_RESET_CREDENTIALS = "credentials_reset";
 
     private final KeyStore mKeyStore;
+    private final KeyStore mWifiKeyStore;
 
     private RestrictedPreference mPreference;
 
@@ -45,8 +48,19 @@
             keyStore = KeyStore.getInstance("AndroidKeyStore");
             keyStore.load(null);
         } catch (Exception e) {
+            keyStore = null;
         }
         mKeyStore = keyStore;
+        keyStore = null;
+        if (context.getUser().isSystem()) {
+            try {
+                keyStore = KeyStore.getInstance("AndroidKeyStore");
+                keyStore.load(new AndroidKeyStoreLoadStoreParameter(KeyProperties.NAMESPACE_WIFI));
+            } catch (Exception e) {
+                keyStore = null;
+            }
+        }
+        mWifiKeyStore = keyStore;
         if (lifecycle != null) {
             lifecycle.addObserver(this);
         }
@@ -68,9 +82,11 @@
         if (mPreference != null && !mPreference.isDisabledByAdmin()) {
             boolean isEnabled = false;
             try {
-                if (mKeyStore != null) {
-                    isEnabled = mKeyStore.aliases().hasMoreElements();
-                }
+                isEnabled = (mKeyStore != null
+                        && mKeyStore.aliases().hasMoreElements())
+                        || (mWifiKeyStore != null
+                        && mWifiKeyStore.aliases().hasMoreElements());
+
             } catch (KeyStoreException e) {
                 // If access to keystore fails, treat as disabled.
             }
diff --git a/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java b/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java
index dd1d63a..4f235e1 100644
--- a/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java
+++ b/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java
@@ -33,6 +33,7 @@
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.core.SettingsBaseActivity;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.password.ChooseLockSettingsHelper;
 import com.android.settings.security.SecurityFeatureProvider;
@@ -44,6 +45,7 @@
 import com.android.settingslib.core.lifecycle.events.OnResume;
 import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
 import com.android.settingslib.search.SearchIndexableRaw;
+import com.android.settingslib.transition.SettingsTransitionHelper;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -128,6 +130,8 @@
                 .show();
 
         mTrustAgentClickIntent = preference.getIntent();
+        mTrustAgentClickIntent.putExtra(SettingsBaseActivity.EXTRA_PAGE_TRANSITION_TYPE,
+                SettingsTransitionHelper.TransitionType.TRANSITION_SLIDE);
 
         if (!confirmationLaunched && mTrustAgentClickIntent != null) {
             // If this returns false, it means no password confirmation is required.
diff --git a/src/com/android/settings/widget/SettingsMainSwitchBar.java b/src/com/android/settings/widget/SettingsMainSwitchBar.java
index ce2dde5..5f752f9 100644
--- a/src/com/android/settings/widget/SettingsMainSwitchBar.java
+++ b/src/com/android/settings/widget/SettingsMainSwitchBar.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.widget;
 
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.util.AttributeSet;
@@ -47,7 +49,7 @@
     }
 
     private ImageView mRestrictedIcon;
-    private RestrictedLockUtils.EnforcedAdmin mEnforcedAdmin;
+    private EnforcedAdmin mEnforcedAdmin;
     private boolean mDisabledByAdmin;
 
     private final MetricsFeatureProvider mMetricsFeatureProvider;
@@ -87,7 +89,7 @@
      * If admin is not null, disables the text and switch but keeps the view clickable (unless the
      * switch is disabled for other reasons). Otherwise, calls setEnabled.
      */
-    public void setDisabledByAdmin(RestrictedLockUtils.EnforcedAdmin admin) {
+    public void setDisabledByAdmin(EnforcedAdmin admin) {
         mEnforcedAdmin = admin;
         if (admin != null) {
             super.setEnabled(true);
diff --git a/src/com/android/settings/widget/SettingsMainSwitchPreference.java b/src/com/android/settings/widget/SettingsMainSwitchPreference.java
index 04317a8..7f349bc 100644
--- a/src/com/android/settings/widget/SettingsMainSwitchPreference.java
+++ b/src/com/android/settings/widget/SettingsMainSwitchPreference.java
@@ -16,10 +16,13 @@
 
 package com.android.settings.widget;
 
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.text.TextUtils;
 import android.util.AttributeSet;
+import android.widget.Switch;
 
 import androidx.core.content.res.TypedArrayUtils;
 import androidx.preference.PreferenceViewHolder;
@@ -27,7 +30,7 @@
 
 import com.android.settings.R;
 import com.android.settings.widget.SettingsMainSwitchBar.OnBeforeCheckedChangeListener;
-import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedPreferenceHelper;
 import com.android.settingslib.widget.OnMainSwitchChangeListener;
 
 import java.util.ArrayList;
@@ -38,7 +41,9 @@
  * This component is used as the main switch of the page
  * to enable or disable the prefereces on the page.
  */
-public class SettingsMainSwitchPreference extends TwoStatePreference {
+public class SettingsMainSwitchPreference extends TwoStatePreference implements
+        OnMainSwitchChangeListener {
+
     private final List<OnBeforeCheckedChangeListener> mBeforeCheckedChangeListeners =
             new ArrayList<>();
     private final List<OnMainSwitchChangeListener> mSwitchChangeListeners = new ArrayList<>();
@@ -46,8 +51,8 @@
     private SettingsMainSwitchBar mMainSwitchBar;
     private CharSequence mTitle;
     private boolean mIsVisible;
-
-    private RestrictedLockUtils.EnforcedAdmin mEnforcedAdmin;
+    private EnforcedAdmin mEnforcedAdmin;
+    private RestrictedPreferenceHelper mRestrictedHelper;
 
     public SettingsMainSwitchPreference(Context context) {
         super(context);
@@ -78,8 +83,8 @@
         holder.setDividerAllowedBelow(false);
 
         mMainSwitchBar = (SettingsMainSwitchBar) holder.findViewById(R.id.main_switch_bar);
-
         mMainSwitchBar.show();
+        mEnforcedAdmin = mRestrictedHelper.checkRestrictionEnforced();
         updateStatus(isChecked());
         registerListenerToSwitchBar();
 
@@ -90,6 +95,7 @@
 
     private void init(Context context, AttributeSet attrs) {
         setLayoutResource(R.layout.preference_widget_main_switch);
+        mSwitchChangeListeners.add(this);
         mIsVisible = true;
 
         if (attrs != null) {
@@ -103,6 +109,8 @@
                 setTitle(title.toString());
             }
             a.recycle();
+
+            mRestrictedHelper = new RestrictedPreferenceHelper(context, this, attrs);
         }
     }
 
@@ -129,13 +137,17 @@
         }
     }
 
+    @Override
+    public void onSwitchChanged(Switch switchView, boolean isChecked) {
+        super.setChecked(isChecked);
+    }
+
     /**
      * Update the switch status of preference
      */
     public void updateStatus(boolean checked) {
         setChecked(checked);
         if (mMainSwitchBar != null) {
-            mMainSwitchBar.setChecked(checked);
             mMainSwitchBar.setTitle(mTitle);
             mMainSwitchBar.setDisabledByAdmin(mEnforcedAdmin);
             mMainSwitchBar.show();
@@ -230,7 +242,7 @@
      * Otherwise, calls setEnabled which will enables the entire view including
      * the text and switch.
      */
-    public void setDisabledByAdmin(RestrictedLockUtils.EnforcedAdmin admin) {
+    public void setDisabledByAdmin(EnforcedAdmin admin) {
         mEnforcedAdmin = admin;
         if (mMainSwitchBar != null) {
             mMainSwitchBar.setDisabledByAdmin(mEnforcedAdmin);
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettings.java b/src/com/android/settings/wifi/calling/WifiCallingSettings.java
index 79f34c7..86e7e8d 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettings.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettings.java
@@ -22,7 +22,6 @@
 import android.provider.Settings;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
-import android.util.FeatureFlagUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -35,12 +34,10 @@
 
 import com.android.internal.util.CollectionUtils;
 import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.InstrumentedFragment;
 import com.android.settings.network.SubscriptionUtil;
 import com.android.settings.network.ims.WifiCallingQueryImsState;
 import com.android.settings.search.actionbar.SearchMenuController;
-import com.android.settings.support.actionbar.HelpMenuController;
 import com.android.settings.support.actionbar.HelpResourceProvider;
 import com.android.settings.widget.RtlCompatibleViewPager;
 import com.android.settings.widget.SlidingTabLayout;
@@ -121,12 +118,6 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        // TODO(b/176883483): Remove the option menu if collapsing toolbar feature rolled out
-        if (!FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)) {
-            setHasOptionsMenu(true);
-            SearchMenuController.init(this /* host */);
-            HelpMenuController.init(this /* host */);
-        }
 
         // TODO: besides in onCreate, we should also update subList when SIM / Sub status
         // changes.
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonFooterPreferenceControllerTest.java
deleted file mode 100644
index 2640c81..0000000
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonFooterPreferenceControllerTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.accessibility;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceScreen;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.settings.R;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-
-/** Tests for {@link AccessibilityButtonFooterPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-public class AccessibilityButtonFooterPreferenceControllerTest {
-
-    private static final String TEST_KEY = "test_key";
-    private static final String TEST_TITLE = "test_title";
-    private final Context mContext = ApplicationProvider.getApplicationContext();
-    private PreferenceScreen mScreen;
-    private AccessibilityButtonFooterPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        final PreferenceManager preferenceManager = new PreferenceManager(mContext);
-        mScreen = preferenceManager.createPreferenceScreen(mContext);
-        final AccessibilityFooterPreference footerPreference =
-                new AccessibilityFooterPreference(mContext);
-        footerPreference.setKey(TEST_KEY);
-        footerPreference.setTitle(TEST_TITLE);
-        mScreen.addPreference(footerPreference);
-        mController = new AccessibilityButtonFooterPreferenceController(mContext, TEST_KEY);
-    }
-
-    @Test
-    public void onPreferenceChange_shouldSetCorrectIconContentDescription() {
-        mController.displayPreference(mScreen);
-
-        final AccessibilityFooterPreference footerPreference = mScreen.findPreference(TEST_KEY);
-        final String packageName = mContext.getString(R.string.accessibility_button_title);
-        final String iconContentDescription = mContext.getString(
-                R.string.accessibility_introduction_title,
-                packageName);
-        assertThat(footerPreference.getIconContentDescription()).isEqualTo(iconContentDescription);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityControlTimeoutFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityControlTimeoutFooterPreferenceControllerTest.java
deleted file mode 100644
index 23e479b..0000000
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityControlTimeoutFooterPreferenceControllerTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.accessibility;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceScreen;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.settings.R;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-
-/** Tests for {@link AccessibilityControlTimeoutFooterPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-public class AccessibilityControlTimeoutFooterPreferenceControllerTest {
-
-    private static final String TEST_KEY = "test_key";
-    private static final String TEST_TITLE = "test_title";
-    private final Context mContext = ApplicationProvider.getApplicationContext();
-    private PreferenceScreen mScreen;
-    private AccessibilityControlTimeoutFooterPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        final PreferenceManager preferenceManager = new PreferenceManager(mContext);
-        mScreen = preferenceManager.createPreferenceScreen(mContext);
-        final AccessibilityFooterPreference footerPreference =
-                new AccessibilityFooterPreference(mContext);
-        footerPreference.setKey(TEST_KEY);
-        footerPreference.setTitle(TEST_TITLE);
-        mScreen.addPreference(footerPreference);
-        mController = new AccessibilityControlTimeoutFooterPreferenceController(mContext, TEST_KEY);
-    }
-
-    @Test
-    public void onPreferenceChange_shouldSetCorrectIconContentDescription() {
-        mController.displayPreference(mScreen);
-
-        final AccessibilityFooterPreference footerPreference =
-                mScreen.findPreference(TEST_KEY);
-        final String packageName =
-                mContext.getString(R.string.accessibility_setting_item_control_timeout_title);
-        final String iconContentDescription = mContext.getString(
-                R.string.accessibility_introduction_title,
-                packageName);
-        assertThat(footerPreference.getIconContentDescription()).isEqualTo(iconContentDescription);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityFooterPreferenceTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityFooterPreferenceTest.java
index b8f97c7..14c56e8 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityFooterPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityFooterPreferenceTest.java
@@ -19,13 +19,12 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.content.Context;
+import android.text.method.MovementMethod;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import androidx.preference.PreferenceViewHolder;
-import androidx.test.core.app.ApplicationProvider;
 
 import com.android.settings.R;
 
@@ -39,10 +38,6 @@
 @RunWith(RobolectricTestRunner.class)
 public final class AccessibilityFooterPreferenceTest {
 
-    private static final String DEFAULT_SUMMARY = "default summary";
-    private static final String DEFAULT_DESCRIPTION = "default description";
-
-    private Context mContext = ApplicationProvider.getApplicationContext();
     private AccessibilityFooterPreference mAccessibilityFooterPreference;
     private PreferenceViewHolder mPreferenceViewHolder;
 
@@ -58,41 +53,22 @@
     }
 
     @Test
-    public void onBindViewHolder_initTextConfig_parseTextAndFocusable() {
-        mAccessibilityFooterPreference.setSummary(DEFAULT_SUMMARY);
+    public void onBindViewHolder_LinkDisabledByDefault_notReturnLinkMovement() {
+        mAccessibilityFooterPreference.onBindViewHolder(mPreferenceViewHolder);
+
+        final TextView summaryView = (TextView) mPreferenceViewHolder.findViewById(
+                android.R.id.title);
+        assertThat(summaryView.getMovementMethod()).isNull();
+    }
+
+    @Test
+    public void onBindViewHolder_setLinkEnabled_returnLinkMovement() {
+        mAccessibilityFooterPreference.setLinkEnabled(true);
 
         mAccessibilityFooterPreference.onBindViewHolder(mPreferenceViewHolder);
 
         final TextView summaryView = (TextView) mPreferenceViewHolder.findViewById(
                 android.R.id.title);
-        assertThat(summaryView.getText().toString()).isEqualTo(DEFAULT_SUMMARY);
-        assertThat(summaryView.isFocusable()).isEqualTo(true);
-    }
-
-    @Test
-    public void onBindViewHolder_initTextConfigAndAccessibleIcon_groupContentForAccessible() {
-        mAccessibilityFooterPreference.setSummary(DEFAULT_SUMMARY);
-        mAccessibilityFooterPreference.setIconContentDescription(DEFAULT_DESCRIPTION);
-
-        mAccessibilityFooterPreference.onBindViewHolder(mPreferenceViewHolder);
-
-        final TextView summaryView = (TextView) mPreferenceViewHolder.findViewById(
-                android.R.id.title);
-        assertThat(summaryView.getText().toString()).isEqualTo(DEFAULT_SUMMARY);
-        assertThat(summaryView.isFocusable()).isEqualTo(false);
-        final LinearLayout infoFrame = (LinearLayout) mPreferenceViewHolder.findViewById(
-                R.id.icon_frame);
-        assertThat(infoFrame.getContentDescription()).isEqualTo(DEFAULT_DESCRIPTION);
-        assertThat(infoFrame.isFocusable()).isEqualTo(false);
-    }
-
-    @Test
-    public void appendHelpLink_timeoutHelpUri_updateSummary() {
-        mAccessibilityFooterPreference.setSummary(DEFAULT_SUMMARY);
-
-        mAccessibilityFooterPreference.appendHelpLink(R.string.help_url_timeout);
-
-        final String title = mAccessibilityFooterPreference.getTitle().toString();
-        assertThat(title.contains(mContext.getString(R.string.footer_learn_more))).isTrue();
+        assertThat(summaryView.getMovementMethod()).isInstanceOf(MovementMethod.class);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/accessibility/CaptionFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/CaptionFooterPreferenceControllerTest.java
deleted file mode 100644
index e5f67c5..0000000
--- a/tests/robotests/src/com/android/settings/accessibility/CaptionFooterPreferenceControllerTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.accessibility;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceScreen;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.settings.R;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-
-/** Tests for {@link CaptionFooterPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-public class CaptionFooterPreferenceControllerTest {
-
-    private static final String TEST_KEY = "test_key";
-    private static final String TEST_TITLE = "test_title";
-    private final Context mContext = ApplicationProvider.getApplicationContext();
-    private PreferenceScreen mScreen;
-    private CaptionFooterPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        final PreferenceManager preferenceManager = new PreferenceManager(mContext);
-        mScreen = preferenceManager.createPreferenceScreen(mContext);
-        final AccessibilityFooterPreference footerPreference =
-                new AccessibilityFooterPreference(mContext);
-        footerPreference.setKey(TEST_KEY);
-        footerPreference.setTitle(TEST_TITLE);
-        mScreen.addPreference(footerPreference);
-        mController = new CaptionFooterPreferenceController(mContext, TEST_KEY);
-    }
-
-    @Test
-    public void onPreferenceChange_shouldSetCorrectIconContentDescription() {
-        mController.displayPreference(mScreen);
-
-        final AccessibilityFooterPreference footerPreference = mScreen.findPreference(TEST_KEY);
-        final String packageName = mContext.getString(R.string.accessibility_captioning_title);
-        final String iconContentDescription = mContext.getString(
-                R.string.accessibility_introduction_title,
-                packageName);
-        assertThat(footerPreference.getIconContentDescription()).isEqualTo(iconContentDescription);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickFooterPreferenceControllerTest.java
deleted file mode 100644
index 2be4752..0000000
--- a/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickFooterPreferenceControllerTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.accessibility;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceScreen;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.settings.R;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-
-/** Tests for {@link ToggleAutoclickFooterPreferenceController}. */
-@RunWith(RobolectricTestRunner.class)
-public class ToggleAutoclickFooterPreferenceControllerTest {
-
-    private static final String TEST_KEY = "test_key";
-    private static final String TEST_TITLE = "test_title";
-    private final Context mContext = ApplicationProvider.getApplicationContext();
-    private PreferenceScreen mScreen;
-    private ToggleAutoclickFooterPreferenceController mController;
-
-    @Before
-    public void setUp() {
-        final PreferenceManager preferenceManager = new PreferenceManager(mContext);
-        mScreen = preferenceManager.createPreferenceScreen(mContext);
-        final AccessibilityFooterPreference footerPreference =
-                new AccessibilityFooterPreference(mContext);
-        footerPreference.setKey(TEST_KEY);
-        footerPreference.setTitle(TEST_TITLE);
-        mScreen.addPreference(footerPreference);
-        mController = new ToggleAutoclickFooterPreferenceController(mContext, TEST_KEY);
-    }
-
-    @Test
-    public void onPreferenceChange_shouldSetCorrectIconContentDescription() {
-        mController.displayPreference(mScreen);
-
-        final AccessibilityFooterPreference footerPreference = mScreen.findPreference(TEST_KEY);
-        final String packageName = mContext.getString(
-                R.string.accessibility_autoclick_preference_title);
-        final String iconContentDescription = mContext.getString(
-                R.string.accessibility_introduction_title,
-                packageName);
-        assertThat(footerPreference.getIconContentDescription()).isEqualTo(iconContentDescription);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
index 01e9b38..4f4185c 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
@@ -215,8 +215,6 @@
                 (AccessibilityFooterPreference) mFragment.getPreferenceScreen().getPreference(
                         mFragment.getPreferenceScreen().getPreferenceCount() - 1);
         assertThat(accessibilityFooterPreference.getSummary()).isEqualTo(DEFAULT_SUMMARY);
-        assertThat(accessibilityFooterPreference.getIconContentDescription()).isEqualTo(
-                DEFAULT_DESCRIPTION);
         assertThat(accessibilityFooterPreference.isSelectable()).isEqualTo(true);
         assertThat(accessibilityFooterPreference.getOrder()).isEqualTo(Integer.MAX_VALUE - 1);
     }
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/ExtraAppInfoFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/ExtraAppInfoFeatureProviderImplTest.java
new file mode 100644
index 0000000..d8ba073
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/ExtraAppInfoFeatureProviderImplTest.java
@@ -0,0 +1,54 @@
+/*
+ * 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.applications.appinfo;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(RobolectricTestRunner.class)
+public class ExtraAppInfoFeatureProviderImplTest {
+    private Context mContext;
+    private ExtraAppInfoFeatureProviderImpl mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mController = new ExtraAppInfoFeatureProviderImpl();
+    }
+
+    @Test
+    public void isSupported_notSupportedByDefault() {
+        assertThat(mController.isSupported(mContext)).isEqualTo(false);
+    }
+
+    @Test
+    public void isEnabled_notEnabledByDefault() {
+        assertThat(mController.isEnabled(mContext)).isEqualTo(false);
+    }
+
+    @Test
+    public void getSummary_emptyByDefault() {
+        assertThat(mController.getSummary(mContext)).isEqualTo("");
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/core/SubSettingLauncherTest.java b/tests/robotests/src/com/android/settings/core/SubSettingLauncherTest.java
index a74c01e..2a0d3df 100644
--- a/tests/robotests/src/com/android/settings/core/SubSettingLauncherTest.java
+++ b/tests/robotests/src/com/android/settings/core/SubSettingLauncherTest.java
@@ -50,7 +50,6 @@
 import org.robolectric.RuntimeEnvironment;
 
 @RunWith(RobolectricTestRunner.class)
-@Config(shadows = ShadowUtils.class)
 public class SubSettingLauncherTest {
 
     @Mock
@@ -117,7 +116,6 @@
 
     @Test
     public void launch_hasRequestListener_shouldStartActivityForResult() {
-        ShadowUtils.setIsPageTransitionEnabled(true);
         final int requestCode = 123123;
         when(mFragment.getActivity()).thenReturn(mActivity);
 
diff --git a/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java
new file mode 100644
index 0000000..cb53805
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java
@@ -0,0 +1,63 @@
+/*
+ * 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.widget;
+
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.ImageView;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.util.ReflectionHelpers;
+
+@RunWith(RobolectricTestRunner.class)
+public class SettingsMainSwitchPreferenceTest {
+
+    @Mock
+    private EnforcedAdmin mEnforcedAdmin;
+    private SettingsMainSwitchPreference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        final Context context = RuntimeEnvironment.application;
+        final SettingsMainSwitchBar switchBar = new SettingsMainSwitchBar(context);
+        mPreference = new SettingsMainSwitchPreference(context);
+        ReflectionHelpers.setField(mPreference, "mEnforcedAdmin", mEnforcedAdmin);
+        ReflectionHelpers.setField(mPreference, "mMainSwitchBar", switchBar);
+    }
+
+    @Test
+    public void updateStatus_isRestricted_restrictIconShouldDisplay() {
+        mPreference.updateStatus(true);
+
+        final SettingsMainSwitchBar switchBar = mPreference.getSwitchBar();
+        final ImageView restrictedIcon = switchBar.findViewById(
+                com.android.settingslib.widget.R.id.restricted_icon);
+
+        assertThat(restrictedIcon.getVisibility() == View.VISIBLE).isTrue();
+    }
+}