Merge "Revert "Support highlightable Settings homepage menu for 2-pane"" into sc-v2-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a34713d..d04b884 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1680,6 +1680,10 @@
         </activity-alias>
 
         <activity
+            android:name=".accessibility.AccessibilityScreenSizeForSetupWizardActivity"
+            android:exported="false"/>
+
+        <activity
             android:name="Settings$AccessibilityDaltonizerSettingsActivity"
             android:exported="true"
             android:label="@string/accessibility_display_daltonizer_preference_title">
@@ -2234,6 +2238,7 @@
         </activity>
 
         <activity android:name=".bluetooth.BluetoothPairingDialog"
+                  android:permission="android.permission.BLUETOOTH_PRIVILEGED"
                   android:excludeFromRecents="true"
                   android:windowSoftInputMode="stateVisible|adjustResize"
                   android:theme="@style/Theme.AlertDialog"
@@ -2996,10 +3001,6 @@
             </intent-filter>
         </activity>
 
-        <!--
-            The Wi-Fi result data will only be returned from WifiDialogActivity if the calling
-            package has ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission. (see b/185126813)
-        -->
         <activity
             android:name=".wifi.WifiDialogActivity"
             android:label=""
@@ -3675,6 +3676,11 @@
             </intent-filter>
         </provider>
 
+        <provider
+            android:name=".activityembedding.ActivityEmbeddingProvider"
+            android:authorities="com.android.settings.activityembedding"
+            android:exported="true"/>
+
         <activity
             android:name=".wifi.dpp.WifiDppConfiguratorActivity"
             android:exported="true">
diff --git a/libs/window_ext_lib.aar b/libs/window_ext_lib.aar
index 301ff96..c576270 100644
--- a/libs/window_ext_lib.aar
+++ b/libs/window_ext_lib.aar
Binary files differ
diff --git a/res/layout/accessibility_screen_size_setup_wizard.xml b/res/layout/accessibility_screen_size_setup_wizard.xml
new file mode 100644
index 0000000..e4bc55b
--- /dev/null
+++ b/res/layout/accessibility_screen_size_setup_wizard.xml
@@ -0,0 +1,31 @@
+<?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.
+-->
+<com.google.android.setupdesign.GlifLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/setup_wizard_layout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:icon="@drawable/ic_accessibility_visibility"
+    app:sucHeaderText="@string/title_font_size"
+    app:sudDescriptionText="@string/short_summary_font_size">
+
+    <FrameLayout
+        android:id="@+id/content_frame"
+        android:layout_marginTop="@dimen/preview_size_top_margin"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+</com.google.android.setupdesign.GlifLayout>
\ No newline at end of file
diff --git a/res/layout/preference_balance_slider.xml b/res/layout/preference_balance_slider.xml
index b84afbd..7f1e809 100644
--- a/res/layout/preference_balance_slider.xml
+++ b/res/layout/preference_balance_slider.xml
@@ -64,7 +64,7 @@
                 android:id="@*android:id/seekbar"
                 android:minHeight="?android:attr/listPreferredItemHeightSmall"
                 android:paddingStart="0dp"
-                android:paddingEnd="12dp"
+                android:paddingEnd="0dp"
                 android:layout_gravity="center_vertical"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"/>
diff --git a/res/layout/suw_font_size_fragment.xml b/res/layout/suw_font_size_fragment.xml
new file mode 100644
index 0000000..0e03a69
--- /dev/null
+++ b/res/layout/suw_font_size_fragment.xml
@@ -0,0 +1,86 @@
+<?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.
+-->
+<androidx.core.widget.NestedScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fillViewport="true">
+
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <include layout="@layout/suw_preview_seek_bar_view_pager"/>
+
+        <LinearLayout
+            android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+            android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+
+            <com.android.settings.widget.DotsPageIndicator
+                android:id="@+id/page_indicator"
+                style="@style/PreviewPagerPageIndicator"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:padding="3dp"/>
+
+            <TextView
+                android:id="@+id/current_label"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:padding="6dp"
+                android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.TextView"
+                android:elevation="2dp"/>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center_vertical"
+                android:paddingTop="8dp">
+
+                <ImageView
+                    android:id="@+id/smaller"
+                    android:src="@drawable/ic_font_size_16dp"
+                    android:contentDescription="@string/font_size_make_smaller_desc"
+                    style="@style/screen_size_imageview_style"/>
+
+                <com.android.settings.widget.LabeledSeekBar
+                    android:id="@+id/seek_bar"
+                    android:layout_width="0dp"
+                    android:layout_height="48dp"
+                    android:layout_weight="1"
+                    style="@android:style/Widget.Material.SeekBar.Discrete"/>
+
+                <ImageView
+                    android:id="@+id/larger"
+                    android:src="@drawable/ic_font_size_24dp"
+                    android:contentDescription="@string/font_size_make_larger_desc"
+                    style="@style/screen_size_imageview_style"/>
+            </LinearLayout>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/font_size_summary"
+                android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"/>
+        </LinearLayout>
+    </LinearLayout>
+</androidx.core.widget.NestedScrollView>
diff --git a/res/layout/suw_preview_seek_bar_view_pager.xml b/res/layout/suw_preview_seek_bar_view_pager.xml
new file mode 100644
index 0000000..71ec5f0
--- /dev/null
+++ b/res/layout/suw_preview_seek_bar_view_pager.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="0dp"
+    android:layout_weight="1"
+    android:orientation="vertical"
+    android:paddingStart="@dimen/preview_pager_padding"
+    android:paddingEnd="@dimen/preview_pager_padding"
+    android:background="@drawable/preview_seek_bar_outline" >
+
+    <androidx.viewpager.widget.ViewPager
+        android:id="@+id/preview_pager"
+        android:layout_width="match_parent"
+        android:layout_height="200dp"
+        android:layout_weight="1"
+        android:background="?android:attr/colorBackground"
+        android:contentDescription="@string/preview_pager_content_description" />
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="36dp"
+        android:paddingStart="32dp"
+        android:gravity="start|center"
+        android:text="@string/screen_zoom_preview_title"
+        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title"
+        android:importantForAccessibility="no" />
+</LinearLayout>
+
diff --git a/res/layout/suw_screen_zoom_fragment.xml b/res/layout/suw_screen_zoom_fragment.xml
new file mode 100644
index 0000000..0747381
--- /dev/null
+++ b/res/layout/suw_screen_zoom_fragment.xml
@@ -0,0 +1,85 @@
+<?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.
+-->
+<androidx.core.widget.NestedScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fillViewport="true">
+
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <include layout="@layout/suw_preview_seek_bar_view_pager"/>
+
+        <LinearLayout
+            android:orientation="vertical"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+            android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+
+            <com.android.settings.widget.DotsPageIndicator
+                android:id="@+id/page_indicator"
+                style="@style/PreviewPagerPageIndicator"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:padding="3dp"/>
+
+            <TextView
+                android:id="@+id/current_label"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:padding="6dp"
+                android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.TextView"
+                android:elevation="2dp"/>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center_vertical">
+
+                <ImageView
+                    android:id="@+id/smaller"
+                    android:src="@drawable/ic_remove_24dp"
+                    android:contentDescription="@string/screen_zoom_make_smaller_desc"
+                    style="@style/screen_size_imageview_style"/>
+
+                <com.android.settings.widget.LabeledSeekBar
+                    android:id="@+id/seek_bar"
+                    android:layout_width="0dp"
+                    android:layout_height="48dp"
+                    android:layout_weight="1"
+                    style="@android:style/Widget.Material.SeekBar.Discrete"/>
+
+                <ImageView
+                    android:id="@+id/larger"
+                    android:src="@drawable/ic_add_24dp"
+                    android:contentDescription="@string/screen_zoom_make_larger_desc"
+                    style="@style/screen_size_imageview_style"/>
+            </LinearLayout>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/screen_zoom_summary"
+                android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"/>
+        </LinearLayout>
+    </LinearLayout>
+</androidx.core.widget.NestedScrollView>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 854a73d..df72cdf 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -1938,7 +1938,7 @@
     <string name="location_low_battery_use" msgid="5218950289737996431">"استخدام منخفض للبطارية"</string>
     <string name="location_scanning_wifi_always_scanning_title" msgid="5004781272733434794">"‏البحث عن شبكات Wi‑Fi"</string>
     <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"‏يمكنك السماح للتطبيقات والخدمات بالبحث عن الأجهزة المجاورة في أي وقت، حتى في حال إيقاف Wi‑Fi. ويمكن استخدام هذه البيانات مثلاً لتحسين الميزات والخدمات المستندة إلى الموقع الجغرافي."</string>
-    <string name="location_scanning_bluetooth_always_scanning_title" msgid="1809309545730215891">"البحث عن بلوتوث"</string>
+    <string name="location_scanning_bluetooth_always_scanning_title" msgid="1809309545730215891">"البحث عن أجهزة تتضمن بلوتوث"</string>
     <string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"يمكنك السماح للتطبيقات والخدمات بالبحث عن الأجهزة المجاورة في أي وقت، حتى في حال إيقاف البلوتوث. ويمكن استخدام هذه البيانات مثلاً لتحسين الميزات والخدمات المستندة إلى الموقع الجغرافي."</string>
     <string name="location_services_preference_title" msgid="604317859531782159">"خدمات الموقع الجغرافي"</string>
     <string name="location_services_screen_title" msgid="5640002489976602476">"خدمات الموقع الجغرافي"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 1e0a82d..b005ed8 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -452,16 +452,11 @@
     <string name="security_settings_biometric_preference_summary_both_fp_single" msgid="684409535278676426">"মুখাৱয়ব আৰু ফিংগাৰপ্ৰিণ্ট যোগ দিয়া হ’ল"</string>
     <string name="biometric_settings_intro" msgid="4263069383955676756">"আপুনি ফেচ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিলে, আপুনি মুখা পিন্ধি থাকিলে অথবা কোনো অন্ধকাৰ ঠাইত থাকিলে আপোনাৰ ফ’নটোৱে আপোনাৰ ফিংগাৰপ্ৰিণ্ট বিচাৰিব"</string>
     <string name="biometric_settings_category_ways_to_unlock" msgid="3384767901580915266">"আনলক কৰাৰ উপায়"</string>
-    <!-- no translation found for biometric_settings_use_biometric_unlock_phone (8180914579885804358) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_biometric_for_apps (6201168728906364189) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_face_preference_summary (1821648836899408477) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_fingerprint_preference_summary (6077762097826050165) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_face_or_fingerprint_preference_summary (3029102492674234728) -->
-    <skip />
+    <string name="biometric_settings_use_biometric_unlock_phone" msgid="8180914579885804358">"আপোনাৰ ফ’নটো আনলক কৰক"</string>
+    <string name="biometric_settings_use_biometric_for_apps" msgid="6201168728906364189">"এইগৰাকী আপুনিয়েই বুলি এপ্‌সমূহত সত্যাপন কৰক"</string>
+    <string name="biometric_settings_use_face_preference_summary" msgid="1821648836899408477">"মুখাৱয়ব ব্যৱহাৰ কৰি"</string>
+    <string name="biometric_settings_use_fingerprint_preference_summary" msgid="6077762097826050165">"ফিংগাৰপ্ৰিণ্ট ব্যৱহাৰ কৰি"</string>
+    <string name="biometric_settings_use_face_or_fingerprint_preference_summary" msgid="3029102492674234728">"মুখাৱয়ব অথবা ফিংগাৰপ্ৰিণ্ট ব্যৱহাৰ কৰি"</string>
     <string name="biometric_settings_hand_back_to_guardian" msgid="3747619291972376153">"আপোনাৰ অভিভাৱকক ফ’নটো উভতাই দিয়ক"</string>
     <string name="biometric_settings_hand_back_to_guardian_ok" msgid="1763788801883247426">"ঠিক আছে"</string>
     <string name="lock_screen_intro_skip_title" msgid="342553937472568925">"স্ক্ৰীন লক ছেট নকৰাকৈ এৰি যাব?"</string>
@@ -4992,7 +4987,7 @@
       <item quantity="one">টা কেমেৰা এপ্‌</item>
       <item quantity="other">টা কেমেৰা এপ্‌</item>
     </plurals>
-    <string name="default_calendar_app_title" msgid="1870095225089706093">"কেলণ্ডাৰ এপ্"</string>
+    <string name="default_calendar_app_title" msgid="1870095225089706093">"Calendar এপ্"</string>
     <string name="default_contacts_app_title" msgid="7740028900741944569">"সম্পৰ্কসূচীৰ এপ্"</string>
     <plurals name="default_email_app_title" formatted="false" msgid="8338194872609410234">
       <item quantity="one">ইমেইল ক্লাইণ্ট এপসমূহ</item>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index bfa365b..cd6dd61 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -452,16 +452,11 @@
     <string name="security_settings_biometric_preference_summary_both_fp_single" msgid="684409535278676426">"ফেস এবং আঙ্গুলের ছাপ যোগ করা হয়েছে"</string>
     <string name="biometric_settings_intro" msgid="4263069383955676756">"আপনি \'ফেস আনলক\' ও \'ফিঙ্গারপ্রিন্ট আনলক\' সেট আপ করলে, আপনি মাস্ক পরে থাকলে বা অন্ধকার জায়গায় থাকলে আপনার ফোন আঙ্গুলের ছাপ চাইবে"</string>
     <string name="biometric_settings_category_ways_to_unlock" msgid="3384767901580915266">"আনলক করার বিভিন্ন উপায়"</string>
