Merge "Fix runtime exception when cachedDevice is null"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 62803af..956477b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -213,7 +213,7 @@
         <activity
             android:name=".Settings$ConnectedDeviceDashboardActivity"
             android:label="@string/connected_devices_dashboard_title"
-            android:icon="@drawable/ic_homepage_connected_device"
+            android:icon="@drawable/ic_devices_other"
             android:parentActivityName="Settings">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.BLUETOOTH_SETTINGS" />
@@ -2642,10 +2642,6 @@
             android:grantUriPermissions="true"
             android:exported="false"/>
 
-        <activity android:name=".sim.SimPreferenceDialog"
-            android:theme="@style/Theme.AlertDialog"
-            android:excludeFromRecents="true" />
-
         <activity
             android:name=".wifi.RequestToggleWiFiActivity"
             android:theme="@android:style/Theme.DeviceDefault.Light.Dialog.Alert"
diff --git a/res/layout/crypt_keeper_emergency_button.xml b/res/layout/crypt_keeper_emergency_button.xml
index 0b6f810..6efcf5a 100644
--- a/res/layout/crypt_keeper_emergency_button.xml
+++ b/res/layout/crypt_keeper_emergency_button.xml
@@ -24,8 +24,7 @@
     android:layout_width="match_parent"
     android:layout_height="0dp"
     android:layout_weight="1"
-    android:orientation="vertical"
-    android:gravity="bottom">
+    android:orientation="vertical">
     <Button
         android:id="@+id/emergencyCallButton"
         android:layout_width="wrap_content"
diff --git a/res/layout/multi_sim_dialog.xml b/res/layout/multi_sim_dialog.xml
deleted file mode 100644
index d0e7df8..0000000
--- a/res/layout/multi_sim_dialog.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 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.
--->
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-         android:layout_width="wrap_content"
-         android:layout_height="wrap_content">
-
-    <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
-
-        <LinearLayout android:id="@+id/type"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-            <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/sim_dialog_margin_top"
-                    android:paddingStart="@dimen/sim_content_padding"
-                    android:text="@string/sim_editor_name" />
-
-            <EditText android:id="@+id/sim_name"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:singleLine="true"
-                    android:paddingStart="@dimen/sim_content_padding"
-                    android:paddingBottom="@dimen/sim_dialog_margin_bottom"
-                    android:hint="@string/sim_name_hint"
-                    android:inputType="textNoSuggestions"
-                    android:maxLength="@integer/sim_name_length"
-                    android:textColor="@android:color/black"
-                    style="?android:attr/textAppearanceMedium" />
-
-        </LinearLayout>
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
-
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/sim_dialog_margin_top"
-                android:paddingStart="@dimen/sim_content_padding"
-                android:text="@string/color_title" />
-
-            <Spinner
-                android:id="@+id/spinner"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:paddingStart="@dimen/sim_content_padding" />
-
-        </LinearLayout>
-
-        <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-            <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/sim_dialog_margin_top"
-                    android:paddingStart="@dimen/sim_content_padding"
-                    android:text="@string/sim_editor_carrier" />
-
-            <TextView android:id="@+id/carrier"
-                    android:textColor="@android:color/black"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:paddingStart="@dimen/sim_content_padding"
-                    android:paddingBottom="@dimen/sim_dialog_margin_bottom"
-                    android:singleLine="true"
-                    style="?android:attr/textAppearanceMedium" />
-
-        </LinearLayout>
-
-        <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-            <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/sim_dialog_margin_top"
-                    android:paddingStart="@dimen/sim_content_padding"
-                    android:text="@string/sim_editor_number" />
-
-            <TextView android:id="@+id/number"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:paddingBottom="@dimen/sim_dialog_margin_bottom"
-                    android:paddingStart="@dimen/sim_content_padding"
-                    android:singleLine="true"
-                    android:textColor="@android:color/black"
-                    style="?android:attr/textAppearanceMedium" />
-
-        </LinearLayout>
-
-    </LinearLayout>
-
-</ScrollView>
diff --git a/res/layout/settings_color_picker_item.xml b/res/layout/settings_color_picker_item.xml
deleted file mode 100644
index c171950..0000000
--- a/res/layout/settings_color_picker_item.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="horizontal"
-    android:background="?android:attr/selectableItemBackground" >
-
-    <ImageView
-        android:id="@+id/color_icon"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:paddingRight="8dp"
-        android:paddingLeft="6dp"
-        android:paddingTop="8dp"
-        android:paddingBottom="8dp"
-        android:layout_gravity="center_vertical" />
-
-    <TextView
-        android:id="@+id/color_text"
-        android:gravity="center_vertical"
-        android:layout_height="wrap_content"
-        android:layout_width="0dp"
-        android:layout_weight="1"
-        android:paddingTop="8dp"
-        android:paddingBottom="8dp"
-        android:paddingRight="8dp"
-        android:paddingLeft="8dp"
-        android:textColor="@android:color/black"
-        style="?android:attr/textAppearanceMedium" />
-
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/wifi_dialog.xml b/res/layout/wifi_dialog.xml
index 7d55e7b..c8fd6ce 100644
--- a/res/layout/wifi_dialog.xml
+++ b/res/layout/wifi_dialog.xml
@@ -368,14 +368,14 @@
                 android:layout_height="wrap_content"
                 style="@style/wifi_item"
                 android:paddingBottom="4dp"
-                android:importantForAccessibility="yes"
-                android:contentDescription="@string/wifi_advanced_toggle_description_collapsed"
+                android:importantForAccessibility="no"
                 android:visibility="gone">
             <CheckBox android:id="@+id/wifi_advanced_togglebox"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     style="@style/wifi_advanced_toggle"
-                    android:importantForAccessibility="noHideDescendants"
+                    android:importantForAccessibility="yes"
+                    android:contentDescription="@string/wifi_advanced_toggle_description"
                     android:text="@string/wifi_show_advanced" />
         </LinearLayout>
 
diff --git a/res/values/config.xml b/res/values/config.xml
index a329397..06a1555 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -410,7 +410,7 @@
     <string name="config_nearby_devices_slice_uri" translatable="false">content://com.google.android.gms.nearby.fastpair/device_status_list_item</string>
 
     <!-- Grayscale settings intent -->
-    <string name="config_grayscale_settings_intent" translate="false"></string>
+    <string name="config_grayscale_settings_intent" translatable="false"></string>
 
     <!-- List containing the injected tile keys which are suppressed. -->
     <string-array name="config_suppress_injected_tile_keys" translatable="false"/>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ed5865a..e1f360a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -533,12 +533,6 @@
     <!-- Main Settings screen settings summary text for the "Wireless controls" setting -->
     <string name="radio_controls_summary">Manage Wi\u2011Fi, Bluetooth, airplane mode, mobile networks, &amp; VPNs</string>
 
-    <!-- check box cellular data title [CHAR LIMIT=30] -->
-    <string name="cellular_data_title">Mobile data</string>
-    <!-- check box Calls title [CHAR LIMIT=30] -->
-    <string name="calls_title">Allow calls</string>
-    <!-- check box SMS Messges title [CHAR LIMIT=30] -->
-    <string name="sms_messages_title">SMS messages</string>
     <!-- check box cellular data summary [CHAR LIMIT=85] -->
     <string name="cellular_data_summary">Allow data usage over mobile network</string>
     <!-- check box to allow data usage when roaming [CHAR LIMIT=41] -->
@@ -1955,10 +1949,12 @@
     <!-- Dialog for Access Points --> <skip />
     <!-- Label to show/hide advanced options [CHAR LIMIT=40] -->
     <string name="wifi_show_advanced">Advanced options</string>
-    <!-- Message for talkback to say when Advanced Options expanded [CHAR LIMIT=NONE] -->
-    <string name="wifi_advanced_toggle_description_expanded">Drop down list Advanced Options. Double-tap to collapse.</string>
-    <!-- Message for talkback to say when Advanced Options is collapsed [CHAR LIMIT=NONE] -->
-    <string name="wifi_advanced_toggle_description_collapsed">Drop down list Advanced Options. Double-tap to expand.</string>
+    <!-- Message for talkback to say when focus on Advanced Options[CHAR LIMIT=NONE] -->
+    <string name="wifi_advanced_toggle_description">Drop down list Advanced Options</string>
+    <!-- Extended message for talkback to say when Advanced Options is expanded. (e.g., Double-tap to collapse) [CHAR LIMIT=NONE] -->
+    <string name="wifi_advanced_toggle_description_expanded">collapse</string>
+    <!-- Extended message for talkback to say when Advanced Options is collapsed. (e.g., Double-tap to expand) [CHAR LIMIT=NONE] -->
+    <string name="wifi_advanced_toggle_description_collapsed">expand</string>
     <!-- Label for the SSID of the network -->
     <string name="wifi_ssid">Network name</string>
     <!-- Hint for a text field to enter the SSID of a hidden wifi network. [CHAR LIMIT=35] -->
@@ -2210,8 +2206,8 @@
     <string name="wifi_advanced_titlebar">Advanced Wi\u2011Fi</string>
     <!-- Wi-Fi settings screen, advanced, title of the item to show the Wi-Fi device's SSID. [CHAR LIMIT=20] -->
     <string name="wifi_advanced_ssid_title">SSID</string>
-    <!-- Wi-Fi settings screen, advanced, title of the item to show the factory's Wi-Fi MAC address. [CHAR LIMIT=50] -->
-    <string name="wifi_advanced_factory_mac_address_title">Factory MAC address</string>
+    <!-- Wi-Fi settings screen, advanced, title of the item to show the device's Wi-Fi MAC address. [CHAR LIMIT=50] -->
+    <string name="wifi_advanced_device_mac_address_title">Device MAC address</string>
     <!-- Wi-Fi settings screen, advanced, title of the item to show the randomized Wi-Fi MAC address. [CHAR LIMIT=50] -->
     <string name="wifi_advanced_randomized_mac_address_title">Randomized MAC address</string>
     <!-- Title of the screen to adjust IP settings -->
@@ -3039,8 +3035,8 @@
     <string name="status_operator">Network</string>
     <!-- About phone, status item title.  The MAC address of the Wi-Fi network adapter. -->
     <string name="status_wifi_mac_address">Wi\u2011Fi MAC address</string>
-    <!-- About phone, status item title.  The Factory MAC address of the Wi-Fi network adapter. [CHAR LIMIT=50] -->
-    <string name="status_factory_wifi_mac_address">Factory Wi\u2011Fi MAC address</string>
+    <!-- About phone, status item title.  The device's MAC address of the Wi-Fi network adapter. [CHAR LIMIT=50] -->
+    <string name="status_device_wifi_mac_address">Device Wi\u2011Fi MAC address</string>
     <!-- About phone, status item title.  The bluetooth adapter's hardware address-->
     <string name="status_bt_address">Bluetooth address</string>
     <!-- About phone, status item title.  The hardware serial number. [CHAR LIMIT=30]-->
@@ -7043,8 +7039,6 @@
     <string name="sim_select_card">Select a SIM card</string>
     <!-- Label for a numbered SIM card.  [CHAR LIMIT=40] -->
     <string name="sim_card_number_title">SIM <xliff:g id="card_number">%1$d</xliff:g></string>
-    <!-- Name label of Sim card that is empty.  [CHAR LIMIT=40] -->
-    <string name="sim_slot_empty">SIM empty</string>
     <!-- Name label of Sim Editor.  [CHAR LIMIT=40] -->
     <string name="sim_editor_name">SIM name</string>
     <!-- Hint for SIM name in sim name editor dialog.  [CHAR LIMIT=40] -->
@@ -7090,8 +7084,6 @@
     <!-- Message under title informing the user to touch to go to SIM Cards in Settings.  [CHAR LIMIT=40] -->
     <string name="sim_notification_summary">Tap to set up</string>
 
-    <!-- This is a divider in the SIM cards preferences that is the header of various settings where the user chooses which SIM to use for phone calls, data, and SMS messages [CHAR LIMIT=50] -->
-    <string name="sim_pref_divider">Preferred SIM for</string>
     <!-- When a user chooses this "Ask first" preference for the SIM to use for phone calls, they'll be prompted to choose a SIM every time they initiate a call [CHAR LIMIT=50] -->
     <string name="sim_calls_ask_first_prefs_title">Ask every time</string>
     <!-- When a SIM preference hasn't been selected yet, this string is displayed as the pref summary until the user chooses a SIM subscription from the preference list [CHAR LIMIT=50] -->
diff --git a/res/xml/my_device_info.xml b/res/xml/my_device_info.xml
index ccd52ea..3f22a7b 100644
--- a/res/xml/my_device_info.xml
+++ b/res/xml/my_device_info.xml
@@ -150,7 +150,7 @@
     <Preference
         android:key="wifi_mac_address"
         android:order="46"
-        android:title="@string/status_factory_wifi_mac_address"
+        android:title="@string/status_device_wifi_mac_address"
         android:summary="@string/summary_placeholder"
         android:selectable="false"
         settings:enableCopying="true"/>
