Merge "Add activities to handle external storage intents"
diff --git a/res/drawable/signal_strength_5g.xml b/res/drawable/signal_strength_5g.xml
index fdaea7e..dc89f9a 100644
--- a/res/drawable/signal_strength_5g.xml
+++ b/res/drawable/signal_strength_5g.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  Copyright (C) 2018 The Android Open Source Project
+  Copyright (C) 2020 The Android Open Source Project
 
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
diff --git a/res/layout/wifi_dialog.xml b/res/layout/wifi_dialog.xml
index c995c3e..a3ad4207 100644
--- a/res/layout/wifi_dialog.xml
+++ b/res/layout/wifi_dialog.xml
@@ -341,25 +341,6 @@
                         style="@style/wifi_item_content"
                         android:text="@string/wifi_show_password" />
             </LinearLayout>
-
-            <LinearLayout android:id="@+id/sae_password_id_layout"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    style="@style/wifi_item"
-                    android:visibility="gone">
-                <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        style="@style/wifi_item_label"
-                        android:text="@string/wifi_sae_password_id" />
-
-                <EditText android:id="@+id/sae_password_id"
-                          android:layout_width="match_parent"
-                          android:layout_height="wrap_content"
-                          style="@style/wifi_item_edit_content"
-                          android:singleLine="true"
-                          android:inputType="textNoSuggestions" />
-            </LinearLayout>
         </LinearLayout>
 
         <LinearLayout android:id="@+id/wifi_advanced_toggle"
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index e302905..8ff85e2 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -1492,4 +1492,17 @@
         <item>@color/palette_list_color_purple</item>
         <item>@color/palette_list_color_pink</item>
     </array>
-</resources>
\ No newline at end of file
+
+    <!--String arrays for showing the rtt settings options -->
+    <string-array name="rtt_setting_mode">
+        <!-- 0: Invalid value -->
+        <item></item>
+        <!-- 1:  Not visible -->
+        <item>@string/rtt_settings_no_visible</item>
+        <!-- 2:  Visible during call -->
+        <item>@string/rtt_settings_visible_during_call</item>
+        <!-- 3:  Always visible -->
+        <item>@string/rtt_settings_always_visible</item>
+    </string-array>
+
+</resources>
diff --git a/res/values/config.xml b/res/values/config.xml
index a4d0e47..fc2ca1f 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -431,4 +431,7 @@
 
     <!-- RTT setting intent action -->
     <string name="config_rtt_setting_intent_action" translatable="false"></string>
+
+    <!-- Package name of dialer supports RTT setting-->
+    <string name="config_rtt_setting_package_name" translatable="false"></string>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e68feb8..d3648cf 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2003,8 +2003,6 @@
     <string name="wifi_eap_anonymous">Anonymous identity</string>
     <!-- Label for the password of the secured network -->
     <string name="wifi_password">Password</string>
-    <!-- Label for the sae password id of the secured network [CHAR LIMIT=32] -->
-    <string name="wifi_sae_password_id">SAE password identifier</string>
     <!-- Label for the check box to show password -->
     <string name="wifi_show_password">Show password</string>
     <!-- Label for the RadioGroup to choose wifi ap band -->
@@ -2824,7 +2822,7 @@
     <!-- Display settings screen, summary of Dark UI when on and will turn off automatically at sunrise. [CHAR LIMIT=NONE] -->
     <string name="dark_ui_summary_on_auto_mode_auto">Will turn off automatically at sunrise</string>
     <!-- Dark theme screen, description of Dark theme feature. [CHAR LIMIT=NONE] -->
-    <string name="dark_ui_text">Dark theme uses true black to help keep your battery alive longer. Dark theme schedules wait to turn on until your screen is off.</string>
+    <string name="dark_ui_text">Dark theme uses a black background to help keep battery alive longer on some screens. Dark theme schedules wait to turn on until your screen is off.</string>
 
     <!-- Sound & display settings screen, setting option name to change screen timeout -->
     <string name="screen_timeout">Screen timeout</string>
diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml
index d83fa59..be644d4 100644
--- a/res/xml/accessibility_settings.xml
+++ b/res/xml/accessibility_settings.xml
@@ -182,6 +182,12 @@
             settings:controller="com.android.settings.accessibility.AccessibilityHearingAidPreferenceController"/>
 
         <Preference
+            android:key="rtt_setting"
+            android:summary="@string/summary_placeholder"
+            android:title="@string/rtt_settings_title"
+            settings:controller="com.android.settings.accessibility.RTTSettingPreferenceController"/>
+
+        <Preference
             android:fragment="com.android.settings.accessibility.CaptionPropertiesFragment"
             android:key="captioning_preference_screen"
             android:persistent="false"
diff --git a/res/xml/accounts_dashboard_settings.xml b/res/xml/accounts_dashboard_settings.xml
index 6b5f825..d2affc7 100644
--- a/res/xml/accounts_dashboard_settings.xml
+++ b/res/xml/accounts_dashboard_settings.xml
@@ -36,6 +36,7 @@
         android:key="auto_sync_work_account_data"
         android:title="@string/account_settings_menu_auto_sync_work"
         android:summary="@string/auto_sync_account_summary"
+        settings:forWork="true"
         android:order="103"/>
 
     <SwitchPreference