-    <!-- no translation found for biometric_settings_use_biometric_unlock_phone (8180914579885804358) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_biometric_for_apps (6201168728906364189) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_face_preference_summary (1821648836899408477) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_fingerprint_preference_summary (6077762097826050165) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_face_or_fingerprint_preference_summary (3029102492674234728) -->
-    <skip />
+    <string name="biometric_settings_use_biometric_unlock_phone" msgid="8180914579885804358">"আপনার ফোন আনলক করুন"</string>
+    <string name="biometric_settings_use_biometric_for_apps" msgid="6201168728906364189">"অ্যাপে আপনার পরিচয় যাচাই করুন"</string>
+    <string name="biometric_settings_use_face_preference_summary" msgid="1821648836899408477">"মুখ ব্যবহার করে"</string>
+    <string name="biometric_settings_use_fingerprint_preference_summary" msgid="6077762097826050165">"আঙুলের ছাপ ব্যবহার করে"</string>
+    <string name="biometric_settings_use_face_or_fingerprint_preference_summary" msgid="3029102492674234728">"মুখ বা আঙুলের ছাপ ব্যবহার করে"</string>
     <string name="biometric_settings_hand_back_to_guardian" msgid="3747619291972376153">"ফোন অভিভাবকের কাছে ফিরিয়ে দিন"</string>
     <string name="biometric_settings_hand_back_to_guardian_ok" msgid="1763788801883247426">"ঠিক আছে"</string>
     <string name="lock_screen_intro_skip_title" msgid="342553937472568925">"স্ক্রিন লক এড়িয়ে যেতে চান?"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 63ee63f..4ea94e2 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -1424,7 +1424,7 @@
     <string name="lift_to_wake_title" msgid="8994218158737714046">"Løft enheden for at vække den"</string>
     <string name="ambient_display_screen_title" msgid="8615947016991429325">"Aktiv låseskærm"</string>
     <string name="ambient_display_category_triggers" msgid="1216640141609270011">"Hvornår skal det vises"</string>
-    <string name="doze_title" msgid="1523090408230862316">"Væk skærmen for notifikationer"</string>
+    <string name="doze_title" msgid="1523090408230862316">"Væk skærmen ved notifikationer"</string>
     <string name="doze_summary" msgid="8252867381522942804">"Når skærmen er mørk, aktiveres den ved modtagelse af nye notifikationer"</string>
     <string name="doze_always_on_title" msgid="7326245192352868477">"Vis altid tidspunkt og info"</string>
     <string name="doze_always_on_summary" msgid="509097829739647852">"Øget batteriforbrug"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 113d1a2..7d2ddca 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -1401,7 +1401,7 @@
     <string name="dark_ui_text" msgid="4392646155331126666">"Beim dunklen Design ist der Hintergrund einiger Bildschirme schwarz, damit dein Akku länger hält. Zeitpläne für das dunkle Design werden erst aktiviert, wenn das Display aus ist."</string>
     <string name="screen_timeout" msgid="7709947617767439410">"Display automatisch ausschalten"</string>
     <string name="screen_timeout_title" msgid="785134393520893049">"Display wird ausgeschaltet."</string>
-    <string name="screen_timeout_summary" msgid="5558778019594643427">"Nach <xliff:g id="TIMEOUT_DESCRIPTION">%1$s</xliff:g> ohne Aktivität"</string>
+    <string name="screen_timeout_summary" msgid="5558778019594643427">"<xliff:g id="TIMEOUT_DESCRIPTION">%1$s</xliff:g> ohne Aktivität"</string>
     <string name="wallpaper_settings_title" msgid="5635129851136006383">"Hintergrund"</string>
     <string name="style_and_wallpaper_settings_title" msgid="2232042809407308946">"Hintergrund &amp; Stil"</string>
     <string name="wallpaper_dashboard_summary" msgid="2324472863981057118">"Startseite, Sperrbildschirm"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 3a9335f..0260e4a 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -1550,8 +1550,8 @@
     <string name="sd_eject_summary" product="default" msgid="5151243312587186226">"Desconectar la tarjeta SD para extraerla de forma segura"</string>
     <string name="sd_insert_summary" product="nosdcard" msgid="9164545135649775664">"Inserta USB para activar almacenamiento"</string>
     <string name="sd_insert_summary" product="default" msgid="5949168259622002192">"Insertar una tarjeta SD para el montaje"</string>
-    <string name="sd_mount" product="nosdcard" msgid="8305985249945415150">"Activar almacenamiento USB"</string>
-    <string name="sd_mount" product="default" msgid="5279813999455776169">"Activar tarjeta SD"</string>
+    <string name="sd_mount" product="nosdcard" msgid="8305985249945415150">"Montar almacenamiento USB"</string>
+    <string name="sd_mount" product="default" msgid="5279813999455776169">"Montar tarjeta SD"</string>
     <string name="sd_mount_summary" product="nosdcard" msgid="2190410240845521205"></string>
     <string name="sd_mount_summary" product="default" msgid="2190410240845521205"></string>
     <string name="sd_format" product="nosdcard" msgid="8657427883364711513">"Borrar almacenamiento USB"</string>
@@ -1574,7 +1574,7 @@
     <string name="storage_low_title" msgid="8002650511493419567">"No queda espacio de almacenamiento"</string>
     <string name="storage_low_summary" msgid="7341022293583384506">"Es posible que algunas funciones del sistema, como la sincronización, no funcionen correctamente. Prueba a eliminar o a desactivar elementos para liberar espacio (por ejemplo, aplicaciones o contenido multimedia)."</string>
     <string name="storage_menu_rename" msgid="8549835371429159336">"Cambiar nombre"</string>
-    <string name="storage_menu_mount" msgid="4760531872302820569">"Activar"</string>
+    <string name="storage_menu_mount" msgid="4760531872302820569">"Montar"</string>
     <string name="storage_menu_unmount" msgid="8171552487742912282">"Expulsar"</string>
     <string name="storage_menu_format" msgid="5454870642788909443">"Formatear"</string>
     <string name="storage_menu_format_public" msgid="5567214442727034630">"Formatear como portátil"</string>
@@ -1601,13 +1601,13 @@
     <string name="storage_size_large" msgid="1155308277890194878">"<xliff:g id="NUMBER">^1</xliff:g>"<small><small>" <xliff:g id="UNIT">^2</xliff:g>"</small></small>""</string>
     <string name="storage_volume_used" msgid="5031288167242496837">"En uso de <xliff:g id="TOTAL">%1$s</xliff:g>"</string>
     <string name="storage_mount_success" msgid="393972242641313135">"<xliff:g id="NAME">%1$s</xliff:g> se ha activado"</string>
-    <string name="storage_mount_failure" msgid="3667915814876418011">"Error al activar <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="storage_mount_failure" msgid="3667915814876418011">"Error al montar <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="storage_unmount_success" msgid="6406298575402936148">"<xliff:g id="NAME">%1$s</xliff:g> se ha expulsado de forma segura"</string>
     <string name="storage_unmount_failure" msgid="3796912279003790607">"No se ha podido expulsar <xliff:g id="NAME">%1$s</xliff:g> de forma segura"</string>
     <string name="storage_format_success" msgid="3028114521294256851">"<xliff:g id="NAME">%1$s</xliff:g> se ha formateado"</string>
     <string name="storage_format_failure" msgid="2042691589726261987">"Error al formatear <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="storage_rename_title" msgid="5911285992205282312">"Cambiar nombre de almacenamiento"</string>
-    <string name="storage_dialog_unmounted" msgid="1187960789775910051">"Este dispositivo de almacenamiento (<xliff:g id="NAME_0">^1</xliff:g>) se ha extraído de forma segura, pero sigue estando disponible. \n\nPara utilizar el dispositivo (<xliff:g id="NAME_1">^1</xliff:g>), debes activarlo."</string>
+    <string name="storage_dialog_unmounted" msgid="1187960789775910051">"Este dispositivo de almacenamiento (<xliff:g id="NAME_0">^1</xliff:g>) se ha extraído de forma segura, pero sigue estando disponible. \n\nPara utilizar el dispositivo (<xliff:g id="NAME_1">^1</xliff:g>), debes montarlo."</string>
     <string name="storage_dialog_unmountable" msgid="1761107904296941687">"Este dispositivo de almacenamiento (<xliff:g id="NAME_0">^1</xliff:g>) está dañado. \n\nPara utilizar el dispositivo (<xliff:g id="NAME_1">^1</xliff:g>), debes configurarlo."</string>
     <string name="storage_internal_format_details" msgid="8922023528848861812">"Después de formatear la unidad, puedes utilizar tu <xliff:g id="NAME_0">^1</xliff:g> en otros dispositivos. \n\nTe recomendamos que hagas una copia de seguridad de los datos de tu <xliff:g id="NAME_1">^1</xliff:g>, ya que se borrarán cuando se formatee. \n\n"<b>"Copia de seguridad de fotos y de otro contenido multimedia"</b>" \nMueve tus archivos multimedia a otro espacio de almacenamiento del dispositivo o transfiérelos a un ordenador con un cable USB. \n\n"<b>"Copia de seguridad de aplicaciones"</b>" \nSe desinstalarán todas las aplicaciones almacenadas en tu <xliff:g id="NAME_6">^1</xliff:g> y se borrarán sus datos. Para conservarlas, muévelas a otro espacio de almacenamiento del dispositivo."</string>
     <string name="storage_internal_unmount_details" msgid="487689543322907311"><b>"Al extraer tu <xliff:g id="NAME_0">^1</xliff:g>, las aplicaciones almacenadas en esta unidad dejarán de funcionar y los archivos multimedia guardados en ella no estarán disponibles hasta que se vuelva a insertar."</b>" \n\nTu <xliff:g id="NAME_1">^1</xliff:g> se ha formateado para que solo funcione en este dispositivo."</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 6afeef2..7a091b8 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -380,8 +380,8 @@
     <string name="security_settings_face_enroll_must_re_enroll_title" msgid="4421818770682557621">"Konfiguratu berriro aurpegi bidez desblokeatzeko eginbidea"</string>
     <string name="security_settings_face_enroll_must_re_enroll_subtitle" msgid="3584740139535177961">"Hobetu segurtasuna eta errendimendua"</string>
     <string name="security_settings_face_enroll_improve_face_alert_title" msgid="6194184776580066012">"Konfiguratu aurpegi bidez desblokeatzeko eginbidea"</string>
-    <string name="security_settings_face_enroll_improve_face_alert_body" msgid="2670118180411127323">"Ezabatu une honetako aurpegi-eredua aurpegi bidez desblokeatzeko eginbidea berriro konfiguratzeko.\n\nAurpegi-eredua betiko eta modu seguruan ezabatuko da.\n\nEzabatu ondoren, PINa, eredua edo pasahitza beharko duzu telefonoa desblokeatzeko edo aplikazioetan autentifikatzeko."</string>
-    <string name="security_settings_face_enroll_improve_face_alert_body_fingerprint" msgid="2469599074650327489">"Ezabatu une honetako aurpegi-eredua aurpegi bidez desblokeatzeko eginbidea berriro konfiguratzeko.\n\nAurpegi-eredua betiko eta modu seguruan ezabatuko da.\n\nEzabatu ondoren, hatz-marka, PINa, eredua edo pasahitza beharko duzu telefonoa desblokeatzeko edo aplikazioetan autentifikatzeko."</string>
+    <string name="security_settings_face_enroll_improve_face_alert_body" msgid="2670118180411127323">"Aurpegi bidez desblokeatzeko eginbidea berriro konfiguratu nahi baduzu, lehendabizi ezabatu oraingo aurpegi-eredua.\n\nAurpegi-eredua betiko eta modu seguruan ezabatuko da.\n\nEzabatu ondoren, PINa, eredua edo pasahitza beharko duzu telefonoa desblokeatzeko edo aplikazioetan autentifikatzeko."</string>
+    <string name="security_settings_face_enroll_improve_face_alert_body_fingerprint" msgid="2469599074650327489">"Aurpegi bidez desblokeatzeko eginbidea berriro konfiguratu nahi baduzu, lehendabizi ezabatu oraingo aurpegi-eredua.\n\nAurpegi-eredua betiko eta modu seguruan ezabatuko da.\n\nEzabatu ondoren, hatz-marka, PINa, eredua edo pasahitza beharko duzu telefonoa desblokeatzeko edo aplikazioetan autentifikatzeko."</string>
     <string name="security_settings_face_settings_use_face_category" msgid="1638314154119800188">"Erabili hauetarako:"</string>
     <string name="security_settings_face_settings_preferences_category" msgid="7628929873407280453">"Aurpegi bidez desblokeatzeko eginbidea erabiltzean"</string>
     <string name="security_settings_face_settings_require_attention" msgid="4395309855914391104">"Begiek irekita egon behar dute"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 9abb955..f151349 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -452,16 +452,11 @@
     <string name="security_settings_biometric_preference_summary_both_fp_single" msgid="684409535278676426">"ચહેરાનું મૉડલ અને ફિંગરપ્રિન્ટ ઉમેરી"</string>
     <string name="biometric_settings_intro" msgid="4263069383955676756">"જ્યારે તમે ફેસ અનલૉક અને ફિંગરપ્રિન્ટ અનલૉક સુવિધાનું સેટઅપ કરો, ત્યારે તમે માસ્ક પહેર્યું હોય કે અંધારિયા વિસ્તારમાં હો, ત્યારે તમારો ફોન તમારી ફિંગરપ્રિન્ટ આપવા માટે કહેશે"</string>
     <string name="biometric_settings_category_ways_to_unlock" msgid="3384767901580915266">"અનલૉક કરવાની રીતો"</string>