diff --git a/res/xml/sim_settings.xml b/res/xml/sim_settings.xml
deleted file mode 100644
index 63e4ba4..0000000
--- a/res/xml/sim_settings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-    android:key="sim_cards"
-    android:title="@string/sim_settings_title">
-
-    <PreferenceCategory
-            android:key="sim_activities"
-            android:title="@string/sim_pref_divider" >
-
-        <Preference android:key="sim_cellular_data"
-            android:title="@string/cellular_data_title" />
-
-        <Preference android:key="sim_calls"
-            android:title="@string/calls_title" />
-
-        <Preference android:key="sim_sms"
-            android:title="@string/sms_messages_title" />
-
-    </PreferenceCategory>
-
-
-</PreferenceScreen>
diff --git a/src/com/android/settings/MasterClearConfirm.java b/src/com/android/settings/MasterClearConfirm.java
index a8c4341..679f18f 100644
--- a/src/com/android/settings/MasterClearConfirm.java
+++ b/src/com/android/settings/MasterClearConfirm.java
@@ -49,6 +49,7 @@
 import com.google.android.setupcompat.template.FooterBarMixin;
 import com.google.android.setupcompat.template.FooterButton;
 import com.google.android.setupcompat.template.FooterButton.ButtonType;
+import com.google.android.setupcompat.util.WizardManagerHelper;
 import com.google.android.setupdesign.GlifLayout;
 
 /**
@@ -86,7 +87,7 @@
                     getActivity().getSystemService(Context.OEM_LOCK_SERVICE);
 
             if (pdbManager != null && !oemLockManager.isOemUnlockAllowed() &&
-                    Utils.isDeviceProvisioned(getActivity())) {
+                    WizardManagerHelper.isDeviceProvisioned(getActivity())) {
                 // if OEM unlock is allowed, the persistent data block will be wiped during FR
                 // process. If disabled, it will be wiped here, unless the device is still being
                 // provisioned, in which case the persistent data block will be preserved.
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index add1178..24963b3 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -33,7 +33,6 @@
     public static class CreateShortcutActivity extends SettingsActivity { /* empty */ }
     public static class FaceSettingsActivity extends SettingsActivity { /* empty */ }
     public static class FingerprintSettingsActivity extends SettingsActivity { /* empty */ }
-    public static class SimSettingsActivity extends SettingsActivity { /* empty */ }
     public static class TetherSettingsActivity extends SettingsActivity { /* empty */ }
     public static class WifiTetherSettingsActivity extends SettingsActivity { /* empty */ }
     public static class VpnSettingsActivity extends SettingsActivity { /* empty */ }
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 4d813d5..e459ab8 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -35,7 +35,6 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.text.TextUtils;
-import android.util.FeatureFlagUtils;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
@@ -53,13 +52,11 @@
 import com.android.internal.util.ArrayUtils;
 import com.android.settings.Settings.WifiSettingsActivity;
 import com.android.settings.applications.manageapplications.ManageApplications;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.OnActivityResultListener;
 import com.android.settings.core.SettingsBaseActivity;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.core.gateway.SettingsGateway;
 import com.android.settings.dashboard.DashboardFeatureProvider;
-import com.android.settings.dashboard.profileselector.ProfileFragmentBridge;
 import com.android.settings.homepage.TopLevelSettings;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.wfd.WifiDisplaySettings;
@@ -276,7 +273,7 @@
             launchSettingFragment(initialFragmentName, intent);
         }
 
-        final boolean deviceProvisioned = Utils.isDeviceProvisioned(this);
+        final boolean deviceProvisioned = WizardManagerHelper.isDeviceProvisioned(this);
 
         final ActionBar actionBar = getActionBar();
         if (actionBar != null) {
@@ -568,15 +565,7 @@
             throw new IllegalArgumentException("Invalid fragment for this activity: "
                     + fragmentName);
         }
-        Fragment f = null;
-        if (FeatureFlagUtils.isEnabled(this, FeatureFlags.PERSONAL_WORK_PROFILE)
-                && UserManager.get(this).getUserProfiles().size() > 1
-                && ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName) != null) {
-            f = Fragment.instantiate(this, ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName),
-                    args);
-        } else {
-            f = Fragment.instantiate(this, fragmentName, args);
-        }
+        Fragment f = Utils.getTargetFragment(this, fragmentName, args);
         FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
         transaction.replace(R.id.main_content, f);
         if (titleResId > 0) {
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 75db3e1..f5f5ccd 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -21,6 +21,9 @@
 import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
 import static android.text.format.DateUtils.FORMAT_SHOW_DATE;
 
+import static com.android.settings.applications.manageapplications.ManageApplications.EXTRA_PERSONAL_ONLY;
+import static com.android.settings.applications.manageapplications.ManageApplications.EXTRA_WORK_ONLY;
+
 import android.annotation.Nullable;
 import android.app.ActionBar;
 import android.app.Activity;
@@ -73,7 +76,6 @@
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.Profile;
 import android.provider.ContactsContract.RawContacts;
-import android.provider.Settings;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.text.Spannable;
@@ -82,6 +84,7 @@
 import android.text.format.DateUtils;
 import android.text.style.TtsSpan;
 import android.util.ArraySet;
+import android.util.FeatureFlagUtils;
 import android.util.IconDrawableFactory;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -102,6 +105,7 @@
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.core.FeatureFlags;
+import com.android.settings.dashboard.profileselector.ProfileFragmentBridge;
 import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.password.ChooseLockSettingsHelper;
 import com.android.settingslib.widget.ActionBarShadowController;
@@ -729,11 +733,6 @@
         }
     }
 
-    public static boolean isDeviceProvisioned(Context context) {
-        return Settings.Global.getInt(context.getContentResolver(),
-                Settings.Global.DEVICE_PROVISIONED, 0) != 0;
-    }
-
     public static boolean startQuietModeDialogIfNecessary(Context context, UserManager um,
             int userId) {
         if (um.isQuietModeEnabled(UserHandle.of(userId))) {
@@ -1065,4 +1064,27 @@
             ActionBarShadowController.attachToView(activity, lifecycle, scrollView);
         }
     }
+
+    /**
+     * Return correct target fragment based on argument
+     *
+     * @param activity     the activity target fragment will be launched.
+     * @param fragmentName initial target fragment name.
+     * @param args         fragment launch arguments.
+     */
+    public static Fragment getTargetFragment(Activity activity, String fragmentName, Bundle args) {
+        Fragment f = null;
+        final boolean isWorkOnly = args == null ? false : args.getBoolean(EXTRA_WORK_ONLY);
+        final boolean isPersonalOnly = args == null ? false : args.getBoolean(EXTRA_PERSONAL_ONLY);
+        if (FeatureFlagUtils.isEnabled(activity, FeatureFlags.PERSONAL_WORK_PROFILE)
+                && UserManager.get(activity).getUserProfiles().size() > 1
+                && ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName) != null
+                && !isWorkOnly && !isPersonalOnly) {
+            f = Fragment.instantiate(activity, ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName),
+                    args);
+        } else {
+            f = Fragment.instantiate(activity, fragmentName, args);
+        }
+        return f;
+    }
 }
diff --git a/src/com/android/settings/applications/appops/AppOpsState.java b/src/com/android/settings/applications/appops/AppOpsState.java
index 3c8d647..fed77ae 100644
--- a/src/com/android/settings/applications/appops/AppOpsState.java
+++ b/src/com/android/settings/applications/appops/AppOpsState.java
@@ -28,6 +28,7 @@
 import android.os.Parcelable;
 import android.text.format.DateUtils;
 import android.util.Log;
+import android.util.Pair;
 import android.util.SparseArray;
 
 import com.android.settings.R;
@@ -618,7 +619,7 @@
 
                         }
                         AppOpsManager.OpEntry opEntry = new AppOpsManager.OpEntry(
-                                permOps.get(k), AppOpsManager.MODE_ALLOWED);
+                                permOps.get(k), AppOpsManager.MODE_ALLOWED, new Pair[0]);
                         dummyOps.add(opEntry);
                         addOp(entries, pkgOps, appEntry, opEntry, packageName == null,
                                 packageName == null ? 0 : opToOrder[opEntry.getOp()]);
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index 90ab71a..01289f2 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -143,6 +143,7 @@
     public static final String EXTRA_STORAGE_TYPE = "storageType";
     public static final String EXTRA_WORK_ONLY = "workProfileOnly";
     public static final String EXTRA_WORK_ID = "workId";
+    public static final String EXTRA_PERSONAL_ONLY = "personalOnly";
 
     private static final String EXTRA_SORT_ORDER = "sortOrder";
     private static final String EXTRA_SHOW_SYSTEM = "showSystem";
@@ -234,6 +235,7 @@
     private int mStorageType;
     private boolean mIsWorkOnly;
     private int mWorkUserId;
+    private boolean mIsPersonalOnly;
     private View mEmptyView;
     private int mFilterType;
 
@@ -308,6 +310,7 @@
         }
         final AppFilterRegistry appFilterRegistry = AppFilterRegistry.getInstance();
         mFilter = appFilterRegistry.get(appFilterRegistry.getDefaultFilterType(mListType));
+        mIsPersonalOnly = args != null ? args.getBoolean(EXTRA_PERSONAL_ONLY) : false;
         mIsWorkOnly = args != null ? args.getBoolean(EXTRA_WORK_ONLY) : false;
         mWorkUserId = args != null ? args.getInt(EXTRA_WORK_ID) : NO_USER_SPECIFIED;
         mExpandSearch = activity.getIntent().getBooleanExtra(EXTRA_EXPAND_SEARCH_VIEW, false);
@@ -405,8 +408,22 @@
 
         final AppFilterRegistry appFilterRegistry = AppFilterRegistry.getInstance();
         mFilterAdapter.enableFilter(appFilterRegistry.getDefaultFilterType(mListType));
+
+        AppFilter compositeFilter = getCompositeFilter(mListType, mStorageType, mVolumeUuid);
+        if (mIsWorkOnly) {
+            compositeFilter = new CompoundFilter(compositeFilter, ApplicationsState.FILTER_WORK);
+        }
+        if (mIsPersonalOnly) {
+            compositeFilter = new CompoundFilter(compositeFilter,
+                    ApplicationsState.FILTER_PERSONAL);
+        }
+        if (compositeFilter != null) {
+            mApplications.setCompositeFilter(compositeFilter);
+        }
+
         if (mListType == LIST_TYPE_MAIN) {
-            if (UserManager.get(getActivity()).getUserProfiles().size() > 1) {
+            if (UserManager.get(getActivity()).getUserProfiles().size() > 1 && !mIsWorkOnly
+                    && !mIsPersonalOnly) {
                 mFilterAdapter.enableFilter(FILTER_APPS_PERSONAL);
                 mFilterAdapter.enableFilter(FILTER_APPS_WORK);
             }
@@ -420,15 +437,6 @@
         if (mListType == LIST_TYPE_HIGH_POWER) {
             mFilterAdapter.enableFilter(FILTER_APPS_POWER_WHITELIST_ALL);
         }
-
-        AppFilter compositeFilter = getCompositeFilter(mListType, mStorageType, mVolumeUuid);
-        if (mIsWorkOnly) {
-            final AppFilter workFilter = appFilterRegistry.get(FILTER_APPS_WORK).getFilter();
-            compositeFilter = new CompoundFilter(compositeFilter, workFilter);
-        }
-        if (compositeFilter != null) {
-            mApplications.setCompositeFilter(compositeFilter);
-        }
     }
 
     @VisibleForTesting
@@ -449,9 +457,11 @@
             return new CompoundFilter(ApplicationsState.FILTER_MOVIES, filter);
         } else if (listType == LIST_TYPE_PHOTOGRAPHY) {
             return new CompoundFilter(ApplicationsState.FILTER_PHOTOS, filter);
+        } else {
+            final AppFilterRegistry appFilterRegistry = AppFilterRegistry.getInstance();
+            return appFilterRegistry.get(
+                    appFilterRegistry.getDefaultFilterType(listType)).getFilter();
         }
-
-        return null;
     }
 
     @Override
@@ -508,7 +518,7 @@
         outState.putBoolean(EXTRA_SHOW_SYSTEM, mShowSystem);
         outState.putBoolean(EXTRA_HAS_ENTRIES, mApplications.mHasReceivedLoadEntries);
         outState.putBoolean(EXTRA_HAS_BRIDGE, mApplications.mHasReceivedBridgeCallback);