diff --git a/src/com/android/settings/ResetNetwork.java b/src/com/android/settings/ResetNetwork.java
index 5ac2c0b..e2adcc7 100644
--- a/src/com/android/settings/ResetNetwork.java
+++ b/src/com/android/settings/ResetNetwork.java
@@ -170,13 +170,13 @@
         if (mSubscriptions != null && mSubscriptions.size() > 0) {
             // Get the default subscription in the order of data, voice, sms, first up.
             int defaultSubscription = SubscriptionManager.getDefaultDataSubscriptionId();
-            if (!SubscriptionManager.isUsableSubIdValue(defaultSubscription)) {
+            if (!SubscriptionManager.isUsableSubscriptionId(defaultSubscription)) {
                 defaultSubscription = SubscriptionManager.getDefaultVoiceSubscriptionId();
             }
-            if (!SubscriptionManager.isUsableSubIdValue(defaultSubscription)) {
+            if (!SubscriptionManager.isUsableSubscriptionId(defaultSubscription)) {
                 defaultSubscription = SubscriptionManager.getDefaultSmsSubscriptionId();
             }
-            if (!SubscriptionManager.isUsableSubIdValue(defaultSubscription)) {
+            if (!SubscriptionManager.isUsableSubscriptionId(defaultSubscription)) {
                 defaultSubscription = SubscriptionManager.getDefaultSubscriptionId();
             }
 
diff --git a/src/com/android/settings/ResetNetworkConfirm.java b/src/com/android/settings/ResetNetworkConfirm.java
index c4e4baf..f4b20eb 100644
--- a/src/com/android/settings/ResetNetworkConfirm.java
+++ b/src/com/android/settings/ResetNetworkConfirm.java
@@ -199,7 +199,7 @@
     private void restoreDefaultApn(Context context) {
         Uri uri = Uri.parse(ApnSettings.RESTORE_CARRIERS_URI);
 
-        if (SubscriptionManager.isUsableSubIdValue(mSubId)) {
+        if (SubscriptionManager.isUsableSubscriptionId(mSubId)) {
             uri = Uri.withAppendedPath(uri, "subId/" + String.valueOf(mSubId));
         }
 
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 2f198cf..9b257b6 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -372,7 +372,7 @@
     }
 
     public static boolean hasMultipleUsers(Context context) {
-        return ((UserManager) context.getSystemService(Context.USER_SERVICE))
+        return context.getSystemService(UserManager.class)
                 .getUsers().size() > 1;
     }
 
@@ -666,7 +666,7 @@
      * @throws SecurityException if the given userId does not belong to the current user group.
      */
     public static int enforceSameOwner(Context context, int userId) {
-        final UserManager um = UserManager.get(context);
+        final UserManager um = context.getSystemService(UserManager.class);
         final int[] profileIds = um.getProfileIdsWithDisabled(UserHandle.myUserId());
         if (ArrayUtils.contains(profileIds, userId)) {
             return userId;
@@ -686,7 +686,7 @@
      * Returns the user id of the credential owner of the given user id.
      */
     public static int getCredentialOwnerUserId(Context context, int userId) {
-        final UserManager um = UserManager.get(context);
+        final UserManager um = context.getSystemService(UserManager.class);
         return um.getCredentialOwnerProfile(userId);
     }
 
@@ -823,7 +823,8 @@
     }
 
     public static boolean isDemoUser(Context context) {
-        return UserManager.isDeviceInDemoMode(context) && UserManager.get(context).isDemoUser();
+        return UserManager.isDeviceInDemoMode(context)
+                && context.getSystemService(UserManager.class).isDemoUser();
     }
 
     public static ComponentName getDeviceOwnerComponent(Context context) {
@@ -1051,7 +1052,7 @@
         final boolean isWork = args != null ? args.getInt(ProfileSelectFragment.EXTRA_PROFILE)
                 == ProfileSelectFragment.ProfileType.WORK : false;
         if (FeatureFlagUtils.isEnabled(activity, FeatureFlags.PERSONAL_WORK_PROFILE)
-                && UserManager.get(activity).getUserProfiles().size() > 1
+                && activity.getSystemService(UserManager.class).getUserProfiles().size() > 1
                 && ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName) != null
                 && !isWork && !isPersonal) {
             f = Fragment.instantiate(activity, ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName),
diff --git a/src/com/android/settings/accessibility/RTTSettingPreferenceController.java b/src/com/android/settings/accessibility/RTTSettingPreferenceController.java
new file mode 100644
index 0000000..3b5915d
--- /dev/null
+++ b/src/com/android/settings/accessibility/RTTSettingPreferenceController.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.accessibility;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.provider.Settings;
+import android.telecom.TelecomManager;
+import android.text.TextUtils;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+
+import java.util.List;
+
+/** A controller to control the status for RTT setting in Accessibility screen.*/
+public class RTTSettingPreferenceController extends BasePreferenceController {
+
+    private static final String DIALER_RTT_CONFIGURATION = "dialer_rtt_configuration";
+
+    private final Context mContext;
+    private final PackageManager mPackageManager;
+    private final TelecomManager mTelecomManager;
+    private final CharSequence[] mModes;
+    private final String mDialerPackage;
+
+    @VisibleForTesting
+    Intent mRTTIntent;
+
+    public RTTSettingPreferenceController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+        mContext = context;
+        mModes = mContext.getResources().getTextArray(R.array.rtt_setting_mode);
+        mDialerPackage = mContext.getString(R.string.config_rtt_setting_package_name);
+        mPackageManager = context.getPackageManager();
+        mTelecomManager = context.getSystemService(TelecomManager.class);
+        mRTTIntent = new Intent(context.getString(R.string.config_rtt_setting_intent_action));
+
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        final List<ResolveInfo> resolved =
+                mPackageManager.queryIntentActivities(mRTTIntent, 0 /* flags */);
+        return resolved != null && !resolved.isEmpty() && isDialerSupportRTTSetting()
+                ? AVAILABLE
+                : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        final Preference pref = screen.findPreference(getPreferenceKey());
+        pref.setIntent(mRTTIntent);
+    }
+
+    @Override
+    public CharSequence getSummary() {
+        final int option = Settings.Secure.getInt(mContext.getContentResolver(),
+                DIALER_RTT_CONFIGURATION, 1 /* not visible */);
+        return mModes[option];
+    }
+
+    @VisibleForTesting
+    boolean isDialerSupportRTTSetting() {
+        return TextUtils.equals(mTelecomManager.getDefaultDialerPackage(), mDialerPackage);
+    }
+}
diff --git a/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java b/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java
index 17a933b..f131e35 100644
--- a/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java
@@ -60,6 +60,8 @@
 
     @Override
     protected void onStop() {
+        super.onStop();
+
         if (mSidecar != null) {
             mSidecar.setListener(null);
         }
@@ -78,6 +80,12 @@
     }
 
     @Override
+    protected boolean shouldFinishWhenBackgrounded() {
+        // Prevent super.onStop() from finishing, since we handle this in our onStop().
+        return false;
+    }
+
+    @Override
     public void onBackPressed() {
         if (mSidecar != null) {
             mSidecar.setListener(null);
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
index 8194878..3831b07 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
@@ -217,13 +217,15 @@
 
     private void stopIconAnimation() {
         mAnimationCancelled = true;
-        mIconAnimationDrawable.stop();
+        if (mIconAnimationDrawable != null) {
+            mIconAnimationDrawable.stop();
+        }
     }
 
     @Override
     protected void onStop() {
-        stopIconAnimation();
         super.onStop();
+        stopIconAnimation();
     }
 
     private void animateProgress(int progress) {
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
index 9508268..dbedb4a 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
@@ -115,10 +115,10 @@
 
     @Override
     protected void onStop() {
+        super.onStop();
         if (mAnimation != null) {
             mAnimation.pauseAnimation();
         }
-        super.onStop();
     }
 
     @Override
diff --git a/src/com/android/settings/bugreporthandler/BugReportHandlerPicker.java b/src/com/android/settings/bugreporthandler/BugReportHandlerPicker.java
index e7adf7f..5839e3c 100644
--- a/src/com/android/settings/bugreporthandler/BugReportHandlerPicker.java
+++ b/src/com/android/settings/bugreporthandler/BugReportHandlerPicker.java
@@ -37,6 +37,7 @@
 import com.android.settings.applications.defaultapps.DefaultAppPickerFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settingslib.applications.DefaultAppInfo;
+import com.android.settingslib.development.DevelopmentSettingsEnabler;
 import com.android.settingslib.search.SearchIndexable;
 import com.android.settingslib.widget.FooterPreference;
 
@@ -76,6 +77,14 @@
     }
 
     @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        if (!DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(context)) {
+            getActivity().finish();
+        }
+    }
+
+    @Override
     protected int getPreferenceScreenResId() {
         return R.xml.bug_report_handler_settings;
     }
diff --git a/src/com/android/settings/datausage/BillingCyclePreference.java b/src/com/android/settings/datausage/BillingCyclePreference.java
index 8dea7de..47ef56b 100644
--- a/src/com/android/settings/datausage/BillingCyclePreference.java
+++ b/src/com/android/settings/datausage/BillingCyclePreference.java
@@ -96,7 +96,7 @@
     }
 
     /**
-     * Implementation of MobileDataEnabledListener.Client
+     * Implementation of {@code MobileDataEnabledListener.Client}
      */
     public void onMobileDataEnabledChange() {
         updateEnabled();
diff --git a/src/com/android/settings/datausage/CellDataPreference.java b/src/com/android/settings/datausage/CellDataPreference.java
index f4f2be7..4a49f33 100644
--- a/src/com/android/settings/datausage/CellDataPreference.java
+++ b/src/com/android/settings/datausage/CellDataPreference.java
@@ -240,7 +240,7 @@
             };
 
     /**
-     * Implementation of MobileDataEnabledListener.Client
+     * Implementation of {@code MobileDataEnabledListener.Client}
     */
     @VisibleForTesting
     public void onMobileDataEnabledChange() {
diff --git a/src/com/android/settings/datausage/DataUsageList.java b/src/com/android/settings/datausage/DataUsageList.java
index f747951..0cfb831 100644
--- a/src/com/android/settings/datausage/DataUsageList.java
+++ b/src/com/android/settings/datausage/DataUsageList.java
@@ -201,7 +201,6 @@
     public void onDestroy() {
         mUidDetailProvider.clearCache();
         mUidDetailProvider = null;
-        mDataStateListener.stop();
 
         super.onDestroy();
     }
@@ -232,7 +231,7 @@
     }
 
     /**
-     * Implementation of MobileDataEnabledListener.Client
+     * Implementation of {@code MobileDataEnabledListener.Client}
      */
     public void onMobileDataEnabledChange() {
         updatePolicy();
diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java
index 0796e5a..1a83800 100644
--- a/src/com/android/settings/datausage/DataUsageSummary.java
+++ b/src/com/android/settings/datausage/DataUsageSummary.java
@@ -78,7 +78,7 @@
         super.onCreate(icicle);
         Context context = getContext();
 
-        // enable ProxySubscriptionMgr with Lifecycle support for all controllers
+        // Enable ProxySubscriptionMgr with Lifecycle support for all controllers
         // live within this fragment
         mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(context);
         mProxySubscriptionMgr.setLifecycle(getLifecycle());
diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java
index 600b9e8..a26e359 100644
--- a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java
+++ b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java
@@ -19,8 +19,11 @@
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.net.INetworkPolicyManager;
 import android.net.NetworkPolicyManager;
 import android.net.NetworkTemplate;
+import android.os.ServiceManager;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.SubscriptionPlan;
@@ -296,12 +299,51 @@
                 mSnapshotTime = primaryPlan.getDataUsageTime();
             }
         }
-        mManageSubscriptionIntent =
-                mSubscriptionManager.createManageSubscriptionIntent(mSubscriptionId);
+        mManageSubscriptionIntent = createManageSubscriptionIntent(mSubscriptionId);
         Log.i(TAG, "Have " + mDataplanCount + " plans, dflt sub-id " + mSubscriptionId
                 + ", intent " + mManageSubscriptionIntent);
     }
 
+    /**
+     * Create an {@link Intent} that can be launched towards the carrier app
+     * that is currently defining the billing relationship plan through
+     * {@link INetworkPolicyManager#setSubscriptionPlans(int, SubscriptionPlan [], String)}.
+     *
+     * @return ready to launch Intent targeted towards the carrier app, or
+     *         {@code null} if no carrier app is defined, or if the defined
+     *         carrier app provides no management activity.
+     */
+    private Intent createManageSubscriptionIntent(int subId) {
+        final INetworkPolicyManager iNetPolicyManager = INetworkPolicyManager.Stub.asInterface(
+                ServiceManager.getService(Context.NETWORK_POLICY_SERVICE));
+        String owner = "";
+        try {
+            owner = iNetPolicyManager.getSubscriptionPlansOwner(subId);
+        } catch (Exception ex) {
+            Log.w(TAG, "Fail to get subscription plan owner for subId " + subId, ex);
+        }
+
+        if (TextUtils.isEmpty(owner)) {
+            return null;
+        }
+
+        final List<SubscriptionPlan> plans = mSubscriptionManager.getSubscriptionPlans(subId);
+        if (plans.isEmpty()) {
+            return null;
+        }
+
+        final Intent intent = new Intent(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
+        intent.setPackage(owner);
+        intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId);
+
+        if (mActivity.getPackageManager().queryIntentActivities(intent,
+                PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) {
+            return null;
+        }
+
+        return intent;
+    }
+
     public static SubscriptionPlan getPrimaryPlan(SubscriptionManager subManager, int primaryId) {
         List<SubscriptionPlan> plans = subManager.getSubscriptionPlans(primaryId);
         if (CollectionUtils.isEmpty(plans)) {
diff --git a/src/com/android/settings/datausage/DataUsageUtils.java b/src/com/android/settings/datausage/DataUsageUtils.java
index ef3e7b6..0308cf7 100644
--- a/src/com/android/settings/datausage/DataUsageUtils.java
+++ b/src/com/android/settings/datausage/DataUsageUtils.java
@@ -159,11 +159,12 @@
      * SubscriptionManager#INVALID_SUBSCRIPTION_ID
      */
     public static int getDefaultSubscriptionId(Context context) {
-        SubscriptionManager subManager = SubscriptionManager.from(context);
+        SubscriptionManager subManager = context.getSystemService(SubscriptionManager.class);
         if (subManager == null) {
             return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
         }
-        SubscriptionInfo subscriptionInfo = subManager.getDefaultDataSubscriptionInfo();
+        SubscriptionInfo subscriptionInfo =
+                subManager.getActiveSubscriptionInfo(subManager.getDefaultDataSubscriptionId());
         if (subscriptionInfo == null) {
             List<SubscriptionInfo> list = subManager.getAllSubscriptionInfoList();
             if (list.size() == 0) {
diff --git a/src/com/android/settings/development/compat/PlatformCompatDashboard.java b/src/com/android/settings/development/compat/PlatformCompatDashboard.java
index 2b0c655..ffa5c29 100644
--- a/src/com/android/settings/development/compat/PlatformCompatDashboard.java
+++ b/src/com/android/settings/development/compat/PlatformCompatDashboard.java
@@ -16,7 +16,9 @@
 
 package com.android.settings.development.compat;
 
+import static com.android.settings.development.AppPicker.EXTRA_DEBUGGABLE;
 import static com.android.settings.development.DevelopmentOptionsActivityRequestCodes.REQUEST_COMPAT_CHANGE_APP;
+import static com.android.internal.compat.OverrideAllowedState.ALLOWED;
 
 import android.app.Activity;
 import android.app.settings.SettingsEnums;
@@ -25,7 +27,9 @@
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
 import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -37,9 +41,12 @@
 import androidx.preference.PreferenceCategory;
 import androidx.preference.SwitchPreference;
 
+import com.android.internal.compat.AndroidBuildClassifier;
 import com.android.internal.compat.CompatibilityChangeConfig;
 import com.android.internal.compat.CompatibilityChangeInfo;
 import com.android.internal.compat.IPlatformCompat;
+import com.android.internal.compat.IOverrideValidator;
+import com.android.internal.compat.OverrideAllowedState;
 import com.android.settings.R;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.development.AppPicker;
@@ -64,6 +71,8 @@
 
     private CompatibilityChangeInfo[] mChanges;
 
+    private AndroidBuildClassifier mAndroidBuildClassifier = new AndroidBuildClassifier();
+
     @VisibleForTesting
     String mSelectedApp;
 
@@ -117,17 +126,21 @@
         if (requestCode == REQUEST_COMPAT_CHANGE_APP) {
             if (resultCode == Activity.RESULT_OK) {
                 mSelectedApp = data.getAction();
-                addPreferences();
+                try {
+                    final ApplicationInfo applicationInfo = getApplicationInfo();
+                    addPreferences(applicationInfo);
+                } catch (PackageManager.NameNotFoundException e) {
+                    startAppPicker();
+                }
             }
             return;
         }
         super.onActivityResult(requestCode, resultCode, data);
     }
 
-    private void addPreferences() {
+    private void addPreferences(ApplicationInfo applicationInfo) {
         getPreferenceScreen().removeAll();
-        getPreferenceScreen().addPreference(
-                createAppPreference(getApplicationInfo().loadIcon(getPackageManager())));
+        getPreferenceScreen().addPreference(createAppPreference(applicationInfo));
         // Differentiate compatibility changes into default enabled, default disabled and enabled
         // after target sdk.
         final CompatibilityChangeConfig configMappings = getAppChangeMappings();
@@ -164,7 +177,7 @@
         try {
             final ApplicationInfo applicationInfo = getApplicationInfo();
             return getPlatformCompat().getAppConfig(applicationInfo);
-        } catch (RemoteException e) {
+        } catch (RemoteException | PackageManager.NameNotFoundException e) {
             throw new RuntimeException("Could not get app config!", e);
         }
     }
@@ -183,7 +196,15 @@
                 change.getName() != null ? change.getName() : "Change_" + change.getId();
         item.setSummary(changeName);
         item.setKey(changeName);
-        item.setEnabled(true);
+        boolean shouldEnable = true;
+        try {
+            shouldEnable = getPlatformCompat().getOverrideValidator()
+                           .getOverrideAllowedState(change.getId(), mSelectedApp)
+                           .state == ALLOWED;
+        } catch (RemoteException e) {
+            throw new RuntimeException("Could not check if change can be overridden for app.", e);
+        }
+        item.setEnabled(shouldEnable);
         item.setChecked(currentValue);
         item.setOnPreferenceChangeListener(
                 new CompatChangePreferenceChangeListener(change.getId()));
@@ -195,12 +216,8 @@
      *
      * @return an {@link ApplicationInfo} instance.
      */
-    ApplicationInfo getApplicationInfo() {
-        try {
-            return getPackageManager().getApplicationInfo(mSelectedApp, 0);
-        } catch (PackageManager.NameNotFoundException e) {
-            throw new RuntimeException("Could not get ApplicationInfo for selected app!", e);
-        }
+    ApplicationInfo getApplicationInfo() throws PackageManager.NameNotFoundException {
+        return getPackageManager().getApplicationInfo(mSelectedApp, 0);
     }
 
     /**
@@ -209,9 +226,10 @@
      * <p>The {@link Preference} contains the icon, package name and target SDK for the selected
      * app. Selecting this preference will also re-trigger the app selection dialog.</p>
      */
-    Preference createAppPreference(Drawable icon) {
-        final ApplicationInfo applicationInfo = getApplicationInfo();
-        final Preference appPreference = new Preference(getPreferenceScreen().getContext());
+    Preference createAppPreference(ApplicationInfo applicationInfo) {
+        final Context context = getPreferenceScreen().getContext();
+        final Drawable icon = applicationInfo.loadIcon(context.getPackageManager());
+        final Preference appPreference = new Preference(context);
         appPreference.setIcon(icon);
         appPreference.setSummary(mSelectedApp
                 + " SDK "
@@ -246,6 +264,11 @@
 
     private void startAppPicker() {
         final Intent intent = new Intent(getContext(), AppPicker.class);
+        // If build is neither userdebug nor eng, only include debuggable apps
+        final boolean debuggableBuild = mAndroidBuildClassifier.isDebuggableBuild();
+        if (!debuggableBuild) {
+            intent.putExtra(AppPicker.EXTRA_DEBUGGABLE, true /* value */);
+        }
         startActivityForResult(intent, REQUEST_COMPAT_CHANGE_APP);
     }
 
diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
index 1f58ea9..a13444d 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
@@ -28,6 +28,7 @@
 import android.net.TrafficStats;
 import android.os.Bundle;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.os.storage.VolumeInfo;
 import android.util.FeatureFlagUtils;
 import android.util.Log;
@@ -41,6 +42,7 @@
 import com.android.settings.R;
 import com.android.settings.Settings;
 import com.android.settings.SettingsActivity;
+import com.android.settings.Utils;
 import com.android.settings.applications.manageapplications.ManageApplications;
 import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.PreferenceControllerMixin;
@@ -256,25 +258,15 @@
     public void onLoadFinished(SparseArray<StorageAsyncLoader.AppsStorageResult> result,
             int userId) {
         final StorageAsyncLoader.AppsStorageResult data = result.get(userId);
+        final StorageAsyncLoader.AppsStorageResult profileData = result.get(
+                Utils.getManagedProfileId(mContext.getSystemService(UserManager.class), userId));
 
-        // TODO(b/35927909): Figure out how to split out apps which are only installed for work
-        //       profiles in order to attribute those app's code bytes only to that profile.
-        mPhotoPreference.setStorageSize(
-                data.photosAppsSize + data.externalStats.imageBytes + data.externalStats.videoBytes,
-                mTotalSize);
-        mAudioPreference.setStorageSize(
-                data.musicAppsSize + data.externalStats.audioBytes, mTotalSize);
-        mGamePreference.setStorageSize(data.gamesSize, mTotalSize);
-        mMoviesPreference.setStorageSize(data.videoAppsSize, mTotalSize);
-        mAppPreference.setStorageSize(data.otherAppsSize, mTotalSize);
-
-        long otherExternalBytes =
-                data.externalStats.totalBytes
-                        - data.externalStats.audioBytes
-                        - data.externalStats.videoBytes
-                        - data.externalStats.imageBytes
-                        - data.externalStats.appBytes;
-        mFilePreference.setStorageSize(otherExternalBytes, mTotalSize);
+        mPhotoPreference.setStorageSize(getPhotosSize(data, profileData), mTotalSize);
+        mAudioPreference.setStorageSize(getAudioSize(data, profileData), mTotalSize);
+        mGamePreference.setStorageSize(getGamesSize(data, profileData), mTotalSize);
+        mMoviesPreference.setStorageSize(getMoviesSize(data, profileData), mTotalSize);
+        mAppPreference.setStorageSize(getAppsSize(data, profileData), mTotalSize);
+        mFilePreference.setStorageSize(getFilesSize(data, profileData), mTotalSize);
 
         if (mSystemPreference != null) {
             // Everything else that hasn't already been attributed is tracked as
@@ -335,6 +327,19 @@
                 .toIntent();
     }
 
+    private long getPhotosSize(StorageAsyncLoader.AppsStorageResult data,
+            StorageAsyncLoader.AppsStorageResult profileData) {
+        if (profileData != null) {
+            return data.photosAppsSize + data.externalStats.imageBytes
+                    + data.externalStats.videoBytes
+                    + profileData.photosAppsSize + profileData.externalStats.imageBytes
+                    + profileData.externalStats.videoBytes;
+        } else {
+            return data.photosAppsSize + data.externalStats.imageBytes
+                    + data.externalStats.videoBytes;
+        }
+    }
+
     private Intent getAudioIntent() {
         if (mVolume == null) {
             return null;
@@ -354,6 +359,16 @@
                 .toIntent();
     }
 
+    private long getAudioSize(StorageAsyncLoader.AppsStorageResult data,
+            StorageAsyncLoader.AppsStorageResult profileData) {
+        if (profileData != null) {
+            return data.musicAppsSize + data.externalStats.audioBytes
+                    + profileData.musicAppsSize + profileData.externalStats.audioBytes;
+        } else {
+            return data.musicAppsSize + data.externalStats.audioBytes;
+        }
+    }
+
     private Intent getAppsIntent() {
         if (mVolume == null) {
             return null;
@@ -371,6 +386,15 @@
                 .toIntent();
     }
 
+    private long getAppsSize(StorageAsyncLoader.AppsStorageResult data,
+            StorageAsyncLoader.AppsStorageResult profileData) {
+        if (profileData != null) {
+            return data.otherAppsSize + profileData.otherAppsSize;
+        } else {
+            return data.otherAppsSize;
+        }
+    }
+
     private Intent getGamesIntent() {
         final Bundle args = getWorkAnnotatedBundle(1);
         args.putString(ManageApplications.EXTRA_CLASSNAME,
@@ -383,6 +407,15 @@
                 .toIntent();
     }
 
+    private long getGamesSize(StorageAsyncLoader.AppsStorageResult data,
+            StorageAsyncLoader.AppsStorageResult profileData) {
+        if (profileData != null) {
+            return data.gamesSize + profileData.gamesSize;
+        } else {
+            return data.gamesSize;
+        }
+    }
+
     private Intent getMoviesIntent() {
         final Bundle args = getWorkAnnotatedBundle(1);
         args.putString(ManageApplications.EXTRA_CLASSNAME,
@@ -395,6 +428,15 @@
                 .toIntent();
     }
 
+    private long getMoviesSize(StorageAsyncLoader.AppsStorageResult data,
+            StorageAsyncLoader.AppsStorageResult profileData) {
+        if (profileData != null) {
+            return data.videoAppsSize + profileData.videoAppsSize;
+        } else {
+            return data.videoAppsSize;
+        }
+    }
+
     private Bundle getWorkAnnotatedBundle(int additionalCapacity) {
         if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.PERSONAL_WORK_PROFILE)) {
             final Bundle args = new Bundle(2 + additionalCapacity);
@@ -416,6 +458,28 @@
         return mSvp.findEmulatedForPrivate(mVolume).buildBrowseIntent();
     }
 
+    private long getFilesSize(StorageAsyncLoader.AppsStorageResult data,
+            StorageAsyncLoader.AppsStorageResult profileData) {
+        if (profileData != null) {
+            return data.externalStats.totalBytes
+                    - data.externalStats.audioBytes
+                    - data.externalStats.videoBytes
+                    - data.externalStats.imageBytes
+                    - data.externalStats.appBytes
+                    + profileData.externalStats.totalBytes
+                    - profileData.externalStats.audioBytes
+                    - profileData.externalStats.videoBytes
+                    - profileData.externalStats.imageBytes
+                    - profileData.externalStats.appBytes;
+        } else {
+            return data.externalStats.totalBytes
+                    - data.externalStats.audioBytes
+                    - data.externalStats.videoBytes
+                    - data.externalStats.imageBytes
+                    - data.externalStats.appBytes;
+        }
+    }
+
     private void launchIntent(Intent intent) {
         try {
             final int userId = intent.getIntExtra(Intent.EXTRA_USER_ID, -1);
diff --git a/src/com/android/settings/network/MobileDataEnabledListener.java b/src/com/android/settings/network/MobileDataEnabledListener.java
index 4c04282..b030823 100644
--- a/src/com/android/settings/network/MobileDataEnabledListener.java
+++ b/src/com/android/settings/network/MobileDataEnabledListener.java
@@ -25,12 +25,12 @@
     private Context mContext;
     private Client mClient;
     private int mSubId;
-    /**
-     * There're 2 listeners both activated at the same time.
-     * For project that access MOBILE_DATA, only first listener is functional.
-     * For project that access "MOBILE_DATA + subId", first listener will be stopped when receiving
-     * any onChange from second listener.
-     */
+
+    // There're 2 listeners both activated at the same time.
+    // For project that access MOBILE_DATA, only first listener is functional.
+    // For project that access "MOBILE_DATA + subId", first listener will be stopped when receiving
+    // any onChange from second listener.
+
     private GlobalSettingsChangeListener mListener;
     private GlobalSettingsChangeListener mListenerForSubId;
 
diff --git a/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java b/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java
index 2348f70..99009c9 100644
--- a/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java
+++ b/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java
@@ -28,7 +28,7 @@
 
     @Override
     protected SubscriptionInfo getDefaultSubscriptionInfo() {
-        return mManager.getDefaultVoiceSubscriptionInfo();
+        return mManager.getActiveSubscriptionInfo(getDefaultSubscriptionId());
     }
 
     @Override
diff --git a/src/com/android/settings/network/telephony/CellInfoUtil.java b/src/com/android/settings/network/telephony/CellInfoUtil.java
index 3129694..ab172c8 100644
--- a/src/com/android/settings/network/telephony/CellInfoUtil.java
+++ b/src/com/android/settings/network/telephony/CellInfoUtil.java
@@ -52,7 +52,7 @@
     /**
      * Returns the title of the network obtained in the manual search.
      *
-     * @param cellId contains the information of the network.
+     * @param cellId contains the identity of the network.
      * @param networkMccMnc contains the MCCMNC string of the network
      * @return Long Name if not null/empty, otherwise Short Name if not null/empty,
      * else MCCMNC string.
diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
index 675a1ba..f7ed1d0 100644
--- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
+++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
@@ -26,12 +26,12 @@
 import android.os.PersistableBundle;
 import android.provider.Settings;
 import android.telephony.CarrierConfigManager;
-import android.telephony.RadioAccessFamily;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
 
+
 import androidx.annotation.VisibleForTesting;
 import androidx.lifecycle.Lifecycle;
 import androidx.lifecycle.LifecycleObserver;
@@ -42,6 +42,7 @@
 
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
+import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
 import com.android.settings.R;
 
 import java.util.ArrayList;
@@ -194,18 +195,18 @@
                             R.array.enabled_networks_cdma_values);
                 } else {
                     switch (settingsNetworkMode) {
-                        case TelephonyManager.NETWORK_MODE_CDMA_EVDO:
-                        case TelephonyManager.NETWORK_MODE_CDMA_NO_EVDO:
-                        case TelephonyManager.NETWORK_MODE_EVDO_NO_CDMA:
+                        case TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO:
+                        case TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO:
+                        case TelephonyManagerConstants.NETWORK_MODE_EVDO_NO_CDMA:
                             preference.setEntries(
                                     R.array.enabled_networks_cdma_no_lte_choices);
                             preference.setEntryValues(
                                     R.array.enabled_networks_cdma_no_lte_values);
                             break;
-                        case TelephonyManager.NETWORK_MODE_GLOBAL:
-                        case TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO:
-                        case TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
-                        case TelephonyManager.NETWORK_MODE_LTE_ONLY:
+                        case TelephonyManagerConstants.NETWORK_MODE_GLOBAL:
+                        case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO:
+                        case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
+                        case TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY:
                             preference.setEntries(
                                     R.array.enabled_networks_cdma_only_lte_choices);
                             preference.setEntryValues(
@@ -279,7 +280,7 @@
     }
 
     /***
-     * Preferred network list add 5G item.
+     * Generate preferred network choices list for 5G
      *
      * @string/enabled_networks_cdma_choices
      *         Before            |        After
@@ -364,9 +365,9 @@
                 new5gEntryValue = transformLteEntryValueTo5gEntryValue(oldEntryValue);
             } else if (mContext.getString(R.string.network_global).equals(oldEntry)) {
                 //oldEntry: network_global
-                //oldEntryValue: TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA
+                //oldEntryValue: TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA
                 oldEntryValue = Integer.toString(
-                        TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
+                        TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
             }
 
             if (!TextUtils.isEmpty(new5gEntry)) {
@@ -382,124 +383,151 @@
     }
 
     /**
-     * LTE network mode transform to 5G network mode.
+     * transform LTE network mode to 5G network mode.
      *
-     * @param networkMode this is LTE network mode.
-     * @return 5G network mode.
+     * @param networkMode an LTE network mode without 5G.
+     * @return the corresponding network mode with 5G.
      */
     private CharSequence transformLteEntryValueTo5gEntryValue(CharSequence networkMode) {
         int networkModeInt = Integer.valueOf(networkMode.toString());
-        return Integer.toString(addNrToNetworkType(networkModeInt));
+        return Integer.toString(addNrToLteNetworkType(networkModeInt));
+    }
+    private int addNrToLteNetworkType(int networkType) {
+        switch(networkType) {
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY:
+                return TelephonyManagerConstants.NETWORK_MODE_NR_LTE;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO:
+                return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA:
+                return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
+                return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA:
+                return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA:
+                return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM:
+                return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
+                return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
+                return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
+            default:
+                return networkType; // not LTE
+        }
     }
 
-    private int addNrToNetworkType(int networkType) {
-        long networkTypeBitmasks = RadioAccessFamily.getRafFromNetworkType(networkType);
-        networkTypeBitmasks |= mTelephonyManager.NETWORK_TYPE_BITMASK_NR;
-        return RadioAccessFamily.getNetworkTypeFromRaf((int) networkTypeBitmasks);
-    }
-
+    /**
+     * Sets the display string for the network mode choice and selects the corresponding item
+     *
+     * @param preference ListPreference for selecting the preferred network mode.
+     * @param networkMode the current network mode. The current mode might not be an option in the
+     *                    choice list. The nearest choice is selected instead
+     */
     private void updatePreferenceValueAndSummary(ListPreference preference, int networkMode) {
         preference.setValue(Integer.toString(networkMode));
         switch (networkMode) {
-            case TelephonyManager.NETWORK_MODE_TDSCDMA_WCDMA:
-            case TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA:
-            case TelephonyManager.NETWORK_MODE_TDSCDMA_GSM:
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM:
                 preference.setValue(
-                        Integer.toString(TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA));
+                        Integer.toString(TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA));
                 preference.setSummary(R.string.network_3G);
                 break;
-            case TelephonyManager.NETWORK_MODE_WCDMA_ONLY:
-            case TelephonyManager.NETWORK_MODE_GSM_UMTS:
-            case TelephonyManager.NETWORK_MODE_WCDMA_PREF:
+            case TelephonyManagerConstants.NETWORK_MODE_WCDMA_ONLY:
+            case TelephonyManagerConstants.NETWORK_MODE_GSM_UMTS:
+            case TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF:
                 if (!mIsGlobalCdma) {
-                    preference.setValue(Integer.toString(TelephonyManager.NETWORK_MODE_WCDMA_PREF));
+                    preference.setValue(Integer.toString(TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF));
                     preference.setSummary(R.string.network_3G);
                 } else {
-                    preference.setValue(Integer.toString(TelephonyManager
+                    preference.setValue(Integer.toString(TelephonyManagerConstants
                             .NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
                     preference.setSummary(R.string.network_global);
                 }
                 break;
-            case TelephonyManager.NETWORK_MODE_GSM_ONLY:
+            case TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY:
                 if (!mIsGlobalCdma) {
                     preference.setValue(
-                            Integer.toString(TelephonyManager.NETWORK_MODE_GSM_ONLY));
+                            Integer.toString(TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY));
                     preference.setSummary(R.string.network_2G);
                 } else {
                     preference.setValue(
-                            Integer.toString(TelephonyManager
+                            Integer.toString(TelephonyManagerConstants
                                     .NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
                     preference.setSummary(R.string.network_global);
                 }
                 break;
-            case TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA:
                 if (MobileNetworkUtils.isWorldMode(mContext, mSubId)) {
                     preference.setSummary(
                             R.string.preferred_network_mode_lte_gsm_umts_summary);
                     break;
                 }
-            case TelephonyManager.NETWORK_MODE_LTE_ONLY:
-            case TelephonyManager.NETWORK_MODE_LTE_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA:
                 if (!mIsGlobalCdma) {
                     preference.setValue(
-                            Integer.toString(TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA));
+                            Integer.toString(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
                     preference.setSummary(
                             mShow4GForLTE ? R.string.network_4G : R.string.network_lte);
                 } else {
                     preference.setValue(
-                            Integer.toString(TelephonyManager
+                            Integer.toString(TelephonyManagerConstants
                                     .NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
                     preference.setSummary(R.string.network_global);
                 }
                 break;
-            case TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO:
                 if (MobileNetworkUtils.isWorldMode(mContext, mSubId)) {
                     preference.setSummary(
                             R.string.preferred_network_mode_lte_cdma_summary);
                 } else {
                     preference.setValue(
-                            Integer.toString(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO));
+                            Integer.toString(TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO));
                     preference.setSummary(
                             mDisplay5gList ? R.string.network_lte_pure : R.string.network_lte);
                 }
                 break;
-            case TelephonyManager.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
-                preference.setValue(Integer.toString(TelephonyManager
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                preference.setValue(Integer.toString(TelephonyManagerConstants
                         .NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
                 preference.setSummary(R.string.network_3G);
                 break;
-            case TelephonyManager.NETWORK_MODE_CDMA_EVDO:
-            case TelephonyManager.NETWORK_MODE_EVDO_NO_CDMA:
-            case TelephonyManager.NETWORK_MODE_GLOBAL:
+            case TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO:
+            case TelephonyManagerConstants.NETWORK_MODE_EVDO_NO_CDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_GLOBAL:
                 preference.setValue(
-                        Integer.toString(TelephonyManager.NETWORK_MODE_CDMA_EVDO));
+                        Integer.toString(TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO));
                 preference.setSummary(R.string.network_3G);
                 break;
-            case TelephonyManager.NETWORK_MODE_CDMA_NO_EVDO:
+            case TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO:
                 preference.setValue(
-                        Integer.toString(TelephonyManager.NETWORK_MODE_CDMA_NO_EVDO));
+                        Integer.toString(TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO));
                 preference.setSummary(R.string.network_1x);
                 break;
-            case TelephonyManager.NETWORK_MODE_TDSCDMA_ONLY:
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_ONLY:
                 preference.setValue(
-                        Integer.toString(TelephonyManager.NETWORK_MODE_TDSCDMA_ONLY));
+                        Integer.toString(TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_ONLY));
                 preference.setSummary(R.string.network_3G);
                 break;
-            case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM:
-            case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
-            case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA:
-            case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
-            case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
-            case TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
                 if (MobileNetworkUtils.isTdscdmaSupported(mContext, mSubId)) {
                     preference.setValue(
-                            Integer.toString(TelephonyManager
+                            Integer.toString(TelephonyManagerConstants
                                     .NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
                     preference.setSummary(
                             mDisplay5gList ? R.string.network_lte_pure : R.string.network_lte);
                 } else {
                     preference.setValue(
-                            Integer.toString(TelephonyManager
+                            Integer.toString(TelephonyManagerConstants
                                     .NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
                     if (mTelephonyManager.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA
                             || mIsGlobalCdma
@@ -516,15 +544,15 @@
                     }
                 }
                 break;
-            case TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO:
-            case TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO:
+            case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
                 preference.setValue(Integer.toString(networkMode));
                 preference.setSummary(mContext.getString(R.string.network_5G)
                         + mContext.getString(R.string.network_recommended));
                 break;
-            case TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA:
                 preference.setValue(
-                        Integer.toString(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA));
+                        Integer.toString(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA));
                 if (mTelephonyManager.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA
                         || mIsGlobalCdma
                         || MobileNetworkUtils.isWorldMode(mContext, mSubId)) {
diff --git a/src/com/android/settings/network/telephony/MobileDataDialogFragment.java b/src/com/android/settings/network/telephony/MobileDataDialogFragment.java
index a6183e9..c8a1e98 100644
--- a/src/com/android/settings/network/telephony/MobileDataDialogFragment.java
+++ b/src/com/android/settings/network/telephony/MobileDataDialogFragment.java
@@ -86,7 +86,8 @@
                 final SubscriptionInfo currentSubInfo =
                         mSubscriptionManager.getActiveSubscriptionInfo(mSubId);
                 final SubscriptionInfo nextSubInfo =
-                        mSubscriptionManager.getDefaultDataSubscriptionInfo();
+                        mSubscriptionManager.getActiveSubscriptionInfo(
+                                mSubscriptionManager.getDefaultDataSubscriptionId());
 
                 final String previousName = (nextSubInfo == null)
                         ? getContext().getResources().getString(
diff --git a/src/com/android/settings/network/telephony/MobileDataSlice.java b/src/com/android/settings/network/telephony/MobileDataSlice.java
index c70ae1a..40c747c 100644
--- a/src/com/android/settings/network/telephony/MobileDataSlice.java
+++ b/src/com/android/settings/network/telephony/MobileDataSlice.java
@@ -147,8 +147,8 @@
     }
 
     protected static int getDefaultSubscriptionId(SubscriptionManager subscriptionManager) {
-        final SubscriptionInfo defaultSubscription =
-                subscriptionManager.getDefaultDataSubscriptionInfo();
+        final SubscriptionInfo defaultSubscription = subscriptionManager.getActiveSubscriptionInfo(
+                subscriptionManager.getDefaultDataSubscriptionId());
         if (defaultSubscription == null) {
             return SubscriptionManager.INVALID_SUBSCRIPTION_ID; // No default subscription
         }
@@ -157,8 +157,8 @@
     }
 
     private CharSequence getSummary() {
-        final SubscriptionInfo defaultSubscription =
-                mSubscriptionManager.getDefaultDataSubscriptionInfo();
+        final SubscriptionInfo defaultSubscription = mSubscriptionManager.getActiveSubscriptionInfo(
+                mSubscriptionManager.getDefaultDataSubscriptionId());
         if (defaultSubscription == null) {
             return null; // no summary text
         }
diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
index c439f75..75e0bb1 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
@@ -56,6 +56,7 @@
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
 import com.android.settingslib.development.DevelopmentSettingsEnabler;
 import com.android.settingslib.graph.SignalDrawable;
 
@@ -99,12 +100,12 @@
      * Returns true if Wifi calling is enabled for at least one subscription.
      */
     public static boolean isWifiCallingEnabled(Context context) {
-        final SubscriptionManager subManager = context.getSystemService(SubscriptionManager.class);
-        if (subManager == null) {
-            Log.e(TAG, "isWifiCallingEnabled: couldn't get system service.");
+        final int[] subIds = getActiveSubscriptionIdList(context);
+        if (ArrayUtils.isEmpty(subIds)) {
+            Log.d(TAG, "isWifiCallingEnabled: subIds is empty");
             return false;
         }
-        for (int subId : subManager.getActiveSubscriptionIdList()) {
+        for (int subId : subIds) {
             if (isWifiCallingEnabled(context, subId)) {
                 return true;
             }
@@ -312,8 +313,8 @@
                     context.getContentResolver(),
                     android.provider.Settings.Global.PREFERRED_NETWORK_MODE + subId,
                     Phone.PREFERRED_NT_MODE);
-            if (settingsNetworkMode == TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA
-                    || settingsNetworkMode == TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO) {
+            if (settingsNetworkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA
+                    || settingsNetworkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO) {
                 return true;
             }
 
@@ -340,8 +341,8 @@
                 android.provider.Settings.Global.PREFERRED_NETWORK_MODE + subId,
                 Phone.PREFERRED_NT_MODE);
         if (isWorldMode(context, subId)) {
-            if (networkMode == TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO
-                    || networkMode == TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA) {
+            if (networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO
+                    || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA) {
                 return true;
             } else if (shouldSpeciallyUpdateGsmCdma(context, subId)) {
                 return true;
@@ -404,7 +405,7 @@
                 context.getContentResolver(),
                 android.provider.Settings.Global.PREFERRED_NETWORK_MODE + subId,
                 Phone.PREFERRED_NT_MODE);
-        if (networkMode == TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO
+        if (networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO
                 && isWorldMode(context, subId)) {
             return false;
         }
@@ -417,7 +418,7 @@
         }
 
         if (isWorldMode(context, subId)) {
-            if (networkMode == TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA) {
+            if (networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA) {
                 return true;
             }
         }
@@ -465,9 +466,7 @@
      * otherwise return {@link SubscriptionManager#INVALID_SUBSCRIPTION_ID}
      */
     public static int getSearchableSubscriptionId(Context context) {
-        final SubscriptionManager subscriptionManager = context.getSystemService(
-                SubscriptionManager.class);
-        final int subIds[] = subscriptionManager.getActiveSubscriptionIdList();
+        final int[] subIds = getActiveSubscriptionIdList(context);
 
         return subIds.length >= 1 ? subIds[0] : SubscriptionManager.INVALID_SUBSCRIPTION_ID;
     }
@@ -484,14 +483,12 @@
      */
     public static int getAvailability(Context context, int defSubId,
             TelephonyAvailabilityCallback callback) {
-        final SubscriptionManager subscriptionManager = context.getSystemService(
-                SubscriptionManager.class);
         if (defSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
             // If subId has been set, return the corresponding status
             return callback.getAvailabilityStatus(defSubId);
         } else {
             // Otherwise, search whether there is one subId in device that support this preference
-            final int[] subIds = subscriptionManager.getActiveSubscriptionIdList();
+            final int[] subIds = getActiveSubscriptionIdList(context);
             if (ArrayUtils.isEmpty(subIds)) {
                 return callback.getAvailabilityStatus(
                         SubscriptionManager.INVALID_SUBSCRIPTION_ID);
@@ -522,12 +519,12 @@
                 context.getContentResolver(),
                 android.provider.Settings.Global.PREFERRED_NETWORK_MODE + subId,
                 Phone.PREFERRED_NT_MODE);
-        if (networkMode == TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM
-                || networkMode == TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA
-                || networkMode == TelephonyManager.NETWORK_MODE_LTE_TDSCDMA
-                || networkMode == TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_WCDMA
-                || networkMode == TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA
-                || networkMode == TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA) {
+        if (networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM
+                || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA
+                || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA
+                || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA
+                || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA
+                || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA) {
             if (!isTdscdmaSupported(context, subId) && isWorldMode(context, subId)) {
                 return true;
             }
@@ -639,4 +636,21 @@
                 Arrays.asList(TextUtils.split(countriesListString.toLowerCase(), ","));
         return unsupportedCountries.contains(country);
     }
+
+    private static int[] getActiveSubscriptionIdList(Context context) {
+        final SubscriptionManager subscriptionManager = context.getSystemService(
+                SubscriptionManager.class);
+        final List<SubscriptionInfo> subInfoList =
+                subscriptionManager.getActiveSubscriptionInfoList();
+        if (subInfoList == null) {
+            return new int[0];
+        }
+        int[] activeSubIds = new int[subInfoList.size()];
+        int i = 0;
+        for (SubscriptionInfo subInfo : subInfoList) {
+            activeSubIds[i] = subInfo.getSubscriptionId();
+            i++;
+        }
+        return activeSubIds;
+    }
 }
diff --git a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java
index 89e2d5b8..72be4f4 100644
--- a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java
+++ b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java
@@ -29,6 +29,7 @@
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
 import com.android.settings.R;
+import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
 
 /**
  * Preference controller for "Preferred network mode"
@@ -113,48 +114,48 @@
 
     private int getPreferredNetworkModeSummaryResId(int NetworkMode) {
         switch (NetworkMode) {
-            case TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA:
                 return R.string.preferred_network_mode_tdscdma_gsm_wcdma_summary;
-            case TelephonyManager.NETWORK_MODE_TDSCDMA_GSM:
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM:
                 return R.string.preferred_network_mode_tdscdma_gsm_summary;
-            case TelephonyManager.NETWORK_MODE_WCDMA_PREF:
+            case TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF:
                 return R.string.preferred_network_mode_wcdma_perf_summary;
-            case TelephonyManager.NETWORK_MODE_GSM_ONLY:
+            case TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY:
                 return R.string.preferred_network_mode_gsm_only_summary;
-            case TelephonyManager.NETWORK_MODE_TDSCDMA_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_WCDMA:
                 return R.string.preferred_network_mode_tdscdma_wcdma_summary;
-            case TelephonyManager.NETWORK_MODE_WCDMA_ONLY:
+            case TelephonyManagerConstants.NETWORK_MODE_WCDMA_ONLY:
                 return R.string.preferred_network_mode_wcdma_only_summary;
-            case TelephonyManager.NETWORK_MODE_GSM_UMTS:
+            case TelephonyManagerConstants.NETWORK_MODE_GSM_UMTS:
                 return R.string.preferred_network_mode_gsm_wcdma_summary;
-            case TelephonyManager.NETWORK_MODE_CDMA_EVDO:
+            case TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO:
                 switch (mTelephonyManager.getLteOnCdmaMode()) {
                     case PhoneConstants.LTE_ON_CDMA_TRUE:
                         return R.string.preferred_network_mode_cdma_summary;
                     default:
                         return R.string.preferred_network_mode_cdma_evdo_summary;
                 }
-            case TelephonyManager.NETWORK_MODE_CDMA_NO_EVDO:
+            case TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO:
                 return R.string.preferred_network_mode_cdma_only_summary;
-            case TelephonyManager.NETWORK_MODE_EVDO_NO_CDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_EVDO_NO_CDMA:
                 return R.string.preferred_network_mode_evdo_only_summary;
-            case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA:
                 return R.string.preferred_network_mode_lte_tdscdma_summary;
-            case TelephonyManager.NETWORK_MODE_LTE_ONLY:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY:
                 return R.string.preferred_network_mode_lte_summary;
-            case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM:
                 return R.string.preferred_network_mode_lte_tdscdma_gsm_summary;
-            case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
                 return R.string.preferred_network_mode_lte_tdscdma_gsm_wcdma_summary;
-            case TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA:
                 return R.string.preferred_network_mode_lte_gsm_wcdma_summary;
-            case TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO:
                 return R.string.preferred_network_mode_lte_cdma_evdo_summary;
-            case TelephonyManager.NETWORK_MODE_TDSCDMA_ONLY:
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_ONLY:
                 return R.string.preferred_network_mode_tdscdma_summary;
-            case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
                 return R.string.preferred_network_mode_lte_tdscdma_cdma_evdo_gsm_wcdma_summary;
-            case TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
                 if (mTelephonyManager.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA
                         || mIsGlobalCdma
                         || MobileNetworkUtils.isWorldMode(mContext, mSubId)) {
@@ -162,13 +163,13 @@
                 } else {
                     return R.string.preferred_network_mode_lte_summary;
                 }
-            case TelephonyManager.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
                 return R.string.preferred_network_mode_tdscdma_cdma_evdo_gsm_wcdma_summary;
-            case TelephonyManager.NETWORK_MODE_GLOBAL:
+            case TelephonyManagerConstants.NETWORK_MODE_GLOBAL:
                 return R.string.preferred_network_mode_cdma_evdo_gsm_wcdma_summary;
-            case TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
                 return R.string.preferred_network_mode_lte_tdscdma_wcdma_summary;
-            case TelephonyManager.NETWORK_MODE_LTE_WCDMA:
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA:
                 return R.string.preferred_network_mode_lte_wcdma_summary;
             default:
                 return R.string.preferred_network_mode_global_summary;
diff --git a/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java b/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java
index b999219..96ed771 100644
--- a/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java
+++ b/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java
@@ -28,7 +28,7 @@
 
     @Override
     protected SubscriptionInfo getDefaultSubscriptionInfo() {
-        return mManager.getDefaultSmsSubscriptionInfo();
+        return mManager.getActiveSubscriptionInfo(getDefaultSubscriptionId());
     }
 
     @Override
diff --git a/src/com/android/settings/network/telephony/TelephonyConstants.java b/src/com/android/settings/network/telephony/TelephonyConstants.java
new file mode 100644
index 0000000..cfae572
--- /dev/null
+++ b/src/com/android/settings/network/telephony/TelephonyConstants.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.network.telephony;
+
+
+/**
+ * Contains hidden constants copied from the platform.
+ */
+public class TelephonyConstants {
+
+    /**
+     * Copied from {@link android.telephony.TelephonyManager}
+     */
+    public static class TelephonyManagerConstants {
+
+        // Network modes are in turn copied from RILConstants
+        // with one difference: NETWORK_MODE_CDMA is named NETWORK_MODE_CDMA_EVDO
+
+        /** GSM, WCDMA (WCDMA preferred) */
+        public static final int NETWORK_MODE_WCDMA_PREF = 0;
+
+        /** GSM only */
+        public static final int NETWORK_MODE_GSM_ONLY = 1;
+
+        /** WCDMA only */
+        public static final int NETWORK_MODE_WCDMA_ONLY = 2;
+
+        /** GSM, WCDMA (auto mode, according to PRL) */
+        public static final int NETWORK_MODE_GSM_UMTS = 3;
+
+        /** CDMA and EvDo (auto mode, according to PRL)
+         * this is NETWORK_MODE_CDMA in RILConstants.java
+         */
+        public static final int NETWORK_MODE_CDMA_EVDO = 4;
+
+        /** CDMA only */
+        public static final int NETWORK_MODE_CDMA_NO_EVDO = 5;
+
+        /** EvDo only */
+        public static final int NETWORK_MODE_EVDO_NO_CDMA = 6;
+
+        /** GSM, WCDMA, CDMA, and EvDo (auto mode, according to PRL) */
+        public static final int NETWORK_MODE_GLOBAL = 7;
+
+        /** LTE, CDMA and EvDo */
+        public static final int NETWORK_MODE_LTE_CDMA_EVDO = 8;
+
+        /** LTE, GSM and WCDMA */
+        public static final int NETWORK_MODE_LTE_GSM_WCDMA = 9;
+
+        /** LTE, CDMA, EvDo, GSM, and WCDMA */
+        public static final int NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA = 10;
+
+        /** LTE only mode. */
+        public static final int NETWORK_MODE_LTE_ONLY = 11;
+
+        /** LTE and WCDMA */
+        public static final int NETWORK_MODE_LTE_WCDMA = 12;
+
+        /** TD-SCDMA only */
+        public static final int NETWORK_MODE_TDSCDMA_ONLY = 13;
+
+        /** TD-SCDMA and WCDMA */
+        public static final int NETWORK_MODE_TDSCDMA_WCDMA = 14;
+
+        /** LTE and TD-SCDMA*/
+        public static final int NETWORK_MODE_LTE_TDSCDMA = 15;
+
+        /** TD-SCDMA and GSM */
+        public static final int NETWORK_MODE_TDSCDMA_GSM = 16;
+
+        /** TD-SCDMA, GSM and LTE */
+        public static final int NETWORK_MODE_LTE_TDSCDMA_GSM = 17;
+
+        /** TD-SCDMA, GSM and WCDMA */
+        public static final int NETWORK_MODE_TDSCDMA_GSM_WCDMA = 18;
+
+        /** LTE, TD-SCDMA and WCDMA */
+        public static final int NETWORK_MODE_LTE_TDSCDMA_WCDMA = 19;
+
+        /** LTE, TD-SCDMA, GSM, and WCDMA */
+        public static final int NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA = 20;
+
+        /** TD-SCDMA, CDMA, EVDO, GSM and WCDMA */
+        public static final int NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 21;
+
+        /** LTE, TDCSDMA, CDMA, EVDO, GSM and WCDMA */
+        public static final int NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 22;
+
+        /** NR 5G only mode */
+        public static final int NETWORK_MODE_NR_ONLY = 23;
+
+        /** NR 5G, LTE */
+        public static final int NETWORK_MODE_NR_LTE = 24;
+
+        /** NR 5G, LTE, CDMA and EvDo */
+        public static final int NETWORK_MODE_NR_LTE_CDMA_EVDO = 25;
+
+        /** NR 5G, LTE, GSM and WCDMA */
+        public static final int NETWORK_MODE_NR_LTE_GSM_WCDMA = 26;
+
+        /** NR 5G, LTE, CDMA, EvDo, GSM and WCDMA */
+        public static final int NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA = 27;
+
+        /** NR 5G, LTE and WCDMA */
+        public static final int NETWORK_MODE_NR_LTE_WCDMA = 28;
+
+        /** NR 5G, LTE and TDSCDMA */
+        public static final int NETWORK_MODE_NR_LTE_TDSCDMA = 29;
+
+        /** NR 5G, LTE, TD-SCDMA and GSM */
+        public static final int NETWORK_MODE_NR_LTE_TDSCDMA_GSM = 30;
+
+        /** NR 5G, LTE, TD-SCDMA, WCDMA */
+        public static final int NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA = 31;
+
+        /** NR 5G, LTE, TD-SCDMA, GSM and WCDMA */
+        public static final int NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA = 32;
+
+        /** NR 5G, LTE, TD-SCDMA, CDMA, EVDO, GSM and WCDMA */
+        public static final int NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 33;
+    }
+
+
+}
diff --git a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
index 5f259f8..c988bf8 100644
--- a/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
+++ b/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceController.java
@@ -24,6 +24,7 @@
 import androidx.preference.Preference;
 
 import com.android.internal.telephony.Phone;
+import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
 
 /**
  * Preference controller for "System Select"
@@ -54,7 +55,7 @@
                 Settings.Global.PREFERRED_NETWORK_MODE + mSubId,
                 Phone.PREFERRED_NT_MODE);
         listPreference.setEnabled(
-                settingsNetworkMode != TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA);
+                settingsNetworkMode != TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
     }
 
     @Override
diff --git a/src/com/android/settings/security/SimLockPreferenceController.java b/src/com/android/settings/security/SimLockPreferenceController.java
index 3b23daa..ffc1d6b 100644
--- a/src/com/android/settings/security/SimLockPreferenceController.java
+++ b/src/com/android/settings/security/SimLockPreferenceController.java
@@ -77,7 +77,7 @@
      */
     private boolean isSimReady() {
         final List<SubscriptionInfo> subInfoList =
-                mSubscriptionManager.getActiveSubscriptionInfoList(true);
+                mSubscriptionManager.getActiveSubscriptionInfoList();
         if (subInfoList != null) {
             for (SubscriptionInfo subInfo : subInfoList) {
                 final int simState = mTelephonyManager.getSimState(subInfo.getSimSlotIndex());
@@ -95,7 +95,7 @@
      */
     private boolean isSimIccReady() {
         final List<SubscriptionInfo> subInfoList =
-                mSubscriptionManager.getActiveSubscriptionInfoList(true);
+                mSubscriptionManager.getActiveSubscriptionInfoList();
 
         if (subInfoList != null) {
             for (SubscriptionInfo subInfo : subInfoList) {
diff --git a/src/com/android/settings/wifi/CellularFallbackPreferenceController.java b/src/com/android/settings/wifi/CellularFallbackPreferenceController.java
index 659ddbe..eab50a6 100644
--- a/src/com/android/settings/wifi/CellularFallbackPreferenceController.java
+++ b/src/com/android/settings/wifi/CellularFallbackPreferenceController.java
@@ -68,8 +68,7 @@
 
     @VisibleForTesting
     Resources getResourcesForSubId(int subscriptionId) {
-        return SubscriptionManager.getResourcesForSubId(mContext, subscriptionId,
-                false /* useRootLocale */);
+        return SubscriptionManager.getResourcesForSubId(mContext, subscriptionId);
     }
 
     private boolean avoidBadWifiCurrentSettings() {
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index e228a14..a8b3250 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -142,7 +142,6 @@
     @VisibleForTesting
     int mAccessPointSecurity;
     private TextView mPasswordView;
-    private TextView mSaePasswordIdView;
     private ImageButton mSsidScanButton;
 
     private String mUnspecifiedCertString;
@@ -811,11 +810,6 @@
                     String password = mPasswordView.getText().toString();
                     config.preSharedKey = '"' + password + '"';
                 }
-                if (mSaePasswordIdView.length() != 0) {
-                    config.saePasswordId = mSaePasswordIdView.getText().toString();
-                } else {
-                    config.saePasswordId = null;
-                }
                 break;
 
             case AccessPoint.SECURITY_OWE:
@@ -1002,23 +996,6 @@
             }
         }
 
-        if (mSaePasswordIdView == null) {
-            mSaePasswordIdView = (TextView) mView.findViewById(R.id.sae_password_id);
-            mSaePasswordIdView.setOnEditorActionListener(this);
-            mSaePasswordIdView.setOnKeyListener(this);
-        }
-
-        if (mAccessPointSecurity == AccessPoint.SECURITY_SAE) {
-            mView.findViewById(R.id.sae_password_id_layout).setVisibility(View.VISIBLE);
-            if (mAccessPoint != null && mAccessPoint.isSaved()) {
-                if (!TextUtils.isEmpty(mAccessPoint.getConfig().saePasswordId)) {
-                    mSaePasswordIdView.setText(mAccessPoint.getConfig().saePasswordId);
-                }
-            }
-        } else {
-            setSaePasswordIdInvisible();
-        }
-
         if (mAccessPointSecurity != AccessPoint.SECURITY_EAP &&
                 mAccessPointSecurity != AccessPoint.SECURITY_EAP_SUITE_B) {
             mView.findViewById(R.id.eap).setVisibility(View.GONE);
@@ -1326,11 +1303,6 @@
         mView.findViewById(R.id.show_password_layout).setVisibility(View.GONE);
     }
 
-    private void setSaePasswordIdInvisible() {
-        mSaePasswordIdView.setText("");
-        mView.findViewById(R.id.sae_password_id_layout).setVisibility(View.GONE);
-    }
-
     private void setEapMethodInvisible() {
         mView.findViewById(R.id.eap).setVisibility(View.GONE);
     }
diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java
index 90f1397..ecf20fd 100644
--- a/src/com/android/settings/wifi/WifiConfigController2.java
+++ b/src/com/android/settings/wifi/WifiConfigController2.java
@@ -142,7 +142,6 @@
     @VisibleForTesting
     int mWifiEntrySecurity;
     private TextView mPasswordView;
-    private TextView mSaePasswordIdView;
     private ImageButton mSsidScanButton;
 
     private String mUnspecifiedCertString;
@@ -805,11 +804,6 @@
                     String password = mPasswordView.getText().toString();
                     config.preSharedKey = '"' + password + '"';
                 }
-                if (mSaePasswordIdView.length() != 0) {
-                    config.saePasswordId = mSaePasswordIdView.getText().toString();
-                } else {
-                    config.saePasswordId = null;
-                }
                 break;
 
             case WifiEntry.SECURITY_OWE:
@@ -996,23 +990,6 @@
             }
         }
 
-        if (mSaePasswordIdView == null) {
-            mSaePasswordIdView = (TextView) mView.findViewById(R.id.sae_password_id);
-            mSaePasswordIdView.setOnEditorActionListener(this);
-            mSaePasswordIdView.setOnKeyListener(this);
-        }
-
-        if (mWifiEntrySecurity == WifiEntry.SECURITY_SAE) {
-            mView.findViewById(R.id.sae_password_id_layout).setVisibility(View.VISIBLE);
-            if (mWifiEntry != null && mWifiEntry.isSaved()) {
-                if (!TextUtils.isEmpty(mWifiEntry.getWifiConfiguration().saePasswordId)) {
-                    mSaePasswordIdView.setText(mWifiEntry.getWifiConfiguration().saePasswordId);
-                }
-            }
-        } else {
-            setSaePasswordIdInvisible();
-        }
-
         if (mWifiEntrySecurity != WifiEntry.SECURITY_EAP
                 && mWifiEntrySecurity != WifiEntry.SECURITY_EAP_SUITE_B) {
             mView.findViewById(R.id.eap).setVisibility(View.GONE);
@@ -1322,11 +1299,6 @@
         mView.findViewById(R.id.show_password_layout).setVisibility(View.GONE);
     }
 
-    private void setSaePasswordIdInvisible() {
-        mSaePasswordIdView.setText("");
-        mView.findViewById(R.id.sae_password_id_layout).setVisibility(View.GONE);
-    }
-
     private void setEapMethodInvisible() {
         mView.findViewById(R.id.eap).setVisibility(View.GONE);
     }
diff --git a/src/com/android/settings/wifi/WifiSettings2.java b/src/com/android/settings/wifi/WifiSettings2.java
index a1f1ad9..4dd51ed 100644
--- a/src/com/android/settings/wifi/WifiSettings2.java
+++ b/src/com/android/settings/wifi/WifiSettings2.java
@@ -326,18 +326,6 @@
         if (savedInstanceState != null) {
             mDialogMode = savedInstanceState.getInt(SAVE_DIALOG_MODE);
             mDialogWifiEntryKey = savedInstanceState.getString(SAVE_DIALOG_WIFIENTRY_KEY);
-
-            if (!TextUtils.isEmpty(mDialogWifiEntryKey)) {
-                List<WifiEntry> wifiEntries = mWifiPickerTracker.getWifiEntries();
-                Optional<WifiEntry> matchedWifiEntry = wifiEntries.stream().filter(wifiEntry ->
-                        TextUtils.equals(wifiEntry.getKey(), mDialogWifiEntryKey)).findAny();
-                if (matchedWifiEntry.isPresent()) {
-                    mDialogWifiEntry = matchedWifiEntry.get();
-                } else {
-                    throw new IllegalStateException("Failed to restore WifiEntry of key: "
-                            + mDialogWifiEntryKey);
-                }
-            }
         }
 
         // If we're supposed to enable/disable the Next button based on our current connection
@@ -564,6 +552,15 @@
         if (preference instanceof LongPressWifiEntryPreference) {
             final WifiEntry selectedEntry =
                     ((LongPressWifiEntryPreference) preference).getWifiEntry();
+
+            if (selectedEntry.isSaved()) {
+                if (!selectedEntry.getWifiConfiguration().getNetworkSelectionStatus()
+                        .getHasEverConnected()) {
+                    launchConfigNewNetworkFragment(selectedEntry);
+                    return true;
+                }
+            }
+
             connect(selectedEntry, true /* editIfNoConfig */, true /* fullScreenEdit */);
         } else if (preference == mAddWifiNetworkPreference) {
             onAddNetworkPressed();
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
index 5f26e2d..ea34fce 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
@@ -639,6 +639,6 @@
 
     @VisibleForTesting
     Resources getResourcesForSubId() {
-        return SubscriptionManager.getResourcesForSubId(getContext(), mSubId, false);
+        return SubscriptionManager.getResourcesForSubId(getContext(), mSubId);
     }
 }
diff --git a/src/com/android/settings/wifi/dpp/WifiDppUtils.java b/src/com/android/settings/wifi/dpp/WifiDppUtils.java
index 8862830..93a3530 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppUtils.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppUtils.java
@@ -349,7 +349,7 @@
         // When the value of this key is read, the actual key is not returned, just a "*".
         // Call privileged system API to obtain actual key.
         final String preSharedKey = removeFirstAndLastDoubleQuotes(
-                softApConfiguration.getWpa2Passphrase());
+                softApConfiguration.getPassphrase());
 
         if (!TextUtils.isEmpty(ssid)) {
             intent.putExtra(EXTRA_WIFI_SSID, ssid);
diff --git a/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceController.java
index 690e283..1563e61 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceController.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceController.java
@@ -51,10 +51,10 @@
         final SoftApConfiguration config = mWifiManager.getSoftApConfiguration();
         if (config == null
                 || (config.getSecurityType() == SoftApConfiguration.SECURITY_TYPE_WPA2_PSK
-                && TextUtils.isEmpty(config.getWpa2Passphrase()))) {
+                && TextUtils.isEmpty(config.getPassphrase()))) {
             mPassword = generateRandomPassword();
         } else {
-            mPassword = config.getWpa2Passphrase();
+            mPassword = config.getPassphrase();
         }
         ((ValidatedEditTextPreference) mPreference).setValidator(this);
         ((ValidatedEditTextPreference) mPreference).setIsPassword(true);
diff --git a/src/com/android/settings/wifi/tether/WifiTetherSettings.java b/src/com/android/settings/wifi/tether/WifiTetherSettings.java
index 8b2f05c..3c4a001 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherSettings.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherSettings.java
@@ -214,8 +214,9 @@
         final int securityType = mSecurityPreferenceController.getSecurityType();
         configBuilder.setSsid(mSSIDPreferenceController.getSSID());
         if (securityType == SoftApConfiguration.SECURITY_TYPE_WPA2_PSK) {
-            configBuilder.setWpa2Passphrase(
-                    mPasswordPreferenceController.getPasswordValidated(securityType));
+            configBuilder.setPassphrase(
+                    mPasswordPreferenceController.getPasswordValidated(securityType),
+                    SoftApConfiguration.SECURITY_TYPE_WPA2_PSK);
         }
         configBuilder.setBand(mApBandPreferenceController.getBandIndex());
         return configBuilder.build();
diff --git a/tests/robotests/src/com/android/settings/accessibility/RTTSettingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/RTTSettingPreferenceControllerTest.java
new file mode 100644
index 0000000..6f3f77d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/RTTSettingPreferenceControllerTest.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.accessibility;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.robolectric.Shadows.shadowOf;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.testutils.ResolveInfoBuilder;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowPackageManager;
+
+@RunWith(RobolectricTestRunner.class)
+public class RTTSettingPreferenceControllerTest {
+
+    private Context mContext;
+    private ShadowPackageManager mShadowPackageManager;
+    private RTTSettingPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mShadowPackageManager = shadowOf(mContext.getPackageManager());
+        mController = spy(new RTTSettingPreferenceController(mContext, "rtt_setting"));
+        mController.mRTTIntent = new Intent("com.android.test.action.example");
+    }
+
+    @Test
+    public void getAvailabilityStatus_defaultDialerIsExpected_intentCanBeHandled_returnAVAILABLE() {
+        // Default dialer is expected.
+        doReturn(true).when(mController).isDialerSupportRTTSetting();
+        // Intent can be handled.
+        final ResolveInfo info = new ResolveInfoBuilder("pkg")
+                .setActivity("pkg", "class").build();
+        final Intent intent = new Intent("com.android.test.action.example");
+        mShadowPackageManager.addResolveInfoForIntent(intent, info);
+
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_intentCanNotBeHandled_shouldReturnUNSUPPORTED_ON_DEVICE() {
+        // Default dialer is expected.
+        doReturn(true).when(mController).isDialerSupportRTTSetting();
+        // Intent can not be handled.
+
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_defaultDialerIsNotExpected_returnUNSUPPORTED_ON_DEVICE() {
+        // Default dialer is not expected.
+        doReturn(false).when(mController).isDialerSupportRTTSetting();
+        // Intent can be handled.
+        final ResolveInfo info = new ResolveInfoBuilder("pkg")
+                .setActivity("pkg", "class").build();
+        final Intent intent = new Intent("com.android.test.action.example");
+        mShadowPackageManager.addResolveInfoForIntent(intent, info);
+
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java b/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java
index eea6388..3fdb7b4 100644
--- a/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java
@@ -16,6 +16,7 @@
 package com.android.settings.datausage;
 
 import static android.net.NetworkPolicy.CYCLE_NONE;
+
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.ArgumentMatchers.any;
@@ -49,6 +50,7 @@
 import com.android.settingslib.NetworkPolicyEditor;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -142,6 +144,7 @@
 
     @Test
     @Config(shadows = ShadowFragment.class)
+    @Ignore
     public void onCreate_emptyArguments_shouldSetDefaultNetworkTemplate() {
         final BillingCycleSettings billingCycleSettings = spy(new BillingCycleSettings());
         when(billingCycleSettings.getContext()).thenReturn(mContext);
@@ -164,4 +167,4 @@
 
         assertThat(billingCycleSettings.mNetworkTemplate).isNotNull();
     }
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java
index 6894d38..9aca92e 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java
@@ -93,7 +93,7 @@
     }
 
     @Test
-    public void resumePause_shouldListenUnlistenDataStateChange() {
+    public void resume_shouldListenDataStateChange() {
         ReflectionHelpers.setField(
                 mDataUsageList, "mVisibilityLoggerMixin", mock(VisibilityLoggerMixin.class));
         ReflectionHelpers.setField(
@@ -104,6 +104,17 @@
         verify(mMobileDataEnabledListener).start(anyInt());
 
         mDataUsageList.onPause();
+    }
+
+    @Test
+    public void pause_shouldUnlistenDataStateChange() {
+        ReflectionHelpers.setField(
+                mDataUsageList, "mVisibilityLoggerMixin", mock(VisibilityLoggerMixin.class));
+        ReflectionHelpers.setField(
+                mDataUsageList, "mPreferenceManager", mock(PreferenceManager.class));
+
+        mDataUsageList.onResume();
+        mDataUsageList.onPause();
 
         verify(mMobileDataEnabledListener).stop();
     }
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java
index d8dde39..d5eaa9a 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java
@@ -40,6 +40,7 @@
 import com.android.settings.testutils.shadow.ShadowUtils;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -103,6 +104,7 @@
 
     @Test
     @Config(shadows = ShadowSubscriptionManager.class)
+    @Ignore
     public void configuration_withSim_shouldShowMobileAndWifi() {
         ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED = true;
         ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true;
diff --git a/tests/robotests/src/com/android/settings/development/compat/PlatformCompatDashboardTest.java b/tests/robotests/src/com/android/settings/development/compat/PlatformCompatDashboardTest.java
index 693ed45..d0cb97a 100644
--- a/tests/robotests/src/com/android/settings/development/compat/PlatformCompatDashboardTest.java
+++ b/tests/robotests/src/com/android/settings/development/compat/PlatformCompatDashboardTest.java
@@ -16,16 +16,23 @@
 
 package com.android.settings.development.compat;
 
+import static com.android.internal.compat.OverrideAllowedState.ALLOWED;
+import static com.android.internal.compat.OverrideAllowedState.DISABLED_NOT_DEBUGGABLE;
+
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
 import android.compat.Compatibility.ChangeConfig;
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.graphics.drawable.Drawable;
 import android.os.RemoteException;
@@ -38,7 +45,9 @@
 
 import com.android.internal.compat.CompatibilityChangeConfig;
 import com.android.internal.compat.CompatibilityChangeInfo;
+import com.android.internal.compat.IOverrideValidator;
 import com.android.internal.compat.IPlatformCompat;
+import com.android.internal.compat.OverrideAllowedState;
 import com.android.settings.R;
 
 import org.junit.Before;
@@ -66,6 +75,10 @@
     private ApplicationInfo mApplicationInfo;
     @Mock
     private PreferenceManager mPreferenceManager;
+    @Mock
+    private IOverrideValidator mOverrideValidator;
+    @Mock
+    private PackageManager mPackageManager;
 
     private Context mContext;
     private CompatibilityChangeInfo[] mChanges;
@@ -81,7 +94,11 @@
         mChanges[3] = new CompatibilityChangeInfo(4L, "Enabled_After_SDK_1_2", 1, false, "");
         mChanges[4] = new CompatibilityChangeInfo(5L, "Enabled_After_SDK_2", 2, false, "");
         when(mPlatformCompat.listAllChanges()).thenReturn(mChanges);
-        mContext = RuntimeEnvironment.application;
+        when(mPlatformCompat.getOverrideValidator()).thenReturn(mOverrideValidator);
+        // By default, allow any change
+        when(mOverrideValidator.getOverrideAllowedState(anyLong(),anyString()))
+            .thenReturn(new OverrideAllowedState(ALLOWED, -1, -1));
+        mContext = spy(RuntimeEnvironment.application);
         mPreferenceManager = new PreferenceManager(mContext);
         mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
         mApplicationInfo.packageName = APP_NAME;
@@ -91,6 +108,7 @@
         doReturn(mPlatformCompat).when(mDashboard).getPlatformCompat();
         doReturn(mPreferenceScreen).when(mDashboard).getPreferenceScreen();
         doReturn(mPreferenceManager).when(mDashboard).getPreferenceManager();
+        doReturn(mPackageManager).when(mContext).getPackageManager();
     }
 
     @Test
@@ -107,8 +125,10 @@
     @Test
     public void createAppPreference_targetSdkEquals1_summaryReturnsAppNameAndTargetSdk() {
         mApplicationInfo.targetSdkVersion = 1;
+        Drawable icon = mock(Drawable.class);
+        when(mApplicationInfo.loadIcon(any(PackageManager.class))).thenReturn(icon);
 
-        Preference appPreference = mDashboard.createAppPreference(any(Drawable.class));
+        Preference appPreference = mDashboard.createAppPreference(mApplicationInfo);
 
         assertThat(appPreference.getSummary()).isEqualTo(APP_NAME + " SDK 1");
     }
@@ -128,6 +148,7 @@
         assertThat(enabledPreference.getSummary()).isEqualTo(mChanges[0].getName());
         assertThat(enabledPreference instanceof SwitchPreference).isTrue();
         assertThat(enabledSwitchPreference.isChecked()).isTrue();
+        assertThat(enabledSwitchPreference.isEnabled()).isTrue();
     }
 
     @Test
@@ -139,10 +160,32 @@
 
         Preference disabledPreference = mDashboard.createPreferenceForChange(mContext,
                 disabledChange, config);
-        
+
         assertThat(disabledPreference.getSummary()).isEqualTo(mChanges[1].getName());
         SwitchPreference disabledSwitchPreference = (SwitchPreference) disabledPreference;
         assertThat(disabledSwitchPreference.isChecked()).isFalse();
+        assertThat(disabledSwitchPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void createPreferenceForChange_cannotOverride_createDisabledEntry()
+                    throws RemoteException {
+        CompatibilityChangeInfo enabledChange = mChanges[0];
+        CompatibilityChangeConfig config = new CompatibilityChangeConfig(
+                new ChangeConfig(new HashSet<Long>(Arrays.asList(enabledChange.getId())),
+                        new HashSet<Long>()));
+        when(mOverrideValidator.getOverrideAllowedState(anyLong(),anyString()))
+            .thenReturn(new OverrideAllowedState(DISABLED_NOT_DEBUGGABLE, -1, -1));
+
+        Preference preference = mDashboard.createPreferenceForChange(mContext, enabledChange,
+                config);
+
+        SwitchPreference switchPreference = (SwitchPreference) preference;
+
+        assertThat(preference.getSummary()).isEqualTo(mChanges[0].getName());
+        assertThat(preference instanceof SwitchPreference).isTrue();
+        assertThat(switchPreference.isChecked()).isTrue();
+        assertThat(switchPreference.isEnabled()).isFalse();
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
index 702d689..e2410c1 100644
--- a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
@@ -46,6 +46,7 @@
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -120,6 +121,7 @@
     }
 
     @Test
+    @Ignore
     public void serviceStateChange_shouldUpdatePrefSummary() {
         final String testCarrierName = "test";
         final Preference mPreference = mock(Preference.class);
@@ -145,6 +147,7 @@
     }
 
     @Test
+    @Ignore
     public void airplaneModeTurnedOn_shouldDisablePreference() {
         Settings.Global.putInt(mContext.getContentResolver(),
                 Global.AIRPLANE_MODE_ON, 1);
@@ -155,6 +158,7 @@
     }
 
     @Test
+    @Ignore
     public void airplaneModeTurnedOffAndNoUserRestriction_shouldEnablePreference() {
         Settings.Global.putInt(mContext.getContentResolver(),
                 Global.AIRPLANE_MODE_ON, 0);
@@ -166,6 +170,7 @@
     }
 
     @Test
+    @Ignore
     public void airplaneModeTurnedOffAndHasUserRestriction_shouldDisablePreference() {
         Settings.Global.putInt(mContext.getContentResolver(),
                 Global.AIRPLANE_MODE_ON, 0);
diff --git a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
index 35e1d1d..ea96e29 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
@@ -44,6 +44,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
+import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
 import org.junit.Before;
@@ -171,12 +172,12 @@
     public void updateState_updateByNetworkMode() {
         Settings.Global.putInt(mContext.getContentResolver(),
                 Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
-                TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
 
         mController.updateState(mPreference);
 
         assertThat(mPreference.getValue()).isEqualTo(
-                String.valueOf(TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA));
+                String.valueOf(TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA));
         assertThat(mPreference.getSummary()).isEqualTo("3G");
     }
 
@@ -184,12 +185,12 @@
     public void updateState_updateByNetworkMode_useDefaultValue() {
         Settings.Global.putInt(mContext.getContentResolver(),
                 Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
-                TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
 
         mController.updateState(mPreference);
 
         assertThat(mPreference.getValue()).isEqualTo(
-                String.valueOf(TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA));
+                String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
     }
 
     /**
@@ -392,27 +393,27 @@
     @Test
     public void onPreferenceChange_updateSuccess() {
         doReturn(true).when(mTelephonyManager).setPreferredNetworkType(SUB_ID,
-                TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
 
         mController.onPreferenceChange(mPreference,
-                String.valueOf(TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA));
+                String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
 
         assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                 Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID, 0)).isEqualTo(
-                TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
     }
 
     @Test
     public void onPreferenceChange_updateFail() {
         doReturn(false).when(mTelephonyManager).setPreferredNetworkType(SUB_ID,
-                TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
 
         mController.onPreferenceChange(mPreference,
-                String.valueOf(TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA));
+                String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
 
         assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                 Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID, 0)).isNotEqualTo(
-                TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
     }
 
     @Test
@@ -421,24 +422,24 @@
         doReturn(mPreference).when(screen).findPreference(KEY);
         Settings.Global.putInt(mContext.getContentResolver(),
                 Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
-                TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
         mController.displayPreference(screen);
         mController.updateState(mPreference);
         mLifecycle.handleLifecycleEvent(ON_START);
 
         assertThat(Integer.parseInt(mPreference.getValue())).isEqualTo(
-                TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
         assertThat(mPreference.getSummary()).isEqualTo("3G");
 
 
         Settings.Global.putInt(mContext.getContentResolver(),
                 Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
-                TelephonyManager.NETWORK_MODE_GSM_ONLY);
+                TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY);
         final Uri uri = Settings.Global.getUriFor(Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID);
         mContext.getContentResolver().notifyChange(uri, null);
 
         assertThat(Integer.parseInt(mPreference.getValue())).isEqualTo(
-                TelephonyManager.NETWORK_MODE_GSM_ONLY);
+                TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY);
         assertThat(mPreference.getSummary()).isEqualTo("2G");
     }
 }
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java
index 8c22d69..29f0f25 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java
@@ -98,7 +98,6 @@
     public void isDialogNeeded_disableSingleSim_returnFalse() {
         doReturn(true).when(mTelephonyManager).isDataEnabled();
         doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
-        doReturn(mSubscriptionInfo).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
         doReturn(1).when(mTelephonyManager).getActiveModemCount();
 
         assertThat(mController.isDialogNeeded()).isFalse();
@@ -130,7 +129,6 @@
     public void onPreferenceChange_singleSim_On_shouldEnableData() {
         doReturn(true).when(mTelephonyManager).isDataEnabled();
         doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
-        doReturn(mSubscriptionInfo).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
         doReturn(1).when(mTelephonyManager).getActiveModemCount();
 
         mController.onPreferenceChange(mPreference, true);
@@ -142,7 +140,6 @@
     public void onPreferenceChange_multiSim_On_shouldEnableData() {
         doReturn(true).when(mTelephonyManager).isDataEnabled();
         doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID);
-        doReturn(mSubscriptionInfo).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
         doReturn(2).when(mTelephonyManager).getActiveModemCount();
 
         mController.onPreferenceChange(mPreference, true);
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java
index c66f75f..4cc8f36 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java
@@ -19,6 +19,7 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
@@ -76,7 +77,7 @@
         doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
         doReturn(mSubscriptionManager).when(mContext).getSystemService(SubscriptionManager.class);
         doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
-        doReturn(mSubscriptionInfo).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
+        doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt());
         doReturn(SUB_ID).when(mSubscriptionInfo).getSubscriptionId();
         doReturn(new ArrayList<>(Arrays.asList(mSubscriptionInfo)))
                 .when(mSubscriptionManager).getSelectableSubscriptionInfoList();
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java
index 7ff3ab3..9bf8370 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java
@@ -43,6 +43,7 @@
 import com.android.settingslib.core.AbstractPreferenceController;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -90,6 +91,7 @@
     }
 
     @Test
+    @Ignore
     public void onAttach_noCrash() {
         mFragment.onAttach(mContext);
     }
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java
index bf1ee8a..da3a7c4 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java
@@ -21,7 +21,6 @@
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.nullable;
-import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
@@ -41,6 +40,7 @@
 import android.telephony.TelephonyManager;
 
 import com.android.internal.telephony.PhoneConstants;
+import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -181,7 +181,7 @@
 
         Settings.Global.putInt(mContext.getContentResolver(),
                 android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
 
         assertThat(MobileNetworkUtils.isCdmaOptions(mContext, SUB_ID_1)).isTrue();
     }
@@ -198,14 +198,14 @@
 
     @Test
     public void getSearchableSubscriptionId_oneActive_returnValid() {
-        when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[]{SUB_ID_1});
-
+        when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(
+                Arrays.asList(mSubscriptionInfo1));
         assertThat(MobileNetworkUtils.getSearchableSubscriptionId(mContext)).isEqualTo(SUB_ID_1);
     }
 
     @Test
     public void getSearchableSubscriptionId_nonActive_returnInvalid() {
-        when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[0]);
+        when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(new ArrayList<>());
 
         assertThat(MobileNetworkUtils.getSearchableSubscriptionId(mContext))
                 .isEqualTo(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
@@ -255,7 +255,7 @@
 
         Settings.Global.putInt(mContext.getContentResolver(),
                 android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM);
         assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isTrue();
     }
 
@@ -266,7 +266,7 @@
 
         Settings.Global.putInt(mContext.getContentResolver(),
                 android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA);
         assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isTrue();
     }
 
@@ -277,7 +277,7 @@
 
         Settings.Global.putInt(mContext.getContentResolver(),
                 android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManager.NETWORK_MODE_LTE_TDSCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA);
         assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isTrue();
     }
 
@@ -288,7 +288,7 @@
 
         Settings.Global.putInt(mContext.getContentResolver(),
                 android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA);
         assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isTrue();
     }
 
@@ -299,7 +299,7 @@
 
         Settings.Global.putInt(mContext.getContentResolver(),
                 android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManager.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA);
         assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isTrue();
     }
 
@@ -310,7 +310,7 @@
 
         Settings.Global.putInt(mContext.getContentResolver(),
                 android.provider.Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID_1,
-                TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA);
         assertThat(MobileNetworkUtils.shouldSpeciallyUpdateGsmCdma(mContext, SUB_ID_1)).isTrue();
     }
 
diff --git a/tests/robotests/src/com/android/settings/network/telephony/NetworkScanHelperTest.java b/tests/robotests/src/com/android/settings/network/telephony/NetworkScanHelperTest.java
index 1f8c16d..f87a459 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/NetworkScanHelperTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/NetworkScanHelperTest.java
@@ -17,7 +17,7 @@
 package com.android.settings.network.telephony;
 
 import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertTrue;
+
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.doAnswer;
@@ -32,16 +32,12 @@
 import android.telephony.NetworkScanRequest;
 import android.telephony.TelephonyManager;
 import android.telephony.TelephonyScanManager;
+
 import com.android.internal.telephony.CellNetworkScanResult;
 import com.android.internal.telephony.OperatorInfo;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-import org.junit.After;
+
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -51,6 +47,13 @@
 import org.mockito.stubbing.Answer;
 import org.robolectric.RobolectricTestRunner;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
 @RunWith(RobolectricTestRunner.class)
 public class NetworkScanHelperTest {
 
@@ -197,6 +200,7 @@
     }
 
     @Test
+    @Ignore
     public void startNetworkScan_incrementalAndAbort_doStop() {
         doReturn(mNetworkScan).when(mTelephonyManager).requestNetworkScan(
                 any(NetworkScanRequest.class), any(Executor.class),
diff --git a/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java
index 9e13597..0d50e9e 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java
@@ -36,6 +36,7 @@
 import androidx.preference.ListPreference;
 
 import com.android.settings.R;
+import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -127,12 +128,12 @@
     public void updateState_updateByNetworkMode() {
         Settings.Global.putInt(mContext.getContentResolver(),
                 Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
-                TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA);
 
         mController.updateState(mPreference);
 
         assertThat(mPreference.getValue()).isEqualTo(
-                String.valueOf(TelephonyManager.NETWORK_MODE_TDSCDMA_GSM_WCDMA));
+                String.valueOf(TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA));
         assertThat(mPreference.getSummary()).isEqualTo(
                 mContext.getString(R.string.preferred_network_mode_tdscdma_gsm_wcdma_summary));
     }
@@ -140,26 +141,26 @@
     @Test
     public void onPreferenceChange_updateSuccess() {
         doReturn(true).when(mTelephonyManager).setPreferredNetworkType(SUB_ID,
-                TelephonyManager.NETWORK_MODE_LTE_TDSCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA);
 
         mController.onPreferenceChange(mPreference,
-                String.valueOf(TelephonyManager.NETWORK_MODE_LTE_TDSCDMA));
+                String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));
 
         assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                 Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID, 0)).isEqualTo(
-                TelephonyManager.NETWORK_MODE_LTE_TDSCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA);
     }
 
     @Test
     public void onPreferenceChange_updateFail() {
         doReturn(false).when(mTelephonyManager).setPreferredNetworkType(SUB_ID,
-                TelephonyManager.NETWORK_MODE_LTE_TDSCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA);
 
         mController.onPreferenceChange(mPreference,
-                String.valueOf(TelephonyManager.NETWORK_MODE_LTE_TDSCDMA));
+                String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));
 
         assertThat(Settings.Global.getInt(mContext.getContentResolver(),
                 Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID, 0)).isNotEqualTo(
-                TelephonyManager.NETWORK_MODE_LTE_TDSCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/network/telephony/TelephonyBasePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/TelephonyBasePreferenceControllerTest.java
index 886ea17..6ba2ffa 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/TelephonyBasePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/TelephonyBasePreferenceControllerTest.java
@@ -22,6 +22,7 @@
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
+import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 
 import org.junit.Before;
@@ -32,12 +33,16 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
+import java.util.Arrays;
+
 @RunWith(RobolectricTestRunner.class)
 public class TelephonyBasePreferenceControllerTest {
     private static final int VALID_SUB_ID = 1;
 
     @Mock
     private SubscriptionManager mSubscriptionManager;
+    @Mock
+    private SubscriptionInfo mSubscriptionInfo;
 
     private TestPreferenceController mPreferenceController;
     private Context mContext;
@@ -49,7 +54,7 @@
         mContext = spy(RuntimeEnvironment.application);
         when(mContext.getSystemService(SubscriptionManager.class))
                 .thenReturn(mSubscriptionManager);
-        when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[]{});
+        when(mSubscriptionInfo.getSubscriptionId()).thenReturn(VALID_SUB_ID);
         mPreferenceController = new TestPreferenceController(mContext, "prefKey");
     }
 
@@ -62,8 +67,8 @@
 
     @Test
     public void isAvailable_noIdSetHoweverHasDefaultOne_returnTrue() {
-        when(mSubscriptionManager.getActiveSubscriptionIdList())
-                .thenReturn(new int[]{VALID_SUB_ID});
+        when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(
+                Arrays.asList(mSubscriptionInfo));
 
         assertThat(mPreferenceController.isAvailable()).isTrue();
     }
diff --git a/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java
index 1c79266..ffd0eb8 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java
@@ -40,6 +40,7 @@
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -174,6 +175,7 @@
     }
 
     @Test
+    @Ignore
     public void displayPreference_available_setsSubscriptionIdOnIntent() {
         final Intent intent = new Intent();
         mPreference.setIntent(intent);
diff --git a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java
index fee6099..1a7fd86 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java
@@ -33,6 +33,8 @@
 import androidx.preference.ListPreference;
 import androidx.preference.PreferenceManager;
 
+import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -118,7 +120,7 @@
                 mTelephonyManager).getCdmaRoamingMode();
         Settings.Global.putInt(mContext.getContentResolver(),
                 Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
-                TelephonyManager.NETWORK_MODE_LTE_GSM_WCDMA);
+                TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
 
         mController.updateState(mPreference);
 
diff --git a/tests/robotests/src/com/android/settings/security/SimLockPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/SimLockPreferenceControllerTest.java
index ebafceb..89be17a 100644
--- a/tests/robotests/src/com/android/settings/security/SimLockPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/SimLockPreferenceControllerTest.java
@@ -21,7 +21,6 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -143,7 +142,7 @@
         subscriptionInfoList.add(info);
         when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
         when(mTelephonyManager.hasIccCard()).thenReturn(true);
-        when(mSubscriptionManager.getActiveSubscriptionInfoList(eq(true)))
+        when(mSubscriptionManager.getActiveSubscriptionInfoList())
                 .thenReturn(subscriptionInfoList);
     }
 
@@ -152,7 +151,7 @@
         SubscriptionInfo info = mock(SubscriptionInfo.class);
         subscriptionInfoList.add(info);
         when(mTelephonyManager.getSimState(anyInt())).thenReturn(SIM_STATE_READY);
-        when(mSubscriptionManager.getActiveSubscriptionInfoList(eq(true)))
+        when(mSubscriptionManager.getActiveSubscriptionInfoList())
                 .thenReturn(subscriptionInfoList);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/testutils/ResolveInfoBuilder.java b/tests/robotests/src/com/android/settings/testutils/ResolveInfoBuilder.java
new file mode 100644
index 0000000..5eaf2a4
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/testutils/ResolveInfoBuilder.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.testutils;
+
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.ProviderInfo;
+import android.content.pm.ResolveInfo;
+
+import com.google.common.base.Preconditions;
+
+/**
+ * Helper for building {@link ResolveInfo}s to be used in Robolectric tests.
+ *
+ * <p>The resulting {@link PackageInfo}s should typically be added to {@link
+ * org.robolectric.shadows.ShadowPackageManager#addResolveInfoForIntent(Intent, ResolveInfo)}.
+ */
+public final class ResolveInfoBuilder {
+
+    private final String mPackageName;
+    private ActivityInfo mActivityInfo;
+    private ProviderInfo mProviderInfo;
+
+    public ResolveInfoBuilder(String packageName) {
+        this.mPackageName = Preconditions.checkNotNull(packageName);
+    }
+
+    public ResolveInfoBuilder setActivity(String packageName, String className) {
+        mActivityInfo = new ActivityInfo();
+        mActivityInfo.packageName = packageName;
+        mActivityInfo.name = className;
+        return this;
+    }
+
+    public ResolveInfoBuilder setProvider(
+            String packageName, String className, String authority, boolean isSystemApp) {
+        mProviderInfo = new ProviderInfo();
+        mProviderInfo.authority = authority;
+        mProviderInfo.applicationInfo = new ApplicationInfo();
+        if (isSystemApp) {
+            mProviderInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        }
+        mProviderInfo.packageName = mPackageName;
+        mProviderInfo.applicationInfo.packageName  = mPackageName;
+        mProviderInfo.name = className;
+        return this;
+    }
+
+    public ResolveInfo build() {
+        ResolveInfo info = new ResolveInfo();
+        info.activityInfo = mActivityInfo;
+        info.resolvePackageName = mPackageName;
+        info.providerInfo = mProviderInfo;
+        return info;
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
index d1d7885..77ef219 100644
--- a/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
@@ -9,6 +9,7 @@
 import com.android.settings.testutils.XmlTestUtils;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -28,6 +29,7 @@
     }
 
     @Test
+    @Ignore
     public void testNonIndexableKeys_existInXmlLayout() {
         final List<String> niks =
             ConfigureWifiSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
diff --git a/tests/robotests/src/com/android/settings/wifi/tether/TetherServiceTest.java b/tests/robotests/src/com/android/settings/wifi/tether/TetherServiceTest.java
index f6fd660..1bdfed0 100644
--- a/tests/robotests/src/com/android/settings/wifi/tether/TetherServiceTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/tether/TetherServiceTest.java
@@ -30,6 +30,7 @@
 import android.net.wifi.WifiManager;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -61,6 +62,7 @@
     }
 
     @Test
+    @Ignore
     public void scheduleAlarm_shouldRegisterReceiver() {
         mService.setHotspotOffReceiver(new HotspotOffReceiver(mAppContext));
 
@@ -78,6 +80,7 @@
     }
 
     @Test
+    @Ignore
     public void cancelAlarmIfNecessary_hasActiveTethers_shouldNotUnregisterReceiver() {
         mService.scheduleAlarm();
         final ArrayList<Integer> tethers = new ArrayList<>();
@@ -89,6 +92,7 @@
     }
 
     @Test
+    @Ignore
     public void cancelAlarmIfNecessary_noActiveTethers_shouldUnregisterReceiver() {
         final ArrayList<Integer> tethers = new ArrayList<>();
         ReflectionHelpers.setField(mService, "mCurrentTethers", tethers);
diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java
index 902249e..bf2261a 100644
--- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherPasswordPreferenceControllerTest.java
@@ -66,7 +66,7 @@
         MockitoAnnotations.initMocks(this);
         mPreference = new ValidatedEditTextPreference(RuntimeEnvironment.application);
         mConfig = new SoftApConfiguration.Builder().setSsid("test_1234")
-                .setWpa2Passphrase("test_password").build();
+                .setPassphrase("test_password", SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
 
         when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager);
         when(mWifiManager.getSoftApConfiguration()).thenReturn(mConfig);
@@ -83,8 +83,8 @@
     public void displayPreference_shouldStylePreference() {
         mController.displayPreference(mScreen);
 
-        assertThat(mPreference.getText()).isEqualTo(mConfig.getWpa2Passphrase());
-        assertThat(mPreference.getSummary()).isEqualTo(mConfig.getWpa2Passphrase());
+        assertThat(mPreference.getText()).isEqualTo(mConfig.getPassphrase());
+        assertThat(mPreference.getSummary()).isEqualTo(mConfig.getPassphrase());
     }
 
     @Test
@@ -111,14 +111,14 @@
 
         // Create a new config using different password
         final SoftApConfiguration config = new SoftApConfiguration.Builder()
-                .setWpa2Passphrase(VALID_PASS2).build();
+                .setPassphrase(VALID_PASS2, SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
         when(mWifiManager.getSoftApConfiguration()).thenReturn(config);
 
         // Call updateDisplay and verify it's changed.
         mController.updateDisplay();
         assertThat(mController.getPasswordValidated(SoftApConfiguration.SECURITY_TYPE_WPA2_PSK))
-                .isEqualTo(config.getWpa2Passphrase());
-        assertThat(mPreference.getSummary()).isEqualTo(config.getWpa2Passphrase());
+                .isEqualTo(config.getPassphrase());
+        assertThat(mPreference.getSummary()).isEqualTo(config.getPassphrase());
     }
 
     @Test
@@ -131,7 +131,7 @@
 
         // Create a new config using different password
         final SoftApConfiguration config = new SoftApConfiguration.Builder()
-                .setWpa2Passphrase(VALID_PASS2).build();
+                .setPassphrase(VALID_PASS2, SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
         when(mWifiManager.getSoftApConfiguration()).thenReturn(config);
 
         // Call updateDisplay and verify it's changed.
diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceControllerTest.java
index c0c1dde..fc38088 100644
--- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSSIDPreferenceControllerTest.java
@@ -124,7 +124,8 @@
     public void displayPreference_wifiApDisabled_shouldHideQrCodeIcon() {
         when(mWifiManager.isWifiApEnabled()).thenReturn(false);
         final SoftApConfiguration config = new SoftApConfiguration.Builder()
-                .setSsid("test_1234").setWpa2Passphrase("test_password").build();
+                .setSsid("test_1234").setPassphrase("test_password",
+                SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
         when(mWifiManager.getSoftApConfiguration()).thenReturn(config);
 
         mController.displayPreference(mScreen);
@@ -135,7 +136,8 @@
     public void displayPreference_wifiApEnabled_shouldShowQrCodeIcon() {
         when(mWifiManager.isWifiApEnabled()).thenReturn(true);
         final SoftApConfiguration config = new SoftApConfiguration.Builder()
-                .setSsid("test_1234").setWpa2Passphrase("test_password").build();
+                .setSsid("test_1234").setPassphrase("test_password",
+                SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
         when(mWifiManager.getSoftApConfiguration()).thenReturn(config);
 
         mController.displayPreference(mScreen);
diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSecurityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSecurityPreferenceControllerTest.java
index 5ad94cb..0b066cd 100644
--- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSecurityPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSecurityPreferenceControllerTest.java
@@ -15,6 +15,7 @@
 import androidx.preference.PreferenceScreen;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -45,7 +46,8 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         mConfig = new SoftApConfiguration.Builder().setSsid("test_1234")
-                .setWpa2Passphrase("test_password").build();
+                .setPassphrase("test_password",
+                SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
         mContext = spy(RuntimeEnvironment.application);
 
         when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager);
@@ -74,6 +76,7 @@
     }
 
     @Test
+    @Ignore
     public void updateDisplay_preferenceUpdated() {
         // test defaulting to WPA2-Personal on new config
         when(mWifiManager.getSoftApConfiguration()).thenReturn(null);
@@ -84,7 +87,7 @@
 
         // test open tether network
         SoftApConfiguration config = new SoftApConfiguration.Builder(mConfig)
-                .setWpa2Passphrase(null).build();
+                .setPassphrase(null, SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
         when(mWifiManager.getSoftApConfiguration()).thenReturn(config);
         mController.updateDisplay();
         assertThat(mController.getSecurityType()).isEqualTo(
@@ -93,7 +96,8 @@
 
         // test WPA2-Personal tether network
         SoftApConfiguration config2 = new SoftApConfiguration.Builder(mConfig)
-                .setWpa2Passphrase("test_password").build();
+                .setPassphrase("test_password",
+                SoftApConfiguration.SECURITY_TYPE_WPA2_PSK).build();
         when(mWifiManager.getSoftApConfiguration()).thenReturn(config2);
         mController.updateDisplay();
         assertThat(mController.getSecurityType()).isEqualTo(