-    <!-- no translation found for biometric_settings_use_biometric_unlock_phone (8180914579885804358) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_biometric_for_apps (6201168728906364189) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_face_preference_summary (1821648836899408477) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_fingerprint_preference_summary (6077762097826050165) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_face_or_fingerprint_preference_summary (3029102492674234728) -->
-    <skip />
+    <string name="biometric_settings_use_biometric_unlock_phone" msgid="8180914579885804358">"તમારા ફોનને અનલૉક કરો"</string>
+    <string name="biometric_settings_use_biometric_for_apps" msgid="6201168728906364189">"ઍપનો ઉપયોગ કરનારા એ તમે જ છો તેની ચકાસણી કરો"</string>
+    <string name="biometric_settings_use_face_preference_summary" msgid="1821648836899408477">"ચહેરાનો ઉપયોગ કરીને"</string>
+    <string name="biometric_settings_use_fingerprint_preference_summary" msgid="6077762097826050165">"ફિંગરપ્રિન્ટનો ઉપયોગ કરીને"</string>
+    <string name="biometric_settings_use_face_or_fingerprint_preference_summary" msgid="3029102492674234728">"ચહેરા કે ફિંગરપ્રિન્ટનો ઉપયોગ કરીને"</string>
     <string name="biometric_settings_hand_back_to_guardian" msgid="3747619291972376153">"તમારા માતાપિતાને ફોન પાછો આપો"</string>
     <string name="biometric_settings_hand_back_to_guardian_ok" msgid="1763788801883247426">"ઓકે"</string>
     <string name="lock_screen_intro_skip_title" msgid="342553937472568925">"સ્ક્રીન લૉક છોડી દઈએ?"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 12f8252..89fe6bd 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -3414,8 +3414,8 @@
     <string name="enhanced_4g_lte_mode_title" msgid="6624700245232361149">"VoLTE"</string>
     <string name="enhanced_4g_lte_mode_title_advanced_calling" msgid="7066009898031465265">"Advanced Calling"</string>
     <string name="enhanced_4g_lte_mode_title_4g_calling" msgid="7445853566718786195">"Panggilan 4G"</string>
-    <string name="enhanced_4g_lte_mode_summary" msgid="1067066329756036427">"Gunakan layanan LTE untuk meningkatkan panggilan suara (direkomendasikan)"</string>
-    <string name="enhanced_4g_lte_mode_summary_4g_calling" msgid="2575004054914178405">"Gunakan layanan 4G untuk meningkatkan panggilan suara (direkomendasikan)"</string>
+    <string name="enhanced_4g_lte_mode_summary" msgid="1067066329756036427">"Gunakan layanan LTE untuk meningkatkan kualitas panggilan suara (direkomendasikan)"</string>
+    <string name="enhanced_4g_lte_mode_summary_4g_calling" msgid="2575004054914178405">"Gunakan layanan 4G untuk meningkatkan kualitas panggilan suara (direkomendasikan)"</string>
     <string name="nr_advanced_calling_title" msgid="6106286679535355939">"Vo5G"</string>
     <string name="nr_advanced_calling_summary" msgid="6926192539172030330">"Gunakan 5G untuk panggilan suara"</string>
     <string name="contact_discovery_opt_in_title" msgid="8708034790649773814">"Kirimkan kontak ke operator"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index b45b971..92f96df 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -2049,8 +2049,8 @@
     <string name="uninstall_text" msgid="315764653029060126">"Avinstaller"</string>
     <string name="uninstall_all_users_text" msgid="5924715251087176474">"Avinstaller for alle brukere"</string>
     <string name="install_text" msgid="4558333621516996473">"Installer"</string>
-    <string name="disable_text" msgid="5146002260857428005">"Slå av"</string>
-    <string name="enable_text" msgid="8570798764647110430">"Slå på"</string>
+    <string name="disable_text" msgid="5146002260857428005">"Deaktiver"</string>
+    <string name="enable_text" msgid="8570798764647110430">"Aktivér"</string>
     <string name="clear_user_data_text" msgid="6773186434260397947">"Tøm lagring"</string>
     <string name="app_factory_reset" msgid="8974044931667015201">"Avinstaller oppdateringer"</string>
     <string name="auto_launch_enable_text" msgid="8912714475823807798">"Noen aktiviteter du har valgt, åpnes som standard i denne appen."</string>
@@ -3276,8 +3276,8 @@
     <string name="vpn_missing_cert" msgid="5397309964971068272">"Et sertifikat mangler. Prøv å redigere profilen."</string>
     <string name="trusted_credentials_system_tab" msgid="675362923690364722">"System"</string>
     <string name="trusted_credentials_user_tab" msgid="4978365619630094339">"Bruker"</string>
-    <string name="trusted_credentials_disable_label" msgid="6649583220519447947">"Slå av"</string>
-    <string name="trusted_credentials_enable_label" msgid="5551204878588237991">"Slå på"</string>
+    <string name="trusted_credentials_disable_label" msgid="6649583220519447947">"Deaktiver"</string>
+    <string name="trusted_credentials_enable_label" msgid="5551204878588237991">"Aktivér"</string>
     <string name="trusted_credentials_remove_label" msgid="8296330919329489422">"Avinstaller"</string>
     <string name="trusted_credentials_trust_label" msgid="4841047312274452474">"Angi som pålitelig"</string>
     <string name="trusted_credentials_enable_confirmation" msgid="6686528499458144754">"Vil du slå på systemets CA-sertifikat?"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 4206706..46ed3c1 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -2245,7 +2245,7 @@
     <string name="configure_input_method" msgid="8831343065130376880">"ସେଟ୍‌ ଅପ୍‌ ଇନ୍‌ପୁଟ୍‌ ପଦ୍ଧତି"</string>
     <string name="input_method_settings" msgid="4177883733022569830">"ସେଟିଂସ୍"</string>
     <string name="input_method_settings_button" msgid="5145039044301426311">"ସେଟିଂସ୍"</string>
-    <string name="input_methods_settings_label_format" msgid="5809693308957109022">"<xliff:g id="IME_NAME">%1$s</xliff:g> ସେଟିଙ୍ଗ"</string>
+    <string name="input_methods_settings_label_format" msgid="5809693308957109022">"<xliff:g id="IME_NAME">%1$s</xliff:g> ସେଟିଂସ"</string>
     <string name="input_methods_and_subtype_enabler_title" msgid="8940326108334307057">"ସକ୍ରିୟ ଇନ୍‌ପୁଟ୍‌ ପଦ୍ଧତି ବାଛନ୍ତୁ"</string>
     <string name="onscreen_keyboard_settings_summary" msgid="3975358507879701606">"ଅନ୍‌ସ୍କ୍ରୀନ୍‌ କୀ’ବୋର୍ଡ ସେଟିଙ୍ଗ"</string>
     <string name="builtin_keyboard_settings_title" msgid="5096171620714179661">"ଫିଜିକଲ୍ କୀ’ବୋର୍ଡ"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 3c379dd..6beda2e 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -1894,7 +1894,7 @@
     <string name="location_low_battery_use" msgid="5218950289737996431">"Низкий расход заряда батареи"</string>
     <string name="location_scanning_wifi_always_scanning_title" msgid="5004781272733434794">"Поиск сетей Wi‑Fi"</string>
     <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Разрешить приложениям и сервисам искать сети Wi-Fi, даже когда Wi-Fi отключен. Это может улучшить работу функций и сервисов, использующих данные о местоположении."</string>
-    <string name="location_scanning_bluetooth_always_scanning_title" msgid="1809309545730215891">"Поиск Bluetooth-устройств"</string>
+    <string name="location_scanning_bluetooth_always_scanning_title" msgid="1809309545730215891">"Поиск устройств Bluetooth"</string>
     <string name="location_scanning_bluetooth_always_scanning_description" msgid="5362988856388462841">"Разрешить приложениям и сервисам искать устройства поблизости, даже когда Bluetooth отключен. Это может улучшить работу функций и сервисов, использующих данные о местоположении."</string>
     <string name="location_services_preference_title" msgid="604317859531782159">"Геолокация"</string>
     <string name="location_services_screen_title" msgid="5640002489976602476">"Геолокация"</string>
@@ -5037,7 +5037,7 @@
     <string name="ambient_display_tap_screen_title" product="tablet" msgid="6461531447715370632">"Нажмите, чтобы проверить планшет"</string>
     <string name="ambient_display_tap_screen_title" product="device" msgid="4423803387551153840">"Нажмите, чтобы проверить устройство"</string>
     <string name="ambient_display_tap_screen_summary" msgid="4480489179996521405">"Чтобы увидеть время, уведомления и другую информацию, коснитесь экрана"</string>
-    <string name="emergency_gesture_screen_title" msgid="3280543310204360902">"Экстренный вызов"</string>
+    <string name="emergency_gesture_screen_title" msgid="3280543310204360902">"Экстренные вызовы"</string>
     <string name="emergency_gesture_switchbar_title" msgid="7421353963329899514">"Использовать функцию \"Экстренный вызов\""</string>
     <string name="emergency_gesture_entrypoint_summary" msgid="4730874229911208834">"Под управлением приложения \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
     <string name="emergency_gesture_screen_summary" msgid="6640521030845132507">"Быстро нажмите кнопку питания не менее пяти раз для выполнения перечисленных ниже действий"</string>
diff --git a/res/values-sw300dp-land-v31/dimens.xml b/res/values-sw300dp-land-v31/dimens.xml
new file mode 100644
index 0000000..fa7d2bf
--- /dev/null
+++ b/res/values-sw300dp-land-v31/dimens.xml
@@ -0,0 +1,19 @@
+<?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.
+-->
+<resources>
+    <!-- Top margin for preview view pager -->
+    <dimen name="preview_size_top_margin">0dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 3d6b5e6..4eb400a 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -452,16 +452,11 @@
     <string name="security_settings_biometric_preference_summary_both_fp_single" msgid="684409535278676426">"چہرے اور فنگر پرنٹ کو شامل کیا گیا"</string>
     <string name="biometric_settings_intro" msgid="4263069383955676756">"جب آپ فیس اَنلاک اور فنگر پرنٹ اَن لاک کی خصوصیت سیٹ اپ کرتے ہیں تو آپ کے ماسک پہننے یا کسی تاریک جگہ پر موجود ہونے کی صورت میں آپ کا فون آپ کے فنگر پرنٹ کے لیے پوچھے گا"</string>
     <string name="biometric_settings_category_ways_to_unlock" msgid="3384767901580915266">"غیر مقفل کرنے کے طریقے"</string>
-    <!-- no translation found for biometric_settings_use_biometric_unlock_phone (8180914579885804358) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_biometric_for_apps (6201168728906364189) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_face_preference_summary (1821648836899408477) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_fingerprint_preference_summary (6077762097826050165) -->
-    <skip />
-    <!-- no translation found for biometric_settings_use_face_or_fingerprint_preference_summary (3029102492674234728) -->
-    <skip />
+    <string name="biometric_settings_use_biometric_unlock_phone" msgid="8180914579885804358">"اپنا فون غیر مقفل کریں"</string>
+    <string name="biometric_settings_use_biometric_for_apps" msgid="6201168728906364189">"تصدیق کریں کہ آپ ایپس میں ہیں"</string>
+    <string name="biometric_settings_use_face_preference_summary" msgid="1821648836899408477">"چہرہ استعمال کر کے"</string>
+    <string name="biometric_settings_use_fingerprint_preference_summary" msgid="6077762097826050165">"فنگر پرنٹ استعمال کر کے"</string>
+    <string name="biometric_settings_use_face_or_fingerprint_preference_summary" msgid="3029102492674234728">"چہرہ یا فنگر پرنٹ کا استعمال کر کے"</string>
     <string name="biometric_settings_hand_back_to_guardian" msgid="3747619291972376153">"فون کو واپس اپنے والدین کے حوالے کر دیں"</string>
     <string name="biometric_settings_hand_back_to_guardian_ok" msgid="1763788801883247426">"ٹھیک ہے"</string>
     <string name="lock_screen_intro_skip_title" msgid="342553937472568925">"اسکرین لاک کو نظر انداز کریں؟"</string>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 2cd944a..e1d7584 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -434,6 +434,9 @@
     <!--  Choose SIM Activity dimens  -->
     <dimen name="subtitle_bottom_padding">24dp</dimen>
 
+    <!-- Top margin for preview view pager -->
+    <dimen name="preview_size_top_margin">-12dp</dimen>
+
     <!-- Battery usage chart view component -->
     <dimen name="chartview_text_padding">6dp</dimen>
     <dimen name="chartview_divider_width">1dp</dimen>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index 3d73f64..5354388 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -21,4 +21,9 @@
     <integer name="job_anomaly_detection">102</integer>
     <integer name="device_index_update">103</integer>
     <integer name="sim_notification_send">104</integer>
+
+    <!-- Define the font/display size fragment id in the
+    accessibility_settings_for_setup_wizard.xml. -->
+    <integer name="suw_font_size_fragment_no">0</integer>
+    <integer name="suw_display_size_fragment_no">1</integer>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d6f22fb..5f2fd54 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6283,6 +6283,8 @@
 
     <!-- Summary for battery manager when it is on -->
     <string name="battery_manager_summary">Detecting when apps drain battery</string>
+    <!-- Summary for battery manager when it is on. [CHAR LIMIT=NONE] -->
+    <string name="battery_manager_summary_unsupported">Detecting when apps drain battery</string>
 
     <!-- Summary for battery manager when it is off -->
     <string name="battery_manager_off">Off</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 8b0b7a2..5b3b1c8 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -237,6 +237,16 @@
         <item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault.Small</item>
     </style>
 
+    <style name="screen_size_imageview_style">
+        <item name="android:layout_width">48dp</item>
+        <item name="android:layout_height">48dp</item>
+        <item name="android:background">?android:attr/selectableItemBackgroundBorderless</item>
+        <item name="android:tint">?android:attr/textColorPrimary</item>
+        <item name="android:tintMode">src_in</item>
+        <item name="android:scaleType">center</item>
+        <item name="android:focusable">true</item>
+    </style>
+
     <style name="TextAppearance" parent="android:TextAppearance.DeviceDefault"/>
 
     <style name="TextAppearance.info_label">
diff --git a/res/values/themes_suw.xml b/res/values/themes_suw.xml
index a0585fd..6fd9b75 100644
--- a/res/values/themes_suw.xml
+++ b/res/values/themes_suw.xml
@@ -234,6 +234,7 @@
         <item name="android:listPreferredItemPaddingEnd">16dp</item>
         <item name="preferenceTheme">@style/PreferenceTheme.SettingsLib</item>
         <item name="android:switchStyle">@style/Switch.SettingsLib</item>