-        if(mSearchView != null) {
+        if (mSearchView != null) {
             outState.putBoolean(EXTRA_EXPAND_SEARCH_VIEW, !mSearchView.isIconified());
         }
         if (mApplications != null) {
@@ -1166,7 +1176,7 @@
                 mSearchFilter = new SearchFilter();
             }
             // If we haven't load apps list completely, don't filter anything.
-            if(mOriginalEntries == null) {
+            if (mOriginalEntries == null) {
                 Log.w(TAG, "Apps haven't loaded completely yet, so nothing can be filtered");
                 return;
             }
diff --git a/src/com/android/settings/applications/manageapplications/ProfileSelectManageApplications.java b/src/com/android/settings/applications/manageapplications/ProfileSelectManageApplications.java
new file mode 100644
index 0000000..dc53e18
--- /dev/null
+++ b/src/com/android/settings/applications/manageapplications/ProfileSelectManageApplications.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications.manageapplications;
+
+import static com.android.settings.applications.manageapplications.ManageApplications.EXTRA_PERSONAL_ONLY;
+import static com.android.settings.applications.manageapplications.ManageApplications.EXTRA_WORK_ONLY;
+
+import android.os.Bundle;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
+
+/**
+ * Application Setting page for work profile.
+ */
+public class ProfileSelectManageApplications extends ProfileSelectFragment {
+
+    @Override
+    public Fragment[] getFragments() {
+        final Bundle workOnly = new Bundle();
+        workOnly.putBoolean(EXTRA_WORK_ONLY, true);
+        final Fragment workFragment = new ManageApplications();
+        workFragment.setArguments(workOnly);
+
+        final Bundle personalOnly = new Bundle();
+        personalOnly.putBoolean(EXTRA_PERSONAL_ONLY, true);
+        final Fragment personalFragment = new ManageApplications();
+        personalFragment.setArguments(personalOnly);
+        return new Fragment[] {
+                personalFragment, //0
+                workFragment
+        };
+    }
+}
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index aa96a02..a318037 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -127,7 +127,6 @@
 import com.android.settings.security.LockscreenDashboardFragment;
 import com.android.settings.security.SecuritySettings;
 import com.android.settings.shortcut.CreateShortcut;
-import com.android.settings.sim.SimSettings;
 import com.android.settings.support.SupportDashboardActivity;
 import com.android.settings.system.ResetDashboardFragment;
 import com.android.settings.system.SystemDashboardFragment;
@@ -161,7 +160,6 @@
             WifiSettings2.class.getName(),
             ConfigureWifiSettings.class.getName(),
             SavedAccessPointsWifiSettings.class.getName(),
-            SimSettings.class.getName(),
             TetherSettings.class.getName(),
             WifiP2pSettings.class.getName(),
             WifiTetherSettings.class.getName(),
diff --git a/src/com/android/settings/dashboard/profileselector/ProfileFragmentBridge.java b/src/com/android/settings/dashboard/profileselector/ProfileFragmentBridge.java
index 797782a..1a1a3e6 100644
--- a/src/com/android/settings/dashboard/profileselector/ProfileFragmentBridge.java
+++ b/src/com/android/settings/dashboard/profileselector/ProfileFragmentBridge.java
@@ -20,6 +20,8 @@
 
 import com.android.settings.accounts.AccountDashboardFragment;
 import com.android.settings.accounts.AccountProfileSelectFragment;
+import com.android.settings.applications.manageapplications.ManageApplications;
+import com.android.settings.applications.manageapplications.ProfileSelectManageApplications;
 
 import java.util.Map;
 
@@ -38,5 +40,7 @@
         FRAGMENT_MAP = new ArrayMap<>();
         FRAGMENT_MAP.put(AccountDashboardFragment.class.getName(),
                 AccountProfileSelectFragment.class.getName());
+        FRAGMENT_MAP.put(ManageApplications.class.getName(),
+                ProfileSelectManageApplications.class.getName());
     }
 }
diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
index 52a5cd9..8e8a82d 100644
--- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
+++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
@@ -53,6 +53,8 @@
 import com.android.settingslib.development.SystemPropPoker;
 import com.android.settingslib.search.SearchIndexable;
 
+import com.google.android.setupcompat.util.WizardManagerHelper;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -166,7 +168,7 @@
         super.onActivityCreated(icicle);
         // Apply page-level restrictions
         setIfOnlyAvailableForAdmins(true);