+        <item name="preferenceFragmentCompatStyle">@style/SetupWizardPreferenceFragmentStyle</item>
     </style>
 
     <!-- This theme was applied to Settings pages which are running under SUW with DynamicColor. -->
@@ -243,6 +244,7 @@
         <item name="android:listPreferredItemPaddingEnd">16dp</item>
         <item name="preferenceTheme">@style/PreferenceTheme.SettingsLib</item>
         <item name="android:switchStyle">@style/Switch.SettingsLib</item>
+        <item name="preferenceFragmentCompatStyle">@style/SetupWizardPreferenceFragmentStyle</item>
     </style>
 
     <!-- DayNight themes -->
diff --git a/res/xml/accessibility_settings_for_setup_wizard.xml b/res/xml/accessibility_settings_for_setup_wizard.xml
index a3f56b5..d1b4f4a 100644
--- a/res/xml/accessibility_settings_for_setup_wizard.xml
+++ b/res/xml/accessibility_settings_for_setup_wizard.xml
@@ -21,18 +21,28 @@
     android:title="@string/vision_settings_title">
 
     <Preference
-        android:fragment="com.android.settings.display.FontSizePreferenceFragmentForSetupWizard"
         android:key="font_size_preference"
         android:icon="@drawable/ic_font_size"
         android:summary="@string/short_summary_font_size"
-        android:title="@string/title_font_size"/>
+        android:title="@string/title_font_size">
+        <intent
+            android:targetPackage="com.android.settings"
+            android:targetClass="com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity">
+            <extra android:name="vision_fragment_no" android:value="@integer/suw_font_size_fragment_no"/>
+        </intent>
+    </Preference>
 
     <com.android.settings.display.ScreenZoomPreference
-        android:fragment="com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard"
         android:key="force_density_preference"
         android:icon="@drawable/ic_screen_zoom"
         android:summary="@string/screen_zoom_short_summary"
-        android:title="@string/screen_zoom_title"/>
+        android:title="@string/screen_zoom_title">
+        <intent
+            android:targetPackage="com.android.settings"
+            android:targetClass="com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity">
+            <extra android:name="vision_fragment_no" android:value="@integer/suw_display_size_fragment_no"/>
+        </intent>
+    </com.android.settings.display.ScreenZoomPreference>
 
     <Preference
         android:fragment="com.android.settings.accessibility.MagnificationPreferenceFragment"
diff --git a/res/xml/my_device_info.xml b/res/xml/my_device_info.xml
index 818069b..35082fd 100644
--- a/res/xml/my_device_info.xml
+++ b/res/xml/my_device_info.xml
@@ -84,9 +84,7 @@
         <Preference
             android:key="safety_info"
             android:order="17"
-            android:title="@string/safety_and_regulatory_info">
-            <intent android:action="android.settings.SHOW_SAFETY_AND_REGULATORY_INFO"/>
-        </Preference>
+            android:title="@string/safety_and_regulatory_info"/>
     </PreferenceCategory>
 
     <PreferenceCategory
diff --git a/src/com/android/settings/SettingsInitialize.java b/src/com/android/settings/SettingsInitialize.java
index e527ae1..500ce77 100644
--- a/src/com/android/settings/SettingsInitialize.java
+++ b/src/com/android/settings/SettingsInitialize.java
@@ -34,7 +34,6 @@
 import android.content.pm.UserInfo;
 import android.os.UserHandle;
 import android.os.UserManager;
-import android.text.TextUtils;
 import android.util.Log;
 
 import androidx.annotation.VisibleForTesting;
@@ -150,10 +149,6 @@
     }
 
     private void enableTwoPaneDeepLinkActivityIfNecessary(PackageManager pm, Intent intent) {
-        if (!TextUtils.equals(intent.getAction(), Intent.ACTION_PRE_BOOT_COMPLETED)) {
-            return;
-        }
-
         final ComponentName deepLinkHome = new ComponentName(Utils.SETTINGS_PACKAGE_NAME,
                 SettingsHomepageActivity.ALIAS_DEEP_LINK);
         final int enableState = SplitController.getInstance().isSplitSupported()
diff --git a/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java
new file mode 100644
index 0000000..8a60e5f
--- /dev/null
+++ b/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java
@@ -0,0 +1,127 @@
+/*
+ * 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 android.app.settings.SettingsEnums;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceFragmentCompat;
+
+import com.android.settings.R;
+import com.android.settings.core.InstrumentedActivity;
+import com.android.settings.display.FontSizePreferenceFragmentForSetupWizard;
+import com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard;
+
+import com.google.android.setupcompat.template.FooterBarMixin;
+import com.google.android.setupcompat.template.FooterButton;
+import com.google.android.setupdesign.GlifLayout;
+import com.google.android.setupdesign.util.ThemeHelper;
+
+/** Settings font/display size activity for SUW. */
+public class AccessibilityScreenSizeForSetupWizardActivity extends InstrumentedActivity {
+    private static final String TAG = "ScreenSizeForSetup";
+
+    // A parameter decides which fragment ({@link FontSizePreferenceFragmentForSetupWizard} or
+    // {@link ScreenZoomPreferenceFragmentForSetupWizard}) will be visioned.
+    static final String VISION_FRAGMENT_NO = "vision_fragment_no";
+
+    private int mFragmentNo;
+    private int mFontSizeFragmentNo;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mFontSizeFragmentNo = getResources().getInteger(R.integer.suw_font_size_fragment_no);
+        final int appliedTheme = ThemeHelper.trySetDynamicColor(this)
+                ? R.style.SudDynamicColorThemeGlifV3_DayNight : R.style.SudThemeGlifV3_DayNight;
+        setTheme(appliedTheme);
+        setContentView(R.layout.accessibility_screen_size_setup_wizard);
+        mFragmentNo = getIntent().getExtras().getInt(VISION_FRAGMENT_NO);
+        Log.d(TAG, "onCreate: fragment no: " + mFragmentNo);
+        generateHeader(mFragmentNo);
+        scrollToBottom();
+        initFooterButton();
+        if (savedInstanceState == null) {
+            final PreferenceFragmentCompat fragment =
+                    (mFragmentNo == mFontSizeFragmentNo)
+                            ? new FontSizePreferenceFragmentForSetupWizard()
+                            : new ScreenZoomPreferenceFragmentForSetupWizard();
+            getSupportFragmentManager()
+                    .beginTransaction()
+                    .replace(R.id.content_frame, fragment)
+                    .commit();
+        }
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return mFragmentNo == mFontSizeFragmentNo ? SettingsEnums.SUW_ACCESSIBILITY_FONT_SIZE
+                : SettingsEnums.SUW_ACCESSIBILITY_DISPLAY_SIZE;
+    }
+
+    @VisibleForTesting
+    void generateHeader(int fragmentNo) {
+        ((TextView) findViewById(R.id.suc_layout_title)).setText(
+                fragmentNo == mFontSizeFragmentNo ? R.string.title_font_size
+                        : R.string.screen_zoom_title);
+        ((TextView) findViewById(R.id.sud_layout_subtitle)).setText(
+                fragmentNo == mFontSizeFragmentNo ? R.string.short_summary_font_size
+                        : R.string.screen_zoom_short_summary);
+    }
+
+    @VisibleForTesting
+    void initFooterButton() {
+        final GlifLayout layout = findViewById(R.id.setup_wizard_layout);
+        final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
+        final View.OnClickListener nextButtonListener =
+                v -> {
+                    onBackPressed();
+                };
+        final FooterButton primaryButton =
+                new FooterButton.Builder(this)
+                        .setText(R.string.done)
+                        .setListener(nextButtonListener)
+                        .setButtonType(FooterButton.ButtonType.NEXT)
+                        .setTheme(R.style.SudGlifButton_Primary)
+                        .build();
+        mixin.setPrimaryButton(primaryButton);
+    }
+
+    /**
+     * Scrolls to bottom while {@link ScrollView} layout changed.
+     */
+    private void scrollToBottom() {
+        final GlifLayout layout = findViewById(R.id.setup_wizard_layout);
+        final ScrollView scrollView = layout.getScrollView();
+        scrollView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
+            final int scrollViewHeight = scrollView.getHeight();
+            if (scrollViewHeight > 0) {
+                scrollView.post(() -> {
+                    // Here is no need to show the scrolling animation. So disabled first and
+                    // then enabled it after scrolling finished.
+                    scrollView.setSmoothScrollingEnabled(false);
+                    scrollView.fullScroll(View.FOCUS_DOWN);
+                    scrollView.setSmoothScrollingEnabled(true);
+                });
+            }
+        });
+    }
+}
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
index 4e8be42..da95df9 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
@@ -28,11 +28,11 @@
 import android.graphics.Color;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.accessibility.AccessibilityManager;
-import android.widget.LinearLayout;
 
 import androidx.preference.Preference;
 import androidx.recyclerview.widget.RecyclerView;
@@ -42,7 +42,6 @@
 import com.android.settingslib.RestrictedPreference;
 
 import com.google.android.setupdesign.GlifPreferenceLayout;
-import com.google.android.setupdesign.util.ThemeHelper;
 
 import java.util.List;
 
@@ -81,16 +80,11 @@
         super.onViewCreated(view, savedInstanceState);
 
         final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
-        layout.setDividerInsets(Integer.MAX_VALUE, 0);
-        layout.setDescriptionText(R.string.vision_settings_description);
-        layout.setHeaderText(R.string.vision_settings_title);
-        layout.setIcon(getPrefContext().getDrawable(R.drawable.ic_accessibility_visibility));
-
-        if (ThemeHelper.shouldApplyExtendedPartnerConfig(getActivity())) {
-            final LinearLayout headerLayout = layout.findManagedViewById(R.id.sud_layout_header);
-            headerLayout.setPadding(0, headerLayout.getPaddingTop(), 0,
-                    headerLayout.getPaddingBottom());
-        }
+        final String title = getContext().getString(R.string.vision_settings_title);
+        final String description = getContext().getString(R.string.vision_settings_description);
+        final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
+        AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
+                description, icon);
     }
 
     @Override
@@ -143,6 +137,13 @@
         return super.onPreferenceTreeClick(preference);
     }
 
+    /**
+     * Returns accessibility service info by given package name and service name.
+     *
+     * @param packageName Package of accessibility service
+     * @param serviceName Class of accessibility service
+     * @return {@link AccessibilityServiceInfo} instance if available, null otherwise.
+     */
     private AccessibilityServiceInfo findService(String packageName, String serviceName) {
         final AccessibilityManager manager =
                 getActivity().getSystemService(AccessibilityManager.class);
@@ -150,8 +151,8 @@
                 manager.getInstalledAccessibilityServiceList();
         for (AccessibilityServiceInfo info : accessibilityServices) {
             ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo;
-            if (packageName.equals(serviceInfo.packageName)
-                    && serviceName.equals(serviceInfo.name)) {
+            if (TextUtils.equals(packageName, serviceInfo.packageName)
+                    && TextUtils.equals(serviceName, serviceInfo.name)) {
                 return info;
             }
         }
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
index b65b349..0625fd2 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
@@ -16,7 +16,10 @@
 
 package com.android.settings.accessibility;
 
+import static com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.VISION_FRAGMENT_NO;
+
 import android.content.ComponentName;
+import android.content.Intent;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.Menu;
@@ -30,7 +33,6 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.SetupWizardUtils;
 import com.android.settings.core.SubSettingLauncher;
-import com.android.settings.display.FontSizePreferenceFragmentForSetupWizard;
 import com.android.settings.search.actionbar.SearchMenuController;
 import com.android.settings.support.actionbar.HelpResourceProvider;
 import com.android.settingslib.core.instrumentation.Instrumentable;
@@ -123,19 +125,12 @@
                 && new ComponentName(getPackageName(),
                 CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW).equals(
                 getIntent().getComponent())) {
-            final Bundle args = new Bundle();
-            args.putInt(HelpResourceProvider.HELP_URI_RESOURCE_KEY, 0);
-            args.putBoolean(SearchMenuController.NEED_SEARCH_ICON_IN_ACTION_BAR, false);
-            final SubSettingLauncher subSettingLauncher = new SubSettingLauncher(this)
-                    .setDestination(FontSizePreferenceFragmentForSetupWizard.class.getName())
-                    .setArguments(args)
-                    .setSourceMetricsCategory(Instrumentable.METRICS_CATEGORY_UNKNOWN)
-                    .setExtras(SetupWizardUtils.copyLifecycleExtra(getIntent().getExtras(),
-                            new Bundle()))
-                    .setTransitionType(SettingsTransitionHelper.TransitionType.TRANSITION_FADE);
-
+            final Intent intent = new Intent(this,
+                    AccessibilityScreenSizeForSetupWizardActivity.class);
+            intent.putExtra(VISION_FRAGMENT_NO,
+                    getResources().getInteger(R.integer.suw_font_size_fragment_no));
+            startActivity(intent);
             Log.d(LOG_TAG, "Launch font size settings");
-            subSettingLauncher.launch();
             finish();
         }
     }
diff --git a/src/com/android/settings/accessibility/AccessibilitySetupWizardUtils.java b/src/com/android/settings/accessibility/AccessibilitySetupWizardUtils.java
new file mode 100644
index 0000000..95b689b
--- /dev/null
+++ b/src/com/android/settings/accessibility/AccessibilitySetupWizardUtils.java
@@ -0,0 +1,58 @@
+/*
+ * 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 android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.widget.LinearLayout;
+
+import com.android.settings.R;
+
+import com.google.android.setupdesign.GlifPreferenceLayout;
+import com.google.android.setupdesign.util.ThemeHelper;
+
+/** Provides utility methods to accessibility settings for Setup Wizard only. */
+class AccessibilitySetupWizardUtils {
+
+    private AccessibilitySetupWizardUtils(){}
+
+    /**
+     * Update the {@link GlifPreferenceLayout} attributes if they have previously been initialized.
+     * When the SetupWizard supports the extended partner configs, it means the material layout
+     * would be applied. It should set a different padding/margin in views to align Settings style
+     * for accessibility feature pages.
+     *
+     * @param layout The layout instance
+     * @param title The text to be set as title
+     * @param description The text to be set as description
+     * @param icon The icon to be set
+     */
+    public static void updateGlifPreferenceLayout(Context context, GlifPreferenceLayout layout,
+            CharSequence title, CharSequence description, Drawable icon) {
+        layout.setHeaderText(title);
+        layout.setDescriptionText(description);
+        layout.setIcon(icon);
+        layout.setDividerInsets(Integer.MAX_VALUE, 0);
+
+        if (ThemeHelper.shouldApplyExtendedPartnerConfig(context)) {
+            final LinearLayout headerLayout = layout.findManagedViewById(R.id.sud_layout_header);
+            if (headerLayout != null) {
+                headerLayout.setPadding(0, layout.getPaddingTop(), 0,
+                        layout.getPaddingBottom());
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java
index 016ac05..ce8c6bf 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java
@@ -17,13 +17,45 @@
 package com.android.settings.accessibility;
 
 import android.app.settings.SettingsEnums;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.settings.R;
+
+import com.google.android.setupdesign.GlifPreferenceLayout;
 
 public class ToggleScreenMagnificationPreferenceFragmentForSetupWizard
         extends ToggleScreenMagnificationPreferenceFragment {
 
     @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
+        final String title = getContext().getString(
+                R.string.accessibility_screen_magnification_title);
+        final String description = getContext().getString(R.string.accelerometer_title);
+        final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
+        AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
+                description, icon);
+
+        // Hide the setting from the vision settings.
+        mSettingsPreference.setVisible(false);
+    }
+
+    @Override
+    public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
+            Bundle savedInstanceState) {
+        final GlifPreferenceLayout layout = (GlifPreferenceLayout) parent;
+        return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
+    }
+
+    @Override
     public int getMetricsCategory() {
         return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION;
     }
@@ -49,12 +81,4 @@
         // Hides help center in action bar and footer bar in SuW
         return 0;
     }
-
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        // Hide the setting from the vision settings.
-        mSettingsPreference.setVisible(false);
-    }
 }
diff --git a/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java
index c0d54e8..316ce52 100644
--- a/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java
@@ -17,8 +17,17 @@
 package com.android.settings.accessibility;
 
 import android.app.settings.SettingsEnums;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.settings.R;
+
+import com.google.android.setupdesign.GlifPreferenceLayout;
 
 public class ToggleScreenReaderPreferenceFragmentForSetupWizard
         extends ToggleAccessibilityServicePreferenceFragment {
@@ -28,10 +37,26 @@
     @Override
     public void onViewCreated(View view, Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
+
+        final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
+        final String title = getArguments().getString(AccessibilitySettings.EXTRA_TITLE);
+        final String description = getContext().getString(
+                R.string.accessibility_screen_magnification_title);
+        final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
+        AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
+                description, icon);
+
         mToggleSwitchWasInitiallyChecked = mToggleServiceSwitchPreference.isChecked();
     }
 
     @Override
+    public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
+            Bundle savedInstanceState) {
+        final GlifPreferenceLayout layout = (GlifPreferenceLayout) parent;
+        return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
+    }
+
+    @Override
     public int getMetricsCategory() {
         return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SCREEN_READER;
     }
diff --git a/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java
index 9ca1f19..b5c1123 100644
--- a/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java
@@ -17,8 +17,17 @@
 package com.android.settings.accessibility;
 
 import android.app.settings.SettingsEnums;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.settings.R;
+
+import com.google.android.setupdesign.GlifPreferenceLayout;
 
 public class ToggleSelectToSpeakPreferenceFragmentForSetupWizard
         extends InvisibleToggleAccessibilityServicePreferenceFragment {
@@ -28,10 +37,25 @@
     @Override
     public void onViewCreated(View view, Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
+
+        final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
+        final String title = getArguments().getString(AccessibilitySettings.EXTRA_TITLE);
+        final String description = getContext().getString(R.string.select_to_speak_summary);
+        final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
+        AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
+                description, icon);
+
         mToggleSwitchWasInitiallyChecked = mToggleServiceSwitchPreference.isChecked();
     }
 
     @Override
+    public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
+            Bundle savedInstanceState) {
+        final GlifPreferenceLayout layout = (GlifPreferenceLayout) parent;
+        return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
+    }
+
+    @Override
     public int getMetricsCategory() {
         return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SELECT_TO_SPEAK;
     }
diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java b/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java
new file mode 100644
index 0000000..7585dce
--- /dev/null
+++ b/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java
@@ -0,0 +1,75 @@
+/*
+ * 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.activityembedding;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.text.TextUtils;
+
+/**
+ * A content provider for querying the state of activity embedding feature
+ */
+public class ActivityEmbeddingProvider extends ContentProvider {
+
+    private static final String METHOD_IS_EMBEDDING_ACTIVITY_ENABLED = "isEmbeddingActivityEnabled";
+    private static final String EXTRA_ENABLED_STATE = "enabled_state";
+
+    @Override
+    public boolean onCreate() {
+        return true;
+    }
+
+    @Override
+    public Bundle call(String method, String arg, Bundle extras) {
+        if (TextUtils.equals(method, METHOD_IS_EMBEDDING_ACTIVITY_ENABLED)) {
+            final Bundle bundle = new Bundle();
+            bundle.putBoolean(EXTRA_ENABLED_STATE,
+                    ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext()));
+            return bundle;
+        }
+        return null;
+    }
+
+    @Override
+    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+            String sortOrder) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getType(Uri uri) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Uri insert(Uri uri, ContentValues values) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int delete(Uri uri, String selection, String[] selectionArgs) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java b/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
index 3967bd7..e9dcea1 100644
--- a/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
+++ b/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
@@ -17,6 +17,7 @@
 package com.android.settings.activityembedding;
 
 import android.app.Activity;
+import android.app.settings.SettingsEnums;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -25,6 +26,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.window.embedding.ActivityFilter;
+import androidx.window.embedding.ActivityRule;
 import androidx.window.embedding.SplitController;
 import androidx.window.embedding.SplitPairFilter;
 import androidx.window.embedding.SplitPairRule;
@@ -34,6 +36,7 @@
 import com.android.settings.SubSettings;
 import com.android.settings.Utils;
 import com.android.settings.homepage.SettingsHomepageActivity;
+import com.android.settings.overlay.FeatureFactory;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -67,35 +70,51 @@
         registerTwoPanePairRule(mContext,
                 getComponentName(Settings.class),
                 getComponentName(SubSettings.class),
+                null /* secondaryIntentAction */,
                 true /* finishPrimaryWithSecondary */,
                 true /* finishSecondaryWithPrimary */);
+        // Set rules here to show full screen for specified Activity.
+        registerAlwaysExpandRule();
     }
 
     /** Register a SplitPairRule for 2-pane. */
     public static void registerTwoPanePairRule(Context context,
-            ComponentName primary, ComponentName secondary,
-            boolean finishPrimaryWithSecondary, boolean finishSecondaryWithPrimary) {
+            ComponentName primaryComponent,
+            ComponentName secondaryComponent,
+            String secondaryIntentAction,
+            boolean finishPrimaryWithSecondary,
+            boolean finishSecondaryWithPrimary) {
         final Set<SplitPairFilter> filters = new HashSet<>();
-        filters.add(new SplitPairFilter(primary, secondary,
-                null /* secondaryActivityIntentAction */));
+        filters.add(new SplitPairFilter(primaryComponent, secondaryComponent,
+                secondaryIntentAction));
 
         SplitController.getInstance().registerRule(new SplitPairRule(filters,
                 finishPrimaryWithSecondary,
-                finishSecondaryWithPrimary, true /* clearTop */,
+                finishSecondaryWithPrimary,
+                true /* clearTop */,
                 ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(context),
                 ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(context),
                 ActivityEmbeddingUtils.SPLIT_RATIO,
                 LayoutDirection.LOCALE));
     }
 
+    private void registerAlwaysExpandRule() {
+        final Set<ActivityFilter> activityFilters = new HashSet<>();
+
+        final Intent searchIntent = FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
+                .buildSearchIntent(mContext, SettingsEnums.SETTINGS_HOMEPAGE);
+        addActivityFilter(activityFilters, searchIntent);
+
+        mSplitController.registerRule(new ActivityRule(activityFilters, true /* alwaysExpand */));
+    }
+
     private void registerHomepagePlaceholderRule() {
         final Set<ActivityFilter> activityFilters = new HashSet<>();
-        activityFilters.add(new ActivityFilter(getComponentName(SettingsHomepageActivity.class),
-                null /* intentAction */));
-        activityFilters.add(new ActivityFilter(getComponentName(Settings.class),
-                null /* intentAction */));
-        activityFilters.add(new ActivityFilter(new ComponentName(Utils.SETTINGS_PACKAGE_NAME,
-                SettingsHomepageActivity.ALIAS_DEEP_LINK), null /* intentAction */));
+        addActivityFilter(activityFilters, SettingsHomepageActivity.class);
+        addActivityFilter(activityFilters, Settings.class);
+        addActivityFilter(activityFilters, new ComponentName(Utils.SETTINGS_PACKAGE_NAME,
+                SettingsHomepageActivity.ALIAS_DEEP_LINK));
+
         final Intent intent = new Intent();
         intent.setComponent(getComponentName(Settings.NetworkDashboardActivity.class));
         final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule(
@@ -109,6 +128,22 @@
         mSplitController.registerRule(placeholderRule);
     }
 
+    private void addActivityFilter(Set<ActivityFilter> activityFilters,
+            Class<? extends Activity> activityClass) {
+        activityFilters.add(new ActivityFilter(getComponentName(activityClass),
+                null /* intentAction */));
+    }
+
+    private void addActivityFilter(Set<ActivityFilter> activityFilters, Intent intent) {
+        activityFilters.add(new ActivityFilter(new ComponentName("*" /* pkg */, "*" /* cls */),
+                intent.getAction()));
+    }
+
+    private void addActivityFilter(Set<ActivityFilter> activityFilters,
+            ComponentName componentName) {
+        activityFilters.add(new ActivityFilter(componentName, null /* intentAction */));
+    }
+
     @NonNull
     private ComponentName getComponentName(Class<? extends Activity> activityClass) {
         return new ComponentName(mContext.getPackageName(), activityClass.getName());
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index 4581f6c..27b20cf 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -421,6 +421,11 @@
         ProfileSelectDialog.updateUserHandlesIfNeeded(mContext, tile);
         mMetricsFeatureProvider.logStartedIntent(intent, sourceMetricCategory);
 
+        //TODO(b/201970810): Add test cases.
+        if (tile.isNewTask(mContext)) {
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        }
+
         if (tile.userHandle == null || tile.isPrimaryProfileOnly()) {
             activity.startActivity(intent);
         } else if (tile.userHandle.size() == 1) {
diff --git a/src/com/android/settings/deviceinfo/SafetyInfoPreferenceController.java b/src/com/android/settings/deviceinfo/SafetyInfoPreferenceController.java
index 10dbd19..92e4576 100644
--- a/src/com/android/settings/deviceinfo/SafetyInfoPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/SafetyInfoPreferenceController.java
@@ -18,6 +18,9 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
+import android.text.TextUtils;
+
+import androidx.preference.Preference;
 
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settingslib.core.AbstractPreferenceController;
@@ -44,4 +47,16 @@
     public String getPreferenceKey() {
         return "safety_info";
     }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
+            return false;
+        }
+
+        final Intent intent = new Intent(INTENT_PROBE);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        mContext.startActivity(intent);
+        return true;
+    }
 }
diff --git a/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java b/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java
index 04b6dc3..627f107 100644
--- a/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java
@@ -18,10 +18,17 @@
 
 import android.app.settings.SettingsEnums;
 
+import com.android.settings.R;
+
 public class FontSizePreferenceFragmentForSetupWizard
         extends ToggleFontSizePreferenceFragment {
 
     @Override
+    protected int getActivityLayoutResId() {
+        return R.layout.suw_font_size_fragment;
+    }
+
+    @Override
     public int getMetricsCategory() {
         return SettingsEnums.SUW_ACCESSIBILITY_FONT_SIZE;
     }
diff --git a/src/com/android/settings/display/PreviewPagerAdapter.java b/src/com/android/settings/display/PreviewPagerAdapter.java
index 018be32..a424b1d 100644
--- a/src/com/android/settings/display/PreviewPagerAdapter.java
+++ b/src/com/android/settings/display/PreviewPagerAdapter.java
@@ -109,6 +109,10 @@
         return (view == object);
     }
 
+    FrameLayout[] getPreviewFrames() {
+        return mPreviewFrames;
+    }
+
     boolean isAnimating() {
         return mAnimationCounter > 0;
     }
diff --git a/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java b/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java
index abd14d2..c6d5b8b 100644
--- a/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java
+++ b/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java
@@ -264,6 +264,12 @@
         @Override
         public void onPageSelected(int position) {
             mPreviewPager.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT);
+            // To avoid displaying previous page on the left side in SUW landscape mode for
+            // large size.
+            if (position > 0) {
+                mPreviewPagerAdapter.getPreviewFrames()[position - 1].setVisibility(View.INVISIBLE);
+            }
+            mPreviewPagerAdapter.getPreviewFrames()[position].setVisibility(View.VISIBLE);
         }
     };
 
diff --git a/src/com/android/settings/display/ScreenZoomPreferenceFragmentForSetupWizard.java b/src/com/android/settings/display/ScreenZoomPreferenceFragmentForSetupWizard.java
index cfa7b5d..7185c63 100644
--- a/src/com/android/settings/display/ScreenZoomPreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/display/ScreenZoomPreferenceFragmentForSetupWizard.java
@@ -18,9 +18,16 @@
 
 import android.app.settings.SettingsEnums;
 