-        if (isUiRestricted() || !Utils.isDeviceProvisioned(getActivity())) {
+        if (isUiRestricted() || !WizardManagerHelper.isDeviceProvisioned(getActivity())) {
             // Block access to developer options if the user is not the owner, if user policy
             // restricts it, or if the device has not been provisioned
             mIsAvailable = false;
diff --git a/src/com/android/settings/development/featureflags/FeatureFlagsPreferenceController.java b/src/com/android/settings/development/featureflags/FeatureFlagsPreferenceController.java
index 94636e9..f0b7961 100644
--- a/src/com/android/settings/development/featureflags/FeatureFlagsPreferenceController.java
+++ b/src/com/android/settings/development/featureflags/FeatureFlagsPreferenceController.java
@@ -24,13 +24,13 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.core.BasePreferenceController;
-import com.android.settingslib.core.lifecycle.LifecycleObserver;
-import com.android.settingslib.core.lifecycle.events.OnStart;
 
 import java.util.Map;
 
-public class FeatureFlagsPreferenceController extends BasePreferenceController
-        implements LifecycleObserver, OnStart {
+/**
+ * A {@link BasePreferenceController} used in {@link FeatureFlagsDashboard}
+ */
+public class FeatureFlagsPreferenceController extends BasePreferenceController {
 
     private PreferenceGroup mGroup;
 
@@ -47,13 +47,6 @@
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
         mGroup = screen.findPreference(getPreferenceKey());
-    }
-
-    @Override
-    public void onStart() {
-        if (mGroup == null) {
-            return;
-        }
         final Map<String, String> featureMap = FeatureFlagUtils.getAllFeatureFlags();
         if (featureMap == null) {
             return;
diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
index dd522bf..40e34c0 100644
--- a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
@@ -46,6 +46,8 @@
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.development.DevelopmentSettingsEnabler;
 
+import com.google.android.setupcompat.util.WizardManagerHelper;
+
 public class BuildNumberPreferenceController extends BasePreferenceController implements
         LifecycleObserver, OnStart {
 
@@ -131,7 +133,7 @@
         }
 
         // Don't enable developer options until device has been provisioned
-        if (!Utils.isDeviceProvisioned(mContext)) {
+        if (!WizardManagerHelper.isDeviceProvisioned(mContext)) {
             mMetricsFeatureProvider.action(
                     mContext, SettingsEnums.ACTION_SETTINGS_BUILD_NUMBER_PREF);
             return false;
diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
index 525a887..31898d1 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
@@ -26,6 +26,7 @@
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.os.storage.VolumeInfo;
+import android.util.FeatureFlagUtils;
 import android.util.Log;
 import android.util.SparseArray;
 
@@ -37,6 +38,7 @@
 import com.android.settings.R;
 import com.android.settings.Settings;
 import com.android.settings.applications.manageapplications.ManageApplications;
+import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.deviceinfo.PrivateVolumeSettings.SystemInfoFragment;
@@ -389,10 +391,18 @@
     }
 
     private Bundle getWorkAnnotatedBundle(int additionalCapacity) {
-        final Bundle args = new Bundle(2 + additionalCapacity);
-        args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile);
-        args.putInt(ManageApplications.EXTRA_WORK_ID, mUserId);
-        return args;
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.PERSONAL_WORK_PROFILE)) {
+            final Bundle args = new Bundle(3 + additionalCapacity);
+            args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile);
+            args.putInt(ManageApplications.EXTRA_WORK_ID, mUserId);
+            args.putBoolean(ManageApplications.EXTRA_PERSONAL_ONLY, !mIsWorkProfile);
+            return args;
+        } else {
+            final Bundle args = new Bundle(2 + additionalCapacity);
+            args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile);
+            args.putInt(ManageApplications.EXTRA_WORK_ID, mUserId);
+            return args;
+        }
     }
 
     private Intent getFilesIntent() {
diff --git a/src/com/android/settings/panel/PanelFeatureProvider.java b/src/com/android/settings/panel/PanelFeatureProvider.java
index 85e098d..402a562 100644
--- a/src/com/android/settings/panel/PanelFeatureProvider.java
+++ b/src/com/android/settings/panel/PanelFeatureProvider.java
@@ -17,12 +17,12 @@
 package com.android.settings.panel;
 
 import android.content.Context;
+import android.os.Bundle;
 
 public interface PanelFeatureProvider {
 
     /**
-     * Returns {@link PanelContent} as specified by the {@param panelType}, and
-     * {@param mediaPackageName}.
+     * Returns {@link PanelContent} as specified by the {@param bundle}
      */
-    PanelContent getPanel(Context context, String panelType, String mediaPackageName);
+    PanelContent getPanel(Context context, Bundle bundle);
 }
diff --git a/src/com/android/settings/panel/PanelFeatureProviderImpl.java b/src/com/android/settings/panel/PanelFeatureProviderImpl.java
index e6b0a23..04d3095 100644
--- a/src/com/android/settings/panel/PanelFeatureProviderImpl.java
+++ b/src/com/android/settings/panel/PanelFeatureProviderImpl.java
@@ -19,16 +19,22 @@
 import static com.android.settingslib.media.MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT;
 
 import android.content.Context;
+import android.os.Bundle;
 import android.provider.Settings;
 
 public class PanelFeatureProviderImpl implements PanelFeatureProvider {
 
     @Override
-    public PanelContent getPanel(Context context, String panelType, String mediaPackageName) {
+    public PanelContent getPanel(Context context, Bundle bundle) {
         if (context == null) {
             return null;
         }
 
+        final String panelType =
+                bundle.getString(SettingsPanelActivity.KEY_PANEL_TYPE_ARGUMENT);
+        final String mediaPackageName =
+                bundle.getString(SettingsPanelActivity.KEY_MEDIA_PACKAGE_NAME);
+
         switch (panelType) {
             case Settings.Panel.ACTION_INTERNET_CONNECTIVITY:
                 return InternetConnectivityPanel.create(context);
diff --git a/src/com/android/settings/panel/PanelFragment.java b/src/com/android/settings/panel/PanelFragment.java
index 006ed00..0eda36f 100644
--- a/src/com/android/settings/panel/PanelFragment.java
+++ b/src/com/android/settings/panel/PanelFragment.java
@@ -161,17 +161,12 @@
         mPanelSlices.setVisibility(View.GONE);
 
         final Bundle arguments = getArguments();
-        final String panelType =
-                arguments.getString(SettingsPanelActivity.KEY_PANEL_TYPE_ARGUMENT);
         final String callingPackageName =
                 arguments.getString(SettingsPanelActivity.KEY_CALLING_PACKAGE_NAME);
-        final String mediaPackageName =
-                arguments.getString(SettingsPanelActivity.KEY_MEDIA_PACKAGE_NAME);
 
-        // TODO (b/124399577) transform interface to take a context and bundle.
         mPanel = FeatureFactory.getFactory(activity)
                 .getPanelFeatureProvider()
-                .getPanel(activity, panelType, mediaPackageName);
+                .getPanel(activity, arguments);
 
         if (mPanel == null) {
             activity.finish();
diff --git a/src/com/android/settings/password/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java
index a2885d6..6809f35 100644
--- a/src/com/android/settings/password/ChooseLockGeneric.java
+++ b/src/com/android/settings/password/ChooseLockGeneric.java
@@ -36,12 +36,8 @@
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.UserInfo;
-import android.hardware.face.Face;
 import android.hardware.face.FaceManager;
-import android.hardware.fingerprint.Fingerprint;
 import android.hardware.fingerprint.FingerprintManager;
-import android.hardware.fingerprint.FingerprintManager.RemovalCallback;
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.os.UserManager;
@@ -76,7 +72,7 @@
 import com.android.settingslib.RestrictedLockUtilsInternal;
 import com.android.settingslib.RestrictedPreference;
 
-import java.util.List;
+import com.google.android.setupcompat.util.WizardManagerHelper;
 
 public class ChooseLockGeneric extends SettingsActivity {
     public static final String CONFIRM_CREDENTIALS = "confirm_credentials";
@@ -188,7 +184,8 @@
         public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             final Activity activity = getActivity();
-            if (!Utils.isDeviceProvisioned(activity) && !canRunBeforeDeviceProvisioned()) {
+            if (!WizardManagerHelper.isDeviceProvisioned(activity)
+                    && !canRunBeforeDeviceProvisioned()) {
                 Log.i(TAG, "Refusing to start because device is not provisioned");
                 activity.finish();
                 return;
diff --git a/src/com/android/settings/password/SetNewPasswordActivity.java b/src/com/android/settings/password/SetNewPasswordActivity.java
index 055e5be..4bffbf5 100644
--- a/src/com/android/settings/password/SetNewPasswordActivity.java
+++ b/src/com/android/settings/password/SetNewPasswordActivity.java
@@ -32,16 +32,16 @@
 import android.app.admin.PasswordMetrics;
 import android.app.settings.SettingsEnums;
 import android.content.ComponentName;
-import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.util.Log;
 
-import com.android.settings.Utils;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
+import com.google.android.setupcompat.util.WizardManagerHelper;
+
 import java.util.List;
 
 /**
@@ -110,7 +110,7 @@
 
     @Override
     public void launchChooseLock(Bundle chooseLockFingerprintExtras) {
-        final boolean isInSetupWizard = !Utils.isDeviceProvisioned(this);
+        final boolean isInSetupWizard = !WizardManagerHelper.isDeviceProvisioned(this);
         Intent intent = isInSetupWizard ? new Intent(this, SetupChooseLockGeneric.class)
                 : new Intent(this, ChooseLockGeneric.class);
         intent.setAction(mNewPasswordAction);
diff --git a/src/com/android/settings/search/SearchFeatureProvider.java b/src/com/android/settings/search/SearchFeatureProvider.java
index 896f6e5..20d4e7c 100644
--- a/src/com/android/settings/search/SearchFeatureProvider.java
+++ b/src/com/android/settings/search/SearchFeatureProvider.java
@@ -34,6 +34,8 @@
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.search.SearchIndexableResources;
 
+import com.google.android.setupcompat.util.WizardManagerHelper;
+
 /**
  * FeatureProvider for Settings Search
  */
@@ -67,8 +69,9 @@
             return;
         }
 
-        if (!Utils.isDeviceProvisioned(activity) ||
-                !Utils.isPackageEnabled(activity, getSettingsIntelligencePkgName(activity))) {
+        if (!WizardManagerHelper.isDeviceProvisioned(activity)
+                || !Utils.isPackageEnabled(activity, getSettingsIntelligencePkgName(activity))
+                || WizardManagerHelper.isAnySetupWizard(activity.getIntent())) {
             final ViewGroup parent = (ViewGroup) toolbar.getParent();
             if (parent != null) {
                 parent.setVisibility(View.GONE);
diff --git a/src/com/android/settings/search/SettingsSearchIndexablesProvider.java b/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
index d3692b2..fab09fc 100644
--- a/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
+++ b/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
@@ -58,9 +58,11 @@
 import android.util.ArraySet;
 import android.util.Log;
 
+import androidx.annotation.Nullable;
 import androidx.slice.SliceViewManager;
 
 import com.android.settings.SettingsActivity;
+import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.slices.SettingsSliceProvider;
 import com.android.settingslib.drawer.DashboardCategory;
@@ -118,6 +120,9 @@
         return cursor;
     }
 
+    /**
+     * Gets a Cursor of RawData. We use those data in search indexing time
+     */
     @Override
     public Cursor queryRawData(String[] projection) {
         MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS);
@@ -161,6 +166,38 @@
         return cursor;
     }
 
+    /**
+     * Gets a Cursor of dynamic Raw data similar to queryRawData. We use those data in search query
+     * time
+     */
+    @Nullable
+    @Override
+    public Cursor queryDynamicRawData(String[] projection) {
+        final Context context = getContext();
+        final DashboardFeatureProvider dashboardFeatureProvider =
+                FeatureFactory.getFactory(context).getDashboardFeatureProvider(context);
+
+        final MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS);
+        for (DashboardCategory category : dashboardFeatureProvider.getAllCategories()) {
+            for (Tile tile : category.getTiles()) {
+                final String packageName = tile.getPackageName();
+                if (context.getPackageName().equals(packageName)) {
+                    continue;
+                }
+                final Object[] ref = new Object[INDEXABLES_RAW_COLUMNS.length];
+                ref[COLUMN_INDEX_RAW_TITLE] = tile.getTitle(context);
+                ref[COLUMN_INDEX_RAW_SUMMARY_ON] = tile.getSummary(context);
+                ref[COLUMN_INDEX_RAW_SUMMARY_OFF] = tile.getSummary(context);
+                ref[COLUMN_INDEX_RAW_KEY] = dashboardFeatureProvider.getDashboardKeyForTile(
+                        tile);
+                ref[COLUMN_INDEX_RAW_CLASS_NAME] = CATEGORY_KEY_TO_PARENT_MAP.get(
+                        tile.getCategory());
+                cursor.addRow(ref);
+            }
+        }
+        return cursor;
+    }
+
     @Override
     public Cursor querySiteMapPairs() {
         final MatrixCursor cursor = new MatrixCursor(SITE_MAP_COLUMNS);
diff --git a/src/com/android/settings/search/actionbar/SearchMenuController.java b/src/com/android/settings/search/actionbar/SearchMenuController.java
index 25d0d30..0243c09 100644
--- a/src/com/android/settings/search/actionbar/SearchMenuController.java
+++ b/src/com/android/settings/search/actionbar/SearchMenuController.java
@@ -17,8 +17,8 @@
 package com.android.settings.search.actionbar;
 
 import android.annotation.NonNull;
+import android.app.Activity;
 import android.app.settings.SettingsEnums;
-import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
@@ -37,6 +37,8 @@
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnCreateOptionsMenu;
 
+import com.google.android.setupcompat.util.WizardManagerHelper;
+
 public class SearchMenuController implements LifecycleObserver, OnCreateOptionsMenu {
 
     public static final String NEED_SEARCH_ICON_IN_ACTION_BAR = "need_search_icon_in_action_bar";
@@ -61,13 +63,14 @@
 
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        final Context context = mHost.getContext();
-        final String SettingsIntelligencePkgName = context.getString(
+        final Activity activity = mHost.getActivity();
+        final String SettingsIntelligencePkgName = activity.getString(
                 R.string.config_settingsintelligence_package_name);
-        if (!Utils.isDeviceProvisioned(mHost.getContext())) {
+        if (!WizardManagerHelper.isDeviceProvisioned(activity)
+                || WizardManagerHelper.isAnySetupWizard(activity.getIntent())) {
             return;
         }
-        if (!Utils.isPackageEnabled(mHost.getContext(), SettingsIntelligencePkgName)) {
+        if (!Utils.isPackageEnabled(activity, SettingsIntelligencePkgName)) {
             return;
         }
         if (menu == null) {
@@ -83,17 +86,17 @@
         searchItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
 
         searchItem.setOnMenuItemClickListener(target -> {
-            final Intent intent = FeatureFactory.getFactory(context)
+            final Intent intent = FeatureFactory.getFactory(activity)
                     .getSearchFeatureProvider()
-                    .buildSearchIntent(context, mPageId);
+                    .buildSearchIntent(activity, mPageId);
 
-            if (context.getPackageManager().queryIntentActivities(intent,
+            if (activity.getPackageManager().queryIntentActivities(intent,
                     PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) {
                 return true;
             }
 
-            FeatureFactory.getFactory(context).getMetricsFeatureProvider()
-                    .action(context, SettingsEnums.ACTION_SEARCH_RESULTS);
+            FeatureFactory.getFactory(activity).getMetricsFeatureProvider()
+                    .action(activity, SettingsEnums.ACTION_SEARCH_RESULTS);
             mHost.startActivityForResult(intent, SearchFeatureProvider.REQUEST_CODE);
             return true;
         });
diff --git a/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java b/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java
index 6b95b92..c0f7e1f 100644
--- a/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java
+++ b/src/com/android/settings/shortcut/CreateShortcutPreferenceController.java
@@ -38,6 +38,11 @@
 import android.view.View;
 import android.widget.ImageView;
 
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+
 import com.android.settings.R;
 import com.android.settings.Settings.TetherSettingsActivity;
 import com.android.settings.core.BasePreferenceController;
@@ -49,11 +54,6 @@
 import java.util.Comparator;
 import java.util.List;
 
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceGroup;
-
 /**
  * {@link BasePreferenceController} that populates a list of widgets that Settings app support.
  */
@@ -245,7 +245,7 @@
         Drawable iconDrawable;
         try {
             iconDrawable = context.getPackageManager().getResourcesForApplication(app)
-                    .getDrawable(resource);
+                    .getDrawable(resource, themedContext.getTheme());
             if (iconDrawable instanceof LayerDrawable) {
                 iconDrawable = ((LayerDrawable) iconDrawable).getDrawable(1);
             }
diff --git a/src/com/android/settings/sim/SimPreferenceDialog.java b/src/com/android/settings/sim/SimPreferenceDialog.java
deleted file mode 100644
index 0f22d2b..0000000
--- a/src/com/android/settings/sim/SimPreferenceDialog.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Copyright (C) 2015 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.sim;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.res.Resources;
-import android.graphics.Paint;
-import android.graphics.drawable.ShapeDrawable;
-import android.graphics.drawable.shapes.OvalShape;
-import android.os.Bundle;
-import android.telephony.PhoneNumberUtils;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-import androidx.appcompat.app.AlertDialog;
-
-import com.android.settings.R;
-import com.android.settings.Utils;
-
-public class SimPreferenceDialog extends Activity {
-
-    private Context mContext;
-    private SubscriptionInfo mSubInfoRecord;
-    private int mSlotId;
-    private int[] mTintArr;
-    private String[] mColorStrings;
-    private int mTintSelectorPos;
-    private SubscriptionManager mSubscriptionManager;
-    AlertDialog.Builder mBuilder;
-    View mDialogLayout;
-    private final String SIM_NAME = "sim_name";
-    private final String TINT_POS = "tint_pos";
-
-    @Override
-    public void onCreate(Bundle bundle) {
-        super.onCreate(bundle);
-        mContext = this;
-        final Bundle extras = getIntent().getExtras();
-        mSlotId = extras.getInt(SimSettings.EXTRA_SLOT_ID, -1);
-        mSubscriptionManager = SubscriptionManager.from(mContext);
-        mSubInfoRecord = mSubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(mSlotId);
-        mTintArr = mContext.getResources().getIntArray(com.android.internal.R.array.sim_colors);
-        mColorStrings = mContext.getResources().getStringArray(R.array.color_picker);
-        mTintSelectorPos = 0;
-
-        mBuilder = new AlertDialog.Builder(mContext);
-        LayoutInflater inflater = (LayoutInflater)mContext
-                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        mDialogLayout = inflater.inflate(R.layout.multi_sim_dialog, null);
-        mBuilder.setView(mDialogLayout);
-
-        createEditDialog(bundle);
-    }
-
-    @Override
-    public void onSaveInstanceState(Bundle savedInstanceState) {
-        savedInstanceState.putInt(TINT_POS, mTintSelectorPos);
-
-        final EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name);
-        savedInstanceState.putString(SIM_NAME, nameText.getText().toString());
-
-        super.onSaveInstanceState(savedInstanceState);
-
-    }
-
-    @Override
-    public void onRestoreInstanceState(Bundle savedInstanceState) {
-        super.onRestoreInstanceState(savedInstanceState);
-
-        int pos = savedInstanceState.getInt(TINT_POS);
-        final Spinner tintSpinner = (Spinner) mDialogLayout.findViewById(R.id.spinner);
-        tintSpinner.setSelection(pos);
-        mTintSelectorPos = pos;
-
-        EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name);
-        nameText.setText(savedInstanceState.getString(SIM_NAME));
-        Utils.setEditTextCursorPosition(nameText);
-    }
-
-    private void createEditDialog(Bundle bundle) {
-        final Resources res = mContext.getResources();
-        EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name);
-        nameText.setText(mSubInfoRecord.getDisplayName());
-        Utils.setEditTextCursorPosition(nameText);
-        final Spinner tintSpinner = (Spinner) mDialogLayout.findViewById(R.id.spinner);
-        SelectColorAdapter adapter = new SelectColorAdapter(mContext,
-                R.layout.settings_color_picker_item, mColorStrings);
-        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-        tintSpinner.setAdapter(adapter);
-
-        for (int i = 0; i < mTintArr.length; i++) {
-            if (mTintArr[i] == mSubInfoRecord.getIconTint()) {
-                tintSpinner.setSelection(i);
-                mTintSelectorPos = i;
-                break;
-            }
-        }
-
-        tintSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
-            @Override
-            public void onItemSelected(AdapterView<?> parent, View view,
-                                       int pos, long id){
-                tintSpinner.setSelection(pos);
-                mTintSelectorPos = pos;
-            }
-
-            @Override
-            public void onNothingSelected(AdapterView<?> parent) {
-            }
-        });
-
-        final TelephonyManager tm = (TelephonyManager) mContext.getSystemService(
-                Context.TELEPHONY_SERVICE);
-        TextView numberView = (TextView)mDialogLayout.findViewById(R.id.number);
-        final String rawNumber =  tm.getLine1Number(mSubInfoRecord.getSubscriptionId());
-        if (TextUtils.isEmpty(rawNumber)) {
-            numberView.setText(res.getString(com.android.internal.R.string.unknownName));
-        } else {
-            numberView.setText(PhoneNumberUtils.formatNumber(rawNumber));
-        }
-
-        String simCarrierName = tm.getSimOperatorName(mSubInfoRecord.getSubscriptionId());
-        TextView carrierView = (TextView)mDialogLayout.findViewById(R.id.carrier);
-        carrierView.setText(!TextUtils.isEmpty(simCarrierName) ? simCarrierName :
-                mContext.getString(com.android.internal.R.string.unknownName));
-
-        mBuilder.setTitle(String.format(res.getString(R.string.sim_editor_title),
-                (mSubInfoRecord.getSimSlotIndex() + 1)));
-
-        mBuilder.setPositiveButton(R.string.okay, new DialogInterface.OnClickListener() {
-            @Override
-            public void onClick(DialogInterface dialog, int whichButton) {
-                final EditText nameText = (EditText)mDialogLayout.findViewById(R.id.sim_name);
-                Utils.setEditTextCursorPosition(nameText);
-                String displayName = nameText.getText().toString();
-                int subId = mSubInfoRecord.getSubscriptionId();
-                mSubInfoRecord.setDisplayName(displayName);
-                mSubscriptionManager.setDisplayName(displayName, subId,
-                        SubscriptionManager.NAME_SOURCE_USER_INPUT);
-
-                final int tintSelected = tintSpinner.getSelectedItemPosition();
-                int subscriptionId = mSubInfoRecord.getSubscriptionId();
-                int tint = mTintArr[tintSelected];
-                mSubInfoRecord.setIconTint(tint);
-                mSubscriptionManager.setIconTint(tint, subscriptionId);
-                dialog.dismiss();
-            }
-        });
-
-        mBuilder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
-            @Override
-            public void onClick(DialogInterface dialog, int whichButton) {
-                dialog.dismiss();
-            }
-        });
-
-        mBuilder.setOnDismissListener(new DialogInterface.OnDismissListener() {
-           @Override
-           public void onDismiss(DialogInterface dialogInListener) {
-               finish();
-           }
-        });
-
-        mBuilder.create().show();
-    }
-
-    private class SelectColorAdapter extends ArrayAdapter<CharSequence> {
-        private Context mContext;
-        private int mResId;
-
-        public SelectColorAdapter(
-                Context context, int resource, String[] arr) {
-            super(context, resource, arr);
-            mContext = context;
-            mResId = resource;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            LayoutInflater inflater = (LayoutInflater)
-                    mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-
-            View rowView;
-            final ViewHolder holder;
-            Resources res = mContext.getResources();
-            int iconSize = res.getDimensionPixelSize(R.dimen.color_swatch_size);
-            int strokeWidth = res.getDimensionPixelSize(R.dimen.color_swatch_stroke_width);
-
-            if (convertView == null) {
-                // Cache views for faster scrolling
-                rowView = inflater.inflate(mResId, null);
-                holder = new ViewHolder();
-                ShapeDrawable drawable = new ShapeDrawable(new OvalShape());
-                drawable.setIntrinsicHeight(iconSize);
-                drawable.setIntrinsicWidth(iconSize);
-                drawable.getPaint().setStrokeWidth(strokeWidth);
-                holder.label = (TextView) rowView.findViewById(R.id.color_text);
-                holder.icon = (ImageView) rowView.findViewById(R.id.color_icon);
-                holder.swatch = drawable;
-                rowView.setTag(holder);
-            } else {
-                rowView = convertView;
-                holder = (ViewHolder) rowView.getTag();
-            }
-
-            holder.label.setText(getItem(position));
-            holder.swatch.getPaint().setColor(mTintArr[position]);
-            holder.swatch.getPaint().setStyle(Paint.Style.FILL_AND_STROKE);
-            holder.icon.setVisibility(View.VISIBLE);
-            holder.icon.setImageDrawable(holder.swatch);
-            return rowView;
-        }
-
-        @Override
-        public View getDropDownView(int position, View convertView, ViewGroup parent) {
-            View rowView = getView(position, convertView, parent);
-            final ViewHolder holder = (ViewHolder) rowView.getTag();
-
-            if (mTintSelectorPos == position) {
-                holder.swatch.getPaint().setStyle(Paint.Style.FILL_AND_STROKE);
-            } else {
-                holder.swatch.getPaint().setStyle(Paint.Style.STROKE);
-            }
-            holder.icon.setVisibility(View.VISIBLE);
-            return rowView;
-        }
-
-        private class ViewHolder {
-            TextView label;
-            ImageView icon;
-            ShapeDrawable swatch;
-        }
-    }
-}
diff --git a/src/com/android/settings/sim/SimSettings.java b/src/com/android/settings/sim/SimSettings.java
deleted file mode 100644
index bd65508..0000000
--- a/src/com/android/settings/sim/SimSettings.java
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
- * Copyright (C) 2014 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.sim;
-
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.graphics.drawable.BitmapDrawable;
-import android.os.Bundle;
-import android.os.SystemProperties;
-import android.provider.SearchIndexableResource;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
-import android.telephony.PhoneNumberUtils;
-import android.telephony.PhoneStateListener;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.internal.telephony.TelephonyProperties;
-import com.android.settings.R;
-import com.android.settings.RestrictedSettingsFragment;
-import com.android.settings.Utils;
-import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settingslib.search.Indexable;
-import com.android.settingslib.search.SearchIndexable;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@SearchIndexable
-public class SimSettings extends RestrictedSettingsFragment implements Indexable {
-    private static final String TAG = "SimSettings";
-    private static final boolean DBG = false;
-
-    private static final String DISALLOW_CONFIG_SIM = "no_config_sim";
-    private static final String SIM_CARD_CATEGORY = "sim_cards";
-    private static final String KEY_CELLULAR_DATA = "sim_cellular_data";
-    private static final String KEY_CALLS = "sim_calls";
-    private static final String KEY_SMS = "sim_sms";
-    public static final String EXTRA_SLOT_ID = "slot_id";
-
-    /**
-     * By UX design we use only one Subscription Information(SubInfo) record per SIM slot.
-     * mAvalableSubInfos is the list of SubInfos we present to the user.
-     * mSubInfoList is the list of all SubInfos.
-     * mSelectableSubInfos is the list of SubInfos that a user can select for data, calls, and SMS.
-     */
-    private List<SubscriptionInfo> mAvailableSubInfos = null;
-    private List<SubscriptionInfo> mSubInfoList = null;
-    private List<SubscriptionInfo> mSelectableSubInfos = null;
-    private PreferenceScreen mSimCards = null;
-    private SubscriptionManager mSubscriptionManager;
-    private int mNumSlots;
-    private Context mContext;
-
-    private int mPhoneCount = TelephonyManager.getDefault().getPhoneCount();
-    private int[] mCallState = new int[mPhoneCount];
-    private PhoneStateListener[] mPhoneStateListener = new PhoneStateListener[mPhoneCount];
-
-    public SimSettings() {
-        super(DISALLOW_CONFIG_SIM);
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return SettingsEnums.SIM;
-    }
-
-    @Override
-    public void onCreate(final Bundle bundle) {
-        super.onCreate(bundle);
-        mContext = getActivity();
-
-        mSubscriptionManager = SubscriptionManager.from(getActivity());
-        final TelephonyManager tm =
-                (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
-        addPreferencesFromResource(R.xml.sim_settings);
-
-        mNumSlots = tm.getSimCount();
-        mSimCards = (PreferenceScreen)findPreference(SIM_CARD_CATEGORY);
-        mAvailableSubInfos = new ArrayList<SubscriptionInfo>(mNumSlots);
-        mSelectableSubInfos = new ArrayList<SubscriptionInfo>();
-        SimSelectNotification.cancelSimSelectNotification(getActivity());
-    }
-
-    private final SubscriptionManager.OnSubscriptionsChangedListener mOnSubscriptionsChangeListener
-            = new SubscriptionManager.OnSubscriptionsChangedListener() {
-        @Override
-        public void onSubscriptionsChanged() {
-            if (DBG) log("onSubscriptionsChanged:");
-            updateSubscriptions();
-        }
-    };
-
-    private void updateSubscriptions() {
-        mSubInfoList = mSubscriptionManager.getActiveSubscriptionInfoList(true);
-        for (int i = 0; i < mNumSlots; ++i) {
-            Preference pref = mSimCards.findPreference("sim" + i);
-            if (pref instanceof SimPreference) {
-                mSimCards.removePreference(pref);
-            }
-        }
-        mAvailableSubInfos.clear();
-        mSelectableSubInfos.clear();
-
-        for (int i = 0; i < mNumSlots; ++i) {
-            final SubscriptionInfo sir = mSubscriptionManager
-                    .getActiveSubscriptionInfoForSimSlotIndex(i);
-            SimPreference simPreference = new SimPreference(getPrefContext(), sir, i);
-            simPreference.setOrder(i-mNumSlots);
-            mSimCards.addPreference(simPreference);
-            mAvailableSubInfos.add(sir);
-            if (sir != null) {
-                mSelectableSubInfos.add(sir);
-            }
-        }
-        updateAllOptions();
-    }
-
-    private void updateAllOptions() {
-        updateSimSlotValues();
-        updateActivitesCategory();
-    }
-
-    private void updateSimSlotValues() {
-        final int prefSize = mSimCards.getPreferenceCount();
-        for (int i = 0; i < prefSize; ++i) {
-            Preference pref = mSimCards.getPreference(i);
-            if (pref instanceof SimPreference) {
-                ((SimPreference)pref).update();
-            }
-        }
-    }
-
-    private void updateActivitesCategory() {
-        updateCellularDataValues();
-        updateCallValues();
-        updateSmsValues();
-    }
-
-    private void updateSmsValues() {
-        final Preference simPref = findPreference(KEY_SMS);
-        final SubscriptionInfo sir = mSubscriptionManager.getDefaultSmsSubscriptionInfo();
-        simPref.setTitle(R.string.sms_messages_title);
-        if (DBG) log("[updateSmsValues] mSubInfoList=" + mSubInfoList);
-
-        if (sir != null) {
-            simPref.setSummary(sir.getDisplayName());
-            simPref.setEnabled(mSelectableSubInfos.size() > 1);
-        } else if (sir == null) {
-            simPref.setSummary(R.string.sim_selection_required_pref);
-            simPref.setEnabled(mSelectableSubInfos.size() >= 1);
-        }
-    }
-
-    private void updateCellularDataValues() {
-        final Preference simPref = findPreference(KEY_CELLULAR_DATA);
-        final SubscriptionInfo sir = mSubscriptionManager.getDefaultDataSubscriptionInfo();
-        simPref.setTitle(R.string.cellular_data_title);
-        if (DBG) log("[updateCellularDataValues] mSubInfoList=" + mSubInfoList);
-
-        boolean callStateIdle = isCallStateIdle();
-        final boolean ecbMode = SystemProperties.getBoolean(
-                TelephonyProperties.PROPERTY_INECM_MODE, false);
-        if (sir != null) {
-            simPref.setSummary(sir.getDisplayName());
-            // Enable data preference in msim mode and call state idle
-            simPref.setEnabled((mSelectableSubInfos.size() > 1) && callStateIdle && !ecbMode);
-        } else if (sir == null) {
-            simPref.setSummary(R.string.sim_selection_required_pref);
-            // Enable data preference in msim mode and call state idle
-            simPref.setEnabled((mSelectableSubInfos.size() >= 1) && callStateIdle && !ecbMode);
-        }
-    }
-
-    private void updateCallValues() {
-        final Preference simPref = findPreference(KEY_CALLS);
-        final TelecomManager telecomManager = TelecomManager.from(mContext);
-        final PhoneAccountHandle phoneAccount =
-            telecomManager.getUserSelectedOutgoingPhoneAccount();
-        final List<PhoneAccountHandle> allPhoneAccounts =
-            telecomManager.getCallCapablePhoneAccounts();
-
-        simPref.setTitle(R.string.calls_title);
-        simPref.setSummary(phoneAccount == null
-                ? mContext.getResources().getString(R.string.sim_calls_ask_first_prefs_title)
-                : (String)telecomManager.getPhoneAccount(phoneAccount).getLabel());
-        simPref.setEnabled(allPhoneAccounts.size() > 1);
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
-        updateSubscriptions();
-        final TelephonyManager tm =
-                (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
-        if (mSelectableSubInfos.size() > 1) {
-            Log.d(TAG, "Register for call state change");
-            for (int i = 0; i < mPhoneCount; i++) {
-                int subId = mSelectableSubInfos.get(i).getSubscriptionId();
-                tm.createForSubscriptionId(subId).listen(getPhoneStateListener(i),
-                        PhoneStateListener.LISTEN_CALL_STATE);
-            }
-        }
-    }
-
-    @Override
-    public void onPause() {
-        super.onPause();
-        mSubscriptionManager.removeOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
-        final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
-        for (int i = 0; i < mPhoneCount; i++) {
-            if (mPhoneStateListener[i] != null) {
-                tm.listen(mPhoneStateListener[i], PhoneStateListener.LISTEN_NONE);
-                mPhoneStateListener[i] = null;
-            }
-        }
-    }
-
-    private PhoneStateListener getPhoneStateListener(int phoneId) {
-        // Disable Sim selection for Data when voice call is going on as changing the default data
-        // sim causes a modem reset currently and call gets disconnected
-        // ToDo : Add subtext on disabled preference to let user know that default data sim cannot
-        // be changed while call is going on
-        final int i = phoneId;
-        mPhoneStateListener[phoneId]  = new PhoneStateListener() {
-            @Override
-            public void onCallStateChanged(int state, String incomingNumber) {
-                if (DBG) log("PhoneStateListener.onCallStateChanged: state=" + state);
-                mCallState[i] = state;
-                updateCellularDataValues();
-            }
-        };
-        return mPhoneStateListener[phoneId];
-    }
-
-    @Override
-    public boolean onPreferenceTreeClick(final Preference preference) {
-        final Context context = mContext;
-        Intent intent = new Intent(context, SimDialogActivity.class);
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
-        if (preference instanceof SimPreference) {
-            Intent newIntent = new Intent(context, SimPreferenceDialog.class);
-            newIntent.putExtra(EXTRA_SLOT_ID, ((SimPreference)preference).getSlotId());
-            startActivity(newIntent);
-        } else if (findPreference(KEY_CELLULAR_DATA) == preference) {
-            intent.putExtra(SimDialogActivity.DIALOG_TYPE_KEY, SimDialogActivity.DATA_PICK);
-            context.startActivity(intent);
-        } else if (findPreference(KEY_CALLS) == preference) {
-            intent.putExtra(SimDialogActivity.DIALOG_TYPE_KEY, SimDialogActivity.CALLS_PICK);
-            context.startActivity(intent);
-        } else if (findPreference(KEY_SMS) == preference) {
-            intent.putExtra(SimDialogActivity.DIALOG_TYPE_KEY, SimDialogActivity.SMS_PICK);
-            context.startActivity(intent);
-        }
-
-        return true;
-    }
-
-    private class SimPreference extends Preference {
-        private SubscriptionInfo mSubInfoRecord;
-        private int mSlotId;
-        Context mContext;
-
-        public SimPreference(Context context, SubscriptionInfo subInfoRecord, int slotId) {
-            super(context);
-
-            mContext = context;
-            mSubInfoRecord = subInfoRecord;
-            mSlotId = slotId;
-            setKey("sim" + mSlotId);
-            update();
-        }
-
-        public void update() {
-            final Resources res = mContext.getResources();
-
-            setTitle(String.format(mContext.getResources()
-                    .getString(R.string.sim_editor_title), (mSlotId + 1)));
-            if (mSubInfoRecord != null) {
-                if (TextUtils.isEmpty(getPhoneNumber(mSubInfoRecord))) {
-                    setSummary(mSubInfoRecord.getDisplayName());
-                } else {
-                    setSummary(mSubInfoRecord.getDisplayName() + " - " +
-                            PhoneNumberUtils.createTtsSpannable(getPhoneNumber(mSubInfoRecord)));
-                    setEnabled(true);
-                }
-                setIcon(new BitmapDrawable(res, (mSubInfoRecord.createIconBitmap(mContext))));
-            } else {
-                setSummary(R.string.sim_slot_empty);
-                setFragment(null);
-                setEnabled(false);
-            }
-        }
-
-        private int getSlotId() {
-            return mSlotId;
-        }
-    }
-
-    // Returns the line1Number. Line1number should always be read from TelephonyManager since it can
-    // be overridden for display purposes.
-    private String getPhoneNumber(SubscriptionInfo info) {
-        final TelephonyManager tm =
-            (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
-        return tm.getLine1Number(info.getSubscriptionId());
-    }
-
-    private void log(String s) {
-        Log.d(TAG, s);
-    }
-
-    /**
-     * For search
-     */
-    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider() {
-                @Override
-                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
-                        boolean enabled) {
-                    ArrayList<SearchIndexableResource> result =
-                            new ArrayList<SearchIndexableResource>();
-
-                    if (Utils.showSimCardTile(context)) {
-                        SearchIndexableResource sir = new SearchIndexableResource(context);
-                        sir.xmlResId = R.xml.sim_settings;
-                        result.add(sir);
-                    }
-
-                    return result;
-                }
-            };
-
-    private boolean isCallStateIdle() {
-        boolean callStateIdle = true;
-        for (int i = 0; i < mCallState.length; i++) {
-            if (TelephonyManager.CALL_STATE_IDLE != mCallState[i]) {
-                callStateIdle = false;
-            }
-        }
-        Log.d(TAG, "isCallStateIdle " + callStateIdle);
-        return callStateIdle;
-    }
-}
diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java
index e82d13e..00d7950 100644
--- a/src/com/android/settings/slices/SliceBuilderUtils.java
+++ b/src/com/android/settings/slices/SliceBuilderUtils.java
@@ -159,7 +159,7 @@
                 .setClass(context, SliceBroadcastReceiver.class)
                 .putExtra(EXTRA_SLICE_KEY, data.getKey());
         return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
-                PendingIntent.FLAG_CANCEL_CURRENT);
+                PendingIntent.FLAG_UPDATE_CURRENT);
     }
 
     /**
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 5ad68fe..7a9f026 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -74,6 +74,8 @@
 import com.android.settingslib.drawable.CircleFramedDrawable;
 import com.android.settingslib.search.SearchIndexable;
 
+import com.google.android.setupcompat.util.WizardManagerHelper;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -224,7 +226,7 @@
         super.onCreate(icicle);
         addPreferencesFromResource(R.xml.user_settings);
         final Activity activity = getActivity();
-        if (!Utils.isDeviceProvisioned(activity)) {
+        if (!WizardManagerHelper.isDeviceProvisioned(activity)) {
             activity.finish();
             return;
         }
@@ -977,7 +979,8 @@
 
     private void updateAddUser(Context context) {
         if ((mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUserSetByAdmin)
-                && Utils.isDeviceProvisioned(context) && mUserCaps.mUserSwitcherEnabled) {
+                && WizardManagerHelper.isDeviceProvisioned(context)
+                && mUserCaps.mUserSwitcherEnabled) {
             mAddUser.setVisible(true);
             final boolean moreUsers = mUserManager.canAddMoreUsers();
             mAddUser.setEnabled(moreUsers && !mAddingUser && mUserManager.canSwitchUsers());
diff --git a/src/com/android/settings/wifi/NetworkRequestDialogFragment.java b/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
index a88b004..c7255f1 100644
--- a/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
+++ b/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
@@ -34,16 +34,19 @@
 import android.widget.Button;
 import android.widget.ProgressBar;
 import android.widget.TextView;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.VisibleForTesting;
 import androidx.appcompat.app.AlertDialog;
 import androidx.preference.internal.PreferenceImageView;
+
 import com.android.settings.R;
 import com.android.settingslib.Utils;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.wifi.AccessPoint;
 import com.android.settingslib.wifi.WifiTracker;
 import com.android.settingslib.wifi.WifiTrackerFactory;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -63,7 +66,8 @@
     private boolean mShowLimitedItem = true;
 
     private List<AccessPoint> mAccessPointList;
-    private FilterWifiTracker mFilterWifiTracker;
+    @VisibleForTesting
+    FilterWifiTracker mFilterWifiTracker;
     private AccessPointAdapter mDialogAdapter;
     private NetworkRequestUserSelectionCallback mUserSelectionCallback;
 
@@ -115,7 +119,7 @@
             neutralBtn.setVisibility(View.GONE);
             neutralBtn.setOnClickListener(v -> {
                 mShowLimitedItem = false;
-                renewAccessPointList(null /* List<ScanResult> */);
+                renewAccessPointList(null /* scanResults */);
                 notifyAdapterRefresh();
                 neutralBtn.setVisibility(View.GONE);
             });
@@ -323,7 +327,8 @@
         // Do nothing when selection is failed, let user could try again easily.
     }
 
-    private final class FilterWifiTracker {
+    @VisibleForTesting
+    final class FilterWifiTracker {
         private final List<String> mAccessPointKeys;
         private final WifiTracker mWifiTracker;
 
@@ -381,7 +386,8 @@
             return result;
         }
 
-        private WifiTracker.WifiListener mWifiListener = new WifiTracker.WifiListener() {
+        @VisibleForTesting
+        WifiTracker.WifiListener mWifiListener = new WifiTracker.WifiListener() {
 
             @Override
             public void onWifiStateChanged(int state) {
@@ -395,6 +401,7 @@
 
             @Override
             public void onAccessPointsChanged() {
+                renewAccessPointList(null /* scanResults */);
                 notifyAdapterRefresh();
             }
         };
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index c31b857..ef4e6af 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -47,7 +47,10 @@
 import android.util.Log;
 import android.view.KeyEvent;
 import android.view.View;
+import android.view.View.AccessibilityDelegate;
 import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.AdapterView;
@@ -62,6 +65,8 @@
 import android.widget.Spinner;
 import android.widget.TextView;
 
+import androidx.annotation.VisibleForTesting;
+
 import com.android.settings.ProxySelector;
 import com.android.settings.R;
 import com.android.settings.wifi.details.WifiPrivacyPreferenceController;
@@ -76,8 +81,6 @@
 import java.util.Arrays;
 import java.util.Iterator;
 
-import androidx.annotation.VisibleForTesting;
-
 /**
  * The class for allowing UIs like {@link WifiDialog} and {@link WifiConfigUiBase} to
  * share the logic for controlling buttons, text fields, etc.
@@ -338,6 +341,7 @@
                         mAccessPoint.isCarrierAp() ? View.GONE : View.VISIBLE);
                 advancedTogglebox.setOnCheckedChangeListener(this);
                 advancedTogglebox.setChecked(showAdvancedFields);
+                setAdvancedOptionAccessibilityString(showAdvancedFields);
                 mView.findViewById(R.id.wifi_advanced_fields)
                         .setVisibility(showAdvancedFields ? View.VISIBLE : View.GONE);
                 if (mAccessPoint.isCarrierAp()) {
@@ -1554,21 +1558,17 @@
                 ((EditText) mPasswordView).setSelection(pos);
             }
         } else if (view.getId() == R.id.wifi_advanced_togglebox) {
-            final View advancedToggle = mView.findViewById(R.id.wifi_advanced_toggle);
             final int toggleVisibility;
             final int stringID;
             if (isChecked) {
                 toggleVisibility = View.VISIBLE;
-                stringID = R.string.wifi_advanced_toggle_description_expanded;
-
                 // Hide the SoftKeyboard temporary to let user can see most of the expanded items.
                 hideSoftKeyboard(mView.getWindowToken());
             } else {
                 toggleVisibility = View.GONE;
-                stringID = R.string.wifi_advanced_toggle_description_collapsed;
             }
             mView.findViewById(R.id.wifi_advanced_fields).setVisibility(toggleVisibility);
-            advancedToggle.setContentDescription(mContext.getString(stringID));
+            setAdvancedOptionAccessibilityString(isChecked);
         }
     }
 
@@ -1677,6 +1677,8 @@
         mView.findViewById(R.id.hidden_settings_field).setVisibility(View.VISIBLE);
         ((CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox))
                 .setOnCheckedChangeListener(this);
+        // Set correct accessibility strings.
+        setAdvancedOptionAccessibilityString(false /* showAdvancedFields */);
     }
 
     /**
@@ -1767,4 +1769,26 @@
                 InputMethodManager.class);
         inputMethodManager.hideSoftInputFromWindow(windowToken, 0 /* flags */);
     }
+
+    private void setAdvancedOptionAccessibilityString(boolean showAdvancedFields) {
+        final CheckBox advancedToggleBox = mView.findViewById(R.id.wifi_advanced_togglebox);
+        advancedToggleBox.setAccessibilityDelegate(new AccessibilityDelegate() {
+            @Override
+            public void onInitializeAccessibilityNodeInfo(
+                    View v, AccessibilityNodeInfo info) {
+                super.onInitializeAccessibilityNodeInfo(v, info);
+                // To let TalkBack don't pronounce checked/unchecked.
+                info.setCheckable(false /* checkable */);
+                // To let TalkBack don't pronounce CheckBox.
+                info.setClassName(null /* className */);
+                final CharSequence accessibilityDoubleTapExtend = mContext.getString(
+                        showAdvancedFields ? R.string.wifi_advanced_toggle_description_expanded
+                                : R.string.wifi_advanced_toggle_description_collapsed);
+                // Customize TalkBack's pronunciation which been appended to "Double-tap to".
+                final AccessibilityAction customClick = new AccessibilityAction(
+                        AccessibilityNodeInfo.ACTION_CLICK, accessibilityDoubleTapExtend);
+                info.addAction(customClick);
+            }
+        });
+    }
 }
diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
index 3ed561b..4496838 100644
--- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
@@ -235,14 +235,28 @@
             return mNetworkCapabilities.hasCapability(cap) != nc.hasCapability(cap);
         }
 
+        private boolean hasPrivateDnsStatusChanged(NetworkCapabilities nc) {
+            // If this is the first time that WifiDetailPreferenceController gets
+            // NetworkCapabilities, report that something has changed and assign nc to
+            // mNetworkCapabilities in onCapabilitiesChanged. Note that the NetworkCapabilities
+            // from onCapabilitiesChanged() will never be null, so calling
+            // mNetworkCapabilities.isPrivateDnsBroken() would be safe next time.
+            if (mNetworkCapabilities == null) {
+                return true;
+            }
+
+            return mNetworkCapabilities.isPrivateDnsBroken() != nc.isPrivateDnsBroken();
+        }
+
         @Override
         public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
             // If the network just validated or lost Internet access or detected partial internet
-            // connectivity, refresh network state. Don't do this on every NetworkCapabilities
-            // change because refreshNetworkState sends IPCs to the system server from the UI
-            // thread, which can cause jank.
+            // connectivity or private dns was broken, refresh network state. Don't do this on
+            // every NetworkCapabilities change because refreshEntityHeader sends IPCs to the
+            // system server from the UI thread, which can cause jank.
             if (network.equals(mNetwork) && !nc.equals(mNetworkCapabilities)) {
-                if (hasCapabilityChanged(nc, NET_CAPABILITY_VALIDATED)
+                if (hasPrivateDnsStatusChanged(nc)
+                        || hasCapabilityChanged(nc, NET_CAPABILITY_VALIDATED)
                         || hasCapabilityChanged(nc, NET_CAPABILITY_CAPTIVE_PORTAL)
                         || hasCapabilityChanged(nc, NET_CAPABILITY_PARTIAL_CONNECTIVITY)) {
                     mAccessPoint.update(mWifiConfig, mWifiInfo, mNetworkInfo);
@@ -1161,7 +1175,7 @@
                 (mWifiConfig.macRandomizationSetting
                         == WifiConfiguration.RANDOMIZATION_PERSISTENT)
                         ? R.string.wifi_advanced_randomized_mac_address_title
-                        : R.string.wifi_advanced_factory_mac_address_title);
+                        : R.string.wifi_advanced_device_mac_address_title);
 
     }
 }
diff --git a/src/com/android/settings/wifi/qrcode/QrCamera.java b/src/com/android/settings/wifi/qrcode/QrCamera.java
index f0afd60..3e9c0b2 100644
--- a/src/com/android/settings/wifi/qrcode/QrCamera.java
+++ b/src/com/android/settings/wifi/qrcode/QrCamera.java
@@ -288,32 +288,43 @@
                 for (int i = 0; i < numberOfCameras; ++i) {
                     Camera.getCameraInfo(i, cameraInfo);
                     if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
+                        releaseCamera();
                         mCamera = Camera.open(i);
-                        mCamera.setPreviewTexture(surface);
                         mCameraOrientation = cameraInfo.orientation;
                         break;
                     }
                 }
-                if (mCamera == null) {
-                    Log.e(TAG, "Cannot find available back camera.");
-                    mScannerCallback.handleCameraFailure();
-                    return false;
-                }
-                setCameraParameter();
-                setTransformationMatrix();
-                if (!startPreview()) {
-                    Log.e(TAG, "Error to init Camera");
-                    mCamera = null;
-                    mScannerCallback.handleCameraFailure();
-                    return false;
-                }
-                return true;
-            } catch (IOException e) {
-                Log.e(TAG, "Error to init Camera");
+            } catch (RuntimeException e) {
+                Log.e(TAG, "Fail to open camera: " + e);
                 mCamera = null;
                 mScannerCallback.handleCameraFailure();
                 return false;
             }
+
+            try {
+                if (mCamera == null) {
+                    throw new IOException("Cannot find available back camera");
+                }
+                mCamera.setPreviewTexture(surface);
+                setCameraParameter();
+                setTransformationMatrix();
+                if (!startPreview()) {
+                    throw new IOException("Lost contex");
+                }
+            } catch (IOException ioe) {
+                Log.e(TAG, "Fail to startPreview camera: " + ioe);
+                mCamera = null;
+                mScannerCallback.handleCameraFailure();
+                return false;
+            }
+            return true;
+        }
+    }
+
+    private void releaseCamera() {
+        if (mCamera != null) {
+            mCamera.release();
+            mCamera = null;
         }
     }
 