+import com.android.settings.R;
+
 public class ScreenZoomPreferenceFragmentForSetupWizard extends ScreenZoomSettings {
 
     @Override
+    protected int getActivityLayoutResId() {
+        return R.layout.suw_screen_zoom_fragment;
+    }
+
+    @Override
     public int getMetricsCategory() {
         return SettingsEnums.SUW_ACCESSIBILITY_DISPLAY_SIZE;
     }
diff --git a/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java b/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
index c84a15e..2e59725 100644
--- a/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
+++ b/src/com/android/settings/display/TopLevelWallpaperPreferenceController.java
@@ -31,6 +31,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
+import com.android.settings.activityembedding.ActivityEmbeddingUtils;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settingslib.RestrictedLockUtilsInternal;
 import com.android.settingslib.RestrictedTopLevelPreference;
@@ -97,7 +98,8 @@
         if (getPreferenceKey().equals(preference.getKey())) {
             final Intent intent = new Intent().setComponent(
                     getComponentName()).putExtra(mWallpaperLaunchExtra, LAUNCHED_SETTINGS);
-            if (areStylesAvailable()) {
+            if (areStylesAvailable() && !ActivityEmbeddingUtils.isEmbeddingActivityEnabled(
+                    mContext)) {
                 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
             }
             preference.getContext().startActivity(intent);
diff --git a/src/com/android/settings/fuelgauge/BatteryAppListPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryAppListPreferenceController.java
index bf464a8..35af405 100644
--- a/src/com/android/settings/fuelgauge/BatteryAppListPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryAppListPreferenceController.java
@@ -102,7 +102,9 @@
             }
 
             PowerProfile powerProfile = new PowerProfile(context);
-            return powerProfile.getAveragePower(PowerProfile.POWER_SCREEN_FULL)
+            // Cheap hack to try to figure out if the power_profile.xml was populated.
+            return powerProfile.getAveragePowerForOrdinal(
+                    PowerProfile.POWER_GROUP_DISPLAY_SCREEN_FULL, 0)
                     >= MIN_AVERAGE_POWER_THRESHOLD_MILLI_AMP;
         }
     };
diff --git a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
index 8541179..4249c44 100644
--- a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
@@ -350,7 +350,7 @@
     private void addAllPreferences() {
         final List<BatteryDiffEntry> entries =
             mBatteryIndexedMap.get(Integer.valueOf(mTrapezoidIndex));
-        addFooterPreferenceIfNeeded(!entries.isEmpty());
+        addFooterPreferenceIfNeeded(entries != null && !entries.isEmpty());
         if (entries == null) {
             Log.w(TAG, "cannot find BatteryDiffEntry for:" + mTrapezoidIndex);
             return;
diff --git a/src/com/android/settings/fuelgauge/BatteryChartView.java b/src/com/android/settings/fuelgauge/BatteryChartView.java
index 7bc60b2..98cfdc8 100644
--- a/src/com/android/settings/fuelgauge/BatteryChartView.java
+++ b/src/com/android/settings/fuelgauge/BatteryChartView.java
@@ -79,12 +79,14 @@
     private boolean mIsSlotsClickabled;
     private String[] mPercentages = getPercentages();
 
-    @VisibleForTesting int mSelectedIndex;
+    @VisibleForTesting int mHoveredIndex = SELECTED_INDEX_INVALID;
+    @VisibleForTesting int mSelectedIndex = SELECTED_INDEX_INVALID;
     @VisibleForTesting String[] mTimestamps;
 
     // Colors for drawing the trapezoid shape and dividers.
     private int mTrapezoidColor;
     private int mTrapezoidSolidColor;
+    private int mTrapezoidHoverColor;
     // For drawing the percentage information.
     private int mTextPadding;
     private final Rect mIndent = new Rect();
@@ -108,7 +110,7 @@
     Paint mTrapezoidCurvePaint = null;
     private TrapezoidSlot[] mTrapezoidSlots;
     // Records the location to calculate selected index.
-    private MotionEvent mTouchUpEvent;
+    private float mTouchUpEventX = Float.MIN_VALUE;
     private BatteryChartView.OnSelectListener mOnSelectListener;
 
     public BatteryChartView(Context context) {
@@ -254,21 +256,49 @@
     public boolean onTouchEvent(MotionEvent event) {
         // Caches the location to calculate selected trapezoid index.
         final int action = event.getAction();
-        if (action == MotionEvent.ACTION_UP) {
-            mTouchUpEvent = MotionEvent.obtain(event);
-        } else if (action == MotionEvent.ACTION_CANCEL) {
-            mTouchUpEvent = null; // reset
+        switch (action) {
+            case MotionEvent.ACTION_UP:
+                mTouchUpEventX = event.getX();
+                break;
+            case MotionEvent.ACTION_CANCEL:
+                mTouchUpEventX = Float.MIN_VALUE; // reset
+                break;
         }
         return super.onTouchEvent(event);
     }
 
     @Override
+    public boolean onHoverEvent(MotionEvent event) {
+        final int action = event.getAction();
+        switch (action) {
+            case MotionEvent.ACTION_HOVER_ENTER:
+            case MotionEvent.ACTION_HOVER_MOVE:
+                final int trapezoidIndex = getTrapezoidIndex(event.getX());
+                if (mHoveredIndex != trapezoidIndex) {
+                    mHoveredIndex = trapezoidIndex;
+                    invalidate();
+                }
+                break;
+        }
+        return super.onHoverEvent(event);
+    }
+
+    @Override
+    public void onHoverChanged(boolean hovered) {
+        super.onHoverChanged(hovered);
+        if (!hovered) {
+            mHoveredIndex = SELECTED_INDEX_INVALID; // reset
+            invalidate();
+        }
+    }
+
+    @Override
     public void onClick(View view) {
-        if (mTouchUpEvent == null) {
+        if (mTouchUpEventX == Float.MIN_VALUE) {
             Log.w(TAG, "invalid motion event for onClick() callback");
             return;
         }
-        final int trapezoidIndex = getTrapezoidIndex(mTouchUpEvent.getX());
+        final int trapezoidIndex = getTrapezoidIndex(mTouchUpEventX);
         // Ignores the click event if the level is zero.
         if (trapezoidIndex == SELECTED_INDEX_INVALID
                 || !isValidToDraw(trapezoidIndex)) {
@@ -347,6 +377,8 @@
         setBackgroundColor(Color.TRANSPARENT);
         mTrapezoidSolidColor = Utils.getColorAccentDefaultColor(context);
         mTrapezoidColor = Utils.getDisabled(context, mTrapezoidSolidColor);
+        mTrapezoidHoverColor = Utils.getColorAttrDefaultColor(context,
+            com.android.internal.R.attr.colorAccentSecondaryVariant);
         // Initializes the divider line paint.
         final Resources resources = getContext().getResources();
         mDividerWidth = resources.getDimensionPixelSize(R.dimen.chartview_divider_width);
@@ -494,7 +526,8 @@
                     ? mTrapezoidColor
                     : mSelectedIndex == index || mSelectedIndex == SELECTED_INDEX_ALL
                         ? mTrapezoidSolidColor : mTrapezoidColor;
-            mTrapezoidPaint.setColor(trapezoidColor);
+            final boolean isHover = mHoveredIndex == index && isValidToDraw(mHoveredIndex);
+            mTrapezoidPaint.setColor(isHover ? mTrapezoidHoverColor : trapezoidColor);
 
             final float leftTop = round(trapezoidBottom - mLevels[index] * unitHeight);
             final float rightTop = round(trapezoidBottom - mLevels[index + 1] * unitHeight);
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
index a8e0317..b6d7efe 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
@@ -140,6 +140,11 @@
     boolean isChartGraphSlotsEnabled(Context context);
 
     /**
+     * Checks whether adaptive charging feature is supported in this device
+     */
+    boolean isAdaptiveChargingSupported();
+
+    /**
      * Gets a intent for one time bypass charge limited to resume charging.
      */
     Intent getResumeChargeIntent();
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
index e2c7800..3f47af4 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
@@ -167,6 +167,11 @@
     }
 
     @Override
+    public boolean isAdaptiveChargingSupported() {
+        return false;
+    }
+
+    @Override
     public Intent getResumeChargeIntent() {
         return null;
     }
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
index 59a592c..1a7fa38 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
@@ -19,6 +19,8 @@
 import android.content.ContentResolver;
 import android.content.Context;
 import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
 import android.os.PowerManager;
 import android.provider.SettingsSlicesContract;
 import android.widget.Switch;
@@ -42,10 +44,12 @@
 public class BatterySaverButtonPreferenceController extends
         TogglePreferenceController implements OnMainSwitchChangeListener, LifecycleObserver,
         OnStart, OnStop, BatterySaverReceiver.BatterySaverListener {
+    private static final long SWITCH_ANIMATION_DURATION = 350L;
 
     private final BatterySaverReceiver mBatterySaverReceiver;
     private final PowerManager mPowerManager;
 
+    private Handler mHandler;
     private MainSwitchPreference mPreference;
 
     public BatterySaverButtonPreferenceController(Context context, String key) {
@@ -53,6 +57,7 @@
         mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
         mBatterySaverReceiver = new BatterySaverReceiver(context);
         mBatterySaverReceiver.setBatterySaverListener(this);
+        mHandler = new Handler(Looper.getMainLooper());
     }
 
     @Override
@@ -83,6 +88,7 @@
     @Override
     public void onStop() {
         mBatterySaverReceiver.setListening(false);
+        mHandler.removeCallbacksAndMessages(null /* token */);
     }
 
     @Override
@@ -114,6 +120,11 @@
 
     @Override
     public void onPowerSaveModeChanged() {
+        mHandler.postDelayed(() -> onPowerSaveModeChangedInternal(),
+                SWITCH_ANIMATION_DURATION);
+    }
+
+    private void onPowerSaveModeChangedInternal() {
         final boolean isChecked = isChecked();
         if (mPreference != null && mPreference.isChecked() != isChecked) {
             mPreference.setChecked(isChecked);
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java b/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java
index 790264c..d920a8e 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java
@@ -64,7 +64,10 @@
             preference.setSummary(mContext.getResources().getQuantityString(
                     R.plurals.battery_manager_app_restricted, num, num));
         } else {
-            preference.setSummary(R.string.battery_manager_summary);
+            preference.setSummary(
+                    mPowerUsageFeatureProvider.isAdaptiveChargingSupported()
+                            ? R.string.battery_manager_summary
+                            : R.string.battery_manager_summary_unsupported);
         }
     }
 }
diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java
index d6a8a92..3e9b9d0 100644
--- a/src/com/android/settings/homepage/SettingsHomepageActivity.java
+++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java
@@ -207,6 +207,7 @@
             finish();
             return;
         }
+        targetIntent.setComponent(targetComponentName);
 
         // To prevent launchDeepLinkIntentToRight again for configuration change.
         intent.setAction(null);
@@ -223,11 +224,13 @@
         ActivityEmbeddingRulesController.registerTwoPanePairRule(this,
                 new ComponentName(Utils.SETTINGS_PACKAGE_NAME, ALIAS_DEEP_LINK),
                 targetComponentName,
+                targetIntent.getAction(),
                 true /* finishPrimaryWithSecondary */,
                 true /* finishSecondaryWithPrimary */);
         ActivityEmbeddingRulesController.registerTwoPanePairRule(this,
                 new ComponentName(Settings.class.getPackageName(), Settings.class.getName()),
                 targetComponentName,
+                targetIntent.getAction(),
                 true /* finishPrimaryWithSecondary */,
                 true /* finishSecondaryWithPrimary */);
         startActivity(targetIntent);
diff --git a/src/com/android/settings/network/EraseEuiccDataDialogFragment.java b/src/com/android/settings/network/EraseEuiccDataDialogFragment.java
index a141f0c..819d3b1 100644
--- a/src/com/android/settings/network/EraseEuiccDataDialogFragment.java
+++ b/src/com/android/settings/network/EraseEuiccDataDialogFragment.java
@@ -32,7 +32,9 @@
 
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.network.helper.ConfirmationSimDeletionPredicate;
 import com.android.settings.system.ResetDashboardFragment;
+import com.android.settings.wifi.dpp.WifiDppUtils;
 
 public class EraseEuiccDataDialogFragment extends InstrumentedDialogFragment implements
         DialogInterface.OnClickListener {
@@ -73,13 +75,24 @@
         }
 
         if (which == DialogInterface.BUTTON_POSITIVE) {
-            AsyncTask.execute(new Runnable() {
-                @Override
-                public void run() {
-                    RecoverySystem.wipeEuiccData(
-                            getContext(), PACKAGE_NAME_EUICC_DATA_MANAGEMENT_CALLBACK);
-                }
-            });
+            if (ConfirmationSimDeletionPredicate.getSingleton().test(getContext())) {
+                // Create a "verify it's you" verification over keyguard
+                // when "erase" button been pressed.
+                // This might protect from erasing by some automation process.
+                WifiDppUtils.showLockScreen(getContext(), () -> runAsyncWipe());
+            } else {
+                runAsyncWipe();
+            }
         }
     }
+
+    private void runAsyncWipe() {
+        AsyncTask.execute(new Runnable() {
+            @Override
+            public void run() {
+                RecoverySystem.wipeEuiccData(
+                        getContext(), PACKAGE_NAME_EUICC_DATA_MANAGEMENT_CALLBACK);
+            }
+        });
+    }
 }
diff --git a/src/com/android/settings/network/helper/ConfirmationSimDeletionPredicate.java b/src/com/android/settings/network/helper/ConfirmationSimDeletionPredicate.java
new file mode 100644
index 0000000..420f6db
--- /dev/null
+++ b/src/com/android/settings/network/helper/ConfirmationSimDeletionPredicate.java
@@ -0,0 +1,66 @@
+/*
+ * 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.network.helper;
+
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.provider.Settings;
+
+import com.android.settings.R;
+
+import java.util.function.Predicate;
+
+/**
+ * {@link Predicate} for detecting the configuration of confirm SIM deletion.
+ */
+public class ConfirmationSimDeletionPredicate implements Predicate<Context> {
+
+    public static final String KEY_CONFIRM_SIM_DELETION = "confirm_sim_deletion";
+
+    private static final ConfirmationSimDeletionPredicate sSingleton =
+            new ConfirmationSimDeletionPredicate();
+
+    // Get singleton of this predicate
+    public static final ConfirmationSimDeletionPredicate getSingleton() {
+        return sSingleton;
+    }
+
+    /**
+     * Get default configuration of confirm SIM deletion.
+     *
+     * @param Context context
+     * @return the configuration of confirm SIM deletion
+     */
+    private static boolean getDefaultValue(Context context) {
+        return context.getResources()
+                .getBoolean(R.bool.config_sim_deletion_confirmation_default_on);
+    }
+
+    /**
+     * Get the configuration of confirm SIM deletion.
+     *
+     * @param Context context
+     * @return the configuration of confirm SIM deletion
+     */
+    public boolean test(Context context) {
+        final KeyguardManager keyguardManager = context.getSystemService(KeyguardManager.class);
+        if ((keyguardManager != null) && !keyguardManager.isKeyguardSecure()) {
+            return false;
+        }
+        return Settings.Global.getInt(context.getContentResolver(), KEY_CONFIRM_SIM_DELETION,
+                getDefaultValue(context) ? 1 : 0) == 1;
+    }
+}
diff --git a/src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java b/src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java
index bf807a1..a7185e3 100644
--- a/src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java
+++ b/src/com/android/settings/security/ConfirmSimDeletionPreferenceController.java
@@ -26,6 +26,7 @@
 
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.network.helper.ConfirmationSimDeletionPredicate;
 import com.android.settings.network.telephony.MobileNetworkUtils;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.wifi.dpp.WifiDppUtils;
@@ -34,7 +35,8 @@
 /** Enable/disable user confirmation before deleting an eSim */
 public class ConfirmSimDeletionPreferenceController extends BasePreferenceController implements
         Preference.OnPreferenceChangeListener{
-    public static final String KEY_CONFIRM_SIM_DELETION = "confirm_sim_deletion";
+    public static final String KEY_CONFIRM_SIM_DELETION =
+            ConfirmationSimDeletionPredicate.KEY_CONFIRM_SIM_DELETION;
     private boolean mConfirmationDefaultOn;
     private MetricsFeatureProvider mMetricsFeatureProvider;
 
diff --git a/src/com/android/settings/wifi/WifiDialogActivity.java b/src/com/android/settings/wifi/WifiDialogActivity.java
index 56ecde4..ffcfbb8 100644
--- a/src/com/android/settings/wifi/WifiDialogActivity.java
+++ b/src/com/android/settings/wifi/WifiDialogActivity.java
@@ -16,12 +16,8 @@
 
 package com.android.settings.wifi;
 
-import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
-import static android.Manifest.permission.ACCESS_FINE_LOCATION;
-
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.content.pm.PackageManager;
 import android.net.NetworkInfo;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
@@ -33,7 +29,6 @@
 import android.os.SimpleClock;
 import android.os.SystemClock;
 import android.text.TextUtils;
-import android.util.EventLog;
 import android.util.Log;
 
 import androidx.annotation.VisibleForTesting;
@@ -83,12 +78,10 @@
 
     public static final String KEY_WIFI_CONFIGURATION = "wifi_configuration";
 
-    @VisibleForTesting
-    static final int RESULT_CONNECTED = RESULT_FIRST_USER;
+    private static final int RESULT_CONNECTED = RESULT_FIRST_USER;
     private static final int RESULT_FORGET = RESULT_FIRST_USER + 1;
 
-    @VisibleForTesting
-    static final int REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER = 0;
+    private static final int REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER = 0;
 
     // Max age of tracked WifiEntries.
     private static final long MAX_SCAN_AGE_MILLIS = 15_000;
@@ -263,7 +256,10 @@
             }
         }
 
-        Intent resultData = hasPermissionForResult() ? createResultData(config, null) : null;
+        final Intent resultData = new Intent();
+        if (config != null) {
+            resultData.putExtra(KEY_WIFI_CONFIGURATION, config);
+        }
         setResult(RESULT_CONNECTED, resultData);
         finish();
     }
@@ -291,22 +287,17 @@
             }
         }
 
-        Intent resultData = hasPermissionForResult() ? createResultData(config, accessPoint) : null;
-        setResult(RESULT_CONNECTED, resultData);
-        finish();
-    }
-
-    protected Intent createResultData(WifiConfiguration config, AccessPoint accessPoint) {
-        Intent result = new Intent();
+        Intent resultData = new Intent();
         if (accessPoint != null) {
             Bundle accessPointState = new Bundle();
             accessPoint.saveWifiState(accessPointState);
-            result.putExtra(KEY_ACCESS_POINT_STATE, accessPointState);
+            resultData.putExtra(KEY_ACCESS_POINT_STATE, accessPointState);
         }
         if (config != null) {
-            result.putExtra(KEY_WIFI_CONFIGURATION, config);
+            resultData.putExtra(KEY_WIFI_CONFIGURATION, config);
         }
-        return result;
+        setResult(RESULT_CONNECTED, resultData);
+        finish();
     }
 
     @Override
@@ -342,44 +333,9 @@
             if (resultCode != RESULT_OK) {
                 return;
             }
-            if (hasPermissionForResult()) {
-                setResult(RESULT_CONNECTED, data);
-            } else {
-                setResult(RESULT_CONNECTED);
-            }
+
+            setResult(RESULT_CONNECTED, data);
             finish();
         }
     }
-
-    protected boolean hasPermissionForResult() {
-        final String callingPackage = getCallingPackage();
-        if (callingPackage == null) {
-            Log.d(TAG, "Failed to get the calling package, don't return the result.");
-            EventLog.writeEvent(0x534e4554, "185126813", -1 /* UID */, "no calling package");
-            return false;
-        }
-
-        if (getPackageManager().checkPermission(ACCESS_COARSE_LOCATION, callingPackage)
-                == PackageManager.PERMISSION_GRANTED) {
-            Log.d(TAG, "The calling package has ACCESS_COARSE_LOCATION permission for result.");
-            return true;
-        }
-
-        if (getPackageManager().checkPermission(ACCESS_FINE_LOCATION, callingPackage)
-                == PackageManager.PERMISSION_GRANTED) {
-            Log.d(TAG, "The calling package has ACCESS_FINE_LOCATION permission for result.");
-            return true;
-        }
-
-        Log.d(TAG, "The calling package does not have the necessary permissions for result.");
-        try {
-            EventLog.writeEvent(0x534e4554, "185126813",
-                    getPackageManager().getPackageUid(callingPackage, 0 /* flags */),
-                    "no permission");
-        } catch (PackageManager.NameNotFoundException e) {
-            EventLog.writeEvent(0x534e4554, "185126813", -1 /* UID */, "no permission");
-            Log.w(TAG, "Cannot find the UID, calling package: " + callingPackage, e);
-        }
-        return false;
-    }
 }
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivityTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivityTest.java
new file mode 100644
index 0000000..05e5b32
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivityTest.java
@@ -0,0 +1,84 @@
+/*
+ * 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.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.VISION_FRAGMENT_NO;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+
+import com.google.android.setupcompat.template.FooterBarMixin;
+import com.google.android.setupdesign.GlifLayout;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.RobolectricTestRunner;
+
+/** Tests for {@link AccessibilityScreenSizeForSetupWizardActivity} */
+@RunWith(RobolectricTestRunner.class)
+public class AccessibilityScreenSizeForSetupWizardActivityTest {
+    private static final int DISPLAY_SIZE_FRAGMENT_NO = 1;
+
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    private AccessibilityScreenSizeForSetupWizardActivity mActivity;
+
+    @Before
+    public void setup() {
+        final Intent intent = new Intent();
+        intent.putExtra(VISION_FRAGMENT_NO,
+                mContext.getResources().getInteger(R.integer.suw_font_size_fragment_no));
+        mActivity = Robolectric.buildActivity(AccessibilityScreenSizeForSetupWizardActivity.class,
+                intent).create().get();
+    }
+
+    @Test
+    public void generateHeader_setPageNoAsFontSize_returnFontSizeTitle() {
+        mActivity.generateHeader(
+                mActivity.getResources().getInteger(R.integer.suw_font_size_fragment_no));
+
+        final GlifLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
+
+        assertThat(layout.getHeaderText()).isEqualTo(mContext.getText(R.string.title_font_size));
+    }
+
+    @Test
+    public void generateHeader_setPageNoAsDisplaySize_returnDisplaySizeTitle() {
+        mActivity.generateHeader(DISPLAY_SIZE_FRAGMENT_NO);
+
+        final GlifLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
+
+        assertThat(layout.getHeaderText()).isEqualTo(mContext.getText(R.string.screen_zoom_title));
+    }
+
+    @Test
+    public void initFooterButton_generateDoneButton() {
+        mActivity.initFooterButton();
+
+        final GlifLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
+        final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
+
+        assertThat(mixin.getPrimaryButton().getText()).isEqualTo(mContext.getText(R.string.done));
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivityTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivityTest.java
index c3a630b..4d9668a 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivityTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivityTest.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.accessibility;
 
+import static com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.VISION_FRAGMENT_NO;
 import static com.android.settings.accessibility.AccessibilitySettingsForSetupWizardActivity.CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -26,8 +27,6 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.settings.R;
-import com.android.settings.SettingsActivity;
-import com.android.settings.display.FontSizePreferenceFragmentForSetupWizard;
 
 import com.google.android.setupcompat.util.WizardManagerHelper;
 
@@ -42,45 +41,47 @@
 @SmallTest
 public class AccessibilitySettingsForSetupWizardActivityTest {
 
-  @Test
-  public void createSetupAccessibilityActivity_shouldBeSUWTheme() {
-    final Intent intent = new Intent();
-    AccessibilitySettingsForSetupWizardActivity activity =
-        Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class, intent).get();
+    @Test
+    public void createSetupAccessibilityActivity_shouldBeSUWTheme() {
+        final Intent intent = new Intent();
+        AccessibilitySettingsForSetupWizardActivity activity =
+                Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
+                        intent).get();
 
-    assertThat(activity.getThemeResId()).isEqualTo(R.style.GlifV3Theme_Light);
-  }
+        assertThat(activity.getThemeResId()).isEqualTo(R.style.GlifV3Theme_Light);
+    }
 
-  @Test
-  public void onCreate_hasFontSizeComponent_shouldGoToFontSizePreferenceDirectly() {
-    AccessibilitySettingsForSetupWizardActivity activity =
-            Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
-                    new Intent(Intent.ACTION_MAIN).setComponent(new ComponentName(
-                            RuntimeEnvironment.application, CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW)).
-                            putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true).
-                            putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
+    @Test
+    public void onCreate_hasFontSizeComponent_shouldGoToFontSizePreferenceDirectly() {
+        AccessibilitySettingsForSetupWizardActivity activity =
+                Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
+                        new Intent(Intent.ACTION_MAIN).setComponent(new ComponentName(
+                                RuntimeEnvironment.application,
+                                CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW))
+                                .putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true)
+                                .putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
 
-    activity.tryLaunchFontSizeSettings();
+        activity.tryLaunchFontSizeSettings();
 
-    final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
-    assertThat(launchIntent).isNotNull();
-    assertThat(launchIntent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
-            FontSizePreferenceFragmentForSetupWizard.class.getName());
-    assertThat(activity.isFinishing()).isTrue();
-  }
+        final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
+        assertThat(launchIntent).isNotNull();
+        assertThat(launchIntent.getIntExtra(VISION_FRAGMENT_NO, -1)).isEqualTo(
+                activity.getResources().getInteger(R.integer.suw_font_size_fragment_no));
+        assertThat(activity.isFinishing()).isTrue();
+    }
 
-  @Test
-  public void onCreate_noFontSizeComponent_shouldNotFinishCurrentActivity() {
-    AccessibilitySettingsForSetupWizardActivity activity =
-            Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
-                    new Intent(Intent.ACTION_MAIN).
-                            putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true).
-                            putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
+    @Test
+    public void onCreate_noFontSizeComponent_shouldNotFinishCurrentActivity() {
+        AccessibilitySettingsForSetupWizardActivity activity =
+                Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
+                        new Intent(Intent.ACTION_MAIN)
+                                .putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true)
+                                .putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
 
-    activity.tryLaunchFontSizeSettings();
+        activity.tryLaunchFontSizeSettings();
 
-    final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
-    assertThat(launchIntent).isNull();
-    assertThat(activity.isFinishing()).isFalse();
-  }
+        final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
+        assertThat(launchIntent).isNull();
+        assertThat(activity.isFinishing()).isFalse();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySetupWizardUtilsTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySetupWizardUtilsTest.java
new file mode 100644
index 0000000..e79b122
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySetupWizardUtilsTest.java
@@ -0,0 +1,53 @@
+/*
+ * 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 org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.google.android.setupdesign.GlifPreferenceLayout;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+/** Tests for {@link AccessibilitySetupWizardUtils} */
+@RunWith(RobolectricTestRunner.class)
+public class AccessibilitySetupWizardUtilsTest {
+
+    private final Context mContext = ApplicationProvider.getApplicationContext();
+
+    @Test
+    public void setupGlifPreferenceLayout_assignValueToVariable() {
+        final String title = "title";
+        final String description = "description";
+        final Drawable icon = mock(Drawable.class);
+        GlifPreferenceLayout layout = mock(GlifPreferenceLayout.class);
+
+        AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(mContext, layout, title,
+                description, icon);
+
+        verify(layout).setHeaderText(title);
+        verify(layout).setDescriptionText(description);
+        verify(layout).setIcon(icon);
+        verify(layout).setHeaderText(title);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
index 4948986..c2de510 100644
--- a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
@@ -152,7 +152,8 @@
                 System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
 
         when(mDisplay.getBrightnessInfo()).thenReturn(
-                new BrightnessInfo(0.1f, 0.0f, 1.0f, BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF));
+                new BrightnessInfo(0.1f, 0.0f, 1.0f, BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF,
+                    0.5f));
 
         mController.updateState(mPreference);
 
@@ -166,7 +167,8 @@
                 System.SCREEN_BRIGHTNESS_MODE_MANUAL);
 
         when(mDisplay.getBrightnessInfo()).thenReturn(
-                new BrightnessInfo(0.5f, 0.0f, 1.0f, BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF));
+                new BrightnessInfo(0.5f, 0.0f, 1.0f, BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF,
+                    0.5f));
 
         mController.updateState(mPreference);
 