diff --git a/tests/robotests/assets/grandfather_not_implementing_index_provider b/tests/robotests/assets/grandfather_not_implementing_index_provider
index 20c1792..d0f02d3 100644
--- a/tests/robotests/assets/grandfather_not_implementing_index_provider
+++ b/tests/robotests/assets/grandfather_not_implementing_index_provider
@@ -6,6 +6,8 @@
 com.android.settings.accessibility.ToggleScreenReaderPreferenceFragmentForSetupWizard
 com.android.settings.accessibility.ToggleSelectToSpeakPreferenceFragmentForSetupWizard
 com.android.settings.accounts.AccountDetailDashboardFragment
+com.android.settings.accounts.AccountPersonalDashboardFragment
+com.android.settings.accounts.AccountWorkProfileDashboardFragment
 com.android.settings.accounts.AccountSyncSettings
 com.android.settings.accounts.ChooseAccountFragment
 com.android.settings.applications.appinfo.AppInfoDashboardFragment
diff --git a/tests/robotests/src/com/android/settings/development/MockLocationAppPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/MockLocationAppPreferenceControllerTest.java
index 993ba72..3be4347 100644
--- a/tests/robotests/src/com/android/settings/development/MockLocationAppPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/MockLocationAppPreferenceControllerTest.java
@@ -20,6 +20,7 @@
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
+import android.util.Pair;
 
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
@@ -145,7 +146,6 @@
     }
 
     private AppOpsManager.OpEntry createOpEntry(int opMode) {
-        return new OpEntry(0, false, opMode, null /*accessTimes*/, null /*rejectTimes*/,
-            null /*durations*/, null /* proxyUids */, null /* proxyPackages */);
+        return new OpEntry(0, opMode, new Pair[0]);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagPreferenceControllerTest.java
index cf97544..acdf071 100644
--- a/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagPreferenceControllerTest.java
@@ -28,7 +28,6 @@
 
 import android.content.Context;
 import android.os.Build;
-import android.os.SystemProperties;
 
 import androidx.preference.PreferenceCategory;
 import androidx.preference.PreferenceScreen;
@@ -77,9 +76,8 @@
 
     @Test
     public void onStart_shouldRefreshFeatureFlags() {
-        mController.onStart();
+        mController.displayPreference(mScreen);
 
-        verify(mCategory).removeAll();
         verify(mCategory, atLeastOnce()).addPreference(any(FeatureFlagPreference.class));
     }
 }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/RestrictAppPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/RestrictAppPreferenceControllerTest.java