diff --git a/tests/robotests/src/com/android/settings/display/TopLevelWallpaperPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/TopLevelWallpaperPreferenceControllerTest.java
index 6ad9974..62b34e2 100644
--- a/tests/robotests/src/com/android/settings/display/TopLevelWallpaperPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/TopLevelWallpaperPreferenceControllerTest.java
@@ -29,6 +29,7 @@
 
 import com.android.settings.R;
 import com.android.settings.testutils.shadow.SettingsShadowResources;
+import com.android.settings.testutils.shadow.ShadowActivityEmbeddingUtils;
 
 import com.google.common.collect.Lists;
 
@@ -43,7 +44,7 @@
 import org.robolectric.shadows.ShadowPackageManager;
 
 @RunWith(RobolectricTestRunner.class)
-@Config(shadows = {SettingsShadowResources.class})
+@Config(shadows = {SettingsShadowResources.class, ShadowActivityEmbeddingUtils.class})
 public class TopLevelWallpaperPreferenceControllerTest {
     private static final String TEST_KEY = "test_key";
 
@@ -204,18 +205,32 @@
     }
 
     @Test
-    public void handlePreferenceTreeClick_launchClearTask() {
-        mShadowPackageManager.setResolveInfosForIntent(
-                mWallpaperIntent, Lists.newArrayList());
+    public void handlePreferenceTreeClick_embeddingActivityDisabled_launchWithTaskFlag() {
+        ShadowActivityEmbeddingUtils.setIsEmbeddingActivityEnabled(false);
         mShadowPackageManager.setResolveInfosForIntent(
                 mStylesAndWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
-
         Preference preference = new Preference(mContext);
         preference.setKey(TEST_KEY);
 
         mController.handlePreferenceTreeClick(preference);
 
-        assertThat((Shadows.shadowOf(mContext).getNextStartedActivityForResult()
-                .intent.getFlags() & Intent.FLAG_ACTIVITY_CLEAR_TASK) != 0).isTrue();
+        int flags = Shadows.shadowOf(mContext).getNextStartedActivityForResult().intent.getFlags();
+        assertThat((flags & Intent.FLAG_ACTIVITY_NEW_TASK) != 0).isTrue();
+        assertThat((flags & Intent.FLAG_ACTIVITY_CLEAR_TASK) != 0).isTrue();
+    }
+
+    @Test
+    public void handlePreferenceTreeClick_embeddingActivityEnabled_launchWithoutTaskFlag() {
+        ShadowActivityEmbeddingUtils.setIsEmbeddingActivityEnabled(true);
+        mShadowPackageManager.setResolveInfosForIntent(
+                mStylesAndWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
+        Preference preference = new Preference(mContext);
+        preference.setKey(TEST_KEY);
+
+        mController.handlePreferenceTreeClick(preference);
+
+        int flags = Shadows.shadowOf(mContext).getNextStartedActivityForResult().intent.getFlags();
+        assertThat((flags & Intent.FLAG_ACTIVITY_NEW_TASK) != 0).isFalse();
+        assertThat((flags & Intent.FLAG_ACTIVITY_CLEAR_TASK) != 0).isFalse();
     }
 }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
index c0b566a..95cacbb 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
@@ -157,6 +157,11 @@
     }
 
     @Test
+    public void testIsAdaptiveChargingSupported_returnFalse() {
+        assertThat(mPowerFeatureProvider.isAdaptiveChargingSupported()).isFalse();
+    }
+
+    @Test
     public void testGetResumeChargeIntent_returnNull() {
         assertThat(mPowerFeatureProvider.getResumeChargeIntent()).isNull();
     }
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowActivityEmbeddingUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowActivityEmbeddingUtils.java
new file mode 100644
index 0000000..ddd7c88
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowActivityEmbeddingUtils.java
@@ -0,0 +1,41 @@
+/*
+ * 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.testutils.shadow;
+
+import android.content.Context;
+
+import com.android.settings.activityembedding.ActivityEmbeddingUtils;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+/**
+ * Shadow class for {@link ActivityEmbeddingUtils} to test embedding activity features.
+ */
+@Implements(ActivityEmbeddingUtils.class)
+public class ShadowActivityEmbeddingUtils {
+    private static boolean sIsEmbeddingActivityEnabled;
+
+    @Implementation
+    public static boolean isEmbeddingActivityEnabled(Context context) {
+        return sIsEmbeddingActivityEnabled;
+    }
+
+    public static void setIsEmbeddingActivityEnabled(boolean isEmbeddingActivityEnabled) {
+        sIsEmbeddingActivityEnabled = isEmbeddingActivityEnabled;
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java b/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java
index 685819e..f601e36 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java
@@ -16,25 +16,12 @@
 
 package com.android.settings.wifi;
 
-import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
-import static android.Manifest.permission.ACCESS_FINE_LOCATION;
-
-import static com.android.settings.wifi.WifiDialogActivity.REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER;
-import static com.android.settings.wifi.WifiDialogActivity.RESULT_CONNECTED;
-import static com.android.settings.wifi.WifiDialogActivity.RESULT_OK;
-
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 
 import android.content.Intent;
-import android.content.pm.PackageManager;
 import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiManager;
 
 import androidx.lifecycle.Lifecycle.State;
 import androidx.test.core.app.ActivityScenario;
@@ -44,7 +31,6 @@
 import com.android.settings.testutils.shadow.ShadowConnectivityManager;
 import com.android.settings.testutils.shadow.ShadowNetworkDetailsTracker;
 import com.android.settings.testutils.shadow.ShadowWifiManager;
-import com.android.settingslib.wifi.AccessPoint;
 
 import com.google.android.setupcompat.util.WizardManagerHelper;
 
@@ -69,25 +55,7 @@
 })
 public class WifiDialogActivityTest {
 
-    private static final String CALLING_PACKAGE = "calling_package";
     private static final String AP1_SSID = "\"ap1\"";
-
-    @Mock
-    PackageManager mPackageManager;
-    @Mock
-    WifiManager mWifiManager;
-    @Mock
-    WifiDialog mWifiDialog;
-    @Mock
-    WifiConfiguration mWifiConfiguration;
-    @Mock
-    AccessPoint mAccessPoint;
-    @Mock
-    WifiDialog2 mWifiDialog2;
-    @Mock
-    WifiConfigController2 mWifiConfiguration2;
-    @Mock
-    Intent mResultData;
     @Mock
     private WifiConfigController mController;
     @Mock
@@ -98,10 +66,6 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        when(mWifiDialog.getController()).thenReturn(mController);
-        when(mController.getConfig()).thenReturn(mWifiConfiguration);
-        when(mController.getAccessPoint()).thenReturn(mAccessPoint);
-        when(mWifiDialog2.getController()).thenReturn(mWifiConfiguration2);
 
         WifiConfiguration wifiConfig = new WifiConfiguration();
         wifiConfig.SSID = AP1_SSID;
@@ -134,52 +98,6 @@
     }
 
     @Test
-    public void onSubmit_noPermissionForResult_setResultWithoutData() {
-        WifiDialogActivity activity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
-        when(activity.hasPermissionForResult()).thenReturn(false);
-        when(activity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
-
-        activity.onSubmit(mWifiDialog);
-
-        verify(activity).setResult(RESULT_CONNECTED, null);
-    }
-
-    @Test
-    public void onSubmit_hasPermissionForResult_setResultWithData() {
-        WifiDialogActivity activity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
-        when(activity.hasPermissionForResult()).thenReturn(true);
-        when(activity.createResultData(any(), any())).thenReturn(mResultData);
-        when(activity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
-
-        activity.onSubmit(mWifiDialog);
-
-        verify(activity).setResult(RESULT_CONNECTED, mResultData);
-    }
-
-    @Test
-    public void onSubmit2_noPermissionForResult_setResultWithoutData() {
-        WifiDialogActivity activity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
-        when(activity.hasPermissionForResult()).thenReturn(false);
-        when(activity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
-
-        activity.onSubmit(mWifiDialog2);
-
-        verify(activity).setResult(RESULT_CONNECTED, null);
-    }
-
-    @Test
-    public void onSubmit2_hasPermissionForResult_setResultWithData() {
-        WifiDialogActivity activity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
-        when(activity.hasPermissionForResult()).thenReturn(true);
-        when(activity.createResultData(any(), any())).thenReturn(mResultData);
-        when(activity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
-
-        activity.onSubmit(mWifiDialog2);
-
-        verify(activity).setResult(RESULT_CONNECTED, mResultData);
-    }
-
-    @Test
     @Ignore
     public void onSubmit2_whenConnectForCallerIsTrue_shouldConnectToNetwork() {
         final Intent intent = new Intent("com.android.settings.WIFI_DIALOG");
@@ -260,97 +178,4 @@
         assertThat(dialog.getContext().getThemeResId())
                 .isEqualTo(R.style.SuwAlertDialogThemeCompat_Light);
     }
-
-    @Test
-    public void onActivityResult_noPermissionForResult_setResultWithoutData() {
-        WifiDialogActivity activity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
-        when(activity.hasPermissionForResult()).thenReturn(false);
-        final Intent data = new Intent();
-
-        activity.onActivityResult(REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER, RESULT_OK,
-                data);
-
-        verify(activity).setResult(RESULT_CONNECTED);
-    }
-
-    @Test
-    public void onActivityResult_hasPermissionForResult_setResultWithData() {
-        WifiDialogActivity activity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
-        when(activity.hasPermissionForResult()).thenReturn(true);
-        final Intent data = new Intent();
-
-        activity.onActivityResult(REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER, RESULT_OK,
-                data);
-
-        verify(activity).setResult(RESULT_CONNECTED, data);
-    }
-
-    @Test
-    public void hasPermissionForResult_noCallingPackage_returnFalse() {
-        WifiDialogActivity activity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
-        when(activity.getCallingPackage()).thenReturn(null);
-
-        final boolean result = activity.hasPermissionForResult();
-
-        assertThat(result).isFalse();
-    }
-
-    @Test
-    public void hasPermissionForResult_noPermission_returnFalse() {
-        WifiDialogActivity activity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
-        when(activity.getCallingPackage()).thenReturn(null);
-        when(mPackageManager.checkPermission(ACCESS_COARSE_LOCATION, CALLING_PACKAGE))
-                .thenReturn(PackageManager.PERMISSION_DENIED);
-        when(mPackageManager.checkPermission(ACCESS_FINE_LOCATION, CALLING_PACKAGE))
-                .thenReturn(PackageManager.PERMISSION_DENIED);
-
-        final boolean result = activity.hasPermissionForResult();
-
-        assertThat(result).isFalse();
-    }
-
-    @Test
-    public void hasPermissionForResult_hasCoarseLocationPermission_returnTrue() {
-        WifiDialogActivity activity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
-        when(activity.getCallingPackage()).thenReturn(CALLING_PACKAGE);
-        when(activity.getPackageManager()).thenReturn(mPackageManager);
-        when(mPackageManager.checkPermission(ACCESS_COARSE_LOCATION, CALLING_PACKAGE))
-                .thenReturn(PackageManager.PERMISSION_GRANTED);
-        when(mPackageManager.checkPermission(ACCESS_FINE_LOCATION, CALLING_PACKAGE))
-                .thenReturn(PackageManager.PERMISSION_DENIED);
-
-        final boolean result = activity.hasPermissionForResult();
-
-        assertThat(result).isTrue();
-    }
-
-    @Test
-    public void hasPermissionForResult_hasFineLocationPermission_returnTrue() {
-        WifiDialogActivity activity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
-        when(activity.getCallingPackage()).thenReturn(CALLING_PACKAGE);
-        when(activity.getPackageManager()).thenReturn(mPackageManager);
-        when(mPackageManager.checkPermission(ACCESS_COARSE_LOCATION, CALLING_PACKAGE))
-                .thenReturn(PackageManager.PERMISSION_DENIED);
-        when(mPackageManager.checkPermission(ACCESS_FINE_LOCATION, CALLING_PACKAGE))
-                .thenReturn(PackageManager.PERMISSION_GRANTED);
-
-        final boolean result = activity.hasPermissionForResult();
-
-        assertThat(result).isTrue();
-    }
-
-    @Test
-    public void hasPermissionForResult_haveBothLocationPermissions_returnTrue() {
-        WifiDialogActivity activity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
-        when(activity.getCallingPackage()).thenReturn(CALLING_PACKAGE);
-        when(activity.getPackageManager()).thenReturn(mPackageManager);
-        when(mPackageManager.checkPermission(ACCESS_COARSE_LOCATION, CALLING_PACKAGE))
-                .thenReturn(PackageManager.PERMISSION_GRANTED);
-        when(mPackageManager.checkPermission(ACCESS_FINE_LOCATION, CALLING_PACKAGE))
-                .thenReturn(PackageManager.PERMISSION_GRANTED);
-
-        final boolean result = activity.hasPermissionForResult();
-
-        assertThat(result).isTrue();
-    }
 }