index 774fba2..1febbe4 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/RestrictAppPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/RestrictAppPreferenceControllerTest.java
@@ -34,6 +34,7 @@
 import android.content.Intent;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.util.Pair;
 
 import androidx.preference.Preference;
 import androidx.preference.PreferenceManager;
@@ -83,14 +84,10 @@
         MockitoAnnotations.initMocks(this);
         final List<AppOpsManager.OpEntry> allowOps = new ArrayList<>();
         allowOps.add(new AppOpsManager.OpEntry(
-                AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, false, AppOpsManager.MODE_ALLOWED,
-                null /*accessTimes*/, null /*rejectTimes*/, null /*durations*/,
-                null /* proxyUids */, null /* proxyPackages */));
+                AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, AppOpsManager.MODE_ALLOWED, new Pair[0]));
         final List<AppOpsManager.OpEntry> restrictedOps = new ArrayList<>();
         restrictedOps.add(new AppOpsManager.OpEntry(
-                AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, false, AppOpsManager.MODE_IGNORED,
-                null /*accessTimes*/, null /*rejectTimes*/, null /*durations*/,
-                null /* proxyUids */, null /* proxyPackages */));
+                AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, AppOpsManager.MODE_IGNORED, new Pair[0]));
         mAllowedPackageOps = new AppOpsManager.PackageOps(
                 ALLOWED_PACKAGE_NAME, ALLOWED_UID, allowOps);
         mRestrictedPackageOps = new AppOpsManager.PackageOps(
diff --git a/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
index ae57a77..54f1894 100644
--- a/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
@@ -17,17 +17,19 @@
 
 package com.android.settings.panel;
 
+import static com.android.settings.panel.SettingsPanelActivity.KEY_MEDIA_PACKAGE_NAME;
+import static com.android.settings.panel.SettingsPanelActivity.KEY_PANEL_TYPE_ARGUMENT;
 import static com.android.settingslib.media.MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT;
 
 import static com.google.common.truth.Truth.assertThat;
 
 import android.content.Context;
+import android.os.Bundle;
 import android.provider.Settings;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
@@ -38,33 +40,39 @@
 
     private Context mContext;
     private PanelFeatureProviderImpl mProvider;
+    private Bundle mBundle;
 
     @Before
     public void setUp() {
         mContext = RuntimeEnvironment.application;
         mProvider = new PanelFeatureProviderImpl();
+        mBundle = new Bundle();
+        mBundle.putString(KEY_MEDIA_PACKAGE_NAME, TEST_PACKAGENAME);
     }
 
     @Test
     public void getPanel_internetConnectivityKey_returnsCorrectPanel() {
-        final PanelContent panel = mProvider.getPanel(mContext,
-                Settings.Panel.ACTION_INTERNET_CONNECTIVITY, TEST_PACKAGENAME);
+        mBundle.putString(KEY_PANEL_TYPE_ARGUMENT, Settings.Panel.ACTION_INTERNET_CONNECTIVITY);
+
+        final PanelContent panel = mProvider.getPanel(mContext, mBundle);
 
         assertThat(panel).isInstanceOf(InternetConnectivityPanel.class);
     }
 
     @Test
     public void getPanel_volume_returnsCorrectPanel() {
-        final PanelContent panel = mProvider.getPanel(mContext,
-                Settings.Panel.ACTION_VOLUME, TEST_PACKAGENAME);
+        mBundle.putString(KEY_PANEL_TYPE_ARGUMENT, Settings.Panel.ACTION_VOLUME);
+
+        final PanelContent panel = mProvider.getPanel(mContext, mBundle);
 
         assertThat(panel).isInstanceOf(VolumePanel.class);
     }
 
     @Test
     public void getPanel_mediaOutputKey_returnsCorrectPanel() {
-        final PanelContent panel = mProvider.getPanel(mContext,
-                ACTION_MEDIA_OUTPUT, TEST_PACKAGENAME);
+        mBundle.putString(KEY_PANEL_TYPE_ARGUMENT, ACTION_MEDIA_OUTPUT);
+
+        final PanelContent panel = mProvider.getPanel(mContext, mBundle);
 
         assertThat(panel).isInstanceOf(MediaOutputPanel.class);
     }
diff --git a/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java b/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java
index 44dc3bc..cbeff97 100644
--- a/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java
@@ -38,7 +38,6 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
@@ -63,7 +62,7 @@
         mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
         mFakeFeatureFactory.panelFeatureProvider = mPanelFeatureProvider;
         mFakePanelContent = new FakePanelContent();
-        doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any(), any());
+        doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any());
 
         mActivity = spy(Robolectric.buildActivity(FakeSettingsPanelActivity.class).setup().get());
 
@@ -83,7 +82,7 @@
                 new LinearLayout(mContext), null);
         PanelSlicesLoaderCountdownLatch countdownLatch =
                 mPanelFragment.mPanelSlicesLoaderCountdownLatch;
-        for (Uri sliecUri: mFakePanelContent.getSlices()) {
+        for (Uri sliecUri : mFakePanelContent.getSlices()) {
             countdownLatch.markSliceLoaded(sliecUri);
         }
 
diff --git a/tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java b/tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java
index 89288f6..9f4fffc 100644
--- a/tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java
+++ b/tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java
@@ -40,17 +40,15 @@
 import com.android.settings.testutils.FakeFeatureFactory;
 
 import org.junit.Before;
-import org.junit.runner.RunWith;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.android.controller.ActivityController;
 
-import java.util.ArrayList;
 import java.util.LinkedHashMap;
-import java.util.List;
 import java.util.Map;
 
 @RunWith(RobolectricTestRunner.class)
@@ -74,7 +72,7 @@
         mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
         mFakeFeatureFactory.panelFeatureProvider = mPanelFeatureProvider;
         mFakePanelContent = new FakePanelContent();
-        doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any(), any());
+        doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any());
 
         ActivityController<FakeSettingsPanelActivity> activityController =
                 Robolectric.buildActivity(FakeSettingsPanelActivity.class);
diff --git a/tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java b/tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java
index a4b7aa5..44e5eefc 100644
--- a/tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java
+++ b/tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java
@@ -65,7 +65,7 @@
         mPanelFeatureProvider = spy(new PanelFeatureProviderImpl());
         mFakeFeatureFactory.panelFeatureProvider = mPanelFeatureProvider;
         mFakePanelContent = new FakePanelContent();
-        doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any(), any());
+        doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any());
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
index aeb16e6..77058c0 100644
--- a/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
@@ -34,6 +34,7 @@
 import com.android.settings.password.SetupChooseLockPassword.SetupChooseLockPasswordFragment;
 import com.android.settings.testutils.shadow.SettingsShadowResources;
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
+import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
 import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
 import com.android.settings.testutils.shadow.ShadowUtils;
 import com.android.settings.widget.ScrollToParentEditText;
@@ -62,6 +63,7 @@
         shadows = {
                 SettingsShadowResources.class,
                 ShadowLockPatternUtils.class,
+                ShadowDevicePolicyManager.class,
                 ShadowUtils.class,
                 ShadowAlertDialogCompat.class
         })
diff --git a/tests/robotests/src/com/android/settings/search/actionbar/SearchMenuControllerTest.java b/tests/robotests/src/com/android/settings/search/actionbar/SearchMenuControllerTest.java
index 3063912..e2b896a 100644
--- a/tests/robotests/src/com/android/settings/search/actionbar/SearchMenuControllerTest.java
+++ b/tests/robotests/src/com/android/settings/search/actionbar/SearchMenuControllerTest.java
@@ -17,29 +17,33 @@
 package com.android.settings.search.actionbar;
 
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
 import android.app.settings.SettingsEnums;
-import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
 import android.provider.Settings.Global;
 import android.view.Menu;
 import android.view.MenuItem;
 
+import androidx.fragment.app.FragmentActivity;
+
 import com.android.settings.R;
 import com.android.settings.core.InstrumentedFragment;
-import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.testutils.shadow.ShadowUtils;
 
+import com.google.android.setupcompat.util.WizardManagerHelper;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
 @RunWith(RobolectricTestRunner.class)
@@ -48,41 +52,28 @@
 
     @Mock
     private Menu mMenu;
-    private TestPreferenceFragment mPreferenceHost;
     private InstrumentedFragment mHost;
-    private Context mContext;
+    private FragmentActivity mActivity;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mHost = new InstrumentedFragment() {
-            @Override
-            public Context getContext() {
-                return mContext;
-            }
+        mActivity = Robolectric.buildActivity(FragmentActivity.class).get();
+        mHost = spy(new InstrumentedFragment() {
 
             @Override
             public int getMetricsCategory() {
                 return SettingsEnums.TESTING;
             }
-        };
-        mPreferenceHost = new TestPreferenceFragment();
-        Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 1);
+        });
+        Global.putInt(mActivity.getContentResolver(), Global.DEVICE_PROVISIONED, 1);
 
+        when(mHost.getActivity()).thenReturn(mActivity);
         when(mMenu.add(Menu.NONE, Menu.NONE, 0 /* order */, R.string.search_menu))
                 .thenReturn(mock(MenuItem.class));
     }
 
     @Test
-    public void init_prefFragment_shouldAddMenu() {
-        SearchMenuController.init(mPreferenceHost);
-        mPreferenceHost.getSettingsLifecycle().onCreateOptionsMenu(mMenu, null /* inflater */);
-
-        verify(mMenu).add(Menu.NONE, Menu.NONE, 0 /* order */, R.string.search_menu);
-    }
-
-    @Test
     public void init_observableFragment_shouldAddMenu() {
         SearchMenuController.init(mHost);
         mHost.getSettingsLifecycle().onCreateOptionsMenu(mMenu, null /* inflater */);
@@ -103,26 +94,22 @@
 
     @Test
     public void init_deviceNotProvisioned_shouldNotAddMenu() {
-        Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 0);
+        Global.putInt(mActivity.getContentResolver(), Global.DEVICE_PROVISIONED, 0);
         SearchMenuController.init(mHost);
         mHost.getSettingsLifecycle().onCreateOptionsMenu(mMenu, null /* inflater */);
 
         verifyZeroInteractions(mMenu);
     }
 
-    private static class TestPreferenceFragment extends InstrumentedPreferenceFragment {
-        @Override
-        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-        }
+    @Test
+    public void init_startFromSetupWizard_shouldNotAddMenu() {
+        final Intent intent = new Intent();
+        intent.putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true);
+        mActivity.setIntent(intent);
+        SearchMenuController.init(mHost);
 
-        @Override
-        public Context getContext() {
-            return RuntimeEnvironment.application;
-        }
+        mHost.getSettingsLifecycle().onCreateOptionsMenu(mMenu, null /* inflater */);
 
-        @Override
-        public int getMetricsCategory() {
-            return SettingsEnums.TESTING;
-        }
+        verifyZeroInteractions(mMenu);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
index 4f75794..d292b73 100644
--- a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
@@ -17,6 +17,7 @@
 package com.android.settings.wifi;
 
 import static com.google.common.truth.Truth.assertThat;
+
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
@@ -33,14 +34,16 @@
 import android.view.View;
 import android.widget.Button;
 import android.widget.TextView;
+
 import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.FragmentActivity;
+
 import com.android.settings.R;
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
 import com.android.settingslib.wifi.AccessPoint;
 import com.android.settingslib.wifi.WifiTracker;
 import com.android.settingslib.wifi.WifiTrackerFactory;
-import java.util.ArrayList;
-import java.util.List;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -49,6 +52,9 @@
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
+import java.util.ArrayList;
+import java.util.List;
+
 @RunWith(RobolectricTestRunner.class)
 @Config(shadows = ShadowAlertDialogCompat.class)
 public class NetworkRequestDialogFragmentTest {
@@ -57,14 +63,14 @@
     private static final String KEY_SECURITY = "key_security";
     private static final String TEST_APP_NAME = "TestAppName";
 
-    private NetworkRequestDialogActivity mActivity;
+    private FragmentActivity mActivity;
     private NetworkRequestDialogFragment networkRequestDialogFragment;
     private Context mContext;
     private WifiTracker mWifiTracker;
 
     @Before
     public void setUp() {
-        mActivity = Robolectric.buildActivity(NetworkRequestDialogActivity.class,
+        mActivity = Robolectric.buildActivity(FragmentActivity.class,
                 new Intent().putExtra(NetworkRequestDialogFragment.EXTRA_APP_NAME,
                         TEST_APP_NAME)).setup().get();
         networkRequestDialogFragment = spy(NetworkRequestDialogFragment.newInstance());
@@ -108,7 +114,6 @@
 
     @Test
     public void onUserSelectionCallbackRegistration_onClick_shouldCallSelect() {
-        // Assert.
         final int indexClickItem = 3;
         List<AccessPoint> accessPointList = createAccessPointList();
         AccessPoint clickedAccessPoint = accessPointList.get(indexClickItem);
@@ -129,7 +134,6 @@
 
     @Test
     public void onMatch_shouldUpdatedList() {
-        // Assert.
         when(networkRequestDialogFragment.getContext()).thenReturn(mContext);
         Context applicationContext = spy(RuntimeEnvironment.application.getApplicationContext());
         when(mContext.getApplicationContext()).thenReturn(applicationContext);
@@ -140,15 +144,15 @@
         List<AccessPoint> accessPointList = createAccessPointList();
         when(mWifiTracker.getAccessPoints()).thenReturn(accessPointList);
 
-        final String SSID_AP1 = "Test AP 1";
-        final String SSID_AP2 = "Test AP 2";
+        final String ssidAp1 = "Test AP 1";
+        final String ssidAp2 = "Test AP 2";
         List<ScanResult> scanResults = new ArrayList<>();
         ScanResult scanResult = new ScanResult();
-        scanResult.SSID = SSID_AP1;
+        scanResult.SSID = ssidAp1;
         scanResult.capabilities = "WEP";
         scanResults.add(scanResult);
         scanResult = new ScanResult();
-        scanResult.SSID = SSID_AP2;
+        scanResult.SSID = ssidAp2;
         scanResult.capabilities = "WEP";
         scanResults.add(scanResult);
 
@@ -159,8 +163,43 @@
         List<AccessPoint> returnList = networkRequestDialogFragment.getAccessPointList();
         assertThat(returnList).isNotEmpty();
         assertThat(returnList.size()).isEqualTo(2);
-        assertThat(returnList.get(0).getSsid()).isEqualTo(SSID_AP1);
-        assertThat(returnList.get(1).getSsid()).isEqualTo(SSID_AP2);
+        assertThat(returnList.get(0).getSsid()).isEqualTo(ssidAp1);
+        assertThat(returnList.get(1).getSsid()).isEqualTo(ssidAp2);
+    }
+
+    @Test
+    public void onAccessPointsChanged_shouldUpdatedList() {
+        when(networkRequestDialogFragment.getContext()).thenReturn(mContext);
+        Context applicationContext = spy(RuntimeEnvironment.application.getApplicationContext());
+        when(mContext.getApplicationContext()).thenReturn(applicationContext);
+        WifiManager wifiManager = mock(WifiManager.class);
+        when(applicationContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(wifiManager);
+        networkRequestDialogFragment.onResume();
+
+        List<AccessPoint> accessPointList = new ArrayList<>();
+        when(mWifiTracker.getAccessPoints()).thenReturn(accessPointList);
+
+        final String ssidAp1 = "Test AP 1";
+        List<ScanResult> scanResults = new ArrayList<>();
+        ScanResult scanResult = new ScanResult();
+        scanResult.SSID = ssidAp1;
+        scanResult.capabilities = "WEP";
+        scanResults.add(scanResult);
+
+        // Act.
+        networkRequestDialogFragment.onMatch(scanResults);
+
+        accessPointList = createAccessPointList();
+        when(mWifiTracker.getAccessPoints()).thenReturn(accessPointList);
+
+        // Act.
+        networkRequestDialogFragment.mFilterWifiTracker.mWifiListener.onAccessPointsChanged();
+
+        // Check.
+        List<AccessPoint> returnList = networkRequestDialogFragment.getAccessPointList();
+        assertThat(returnList).isNotEmpty();
+        assertThat(returnList.size()).isEqualTo(1);
+        assertThat(returnList.get(0).getSsid()).isEqualTo(ssidAp1);
     }
 
     private List<AccessPoint> createAccessPointList() {
@@ -208,16 +247,14 @@
     public void onMatchManyResult_showNeutralButton() {
         networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), /* tag */ null);
         final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-
-
         List<AccessPoint> accessPointList = createAccessPointList();
         when(mWifiTracker.getAccessPoints()).thenReturn(accessPointList);
 
-        final String SSID_AP = "Test AP ";
+        final String ssidAp = "Test AP ";
         final List<ScanResult> scanResults = new ArrayList<>();
         for (int i = 0; i < 7 ; i ++) {
             ScanResult scanResult = new ScanResult();
-            scanResult.SSID = SSID_AP + i;
+            scanResult.SSID = ssidAp + i;
             scanResult.capabilities = "WEP";
             scanResults.add(scanResult);
         }
@@ -230,15 +267,14 @@
 
     @Test
     public void clickNeutralButton_hideNeutralButton() {
-        // Assert
         networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), /* tag */ null);
         final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
 
-        final String SSID_AP = "Test AP ";
+        final String ssidAp = "Test AP ";
         final List<ScanResult> scanResults = new ArrayList<>();
         for (int i = 0; i < 6 ; i ++) {
             ScanResult scanResult = new ScanResult();
-            scanResult.SSID = SSID_AP + i;
+            scanResult.SSID = ssidAp + i;
             scanResult.capabilities = "WEP";
             scanResults.add(scanResult);
         }
@@ -254,7 +290,6 @@
 
     @Test
     public void cancelDialog_callsReject() {
-        // Assert
         networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), /* tag */ null);
         final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
         final NetworkRequestUserSelectionCallback selectionCallback = mock(
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
index 226dfdb..ab4bea8 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
@@ -557,4 +557,12 @@
 
         assertThat(firstChild).isEqualTo(hiddenSettingLayout);
     }
+
+    @Test
+    public void getAdvancedOptionContentDescription_whenViewInitialed_shouldBeCorrect() {
+        final CheckBox advButton = mView.findViewById(R.id.wifi_advanced_togglebox);
+
+        assertThat(advButton.getContentDescription()).isEqualTo(
+                mContext.getString(R.string.wifi_advanced_toggle_description));
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
index 7f65b06..631880a 100644
--- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
@@ -17,8 +17,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.nullable;
@@ -35,8 +35,8 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.content.res.Resources;
 import android.content.pm.PackageManager;
+import android.content.res.Resources;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
@@ -56,7 +56,6 @@
 import android.net.wifi.WifiManager;
 import android.os.Handler;
 import android.provider.Settings;
-import android.util.FeatureFlagUtils;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.ImageView;
@@ -69,9 +68,9 @@
 
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.R;
+import com.android.settings.Utils;
 import com.android.settings.core.FeatureFlags;
 import com.android.settings.development.featureflags.FeatureFlagPersistent;
-import com.android.settings.Utils;
 import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
 import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
 import com.android.settings.widget.EntityHeaderController;
@@ -101,8 +100,8 @@
 import java.net.Inet4Address;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.util.Arrays;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.stream.Collectors;
 
 @RunWith(RobolectricTestRunner.class)
@@ -993,6 +992,14 @@
         updateNetworkCapabilities(nc);
         inOrder.verify(mockHeaderController).setSummary(summary);
 
+        // UI will be refreshed when private DNS is broken.
+        summary = "Private DNS server cannot be accessed";
+        when(mockAccessPoint.getSettingsSummary(true /* convertSavedAsDisconnected */))
+                .thenReturn(summary);
+        nc.setPrivateDnsBroken(true);
+        updateNetworkCapabilities(nc);
+        inOrder.verify(mockHeaderController).setSummary(summary);
+
         // UI will be refreshed when device connects to a partial connectivity network.
         summary = "Limited connection";
         when(mockAccessPoint.getSettingsSummary(true /*convertSavedAsDisconnected*/))
@@ -1867,7 +1874,7 @@
 
         displayAndResume();
 
-        verify(mockMacAddressPref).setTitle(R.string.wifi_advanced_factory_mac_address_title);
+        verify(mockMacAddressPref).setTitle(R.string.wifi_advanced_device_mac_address_title);
     }
 
     private ActionButtonsPreference createMock() {