Merge "Settings: Use public API for mac randomization support"
diff --git a/res/drawable-nodpi/accessibility_timeout b/res/drawable-nodpi/accessibility_timeout
deleted file mode 100644
index e69de29..0000000
--- a/res/drawable-nodpi/accessibility_timeout
+++ /dev/null
diff --git a/res/drawable-nodpi/accessibility_timeout.png b/res/drawable-nodpi/accessibility_timeout.png
new file mode 100644
index 0000000..887f117
--- /dev/null
+++ b/res/drawable-nodpi/accessibility_timeout.png
Binary files differ
diff --git a/res/layout/mobile_network_settings_container.xml b/res/layout/mobile_network_settings_container.xml
deleted file mode 100644
index c88b512..0000000
--- a/res/layout/mobile_network_settings_container.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2018 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <Toolbar
-        android:id="@+id/mobile_action_bar"
-        style="?android:attr/actionBarStyle"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:navigationContentDescription="@*android:string/action_bar_up_description"
-        android:theme="?android:attr/actionBarTheme"/>
-
-    <FrameLayout
-        android:id="@+id/main_content"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"/>
-
-    <com.google.android.material.bottomnavigation.BottomNavigationView
-        android:id="@+id/bottom_nav"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
-        android:layout_marginEnd="0dp"
-        android:layout_marginStart="0dp"
-        android:background="?android:attr/windowBackground"
-        app:itemIconTint="@color/bottom_navigation_colors"
-        app:itemTextColor="@color/bottom_navigation_colors"
-        app:menu="@menu/home_bottom_navigation"/>
-</LinearLayout>
diff --git a/res/layout/settings_base_layout.xml b/res/layout/settings_base_layout.xml
index f94d25d..0a4437e 100644
--- a/res/layout/settings_base_layout.xml
+++ b/res/layout/settings_base_layout.xml
@@ -27,7 +27,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:theme="?android:attr/actionBarTheme"
-        android:navigationContentDescription="@*android:string/action_bar_up_description" />
+        android:navigationContentDescription="@*android:string/back_button_label" />
     <FrameLayout
         android:id="@+id/content_frame"
         android:layout_width="match_parent"
diff --git a/res/raw/accessibility_timeout.mp4 b/res/raw/accessibility_timeout.mp4
index e69de29..2214e2b 100644
--- a/res/raw/accessibility_timeout.mp4
+++ b/res/raw/accessibility_timeout.mp4
Binary files differ
diff --git a/res/xml/mobile_network_settings.xml b/res/xml/mobile_network_settings.xml
deleted file mode 100644
index ea31b1c..0000000
--- a/res/xml/mobile_network_settings.xml
+++ /dev/null
@@ -1,169 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:key="mobile_network_pref_screen"
-    settings:initialExpandedChildrenCount="4">
-
-    <Preference
-        android:key="cdma_lte_data_service_key"
-        android:title="@string/cdma_lte_data_service"
-        settings:controller="com.android.settings.network.telephony.DataServiceSetupPreferenceController">
-    </Preference>
-
-    <SwitchPreference
-        android:key="mobile_data_enable"
-        android:title="@string/mobile_data_settings_title"
-        android:summary="@string/mobile_data_settings_summary"
-        settings:controller="com.android.settings.network.telephony.MobileDataPreferenceController"/>
-
-    <com.android.settingslib.RestrictedSwitchPreference
-        android:key="button_roaming_key"
-        android:title="@string/roaming"
-        android:persistent="false"
-        android:summaryOn="@string/roaming_enable"
-        android:summaryOff="@string/roaming_disable"
-        settings:userRestriction="no_data_roaming"
-        settings:controller="com.android.settings.network.telephony.RoamingPreferenceController"/>
-
-    <Preference
-        android:key="data_usage_summary"
-        android:title="@string/mobile_data_usage_title"
-        settings:controller="com.android.settings.network.telephony.DataUsagePreferenceController"/>
-
-    <SwitchPreference
-        android:key="enhanced_4g_lte"
-        android:title="@string/enhanced_4g_lte_mode_title"
-        android:persistent="false"
-        android:summary="@string/enhanced_4g_lte_mode_summary"
-        settings:keywords="@string/keywords_enhance_4g_lte"
-        settings:controller="com.android.settings.network.telephony.Enhanced4gLtePreferenceController"/>
-
-    <SwitchPreference
-        android:key="4g_calling"
-        android:title="@string/enhanced_4g_lte_mode_title_4g_calling"
-        android:persistent="false"
-        android:summary="@string/enhanced_4g_lte_mode_summary_4g_calling"
-        settings:keywords="@string/keywords_enhance_4g_lte"
-        settings:controller="com.android.settings.network.telephony.Enhanced4gCallingPreferenceController"/>
-
-    <SwitchPreference
-        android:key="advance_call"
-        android:title="@string/enhanced_4g_lte_mode_title_advanced_calling"
-        android:persistent="false"
-        android:summary="@string/enhanced_4g_lte_mode_summary"
-        settings:keywords="@string/keywords_enhance_4g_lte"
-        settings:controller="com.android.settings.network.telephony.Enhanced4gAdvancedCallingPreferenceController"/>
-
-    <ListPreference
-        android:key="preferred_network_mode_key"
-        android:title="@string/preferred_network_mode_title"
-        android:summary="@string/preferred_network_mode_summary"
-        android:entries="@array/preferred_network_mode_choices"
-        android:entryValues="@array/preferred_network_mode_values"
-        android:dialogTitle="@string/preferred_network_mode_dialogtitle"
-        settings:controller="com.android.settings.network.telephony.PreferredNetworkModePreferenceController"/>
-
-    <ListPreference
-        android:key="enabled_networks_key"
-        android:title="@string/preferred_network_mode_title"
-        android:summary="@string/preferred_network_mode_summary"
-        android:entries="@array/enabled_networks_choices"
-        android:entryValues="@array/enabled_networks_values"
-        android:dialogTitle="@string/preferred_network_mode_dialogtitle"
-        settings:controller="com.android.settings.network.telephony.EnabledNetworkModePreferenceController"/>
-
-    <Preference
-        android:key="carrier_settings_euicc_key"
-        android:title="@string/carrier_settings_euicc"
-        settings:controller="com.android.settings.network.telephony.EuiccPreferenceController" />
-
-    <PreferenceCategory
-        android:key="calling_category"
-        android:title="@string/call_category"
-        settings:searchable="false">
-
-        <PreferenceScreen
-            android:key="wifi_calling"
-            android:title="@string/wifi_calling_settings_title"
-            android:summary="@string/wifi_calling_summary"
-            settings:controller="com.android.settings.network.telephony.WifiCallingPreferenceController" >
-            <intent android:action="android.intent.action.MAIN"
-                    android:targetPackage="com.android.settings"
-                    android:targetClass="com.android.settings.Settings$WifiCallingSettingsActivity">
-                        <extra android:name="show_drawer_menu" android:value="true" />
-            </intent>
-        </PreferenceScreen>
-
-        <SwitchPreference
-            android:key="video_calling_key"
-            android:title="@string/video_calling_settings_title"
-            android:persistent="true"
-            settings:controller="com.android.settings.network.telephony.VideoCallingPreferenceController" />
-
-    </PreferenceCategory>
-
-    <com.android.settings.network.telephony.cdma.CdmaListPreference
-        android:key="cdma_system_select_key"
-        android:title="@string/cdma_system_select_title"
-        android:summary="@string/cdma_system_select_summary"
-        android:entries="@array/cdma_system_select_choices"
-        android:entryValues="@array/cdma_system_select_values"
-        android:dialogTitle="@string/cdma_system_select_dialogtitle"
-        settings:controller="com.android.settings.network.telephony.cdma.CdmaSystemSelectPreferenceController"/>
-
-    <com.android.settings.network.telephony.cdma.CdmaListPreference
-        android:key="cdma_subscription_key"
-        android:title="@string/cdma_subscription_title"
-        android:summary="@string/cdma_subscription_summary"
-        android:entries="@array/cdma_subscription_choices"
-        android:entryValues="@array/cdma_subscription_values"
-        android:dialogTitle="@string/cdma_subscription_dialogtitle"
-        settings:controller="com.android.settings.network.telephony.cdma.CdmaSubscriptionPreferenceController"/>
-
-    <PreferenceCategory
-        android:key="network_operators_category_key"
-        android:title="@string/network_operator_category"
-        settings:controller="com.android.settings.widget.PreferenceCategoryController">
-
-        <SwitchPreference
-            android:key="auto_select_key"
-            android:title="@string/select_automatically"
-            settings:controller="com.android.settings.network.telephony.gsm.AutoSelectPreferenceController"/>
-
-        <Preference
-            android:key="choose_network_key"
-            android:title="@string/choose_network_title"
-            android:fragment="com.android.phone.NetworkSelectSetting"
-            settings:controller="com.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenceController"/>
-    </PreferenceCategory>
-
-    <!--We want separate APN setting from reset of settings because we want user to change it with caution-->
-    <com.android.settingslib.RestrictedPreference
-        android:key="telephony_apn_key"
-        android:persistent="false"
-        android:title="@string/mobile_network_apn_title"
-        settings:allowDividerAbove="true"
-        settings:controller="com.android.settings.network.telephony.ApnPreferenceController"/>
-
-    <Preference
-        android:key="carrier_settings_key"
-        android:title="@string/carrier_settings_title"
-        settings:controller="com.android.settings.network.telephony.CarrierPreferenceController">
-    </Preference>
-
-</PreferenceScreen>
diff --git a/res/xml/network_and_internet.xml b/res/xml/network_and_internet.xml
deleted file mode 100644
index 609578f..0000000
--- a/res/xml/network_and_internet.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:key="network_and_internet_screen"
-    android:title="@string/network_dashboard_title"
-    settings:initialExpandedChildrenCount="5">
-
-    <com.android.settings.widget.MasterSwitchPreference
-        android:fragment="com.android.settings.wifi.WifiSettings"
-        android:key="toggle_wifi"
-        android:title="@string/wifi_settings"
-        android:summary="@string/summary_placeholder"
-        android:icon="@drawable/ic_settings_wireless"
-        android:order="-30">
-        <intent
-            android:action="android.settings.WIFI_SETTINGS"
-            android:targetClass="Settings$WifiSettingsActivity" />
-    </com.android.settings.widget.MasterSwitchPreference>
-
-    <com.android.settingslib.RestrictedPreference
-        android:key="mobile_network_settings"
-        android:title="@string/network_settings_title"
-        android:summary="@string/summary_placeholder"
-        android:icon="@drawable/ic_network_cell"
-        android:order="-15"
-        settings:keywords="@string/keywords_more_mobile_networks"
-        settings:userRestriction="no_config_mobile_networks"
-        settings:useAdminDisabledSummary="true">
-    </com.android.settingslib.RestrictedPreference>
-
-    <com.android.settingslib.RestrictedPreference
-        android:fragment="com.android.settings.TetherSettings"
-        android:key="tether_settings"
-        android:title="@string/tether_settings_title_all"
-        android:icon="@drawable/ic_wifi_tethering"
-        android:order="-5"
-        android:summary="@string/summary_placeholder"
-        settings:keywords="@string/keywords_hotspot_tethering"
-        settings:userRestriction="no_config_tethering"
-        settings:useAdminDisabledSummary="true" />
-
-    <com.android.settingslib.RestrictedPreference
-        android:key="manage_mobile_plan"
-        android:title="@string/manage_mobile_plan_title"
-        android:persistent="false"
-        android:order="0"
-        settings:userRestriction="no_config_mobile_networks"
-        settings:useAdminDisabledSummary="true" />
-
-    <com.android.settingslib.RestrictedSwitchPreference
-        android:key="airplane_mode_old"
-        android:title="@string/airplane_mode"
-        android:icon="@drawable/ic_airplanemode_active"
-        android:disableDependentsState="true"
-        android:order="5"
-        settings:controller="com.android.settings.network.AirplaneModePreferenceController"
-        settings:userRestriction="no_airplane_mode"/>
-
-    <Preference
-        android:fragment="com.android.settings.ProxySelector"
-        android:key="proxy_settings"
-        android:title="@string/proxy_settings_title" />
-
-    <com.android.settingslib.RestrictedPreference
-        android:fragment="com.android.settings.vpn2.VpnSettings"
-        android:key="vpn_settings"
-        android:title="@string/vpn_settings_title"
-        android:icon="@drawable/ic_vpn_key"
-        android:order="10"
-        android:summary="@string/summary_placeholder"
-        settings:userRestriction="no_config_vpn"
-        settings:useAdminDisabledSummary="true" />
-
-    <com.android.settings.network.PrivateDnsModeDialogPreference
-        android:key="private_dns_settings"
-        android:title="@string/select_private_dns_configuration_title"
-        android:order="15"
-        android:dialogTitle="@string/select_private_dns_configuration_dialog_title"
-        android:dialogLayout="@layout/private_dns_mode_dialog"
-        android:positiveButtonText="@string/save"
-        android:negativeButtonText="@android:string/cancel" />
-
-</PreferenceScreen>
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index f5f5ccd..436acef 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -106,7 +106,6 @@
 import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.core.FeatureFlags;
 import com.android.settings.dashboard.profileselector.ProfileFragmentBridge;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.password.ChooseLockSettingsHelper;
 import com.android.settingslib.widget.ActionBarShadowController;
 
@@ -529,21 +528,6 @@
    }
 
     /**
-     * Return whether or not the user should have a SIM Cards option in Settings.
-     * TODO: Change back to returning true if count is greater than one after testing.
-     * TODO: See bug 16533525.
-     */
-    public static boolean showSimCardTile(Context context) {
-        if (FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) {
-            return false;
-        }
-        final TelephonyManager tm =
-                (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
-
-        return tm.getSimCount() > 1;
-    }
-
-    /**
      * Queries for the UserInfo of a user. Returns null if the user doesn't exist (was removed).
      * @param userManager Instance of UserManager
      * @param checkUser The user to check the existence of.
diff --git a/src/com/android/settings/core/FeatureFlags.java b/src/com/android/settings/core/FeatureFlags.java
index 8203b35..4b65df1 100644
--- a/src/com/android/settings/core/FeatureFlags.java
+++ b/src/com/android/settings/core/FeatureFlags.java
@@ -23,8 +23,6 @@
     public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher";
     public static final String DYNAMIC_SYSTEM = "settings_dynamic_system";
     public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid";
-    public static final String MOBILE_NETWORK_V2 = "settings_mobile_network_v2";
-    public static final String NETWORK_INTERNET_V2 = "settings_network_and_internet_v2";
     public static final String WIFI_DETAILS_DATAUSAGE_HEADER =
             "settings_wifi_details_datausage_header";
     public static final String PERSONAL_WORK_PROFILE = "settings_work_profile";
diff --git a/src/com/android/settings/datausage/CellDataPreference.java b/src/com/android/settings/datausage/CellDataPreference.java
index af7e16e..5bfe967 100644
--- a/src/com/android/settings/datausage/CellDataPreference.java
+++ b/src/com/android/settings/datausage/CellDataPreference.java
@@ -39,7 +39,6 @@
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.settings.R;
-import com.android.settings.Utils;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.CustomDialogPreferenceCompat;
 
@@ -141,36 +140,13 @@
                 mSubId);
         final SubscriptionInfo nextSir = mSubscriptionManager.getDefaultDataSubscriptionInfo();
         if (mChecked) {
-            // If the device is single SIM or is enabling data on the active data SIM then forgo
-            // the pop-up.
-            if (!Utils.showSimCardTile(getContext()) ||
-                    (nextSir != null && currentSir != null &&
-                            currentSir.getSubscriptionId() == nextSir.getSubscriptionId())) {
-                setMobileDataEnabled(false);
-                if (nextSir != null && currentSir != null &&
-                        currentSir.getSubscriptionId() == nextSir.getSubscriptionId()) {
-                    disableDataForOtherSubscriptions(mSubId);
-                }
-                return;
+            setMobileDataEnabled(false);
+            if (nextSir != null && currentSir != null
+                    && currentSir.getSubscriptionId() == nextSir.getSubscriptionId()) {
+                disableDataForOtherSubscriptions(mSubId);
             }
-            // disabling data; show confirmation dialog which eventually
-            // calls setMobileDataEnabled() once user confirms.
-            mMultiSimDialog = false;
-            super.performClick(view);
         } else {
-            // If we are showing the Sim Card tile then we are a Multi-Sim device.
-            if (Utils.showSimCardTile(getContext())) {
-                mMultiSimDialog = true;
-                if (nextSir != null && currentSir != null &&
-                        currentSir.getSubscriptionId() == nextSir.getSubscriptionId()) {
-                    setMobileDataEnabled(true);
-                    disableDataForOtherSubscriptions(mSubId);
-                    return;
-                }
-                super.performClick(view);
-            } else {
-                setMobileDataEnabled(true);
-            }
+            setMobileDataEnabled(true);
         }
     }
 
diff --git a/src/com/android/settings/development/featureflags/FeatureFlagPersistent.java b/src/com/android/settings/development/featureflags/FeatureFlagPersistent.java
index 59318c4..d89df79 100644
--- a/src/com/android/settings/development/featureflags/FeatureFlagPersistent.java
+++ b/src/com/android/settings/development/featureflags/FeatureFlagPersistent.java
@@ -35,7 +35,6 @@
     static {
         PERSISTENT_FLAGS = new HashSet<>();
         PERSISTENT_FLAGS.add(FeatureFlags.HEARING_AID_SETTINGS);
-        PERSISTENT_FLAGS.add(FeatureFlags.NETWORK_INTERNET_V2);
         PERSISTENT_FLAGS.add(FeatureFlags.DYNAMIC_SYSTEM);
     }
 
diff --git a/src/com/android/settings/network/MobileNetworkPreferenceController.java b/src/com/android/settings/network/MobileNetworkPreferenceController.java
index 646f10c..5612d2e 100644
--- a/src/com/android/settings/network/MobileNetworkPreferenceController.java
+++ b/src/com/android/settings/network/MobileNetworkPreferenceController.java
@@ -19,7 +19,6 @@
 import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
 
 import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
@@ -28,13 +27,11 @@
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
 import android.telephony.TelephonyManager;
-import android.util.FeatureFlagUtils;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.network.telephony.MobileNetworkActivity;
 import com.android.settings.network.telephony.MobileNetworkUtils;
@@ -51,10 +48,6 @@
 
     @VisibleForTesting
     static final String KEY_MOBILE_NETWORK_SETTINGS = "mobile_network_settings";
-    @VisibleForTesting
-    static final String MOBILE_NETWORK_PACKAGE = "com.android.phone";
-    @VisibleForTesting
-    static final String MOBILE_NETWORK_CLASS = "com.android.phone.MobileNetworkSettings";
 
     private final boolean mIsSecondaryUser;
     private final TelephonyManager mTelephonyManager;
@@ -147,15 +140,8 @@
     @Override
     public boolean handlePreferenceTreeClick(Preference preference) {
         if (KEY_MOBILE_NETWORK_SETTINGS.equals(preference.getKey())) {
-            if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.MOBILE_NETWORK_V2)) {
-                final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
-                mContext.startActivity(intent);
-            } else {
-                final Intent intent = new Intent(Intent.ACTION_MAIN);
-                intent.setComponent(
-                        new ComponentName(MOBILE_NETWORK_PACKAGE, MOBILE_NETWORK_CLASS));
-                mContext.startActivity(intent);
-            }
+            final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
+            mContext.startActivity(intent);
             return true;
         }
         return false;
diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java
index 92c55cb..fed2da3 100644
--- a/src/com/android/settings/network/NetworkDashboardFragment.java
+++ b/src/com/android/settings/network/NetworkDashboardFragment.java
@@ -20,16 +20,13 @@
 import android.app.Dialog;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
-import android.provider.SearchIndexableResource;
 import android.util.Log;
 
 import androidx.appcompat.app.AlertDialog;
 import androidx.fragment.app.Fragment;
 
 import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.network.MobilePlanPreferenceController.MobilePlanPreferenceHost;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.wifi.WifiMasterSwitchPreferenceController;
@@ -39,7 +36,6 @@
 import com.android.settingslib.search.SearchIndexable;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 @SearchIndexable
@@ -60,20 +56,14 @@
 
     @Override
     protected int getPreferenceScreenResId() {
-        if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
-            return R.xml.network_and_internet_v2;
-        } else {
-            return R.xml.network_and_internet;
-        }
+        return R.xml.network_and_internet_v2;
     }
 
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
 
-        if (FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) {
-            use(MultiNetworkHeaderController.class).init(getSettingsLifecycle());
-        }
+        use(MultiNetworkHeaderController.class).init(getSettingsLifecycle());
         use(AirplaneModePreferenceController.class).setFragment(this);
     }
 
@@ -95,10 +85,6 @@
                 new MobilePlanPreferenceController(context, mobilePlanHost);
         final WifiMasterSwitchPreferenceController wifiPreferenceController =
                 new WifiMasterSwitchPreferenceController(context, metricsFeatureProvider);
-        MobileNetworkPreferenceController mobileNetworkPreferenceController = null;
-        if (!FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) {
-            mobileNetworkPreferenceController = new MobileNetworkPreferenceController(context);
-        }
 
         final VpnPreferenceController vpnPreferenceController =
                 new VpnPreferenceController(context);
@@ -108,21 +94,13 @@
         if (lifecycle != null) {
             lifecycle.addObserver(mobilePlanPreferenceController);
             lifecycle.addObserver(wifiPreferenceController);
-            if (mobileNetworkPreferenceController != null) {
-                lifecycle.addObserver(mobileNetworkPreferenceController);
-            }
             lifecycle.addObserver(vpnPreferenceController);
             lifecycle.addObserver(privateDnsPreferenceController);
         }
 
         final List<AbstractPreferenceController> controllers = new ArrayList<>();
 
-        if (FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) {
-            controllers.add(new MobileNetworkSummaryController(context, lifecycle));
-        }
-        if (mobileNetworkPreferenceController != null) {
-            controllers.add(mobileNetworkPreferenceController);
-        }
+        controllers.add(new MobileNetworkSummaryController(context, lifecycle));
         controllers.add(new TetherPreferenceController(context, lifecycle));
         controllers.add(vpnPreferenceController);
         controllers.add(new ProxyPreferenceController(context));
@@ -163,19 +141,7 @@
     }
 
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider() {
-                @Override
-                public List<SearchIndexableResource> getXmlResourcesToIndex(
-                        Context context, boolean enabled) {
-                    final SearchIndexableResource sir = new SearchIndexableResource(context);
-                    if (FeatureFlagPersistent.isEnabled(context,
-                            FeatureFlags.NETWORK_INTERNET_V2)) {
-                        sir.xmlResId = R.xml.network_and_internet_v2;
-                    } else {
-                        sir.xmlResId = R.xml.network_and_internet;
-                    }
-                    return Arrays.asList(sir);
-                }
+            new BaseSearchIndexProvider(R.xml.network_and_internet_v2) {
 
                 @Override
                 public List<AbstractPreferenceController> createPreferenceControllers(Context
diff --git a/src/com/android/settings/network/telephony/MobileNetworkActivity.java b/src/com/android/settings/network/telephony/MobileNetworkActivity.java
index b4653a7..20221c1 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkActivity.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkActivity.java
@@ -22,8 +22,6 @@
 import android.os.UserManager;
 import android.provider.Settings;
 import android.telephony.SubscriptionInfo;
-import android.view.Menu;
-import android.view.View;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.VisibleForTesting;
@@ -33,13 +31,9 @@
 
 import com.android.internal.util.CollectionUtils;
 import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.SettingsBaseActivity;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.network.ProxySubscriptionManager;
 
-import com.google.android.material.bottomnavigation.BottomNavigationView;
-
 import java.util.List;
 
 /**
@@ -80,11 +74,7 @@
             return;
         }
 
-        if (FeatureFlagPersistent.isEnabled(this, FeatureFlags.NETWORK_INTERNET_V2)) {
-            setContentView(R.layout.mobile_network_settings_container_v2);
-        } else {
-            setContentView(R.layout.mobile_network_settings_container);
-        }
+        setContentView(R.layout.mobile_network_settings_container_v2);
         setActionBar(findViewById(R.id.mobile_action_bar));
 
         mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(this);
@@ -141,10 +131,6 @@
         if (subscription != null) {
             setTitle(subscription.getDisplayName());
         }
-
-        if (!FeatureFlagPersistent.isEnabled(this, FeatureFlags.NETWORK_INTERNET_V2)) {
-            updateBottomNavigationView();
-        }
     }
 
     @VisibleForTesting
@@ -181,38 +167,6 @@
         return subInfos.get(0);
     }
 
-    private void updateBottomNavigationView() {
-        final BottomNavigationView navigation = findViewById(R.id.bottom_nav);
-
-        final List<SubscriptionInfo> subInfos = mProxySubscriptionMgr.getActiveSubscriptionsInfo();
-        if (CollectionUtils.size(subInfos) <= 1) {
-            navigation.setVisibility(View.GONE);
-        } else {
-            final Menu menu = navigation.getMenu();
-            menu.clear();
-            for (int i = 0, size = subInfos.size(); i < size; i++) {
-                final SubscriptionInfo subscriptionInfo = subInfos.get(i);
-                menu.add(0, subscriptionInfo.getSubscriptionId(), i,
-                        subscriptionInfo.getDisplayName())
-                        .setIcon(R.drawable.ic_settings_sim);
-            }
-            navigation.setOnNavigationItemSelectedListener(item -> {
-                final int subId = item.getItemId();
-                if (!isSubscriptionChanged(subId)) {
-                    return true;
-                }
-                final SubscriptionInfo subscriptionInfo = mProxySubscriptionMgr
-                        .getActiveSubscriptionInfo(subId);
-                if (subscriptionInfo == null) {
-                    return true;
-                }
-                updateSubscriptions(subscriptionInfo);
-                return true;
-            });
-            navigation.setVisibility(View.VISIBLE);
-        }
-    }
-
     @VisibleForTesting
     void switchFragment(SubscriptionInfo subInfo) {
         final FragmentManager fragmentManager = getSupportFragmentManager();
diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
index a5bf313..1400e3a 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
@@ -22,7 +22,6 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.UserManager;
-import android.provider.SearchIndexableResource;
 import android.provider.Settings;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
@@ -37,11 +36,9 @@
 
 import com.android.internal.telephony.TelephonyIntents;
 import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.dashboard.RestrictedDashboardFragment;
 import com.android.settings.datausage.BillingCyclePreferenceController;
 import com.android.settings.datausage.DataUsageSummaryPreferenceController;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.network.telephony.cdma.CdmaSubscriptionPreferenceController;
 import com.android.settings.network.telephony.cdma.CdmaSystemSelectPreferenceController;
 import com.android.settings.network.telephony.gsm.AutoSelectPreferenceController;
@@ -51,7 +48,6 @@
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.search.SearchIndexable;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
@@ -117,8 +113,7 @@
         mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID,
                 MobileNetworkUtils.getSearchableSubscriptionId(context));
 
-        if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2) &&
-                mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+        if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
             return Arrays.asList(
                     new DataUsageSummaryPreferenceController(getActivity(), getSettingsLifecycle(),
                             this, mSubId));
@@ -130,19 +125,17 @@
     public void onAttach(Context context) {
         super.onAttach(context);
 
-        if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
-            use(CallsDefaultSubscriptionController.class).init(getLifecycle());
-            use(SmsDefaultSubscriptionController.class).init(getLifecycle());
-            use(MobileNetworkSwitchController.class).init(getLifecycle(), mSubId);
-            use(CarrierSettingsVersionPreferenceController.class).init(mSubId);
-            use(BillingCyclePreferenceController.class).init(mSubId);
-            use(MmsMessagePreferenceController.class).init(mSubId);
-            use(DataDuringCallsPreferenceController.class).init(getLifecycle(), mSubId);
-            use(DisabledSubscriptionController.class).init(getLifecycle(), mSubId);
-            use(DeleteSimProfilePreferenceController.class).init(mSubId, this,
-                    REQUEST_CODE_DELETE_SUBSCRIPTION);
-            use(DisableSimFooterPreferenceController.class).init(mSubId);
-        }
+        use(CallsDefaultSubscriptionController.class).init(getLifecycle());
+        use(SmsDefaultSubscriptionController.class).init(getLifecycle());
+        use(MobileNetworkSwitchController.class).init(getLifecycle(), mSubId);
+        use(CarrierSettingsVersionPreferenceController.class).init(mSubId);
+        use(BillingCyclePreferenceController.class).init(mSubId);
+        use(MmsMessagePreferenceController.class).init(mSubId);
+        use(DataDuringCallsPreferenceController.class).init(getLifecycle(), mSubId);
+        use(DisabledSubscriptionController.class).init(getLifecycle(), mSubId);
+        use(DeleteSimProfilePreferenceController.class).init(mSubId, this,
+                REQUEST_CODE_DELETE_SUBSCRIPTION);
+        use(DisableSimFooterPreferenceController.class).init(mSubId);
         use(MobileDataPreferenceController.class).init(getFragmentManager(), mSubId);
         use(RoamingPreferenceController.class).init(getFragmentManager(), mSubId);
         use(ApnPreferenceController.class).init(mSubId);
@@ -151,9 +144,7 @@
         use(PreferredNetworkModePreferenceController.class).init(mSubId);
         use(EnabledNetworkModePreferenceController.class).init(getLifecycle(), mSubId);
         use(DataServiceSetupPreferenceController.class).init(mSubId);
-        if (!FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
-            use(EuiccPreferenceController.class).init(mSubId);
-        }
+
         final WifiCallingPreferenceController wifiCallingPreferenceController =
                 use(WifiCallingPreferenceController.class).init(mSubId);
 
@@ -204,11 +195,7 @@
 
     @Override
     protected int getPreferenceScreenResId() {
-        if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
-            return R.xml.mobile_network_settings_v2;
-        } else {
-            return R.xml.mobile_network_settings;
-        }
+        return R.xml.mobile_network_settings_v2;
     }
 
     @Override
@@ -250,8 +237,7 @@
 
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2) &&
-                mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+        if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
             final MenuItem item = menu.add(Menu.NONE, R.id.edit_sim_name, Menu.NONE,
                     R.string.mobile_network_sim_name);
             item.setIcon(com.android.internal.R.drawable.ic_mode_edit);
@@ -262,8 +248,7 @@
 
     @Override
     public boolean onOptionsItemSelected(MenuItem menuItem) {
-        if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2) &&
-                mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+        if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
             if (menuItem.getItemId() == R.id.edit_sim_name) {
                 RenameMobileNetworkDialogFragment.newInstance(mSubId).show(
                         getFragmentManager(), RenameMobileNetworkDialogFragment.TAG);
@@ -274,20 +259,7 @@
     }
 
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider() {
-                @Override
-                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
-                        boolean enabled) {
-                    final ArrayList<SearchIndexableResource> result = new ArrayList<>();
-
-                    final SearchIndexableResource sir = new SearchIndexableResource(context);
-                    sir.xmlResId = FeatureFlagPersistent.isEnabled(context,
-                            FeatureFlags.NETWORK_INTERNET_V2)
-                            ? R.xml.mobile_network_settings_v2
-                            : R.xml.mobile_network_settings;
-                    result.add(sir);
-                    return result;
-                }
+            new BaseSearchIndexProvider(R.xml.mobile_network_settings_v2) {
 
                 /** suppress full page if user is not admin */
                 @Override
diff --git a/src/com/android/settings/network/telephony/MobileNetworkSwitchController.java b/src/com/android/settings/network/telephony/MobileNetworkSwitchController.java
index 02396dd..94f86f4 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkSwitchController.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkSwitchController.java
@@ -22,24 +22,19 @@
 import android.content.Context;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
-import android.util.Log;
-
-import com.android.settings.R;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settings.core.FeatureFlags;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
-import com.android.settings.network.SubscriptionUtil;
-import com.android.settings.network.SubscriptionsChangeListener;
-import com.android.settings.widget.SwitchBar;
-import com.android.settingslib.widget.LayoutPreference;
-
-import java.util.List;
 
 import androidx.lifecycle.Lifecycle;
 import androidx.lifecycle.LifecycleObserver;
 import androidx.lifecycle.OnLifecycleEvent;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.network.SubscriptionUtil;
+import com.android.settings.network.SubscriptionsChangeListener;
+import com.android.settings.widget.SwitchBar;
+import com.android.settingslib.widget.LayoutPreference;
+
 /** This controls a switch to allow enabling/disabling a mobile network */
 public class MobileNetworkSwitchController extends BasePreferenceController implements
         SubscriptionsChangeListener.SubscriptionsChangeListenerClient, LifecycleObserver {
@@ -118,11 +113,8 @@
 
     @Override
     public int getAvailabilityStatus() {
-        if (FeatureFlagPersistent.isEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2)) {
-            return AVAILABLE_UNSEARCHABLE;
-        } else {
-            return CONDITIONALLY_UNAVAILABLE;
-        }
+        return AVAILABLE_UNSEARCHABLE;
+
     }
 
     @Override
diff --git a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java
index 8f8d0d0..3348cca 100644
--- a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java
+++ b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java
@@ -29,12 +29,12 @@
 import android.telephony.PhoneStateListener;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.telephony.ims.ImsMmTelManager;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
-import com.android.ims.ImsConfig;
 import com.android.ims.ImsManager;
 import com.android.settings.R;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -54,6 +54,7 @@
     CarrierConfigManager mCarrierConfigManager;
     @VisibleForTesting
     ImsManager mImsManager;
+    private ImsMmTelManager mImsMmTelManager;
     @VisibleForTesting
     PhoneAccountHandle mSimCallManager;
     private PhoneCallStateListener mPhoneStateListener;
@@ -88,7 +89,7 @@
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
-        Intent intent = mPreference.getIntent();
+        final Intent intent = mPreference.getIntent();
         if (intent != null) {
             intent.putExtra(Settings.EXTRA_SUB_ID, mSubId);
         }
@@ -98,14 +99,14 @@
     public void updateState(Preference preference) {
         super.updateState(preference);
         if (mSimCallManager != null) {
-            Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
+            final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
                     mSimCallManager);
             if (intent == null) {
                 // Do nothing in this case since preference is invisible
                 return;
             }
             final PackageManager pm = mContext.getPackageManager();
-            List<ResolveInfo> resolutions = pm.queryIntentActivities(intent, 0);
+            final List<ResolveInfo> resolutions = pm.queryIntentActivities(intent, 0);
             preference.setTitle(resolutions.get(0).loadLabel(pm));
             preference.setSummary(null);
             preference.setIntent(intent);
@@ -126,16 +127,18 @@
                     }
                 }
                 final boolean isRoaming = mTelephonyManager.isNetworkRoaming();
-                int wfcMode = mImsManager.getWfcMode(isRoaming && !useWfcHomeModeForRoaming);
+                final int wfcMode = (isRoaming && !useWfcHomeModeForRoaming)
+                        ? mImsMmTelManager.getVoWiFiRoamingModeSetting() :
+                        mImsMmTelManager.getVoWiFiModeSetting();
                 switch (wfcMode) {
-                    case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
+                    case ImsMmTelManager.WIFI_MODE_WIFI_ONLY:
                         resId = com.android.internal.R.string.wfc_mode_wifi_only_summary;
                         break;
-                    case ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED:
+                    case ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED:
                         resId = com.android.internal.R.string
                                 .wfc_mode_cellular_preferred_summary;
                         break;
-                    case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:
+                    case ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED:
                         resId = com.android.internal.R.string.wfc_mode_wifi_preferred_summary;
                         break;
                     default:
@@ -150,14 +153,20 @@
 
     public WifiCallingPreferenceController init(int subId) {
         mSubId = subId;
-        mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
+        mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
+                .createForSubscriptionId(mSubId);
         mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
+        mImsMmTelManager = getImsMmTelManager(mSubId);
         mSimCallManager = mContext.getSystemService(TelecomManager.class)
                 .getSimCallManagerForSubscription(mSubId);
 
         return this;
     }
 
+    protected ImsMmTelManager getImsMmTelManager(int subId) {
+        return ImsMmTelManager.createForSubscriptionId(subId);
+    }
+
     private class PhoneCallStateListener extends PhoneStateListener {
 
         public PhoneCallStateListener(Looper looper) {
diff --git a/src/com/android/settings/search/SettingsSearchIndexablesProvider.java b/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
index f0ae804..e681a22 100644
--- a/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
+++ b/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
@@ -68,6 +68,7 @@
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 import com.android.settingslib.search.SearchIndexableRaw;
 
 import java.util.ArrayList;
@@ -106,7 +107,7 @@
         final List<SearchIndexableResource> resources =
                 getSearchIndexableResourcesFromProvider(getContext());
         for (SearchIndexableResource val : resources) {
-            Object[] ref = new Object[INDEXABLES_XML_RES_COLUMNS.length];
+            final Object[] ref = new Object[INDEXABLES_XML_RES_COLUMNS.length];
             ref[COLUMN_INDEX_XML_RES_RANK] = val.rank;
             ref[COLUMN_INDEX_XML_RES_RESID] = val.xmlResId;
             ref[COLUMN_INDEX_XML_RES_CLASS_NAME] = val.className;
@@ -128,21 +129,7 @@
         final MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS);
         final List<SearchIndexableRaw> raws = getSearchIndexableRawFromProvider(getContext());
         for (SearchIndexableRaw val : raws) {
-            Object[] ref = new Object[INDEXABLES_RAW_COLUMNS.length];
-            ref[COLUMN_INDEX_RAW_TITLE] = val.title;
-            ref[COLUMN_INDEX_RAW_SUMMARY_ON] = val.summaryOn;
-            ref[COLUMN_INDEX_RAW_SUMMARY_OFF] = val.summaryOff;
-            ref[COLUMN_INDEX_RAW_ENTRIES] = val.entries;
-            ref[COLUMN_INDEX_RAW_KEYWORDS] = val.keywords;
-            ref[COLUMN_INDEX_RAW_SCREEN_TITLE] = val.screenTitle;
-            ref[COLUMN_INDEX_RAW_CLASS_NAME] = val.className;
-            ref[COLUMN_INDEX_RAW_ICON_RESID] = val.iconResId;
-            ref[COLUMN_INDEX_RAW_INTENT_ACTION] = val.intentAction;
-            ref[COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE] = val.intentTargetPackage;
-            ref[COLUMN_INDEX_RAW_INTENT_TARGET_CLASS] = val.intentTargetClass;
-            ref[COLUMN_INDEX_RAW_KEY] = val.key;
-            ref[COLUMN_INDEX_RAW_USER_ID] = val.userId;
-            cursor.addRow(ref);
+            cursor.addRow(createIndexableRawColumnObjects(val));
         }
 
         return cursor;
@@ -180,21 +167,7 @@
 
         final MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS);
         for (SearchIndexableRaw raw : rawList) {
-            Object[] ref = new Object[INDEXABLES_RAW_COLUMNS.length];
-            ref[COLUMN_INDEX_RAW_TITLE] = raw.title;
-            ref[COLUMN_INDEX_RAW_SUMMARY_ON] = raw.summaryOn;
-            ref[COLUMN_INDEX_RAW_SUMMARY_OFF] = raw.summaryOff;
-            ref[COLUMN_INDEX_RAW_ENTRIES] = raw.entries;
-            ref[COLUMN_INDEX_RAW_KEYWORDS] = raw.keywords;
-            ref[COLUMN_INDEX_RAW_SCREEN_TITLE] = raw.screenTitle;
-            ref[COLUMN_INDEX_RAW_CLASS_NAME] = raw.className;
-            ref[COLUMN_INDEX_RAW_ICON_RESID] = raw.iconResId;
-            ref[COLUMN_INDEX_RAW_INTENT_ACTION] = raw.intentAction;
-            ref[COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE] = raw.intentTargetPackage;
-            ref[COLUMN_INDEX_RAW_INTENT_TARGET_CLASS] = raw.intentTargetClass;
-            ref[COLUMN_INDEX_RAW_KEY] = raw.key;
-            ref[COLUMN_INDEX_RAW_USER_ID] = raw.userId;
-            cursor.addRow(ref);
+            cursor.addRow(createIndexableRawColumnObjects(raw));
         }
 
         return cursor;
@@ -260,14 +233,14 @@
     }
 
     private List<String> getNonIndexableKeysFromProvider(Context context) {
-        final Collection<Class> values = getIndexableProviderValues(context);
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(context)
+                .getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
+
         final List<String> nonIndexableKeys = new ArrayList<>();
 
-        for (Class<?> clazz : values) {
+        for (SearchIndexableData bundle : bundles) {
             final long startTime = System.currentTimeMillis();
-            final Indexable.SearchIndexProvider provider =
-                    DatabaseIndexingUtils.getSearchIndexProvider(clazz);
-
+            Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
             List<String> providerNonIndexableKeys;
             try {
                 providerNonIndexableKeys = provider.getNonIndexableKeys(context);
@@ -281,7 +254,8 @@
                 if (System.getProperty(SYSPROP_CRASH_ON_ERROR) != null) {
                     throw new RuntimeException(e);
                 }
-                Log.e(TAG, "Error trying to get non-indexable keys from: " + clazz.getName(), e);
+                Log.e(TAG, "Error trying to get non-indexable keys from: "
+                        + bundle.getTargetClass().getName(), e);
                 continue;
             }
 
@@ -310,12 +284,12 @@
     }
 
     private List<SearchIndexableResource> getSearchIndexableResourcesFromProvider(Context context) {
-        final Collection<Class> values = getIndexableProviderValues(context);
-        final List<SearchIndexableResource> resourceList = new ArrayList<>();
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(context)
+                .getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
+        List<SearchIndexableResource> resourceList = new ArrayList<>();
 
-        for (Class<?> clazz : values) {
-            final Indexable.SearchIndexProvider provider =
-                    DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+        for (SearchIndexableData bundle : bundles) {
+            Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
             final List<SearchIndexableResource> resList =
                     provider.getXmlResourcesToIndex(context, true);
 
@@ -325,7 +299,7 @@
 
             for (SearchIndexableResource item : resList) {
                 item.className = TextUtils.isEmpty(item.className)
-                        ? clazz.getName()
+                        ? bundle.getTargetClass().getName()
                         : item.className;
             }
 
@@ -336,14 +310,14 @@
     }
 
     private List<SearchIndexableRaw> getSearchIndexableRawFromProvider(Context context) {
-        final Collection<Class> values = getIndexableProviderValues(context);
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(context)
+                .getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
         final List<SearchIndexableRaw> rawList = new ArrayList<>();
 
-        for (Class<?> clazz : values) {
-            final Indexable.SearchIndexProvider provider =
-                    DatabaseIndexingUtils.getSearchIndexProvider(clazz);
-            final List<SearchIndexableRaw> providerRaws =
-                    provider.getRawDataToIndex(context, true /* enabled */);
+        for (SearchIndexableData bundle : bundles) {
+            Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
+            final List<SearchIndexableRaw> providerRaws = provider.getRawDataToIndex(context,
+                    true /* enabled */);
 
             if (providerRaws == null) {
                 continue;
@@ -352,7 +326,7 @@
             for (SearchIndexableRaw raw : providerRaws) {
                 // The classname and intent information comes from the PreIndexData
                 // This will be more clear when provider conversion is done at PreIndex time.
-                raw.className = clazz.getName();
+                raw.className = bundle.getTargetClass().getName();
 
             }
             rawList.addAll(providerRaws);
@@ -362,12 +336,12 @@
     }
 
     private List<SearchIndexableRaw> getDynamicSearchIndexableRawFromProvider(Context context) {
-        final Collection<Class> values = getIndexableProviderValues(context);
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(context)
+                .getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
         final List<SearchIndexableRaw> rawList = new ArrayList<>();
 
-        for (Class<?> clazz : values) {
-            final Indexable.SearchIndexProvider provider =
-                    DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+        for (SearchIndexableData bundle : bundles) {
+            final Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
             final List<SearchIndexableRaw> providerRaws =
                     provider.getDynamicRawDataToIndex(context, true /* enabled */);
 
@@ -378,7 +352,7 @@
             for (SearchIndexableRaw raw : providerRaws) {
                 // The classname and intent information comes from the PreIndexData
                 // This will be more clear when provider conversion is done at PreIndex time.
-                raw.className = clazz.getName();
+                raw.className = bundle.getTargetClass().getName();
 
             }
             rawList.addAll(providerRaws);
@@ -392,27 +366,40 @@
                 FeatureFactory.getFactory(context).getDashboardFeatureProvider(context);
 
         final List<SearchIndexableRaw> rawList = new ArrayList<>();
+        final String currentPackageName = context.getPackageName();
         for (DashboardCategory category : dashboardFeatureProvider.getAllCategories()) {
             for (Tile tile : category.getTiles()) {
-                final String packageName = tile.getPackageName();
-                if (context.getPackageName().equals(packageName)) {
+                if (currentPackageName.equals(tile.getPackageName())) {
                     continue;
                 }
                 final SearchIndexableRaw raw = new SearchIndexableRaw(context);
+                raw.key = dashboardFeatureProvider.getDashboardKeyForTile(tile);
                 raw.title = tile.getTitle(context).toString();
-                raw.summaryOn = tile.getSummary(context).toString();
-                raw.summaryOff = tile.getSummary(context).toString();
-                raw.keywords = dashboardFeatureProvider.getDashboardKeyForTile(tile);
+                CharSequence summary = tile.getSummary(context);
+                raw.summaryOn = TextUtils.isEmpty(summary) ? null : summary.toString();
+                raw.summaryOff = raw.summaryOn;
                 raw.className = CATEGORY_KEY_TO_PARENT_MAP.get(tile.getCategory());
                 rawList.add(raw);
             }
         }
 
-        return rawList;
-    }
+        return rawList;    }
 
-    private Collection<Class> getIndexableProviderValues(Context context) {
-        return FeatureFactory.getFactory(context)
-                .getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
+    private static Object[] createIndexableRawColumnObjects(SearchIndexableRaw raw) {
+        final Object[] ref = new Object[INDEXABLES_RAW_COLUMNS.length];
+        ref[COLUMN_INDEX_RAW_TITLE] = raw.title;
+        ref[COLUMN_INDEX_RAW_SUMMARY_ON] = raw.summaryOn;
+        ref[COLUMN_INDEX_RAW_SUMMARY_OFF] = raw.summaryOff;
+        ref[COLUMN_INDEX_RAW_ENTRIES] = raw.entries;
+        ref[COLUMN_INDEX_RAW_KEYWORDS] = raw.keywords;
+        ref[COLUMN_INDEX_RAW_SCREEN_TITLE] = raw.screenTitle;
+        ref[COLUMN_INDEX_RAW_CLASS_NAME] = raw.className;
+        ref[COLUMN_INDEX_RAW_ICON_RESID] = raw.iconResId;
+        ref[COLUMN_INDEX_RAW_INTENT_ACTION] = raw.intentAction;
+        ref[COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE] = raw.intentTargetPackage;
+        ref[COLUMN_INDEX_RAW_INTENT_TARGET_CLASS] = raw.intentTargetClass;
+        ref[COLUMN_INDEX_RAW_KEY] = raw.key;
+        ref[COLUMN_INDEX_RAW_USER_ID] = raw.userId;
+        return ref;
     }
 }
diff --git a/src/com/android/settings/slices/SliceDataConverter.java b/src/com/android/settings/slices/SliceDataConverter.java
index 06b5d78..551a186 100644
--- a/src/com/android/settings/slices/SliceDataConverter.java
+++ b/src/com/android/settings/slices/SliceDataConverter.java
@@ -53,9 +53,9 @@
 import com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.DatabaseIndexingUtils;
-import com.android.settingslib.search.Indexable.SearchIndexProvider;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+import com.android.settingslib.search.Indexable.SearchIndexProvider;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
@@ -101,14 +101,13 @@
     public List<SliceData> getSliceData() {
         List<SliceData> sliceData = new ArrayList<>();
 
-        final Collection<Class> indexableClasses = FeatureFactory.getFactory(mContext)
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(mContext)
                 .getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
 
-        for (Class clazz : indexableClasses) {
-            final String fragmentName = clazz.getName();
+        for (SearchIndexableData bundle : bundles) {
+            final String fragmentName = bundle.getTargetClass().getName();
 
-            final SearchIndexProvider provider = DatabaseIndexingUtils.getSearchIndexProvider(
-                    clazz);
+            final SearchIndexProvider provider = bundle.getSearchIndexProvider();
 
             // CodeInspection test guards against the null check. Keep check in case of bad actors.
             if (provider == null) {
diff --git a/src/com/android/settings/widget/MediaAnimationController.java b/src/com/android/settings/widget/MediaAnimationController.java
index eb7b3e0..87a5365 100644
--- a/src/com/android/settings/widget/MediaAnimationController.java
+++ b/src/com/android/settings/widget/MediaAnimationController.java
@@ -33,6 +33,7 @@
 class MediaAnimationController implements VideoPreference.AnimationController {
     private MediaPlayer mMediaPlayer;
     private boolean mVideoReady;
+    private Surface mSurface;
 
     MediaAnimationController(Context context, int videoId) {
         final Uri videoPath = new Uri.Builder().scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
@@ -86,10 +87,7 @@
             @Override
             public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width,
                     int height) {
-                if (mMediaPlayer != null) {
-                    final Surface surface = new Surface(surfaceTexture);
-                    mMediaPlayer.setSurface(surface);
-                }
+                setSurface(surfaceTexture);
             }
 
             @Override
@@ -105,6 +103,7 @@
 
             @Override
             public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {
+                setSurface(surfaceTexture);
                 if (mVideoReady) {
                     if (preview.getVisibility() == View.VISIBLE) {
                         preview.setVisibility(View.GONE);
@@ -146,4 +145,11 @@
             mMediaPlayer.start();
         }
     }
+
+    private void setSurface(SurfaceTexture surfaceTexture) {
+        if (mMediaPlayer != null && mSurface == null) {
+            mSurface = new Surface(surfaceTexture);
+            mMediaPlayer.setSurface(mSurface);
+        }
+    }
 }
diff --git a/src/com/android/settings/widget/VideoPreference.java b/src/com/android/settings/widget/VideoPreference.java
index d23bea9..006c13a 100644
--- a/src/com/android/settings/widget/VideoPreference.java
+++ b/src/com/android/settings/widget/VideoPreference.java
@@ -50,6 +50,9 @@
     private int mAnimationId;
     private int mVectorAnimationId;
     private int mHeight = LinearLayout.LayoutParams.MATCH_PARENT - 1; // video height in pixels
+    private TextureView mVideo;
+    private ImageView mPreviewImage;
+    private ImageView mPlayButton;
 
     public VideoPreference(Context context) {
         super(context);
@@ -108,19 +111,19 @@
             return;
         }
 
-        final TextureView video = (TextureView) holder.findViewById(R.id.video_texture_view);
-        final ImageView previewImage = (ImageView) holder.findViewById(R.id.video_preview_image);
-        final ImageView playButton = (ImageView) holder.findViewById(R.id.video_play_button);
+        mVideo = (TextureView) holder.findViewById(R.id.video_texture_view);
+        mPreviewImage = (ImageView) holder.findViewById(R.id.video_preview_image);
+        mPlayButton = (ImageView) holder.findViewById(R.id.video_play_button);
         final AspectRatioFrameLayout layout = (AspectRatioFrameLayout) holder.findViewById(
                 R.id.video_container);
 
-        previewImage.setImageResource(mPreviewId);
+        mPreviewImage.setImageResource(mPreviewId);
         layout.setAspectRatio(mAspectRatio);
         if (mHeight >= LinearLayout.LayoutParams.MATCH_PARENT) {
             layout.setLayoutParams(new LinearLayout.LayoutParams(
                     LinearLayout.LayoutParams.MATCH_PARENT, mHeight));
         }
-        mAnimationController.attachView(video, previewImage, playButton);
+        mAnimationController.attachView(mVideo, mPreviewImage, mPlayButton);
     }
 
     @Override
@@ -164,6 +167,9 @@
         }
         if (mAnimationId != 0) {
             mAnimationController = new MediaAnimationController(mContext, mAnimationId);
+            if (mVideo != null) {
+                mAnimationController.attachView(mVideo, mPreviewImage, mPlayButton);
+            }
         }
     }
 
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
index 252193d..50396e5 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
@@ -30,6 +30,7 @@
 import android.telephony.PhoneStateListener;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.telephony.ims.ImsMmTelManager;
 import android.telephony.ims.ProvisioningManager;
 import android.text.TextUtils;
 import android.util.Log;
@@ -98,6 +99,7 @@
 
     private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
     private ImsManager mImsManager;
+    private ImsMmTelManager mImsMmTelManager;
     private TelephonyManager mTelephonyManager;
 
     private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
@@ -110,8 +112,8 @@
         @Override
         public void onCallStateChanged(int state, String incomingNumber) {
             final SettingsActivity activity = (SettingsActivity) getActivity();
-            boolean isNonTtyOrTtyOnVolteEnabled = mImsManager.isNonTtyOrTtyOnVolteEnabled();
-            boolean isWfcEnabled = mSwitchBar.isChecked()
+            final boolean isNonTtyOrTtyOnVolteEnabled = mImsManager.isNonTtyOrTtyOnVolteEnabled();
+            final boolean isWfcEnabled = mSwitchBar.isChecked()
                     && isNonTtyOrTtyOnVolteEnabled;
 
             mSwitchBar.setEnabled((state == TelephonyManager.CALL_STATE_IDLE)
@@ -132,12 +134,12 @@
                 }
             }
 
-            Preference pref = getPreferenceScreen().findPreference(BUTTON_WFC_MODE);
+            final Preference pref = getPreferenceScreen().findPreference(BUTTON_WFC_MODE);
             if (pref != null) {
                 pref.setEnabled(isWfcEnabled && isWfcModeEditable
                         && (state == TelephonyManager.CALL_STATE_IDLE));
             }
-            Preference pref_roam =
+            final Preference pref_roam =
                     getPreferenceScreen().findPreference(BUTTON_WFC_ROAMING_MODE);
             if (pref_roam != null) {
                 pref_roam.setEnabled(isWfcEnabled && isWfcRoamingModeEditable
@@ -151,7 +153,7 @@
      */
     private final OnPreferenceClickListener mUpdateAddressListener =
             preference -> {
-                Intent carrierAppIntent = getCarrierActivityIntent();
+                final Intent carrierAppIntent = getCarrierActivityIntent();
                 if (carrierAppIntent != null) {
                     carrierAppIntent.putExtra(EXTRA_LAUNCH_CARRIER_APP, LAUCH_APP_UPDATE);
                     startActivity(carrierAppIntent);
@@ -179,7 +181,7 @@
         mEmptyView = getView().findViewById(android.R.id.empty);
         setEmptyView(mEmptyView);
         final Resources res = getResourcesForSubId();
-        String emptyViewText = res.getString(R.string.wifi_calling_off_explanation,
+        final String emptyViewText = res.getString(R.string.wifi_calling_off_explanation,
                 res.getString(R.string.wifi_calling_off_explanation_2));
         mEmptyView.setText(emptyViewText);
 
@@ -195,17 +197,17 @@
     }
 
     private void showAlert(Intent intent) {
-        Context context = getActivity();
+        final Context context = getActivity();
 
-        CharSequence title = intent.getCharSequenceExtra(Phone.EXTRA_KEY_ALERT_TITLE);
-        CharSequence message = intent.getCharSequenceExtra(Phone.EXTRA_KEY_ALERT_MESSAGE);
+        final CharSequence title = intent.getCharSequenceExtra(Phone.EXTRA_KEY_ALERT_TITLE);
+        final CharSequence message = intent.getCharSequenceExtra(Phone.EXTRA_KEY_ALERT_MESSAGE);
 
-        AlertDialog.Builder builder = new AlertDialog.Builder(context);
+        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
         builder.setMessage(message)
                 .setTitle(title)
                 .setIcon(android.R.drawable.ic_dialog_alert)
                 .setPositiveButton(android.R.string.ok, null);
-        AlertDialog dialog = builder.create();
+        final AlertDialog dialog = builder.create();
         dialog.show();
     }
 
@@ -214,7 +216,7 @@
     private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
+            final String action = intent.getAction();
             if (action.equals(ImsManager.ACTION_IMS_REGISTRATION_ERROR)) {
                 // If this fragment is active then we are immediately
                 // showing alert on screen. There is no need to add
@@ -245,6 +247,11 @@
         return ImsManager.getInstance(getActivity(), SubscriptionManager.getPhoneId(mSubId));
     }
 
+    @VisibleForTesting
+    ImsMmTelManager getImsMmTelManager() {
+        return ImsMmTelManager.createForSubscriptionId(mSubId);
+    }
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -261,6 +268,7 @@
         }
 
         mImsManager = getImsManager();
+        mImsMmTelManager = getImsMmTelManager();
 
         mTelephonyManager = ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE))
                 .createForSubscriptionId(mSubId);
@@ -288,12 +296,12 @@
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
 
-        View view = inflater.inflate(
+        final View view = inflater.inflate(
                 R.layout.wifi_calling_settings_preferences, container, false);
 
         final ViewGroup prefs_container = view.findViewById(R.id.prefs_container);
         Utils.prepareCustomPreferencesList(container, view, prefs_container, false);
-        View prefs = super.onCreateView(inflater, prefs_container, savedInstanceState);
+        final View prefs = super.onCreateView(inflater, prefs_container, savedInstanceState);
         prefs_container.addView(prefs);
 
         return view;
@@ -307,12 +315,12 @@
             return;
         }
 
-        CarrierConfigManager configManager = (CarrierConfigManager)
+        final CarrierConfigManager configManager = (CarrierConfigManager)
                 getSystemService(Context.CARRIER_CONFIG_SERVICE);
         boolean isWifiOnlySupported = true;
 
         if (configManager != null) {
-            PersistableBundle b = configManager.getConfigForSubId(mSubId);
+            final PersistableBundle b = configManager.getConfigForSubId(mSubId);
             if (b != null) {
                 mEditableWfcMode = b.getBoolean(
                         CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL);
@@ -341,11 +349,11 @@
 
 
         // NOTE: Buttons will be enabled/disabled in mPhoneStateListener
-        boolean wfcEnabled = mImsManager.isWfcEnabledByUser()
+        final boolean wfcEnabled = mImsManager.isWfcEnabledByUser()
                 && mImsManager.isNonTtyOrTtyOnVolteEnabled();
         mSwitch.setChecked(wfcEnabled);
-        int wfcMode = mImsManager.getWfcMode(false);
-        int wfcRoamingMode = mImsManager.getWfcMode(true);
+        final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting();
+        final int wfcRoamingMode = mImsMmTelManager.getVoWiFiRoamingModeSetting();
         mButtonWfcMode.setValue(Integer.toString(wfcMode));
         mButtonWfcRoamingMode.setValue(Integer.toString(wfcRoamingMode));
         updateButtonWfcMode(wfcEnabled, wfcMode, wfcRoamingMode);
@@ -369,7 +377,7 @@
 
         context.registerReceiver(mIntentReceiver, mIntentFilter);
 
-        Intent intent = getActivity().getIntent();
+        final Intent intent = getActivity().getIntent();
         if (intent.getBooleanExtra(Phone.EXTRA_KEY_ALERT_SHOW, false)) {
             showAlert(intent);
         }
@@ -392,7 +400,8 @@
         if (mValidListener) {
             mValidListener = false;
 
-            TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+            final TelephonyManager tm = (TelephonyManager)
+                    getSystemService(Context.TELEPHONY_SERVICE);
             tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
 
             mSwitchBar.removeOnSwitchChangeListener(this);
@@ -441,22 +450,22 @@
      */
     private Intent getCarrierActivityIntent() {
         // Retrive component name from carrier config
-        CarrierConfigManager configManager =
+        final CarrierConfigManager configManager =
                 getActivity().getSystemService(CarrierConfigManager.class);
         if (configManager == null) return null;
 
-        PersistableBundle bundle = configManager.getConfigForSubId(mSubId);
+        final PersistableBundle bundle = configManager.getConfigForSubId(mSubId);
         if (bundle == null) return null;
 
-        String carrierApp = bundle.getString(
+        final String carrierApp = bundle.getString(
                 CarrierConfigManager.KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING);
         if (TextUtils.isEmpty(carrierApp)) return null;
 
-        ComponentName componentName = ComponentName.unflattenFromString(carrierApp);
+        final ComponentName componentName = ComponentName.unflattenFromString(carrierApp);
         if (componentName == null) return null;
 
         // Build and return intent
-        Intent intent = new Intent();
+        final Intent intent = new Intent();
         intent.setComponent(componentName);
         intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, mSubId);
         return intent;
@@ -469,8 +478,8 @@
         Log.i(TAG, "updateWfcMode(" + wfcEnabled + ")");
         mImsManager.setWfcSetting(wfcEnabled);
 
-        int wfcMode = mImsManager.getWfcMode(false);
-        int wfcRoamingMode = mImsManager.getWfcMode(true);
+        final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting();
+        final int wfcRoamingMode = mImsMmTelManager.getVoWiFiRoamingModeSetting();
         updateButtonWfcMode(wfcEnabled, wfcMode, wfcRoamingMode);
         if (wfcEnabled) {
             mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), wfcMode);
@@ -496,7 +505,7 @@
             case REQUEST_CHECK_WFC_DISCLAIMER:
                 if (resultCode == Activity.RESULT_OK) {
                     // Call address management activity before turning on WFC
-                    Intent carrierAppIntent = getCarrierActivityIntent();
+                    final Intent carrierAppIntent = getCarrierActivityIntent();
                     if (carrierAppIntent != null) {
                         carrierAppIntent.putExtra(EXTRA_LAUNCH_CARRIER_APP, LAUCH_APP_ACTIVATE);
                         startActivityForResult(carrierAppIntent,
@@ -520,7 +529,7 @@
         mButtonWfcRoamingMode.setEnabled(wfcEnabled && mEditableWfcRoamingMode);
 
         final PreferenceScreen preferenceScreen = getPreferenceScreen();
-        boolean updateAddressEnabled = (getCarrierActivityIntent() != null);
+        final boolean updateAddressEnabled = (getCarrierActivityIntent() != null);
         if (wfcEnabled) {
             if (mEditableWfcMode) {
                 preferenceScreen.addPreference(mButtonWfcMode);
@@ -551,24 +560,24 @@
         if (preference == mButtonWfcMode) {
             Log.d(TAG, "onPreferenceChange mButtonWfcMode " + newValue);
             mButtonWfcMode.setValue((String) newValue);
-            int buttonMode = Integer.valueOf((String) newValue);
-            int currentWfcMode = mImsManager.getWfcMode(false);
+            final int buttonMode = Integer.valueOf((String) newValue);
+            final int currentWfcMode = mImsMmTelManager.getVoWiFiModeSetting();
             if (buttonMode != currentWfcMode) {
-                mImsManager.setWfcMode(buttonMode, false);
+                mImsMmTelManager.setVoWiFiModeSetting(buttonMode);
                 mButtonWfcMode.setSummary(getWfcModeSummary(buttonMode));
                 mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), buttonMode);
 
                 if (mUseWfcHomeModeForRoaming) {
-                    mImsManager.setWfcMode(buttonMode, true);
+                    mImsMmTelManager.setVoWiFiRoamingModeSetting(buttonMode);
                     // mButtonWfcRoamingMode.setSummary is not needed; summary is selected value
                 }
             }
         } else if (preference == mButtonWfcRoamingMode) {
             mButtonWfcRoamingMode.setValue((String) newValue);
-            int buttonMode = Integer.valueOf((String) newValue);
-            int currentMode = mImsManager.getWfcMode(true);
+            final int buttonMode = Integer.valueOf((String) newValue);
+            final int currentMode = mImsMmTelManager.getVoWiFiRoamingModeSetting();
             if (buttonMode != currentMode) {
-                mImsManager.setWfcMode(buttonMode, true);
+                mImsMmTelManager.setVoWiFiRoamingModeSetting(buttonMode);
                 // mButtonWfcRoamingMode.setSummary is not needed; summary is just selected value.
                 mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), buttonMode);
             }
@@ -580,13 +589,13 @@
         int resId = com.android.internal.R.string.wifi_calling_off_summary;
         if (mImsManager.isWfcEnabledByUser()) {
             switch (wfcMode) {
-                case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
+                case ImsMmTelManager.WIFI_MODE_WIFI_ONLY:
                     resId = com.android.internal.R.string.wfc_mode_wifi_only_summary;
                     break;
-                case ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED:
+                case ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED:
                     resId = com.android.internal.R.string.wfc_mode_cellular_preferred_summary;
                     break;
-                case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:
+                case ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED:
                     resId = com.android.internal.R.string.wfc_mode_wifi_preferred_summary;
                     break;
                 default:
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
index 70eef2c..524ba8a 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
@@ -30,6 +30,7 @@
 import android.provider.Settings;
 import android.telephony.CarrierConfigManager;
 import android.telephony.SubscriptionManager;
+import android.telephony.ims.ImsMmTelManager;
 import android.text.TextUtils;
 import android.util.Log;
 
@@ -233,6 +234,7 @@
         final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled(
                 CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true);
         final ImsManager imsManager = getImsManager(subId);
+        final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
 
         if (!imsManager.isWfcEnabledByPlatform()
                 || !imsManager.isWfcProvisionedOnDevice()) {
@@ -249,7 +251,7 @@
         int wfcMode = -1;
         try {
             isWifiCallingEnabled = isWifiCallingEnabled(imsManager);
-            wfcMode = getWfcMode(imsManager);
+            wfcMode = getWfcMode(imsMmTelManager);
         } catch (InterruptedException | ExecutionException | TimeoutException e) {
             Log.e(TAG, "Unable to get wifi calling preferred mode", e);
             return null;
@@ -279,7 +281,7 @@
             Uri sliceUri) {
         final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal);
         // Top row shows information on current preference state
-        ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY)
+        final ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY)
                 .setAccentColor(Utils.getColorAccentDefaultColor(mContext));
         listBuilder.setHeader(new ListBuilder.HeaderBuilder()
                 .setTitle(mContext.getText(R.string.wifi_calling_mode_title))
@@ -294,18 +296,18 @@
             listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
                     com.android.internal.R.string.wfc_mode_wifi_only_summary,
                     ACTION_WIFI_CALLING_PREFERENCE_WIFI_ONLY,
-                    currentWfcPref == ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY));
+                    currentWfcPref == ImsMmTelManager.WIFI_MODE_WIFI_ONLY));
         }
 
         listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
                 com.android.internal.R.string.wfc_mode_wifi_preferred_summary,
                 ACTION_WIFI_CALLING_PREFERENCE_WIFI_PREFERRED,
-                currentWfcPref == ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED));
+                currentWfcPref == ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED));
 
         listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
                 com.android.internal.R.string.wfc_mode_cellular_preferred_summary,
                 ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED,
-                currentWfcPref == ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED));
+                currentWfcPref == ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
 
         return listBuilder.build();
     }
@@ -337,13 +339,13 @@
      */
     private CharSequence getWifiCallingPreferenceSummary(int wfcMode) {
         switch (wfcMode) {
-            case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
+            case ImsMmTelManager.WIFI_MODE_WIFI_ONLY:
                 return mContext.getText(
                         com.android.internal.R.string.wfc_mode_wifi_only_summary);
-            case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:
+            case ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED:
                 return mContext.getText(
                         com.android.internal.R.string.wfc_mode_wifi_preferred_summary);
-            case ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED:
+            case ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED:
                 return mContext.getText(
                         com.android.internal.R.string.wfc_mode_cellular_preferred_summary);
             default:
@@ -355,15 +357,19 @@
         return ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(subId));
     }
 
-    private int getWfcMode(ImsManager imsManager)
+    protected ImsMmTelManager getImsMmTelManager(int subId) {
+        return ImsMmTelManager.createForSubscriptionId(subId);
+    }
+
+    private int getWfcMode(ImsMmTelManager imsMmTelManager)
             throws InterruptedException, ExecutionException, TimeoutException {
-        FutureTask<Integer> wfcModeTask = new FutureTask<>(new Callable<Integer>() {
+        final FutureTask<Integer> wfcModeTask = new FutureTask<>(new Callable<Integer>() {
             @Override
             public Integer call() {
-                return imsManager.getWfcMode(false);
+                return imsMmTelManager.getVoWiFiModeSetting();
             }
         });
-        ExecutorService executor = Executors.newSingleThreadExecutor();
+        final ExecutorService executor = Executors.newSingleThreadExecutor();
         executor.execute(wfcModeTask);
         return wfcModeTask.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
     }
@@ -420,7 +426,7 @@
             final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled(
                     CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true);
 
-            ImsManager imsManager = getImsManager(subId);
+            final ImsManager imsManager = getImsManager(subId);
             if (isWifiCallingPrefEditable
                     && imsManager.isWfcEnabledByPlatform()
                     && imsManager.isWfcProvisionedOnDevice()
@@ -428,25 +434,26 @@
                     && imsManager.isNonTtyOrTtyOnVolteEnabled()) {
                 // Change the preference only when wifi calling is enabled
                 // And when wifi calling preference is editable for the current carrier
-                final int currentValue = imsManager.getWfcMode(false);
+                final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
+                final int currentValue = imsMmTelManager.getVoWiFiModeSetting();
                 int newValue = errorValue;
                 switch (intent.getAction()) {
                     case ACTION_WIFI_CALLING_PREFERENCE_WIFI_ONLY:
                         if (isWifiOnlySupported) {
                             // change to wifi_only when wifi_only is enabled.
-                            newValue = ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY;
+                            newValue = ImsMmTelManager.WIFI_MODE_WIFI_ONLY;
                         }
                         break;
                     case ACTION_WIFI_CALLING_PREFERENCE_WIFI_PREFERRED:
-                        newValue = ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED;
+                        newValue = ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED;
                         break;
                     case ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED:
-                        newValue = ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED;
+                        newValue = ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED;
                         break;
                 }
                 if (newValue != errorValue && newValue != currentValue) {
                     // Update the setting only when there is a valid update
-                    imsManager.setWfcMode(newValue, false);
+                    imsMmTelManager.setVoWiFiModeSetting(newValue);
                 }
             }
         }
diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
index 965b0ff..e9d2e08 100644
--- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
@@ -64,7 +64,6 @@
 import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.datausage.WifiDataUsageSummaryPreferenceController;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.widget.EntityHeaderController;
 import com.android.settings.wifi.WifiDialog;
 import com.android.settings.wifi.WifiDialog.WifiDialogListener;
@@ -892,17 +891,8 @@
             mWifiManager.disableEphemeralNetwork(mWifiInfo.getSSID());
         } else if (mAccessPoint.isPasspoint() || mAccessPoint.isPasspointConfig()) {
             // Post a dialog to confirm if user really want to forget the passpoint network.
-            if (FeatureFlagPersistent.isEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2)) {
-                showConfirmForgetDialog();
-                return;
-            }
-
-            try {
-                mWifiManager.removePasspointConfiguration(mAccessPoint.getPasspointFqdn());
-            } catch (RuntimeException e) {
-                Log.e(TAG, "Failed to remove Passpoint configuration for "
-                        + mAccessPoint.getPasspointFqdn());
-            }
+            showConfirmForgetDialog();
+            return;
         } else if (mWifiConfig != null) {
             mWifiManager.forget(mWifiConfig.networkId, null /* action listener */);
         }
diff --git a/tests/robotests/res/xml-mcc999/video_preference.xml b/tests/robotests/res/xml-mcc999/video_preference.xml
new file mode 100644
index 0000000..647a82f
--- /dev/null
+++ b/tests/robotests/res/xml-mcc999/video_preference.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2019 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto">
+    <com.android.settings.widget.VideoPreference
+        android:key="video1"
+        settings:animation="@raw/adaptive_sleep"
+        settings:preview="@drawable/adaptive_sleep"
+        android:title="seek_bar_title"/>
+    <com.android.settings.widget.VideoPreference
+        android:key="video2"
+        settings:animation="@raw/adaptive_sleep"
+        settings:preview="@drawable/adaptive_sleep"
+        settings:vectorAnimation="@drawable/adaptive_sleep"
+        android:title="seek_bar_title"/>
+</PreferenceScreen >
diff --git a/tests/robotests/src/com/android/settings/core/XmlControllerAttributeTest.java b/tests/robotests/src/com/android/settings/core/XmlControllerAttributeTest.java
index 78d1f74..da234a1 100644
--- a/tests/robotests/src/com/android/settings/core/XmlControllerAttributeTest.java
+++ b/tests/robotests/src/com/android/settings/core/XmlControllerAttributeTest.java
@@ -10,12 +10,11 @@
 import android.util.Xml;
 
 import com.android.settings.R;
-import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settings.search.SearchFeatureProvider;
 import com.android.settings.search.SearchFeatureProviderImpl;
-import com.android.settings.security.SecuritySettings;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -35,9 +34,6 @@
 @RunWith(RobolectricTestRunner.class)
 public class XmlControllerAttributeTest {
 
-    // List of classes that are too hard to mock in order to retrieve xml information.
-    private final List<Class> illegalClasses = Arrays.asList(SecuritySettings.class);
-
     // List of XML that could be retrieved from the illegalClasses list.
     private final List<Integer> whitelistXml = Arrays.asList(R.xml.security_dashboard_settings);
 
@@ -112,14 +108,12 @@
     private Set<Integer> getIndexableXml() {
         Set<Integer> xmlResSet = new HashSet<>();
 
-        Collection<Class> indexableClasses =
+        Collection<SearchIndexableData> SearchIndexableDatas =
                 mSearchProvider.getSearchIndexableResources().getProviderValues();
-        indexableClasses.removeAll(illegalClasses);
 
-        for (Class clazz : indexableClasses) {
+        for (SearchIndexableData bundle : SearchIndexableDatas) {
 
-            Indexable.SearchIndexProvider provider =
-                DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+            Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
 
             if (provider == null) {
                 continue;
diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
index b7691af..702d689 100644
--- a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
@@ -18,12 +18,8 @@
 import static androidx.lifecycle.Lifecycle.Event.ON_START;
 import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
 
-import static com.android.settings.network.MobileNetworkPreferenceController.MOBILE_NETWORK_CLASS;
-import static com.android.settings.network.MobileNetworkPreferenceController.MOBILE_NETWORK_PACKAGE;
-
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
@@ -31,23 +27,18 @@
 import static org.mockito.Mockito.when;
 import static org.robolectric.shadow.api.Shadow.extract;
 
-import android.app.Activity;
-import android.content.ComponentName;
 import android.content.Context;
-import android.content.Intent;
 import android.net.ConnectivityManager;
 import android.os.UserManager;
 import android.provider.Settings;
 import android.provider.Settings.Global;
 import android.telephony.PhoneStateListener;
 import android.telephony.TelephonyManager;
-import android.util.FeatureFlagUtils;
 
 import androidx.lifecycle.LifecycleOwner;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.testutils.shadow.ShadowConnectivityManager;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -57,10 +48,8 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
@@ -186,18 +175,4 @@
         mController.updateState(mPreference);
         assertThat(mPreference.isEnabled()).isFalse();
     }
-
-    @Test
-    public void handlePreferenceTreeClick_mobileFeatureDisabled_sendIntent() {
-        mController = new MobileNetworkPreferenceController(mContext);
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.MOBILE_NETWORK_V2, false);
-        ArgumentCaptor<Intent> argument = ArgumentCaptor.forClass(Intent.class);
-        doNothing().when(mContext).startActivity(argument.capture());
-
-        mController.handlePreferenceTreeClick(mPreference);
-
-        final ComponentName componentName = argument.getValue().getComponent();
-        assertThat(componentName.getPackageName()).isEqualTo(MOBILE_NETWORK_PACKAGE);
-        assertThat(componentName.getClassName()).isEqualTo(MOBILE_NETWORK_CLASS);
-    }
 }
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java
index d1a5e42..c4f1948 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java
@@ -33,19 +33,12 @@
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
-import android.view.Menu;
-import android.view.View;
 
 import androidx.test.core.app.ActivityScenario;
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.internal.telephony.TelephonyIntents;
-import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
-
-import com.google.android.material.bottomnavigation.BottomNavigationView;
 
 import org.junit.After;
 import org.junit.Before;
@@ -124,26 +117,10 @@
 
     private ActivityScenario<MobileNetworkActivity> createTargetActivity(Intent activityIntent,
             boolean isInternetV2) {
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, isInternetV2);
         return ActivityScenario.launch(activityIntent);
     }
 
     @Test
-    public void updateBottomNavigationView_oneSubscription_shouldBeGone() {
-        mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1);
-
-        mMobileNetworkActivity = createTargetActivity(mTestIntent, false);
-
-        mMobileNetworkActivity.moveToState(State.STARTED);
-
-        mMobileNetworkActivity.onActivity(activity -> {
-            final BottomNavigationView bottomNavigationView =
-                    activity.findViewById(R.id.bottom_nav);
-            assertThat(bottomNavigationView.getVisibility()).isEqualTo(View.GONE);
-        });
-    }
-
-    @Test
     public void updateBottomNavigationViewV2_oneSubscription_shouldNotCrash() {
         mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1);
 
@@ -153,22 +130,6 @@
     }
 
     @Test
-    public void updateBottomNavigationView_twoSubscription_updateMenu() {
-        mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1, mSubscriptionInfo2);
-
-        mMobileNetworkActivity = createTargetActivity(mTestIntent, false);
-
-        mMobileNetworkActivity.moveToState(State.STARTED);
-
-        mMobileNetworkActivity.onActivity(activity -> {
-            final BottomNavigationView bottomNavigationView =
-                    activity.findViewById(R.id.bottom_nav);
-            final Menu menu = bottomNavigationView.getMenu();
-            assertThat(menu.size()).isEqualTo(2);
-        });
-    }
-
-    @Test
     public void updateBottomNavigationViewV2_twoSubscription_shouldNotCrash() {
         mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1, mSubscriptionInfo2);
 
@@ -189,14 +150,6 @@
         mMobileNetworkActivity.onActivity(activity -> {
             final MockMobileNetworkActivity mockActivity = (MockMobileNetworkActivity) activity;
             assertThat(mockActivity.mSubscriptionInFragment).isEqualTo(mSubscriptionInfo1);
-
-            final BottomNavigationView bottomNavigationView =
-                    mockActivity.findViewById(R.id.bottom_nav);
-            bottomNavigationView.setSelectedItemId(CURRENT_SUB_ID);
-            assertThat(mockActivity.mSubscriptionInFragment).isEqualTo(mSubscriptionInfo2);
-
-            bottomNavigationView.setSelectedItemId(PREV_SUB_ID);
-            assertThat(mockActivity.mSubscriptionInFragment).isEqualTo(mSubscriptionInfo1);
         });
     }
 
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 4afe0fc..7ff3ab3 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java
@@ -36,9 +36,7 @@
 
 import androidx.fragment.app.FragmentActivity;
 
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.datausage.DataUsageSummaryPreferenceController;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
 import com.android.settings.widget.EntityHeaderController;
@@ -92,32 +90,13 @@
     }
 
     @Test
-    public void onAttach_noV2Flag_noCrash() {
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, false);
+    public void onAttach_noCrash() {
         mFragment.onAttach(mContext);
     }
 
-    @Test
-    public void onAttach_v2Flag_noCrash() {
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, true);
-        mFragment.onAttach(mContext);
-    }
 
     @Test
-    public void createPreferenceControllers_noV2Flag_noDataUsageSummaryController() {
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, false);
-        final List<AbstractPreferenceController> controllers =
-                mFragment.createPreferenceControllers(mContext);
-        assertThat(controllers.stream().filter(
-                c -> c.getClass().equals(DataUsageSummaryPreferenceController.class))
-                .count())
-                .isEqualTo(0);
-    }
-
-    @Test
-    public void createPreferenceControllers_v2Flag_createsDataUsageSummaryController() {
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, true);
-
+    public void createPreferenceControllers_createsDataUsageSummaryController() {
         final List<AbstractPreferenceController> controllers =
                 mFragment.createPreferenceControllers(mContext);
         assertThat(controllers.stream().filter(
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 1048acd..a320c6e 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java
@@ -19,7 +19,6 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
@@ -31,12 +30,11 @@
 import android.telephony.CarrierConfigManager;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.telephony.ims.ImsMmTelManager;
 
 import androidx.preference.Preference;
-import androidx.preference.PreferenceCategory;
 import androidx.preference.PreferenceScreen;
 
-import com.android.ims.ImsConfig;
 import com.android.ims.ImsManager;
 import com.android.internal.R;
 import com.android.settings.core.BasePreferenceController;
@@ -60,6 +58,8 @@
     @Mock
     private ImsManager mImsManager;
     @Mock
+    private ImsMmTelManager mImsMmTelManager;
+    @Mock
     private PreferenceScreen mPreferenceScreen;
 
     private WifiCallingPreferenceController mController;
@@ -77,7 +77,12 @@
         when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
 
         mPreference = new Preference(mContext);
-        mController = new WifiCallingPreferenceController(mContext, "wifi_calling");
+        mController = new WifiCallingPreferenceController(mContext, "wifi_calling") {
+            @Override
+            protected ImsMmTelManager getImsMmTelManager(int subId) {
+                return mImsMmTelManager;
+            }
+        };
         mController.mCarrierConfigManager = mCarrierConfigManager;
         mController.init(SUB_ID);
         mController.mImsManager = mImsManager;
@@ -94,8 +99,10 @@
     public void updateState_noSimCallManager_setCorrectSummary() {
         mController.mSimCallManager = null;
         when(mImsManager.isWfcEnabledByUser()).thenReturn(true);
-        when(mImsManager.getWfcMode(anyBoolean())).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY);
+        when(mImsMmTelManager.getVoWiFiRoamingModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_ONLY);
+        when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_ONLY);
 
         mController.updateState(mPreference);
 
@@ -129,10 +136,10 @@
         mController.init(SUB_ID);
         mController.mImsManager = mImsManager;
 
-        when(mImsManager.getWfcMode(true)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
-        when(mImsManager.getWfcMode(false)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED);
+        when(mImsMmTelManager.getVoWiFiRoamingModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
+        when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED);
         when(mImsManager.isWfcEnabledByUser()).thenReturn(true);
         when(mTelephonyManager.isNetworkRoaming()).thenReturn(true);
 
@@ -146,10 +153,10 @@
         assertNull(mController.mSimCallManager);
         // useWfcHomeModeForRoaming is false by default. In order to check wfc in roaming mode. We
         // need the device roaming, and not using home mode in roaming network.
-        when(mImsManager.getWfcMode(true)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
-        when(mImsManager.getWfcMode(false)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED);
+        when(mImsMmTelManager.getVoWiFiRoamingModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
+        when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED);
         when(mImsManager.isWfcEnabledByUser()).thenReturn(true);
         when(mTelephonyManager.isNetworkRoaming()).thenReturn(true);
 
@@ -169,7 +176,7 @@
 
     @Test
     public void displayPreference_available_setsSubscriptionIdOnIntent() {
-        Intent intent = new Intent();
+        final Intent intent = new Intent();
         mPreference.setIntent(intent);
         mController.displayPreference(mPreferenceScreen);
         assertThat(intent.getIntExtra(Settings.EXTRA_SUB_ID,
diff --git a/src/com/android/settings/search/DatabaseIndexingUtils.java b/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtils.java
similarity index 90%
rename from src/com/android/settings/search/DatabaseIndexingUtils.java
rename to tests/robotests/src/com/android/settings/search/DatabaseIndexingUtils.java
index 21936a0..0aa70ae 100644
--- a/src/com/android/settings/search/DatabaseIndexingUtils.java
+++ b/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtils.java
@@ -12,7 +12,6 @@
  * 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.search;
@@ -41,14 +40,14 @@
         } catch (NoSuchFieldException e) {
             Log.d(TAG, "Cannot find field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
         } catch (SecurityException se) {
-            Log.d(TAG, "Security exception for field '" +
-                    FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
+            Log.d(TAG,
+                    "Security exception for field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
         } catch (IllegalAccessException e) {
             Log.d(TAG, "Illegal access to field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
         } catch (IllegalArgumentException e) {
-            Log.d(TAG, "Illegal argument when accessing field '" +
-                    FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
+            Log.d(TAG, "Illegal argument when accessing field '"
+                    + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
         }
         return null;
     }
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/search/SearchIndexProviderCodeInspector.java b/tests/robotests/src/com/android/settings/search/SearchIndexProviderCodeInspector.java
index c75e3b1..9daac80 100644
--- a/tests/robotests/src/com/android/settings/search/SearchIndexProviderCodeInspector.java
+++ b/tests/robotests/src/com/android/settings/search/SearchIndexProviderCodeInspector.java
@@ -26,6 +26,7 @@
 import com.android.settings.core.codeinspection.CodeInspector;
 import com.android.settings.dashboard.DashboardFragmentSearchIndexProviderInspector;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 import com.android.settingslib.search.SearchIndexableResources;
 
 import org.robolectric.RuntimeEnvironment;
@@ -54,7 +55,7 @@
                     + " but these are not: \n";
     private static final String NOT_PROVIDING_VALID_RESOURCE_ERROR =
             "SearchIndexableProvider must either provide no resource to index, or valid ones. "
-            + "But the followings contain resource with xml id = 0\n";
+                    + "But the followings contain resource with xml id = 0\n";
 
     private final List<String> notImplementingIndexProviderGrandfatherList;
     private final List<String> notInSearchIndexableRegistryGrandfatherList;
@@ -79,6 +80,13 @@
         final Set<String> notInSearchProviderRegistry = new ArraySet<>();
         final Set<String> notSharingPreferenceControllers = new ArraySet<>();
         final Set<String> notProvidingValidResource = new ArraySet<>();
+        final Set<Class> providerClasses = new ArraySet<>();
+
+        final SearchFeatureProvider provider = new SearchFeatureProviderImpl();
+        for (SearchIndexableData bundle :
+                provider.getSearchIndexableResources().getProviderValues()) {
+            providerClasses.add(bundle.getTargetClass());
+        }
 
         for (Class clazz : mClasses) {
             if (!isConcreteSettingsClass(clazz)) {
@@ -108,8 +116,7 @@
                 continue;
             }
             // Must be in SearchProviderRegistry
-            SearchFeatureProvider provider = new SearchFeatureProviderImpl();
-            if (!provider.getSearchIndexableResources().getProviderValues().contains(clazz)) {
+            if (!providerClasses.contains(clazz)) {
                 if (!notInSearchIndexableRegistryGrandfatherList.remove(className)) {
                     notInSearchProviderRegistry.add(className);
                 }
diff --git a/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java b/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
index ff2acdc..5bcce57 100644
--- a/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
@@ -21,7 +21,6 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.junit.Assert.fail;
-
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
@@ -32,6 +31,7 @@
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.FakeIndexProvider;
 import com.android.settings.wifi.WifiSettings;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.junit.After;
 import org.junit.Before;
@@ -65,11 +65,11 @@
                 .doesNotContain(String.class);
         final int beforeCount =
                 mSearchProvider.getSearchIndexableResources().getProviderValues().size();
-
-        mSearchProvider.getSearchIndexableResources().addIndex(String.class);
+        final SearchIndexableData testBundle = new SearchIndexableData(null, null);
+        mSearchProvider.getSearchIndexableResources().addIndex(testBundle);
 
         assertThat(mSearchProvider.getSearchIndexableResources().getProviderValues())
-                .contains(String.class);
+                .contains(testBundle);
         final int afterCount =
                 mSearchProvider.getSearchIndexableResources().getProviderValues().size();
         assertThat(afterCount).isEqualTo(beforeCount + 1);
@@ -77,14 +77,22 @@
 
     @Test
     public void testIndexHasWifiSettings() {
-        assertThat(mSearchProvider.getSearchIndexableResources().getProviderValues())
-                .contains(WifiSettings.class);
+        boolean hasWifi = false;
+        for (SearchIndexableData bundle :
+                mSearchProvider.getSearchIndexableResources().getProviderValues()) {
+            if (bundle.getTargetClass().getName().equals(WifiSettings.class.getName())) {
+                hasWifi = true;
+                break;
+            }
+        }
+        assertThat(hasWifi).isTrue();
     }
 
     @Test
     public void testNonIndexableKeys_GetsKeyFromProvider() {
         mSearchProvider.getSearchIndexableResources().getProviderValues().clear();
-        mSearchProvider.getSearchIndexableResources().addIndex(FakeIndexProvider.class);
+        mSearchProvider.getSearchIndexableResources().addIndex(
+                new SearchIndexableData(null, FakeIndexProvider.SEARCH_INDEX_DATA_PROVIDER));
 
         SettingsSearchIndexablesProvider provider = spy(new SettingsSearchIndexablesProvider());
 
@@ -105,9 +113,10 @@
 
     @Test
     public void testAllClassNamesHaveProviders() {
-        for (Class clazz : mSearchProvider.getSearchIndexableResources().getProviderValues()) {
-            if (DatabaseIndexingUtils.getSearchIndexProvider(clazz) == null) {
-                fail(clazz.getName() + "is not an index provider");
+        for (SearchIndexableData data :
+                mSearchProvider.getSearchIndexableResources().getProviderValues()) {
+            if (DatabaseIndexingUtils.getSearchIndexProvider(data.getTargetClass()) == null) {
+                fail(data.getTargetClass().getName() + "is not an index provider");
             }
         }
     }
diff --git a/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java b/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
index 2a8407b..0db684e 100644
--- a/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
+++ b/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
@@ -13,6 +13,7 @@
 
 import com.android.settings.R;
 import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.junit.After;
 import org.junit.Before;
@@ -46,7 +47,8 @@
         final SearchFeatureProvider featureProvider = new SearchFeatureProviderImpl();
         featureProvider.getSearchIndexableResources().getProviderValues().clear();
         featureProvider.getSearchIndexableResources().getProviderValues()
-                .add(FakeSettingsFragment.class);
+                .add(new SearchIndexableData(FakeSettingsFragment.class,
+                        FakeSettingsFragment.SEARCH_INDEX_DATA_PROVIDER));
         mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
         mFakeFeatureFactory.searchFeatureProvider = featureProvider;
     }
diff --git a/tests/robotests/src/com/android/settings/slices/SliceControllerInXmlCodeInspector.java b/tests/robotests/src/com/android/settings/slices/SliceControllerInXmlCodeInspector.java
index 21944fc..72eae7d 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceControllerInXmlCodeInspector.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceControllerInXmlCodeInspector.java
@@ -31,11 +31,11 @@
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.core.codeinspection.CodeInspector;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settings.search.SearchFeatureProvider;
 import com.android.settings.search.SearchFeatureProviderImpl;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.robolectric.RuntimeEnvironment;
 import org.xmlpull.v1.XmlPullParserException;
@@ -146,13 +146,12 @@
     private List<Integer> getIndexableXml() {
         final List<Integer> xmlResSet = new ArrayList<>();
 
-        final Collection<Class> indexableClasses = FeatureFactory.getFactory(
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(
                 mContext).getSearchFeatureProvider().getSearchIndexableResources()
                 .getProviderValues();
 
-        for (Class clazz : indexableClasses) {
-            Indexable.SearchIndexProvider provider = DatabaseIndexingUtils.getSearchIndexProvider(
-                    clazz);
+        for (SearchIndexableData bundle : bundles) {
+            Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
 
             if (provider == null) {
                 continue;
diff --git a/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java b/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java
index 63da4d0..3ce964c 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java
@@ -37,6 +37,7 @@
 import com.android.settings.search.SearchFeatureProviderImpl;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.FakeIndexProvider;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.junit.After;
 import org.junit.Before;
@@ -92,7 +93,8 @@
     public void testFakeProvider_convertsFakeData() {
         mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
         mSearchFeatureProvider.getSearchIndexableResources().getProviderValues()
-                .add(FakeIndexProvider.class);
+                .add(new SearchIndexableData(FakeIndexProvider.class,
+                        FakeIndexProvider.SEARCH_INDEX_DATA_PROVIDER));
 
         doReturn(getFakeService()).when(mSliceDataConverter).getAccessibilityServiceInfoList();
 
diff --git a/tests/robotests/src/com/android/settings/slices/SlicesDatabaseAccessorTest.java b/tests/robotests/src/com/android/settings/slices/SlicesDatabaseAccessorTest.java
index bed5a27..a28dba8 100644
--- a/tests/robotests/src/com/android/settings/slices/SlicesDatabaseAccessorTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SlicesDatabaseAccessorTest.java
@@ -24,9 +24,7 @@
 import android.app.ApplicationPackageManager;
 import android.content.ComponentName;
 import android.content.ContentResolver;
-import android.content.ContentValues;
 import android.content.Context;
-import android.database.sqlite.SQLiteDatabase;
 import android.net.Uri;
 import android.provider.SettingsSlicesContract;
 import android.view.accessibility.AccessibilityManager;
@@ -40,6 +38,7 @@
 import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 import com.android.settings.testutils.shadow.ShadowUtils;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.junit.After;
 import org.junit.Before;
@@ -217,7 +216,8 @@
         // Fake the indexable list.
         provider.getSearchIndexableResources().getProviderValues().clear();
         provider.getSearchIndexableResources().getProviderValues().add(
-                FakeIndexProvider.class);
+                new SearchIndexableData(FakeIndexProvider.class,
+                        FakeIndexProvider.SEARCH_INDEX_DATA_PROVIDER));
 
         final SlicesDatabaseAccessor accessor = new SlicesDatabaseAccessor(mContext);
         final List<Uri> keys = accessor.getSliceUris(SettingsSliceProvider.SLICE_AUTHORITY);
diff --git a/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java
index 09ee615..3439ca4 100644
--- a/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java
@@ -27,11 +27,13 @@
 
 import android.content.Context;
 import android.graphics.SurfaceTexture;
+import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.TextureView;
 import android.view.View;
 import android.widget.ImageView;
 
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.settings.R;
@@ -45,6 +47,7 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
+import org.robolectric.shadows.androidx.fragment.FragmentController;
 
 @RunWith(RobolectricTestRunner.class)
 @Config(shadows = ShadowSettingsMediaPlayer.class)
@@ -135,4 +138,29 @@
         verify(fakePreview).setVisibility(eq(View.GONE));
         assertThat(mAnimationController.isPlaying()).isTrue();
     }
+
+    @Test
+    @Config(qualifiers = "mcc999")
+    public void onViewVisible_createAnimationController() {
+        final PreferenceFragmentCompat fragment = FragmentController.of(
+                new VideoPreferenceTest.TestFragment(),
+                new Bundle())
+                .create()
+                .start()
+                .resume()
+                .get();
+
+        final VideoPreference vp1 = fragment.findPreference("video1");
+        final VideoPreference vp2 = fragment.findPreference("video2");
+
+        assertThat(vp1.mAnimationController instanceof MediaAnimationController).isTrue();
+        assertThat(vp2.mAnimationController instanceof VectorAnimationController).isTrue();
+    }
+
+    public static class TestFragment extends PreferenceFragmentCompat {
+        @Override
+        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+            addPreferencesFromResource(R.xml.video_preference);
+        }
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
index 6fc2551..410c072 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
@@ -17,11 +17,12 @@
 package com.android.settings.wifi.calling;
 
 import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT;
+
 import static com.google.common.truth.Truth.assertThat;
 
 import static junit.framework.Assert.assertEquals;
+
 import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyBoolean;
 import static org.mockito.Matchers.anyInt;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doNothing;
@@ -42,6 +43,7 @@
 import android.os.PersistableBundle;
 import android.telephony.CarrierConfigManager;
 import android.telephony.TelephonyManager;
+import android.telephony.ims.ImsMmTelManager;
 import android.telephony.ims.ProvisioningManager;
 import android.view.View;
 import android.widget.TextView;
@@ -53,8 +55,6 @@
 import com.android.ims.ImsManager;
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
-import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.testutils.shadow.SettingsShadowResources;
 import com.android.settings.testutils.shadow.ShadowFragment;
 import com.android.settings.widget.SwitchBar;
 import com.android.settings.widget.ToggleSwitch;
@@ -67,8 +67,8 @@
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
-import org.robolectric.util.ReflectionHelpers;
 import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
 
 @Config(shadows = ShadowFragment.class)
 @RunWith(RobolectricTestRunner.class)
@@ -86,6 +86,7 @@
     @Mock private static CarrierConfigManager sCarrierConfigManager;
     @Mock private CarrierConfigManager mMockConfigManager;
     @Mock private ImsManager mImsManager;
+    @Mock private ImsMmTelManager mImsMmTelManager;
     @Mock private TelephonyManager mTelephonyManager;
     @Mock private PreferenceScreen mPreferenceScreen;
     @Mock private SettingsActivity mActivity;
@@ -127,12 +128,15 @@
         doReturn(mSwitchBar).when(mView).findViewById(R.id.switch_bar);
 
         doReturn(mImsManager).when(mFragment).getImsManager();
+        doReturn(mImsMmTelManager).when(mFragment).getImsMmTelManager();
         doReturn(mImsConfig).when(mImsManager).getConfigInterface();
         doReturn(true).when(mImsManager).isWfcProvisionedOnDevice();
         doReturn(true).when(mImsManager).isWfcEnabledByUser();
         doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager).getWfcMode(anyBoolean());
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager).getVoWiFiModeSetting();
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager).getVoWiFiRoamingModeSetting();
 
         doReturn(mBundle).when(sCarrierConfigManager).getConfigForSubId(anyInt());
         setDefaultCarrierConfigValues();
@@ -251,15 +255,13 @@
 
         // Set the WFC home mode.
         mFragment.onPreferenceChange(mButtonWfcMode,
-                String.valueOf(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED));
+                String.valueOf(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
 
         // Check that only WFC home mode is set.
-        verify(mImsManager, times(1)).setWfcMode(
-                eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED),
-                eq(false));
-        verify(mImsManager, never()).setWfcMode(
-                eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED),
-                eq(true));
+        verify(mImsMmTelManager, times(1)).setVoWiFiModeSetting(
+                eq(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
+        verify(mImsMmTelManager, never()).setVoWiFiRoamingModeSetting(
+                eq(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
     }
 
     @Test
@@ -272,34 +274,32 @@
 
         // Set the WFC home mode.
         mFragment.onPreferenceChange(mButtonWfcMode,
-                String.valueOf(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED));
+                String.valueOf(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
 
         // Check that both WFC home mode and roaming mode are set.
-        verify(mImsManager, times(1)).setWfcMode(
-                eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED),
-                eq(false));
-        verify(mImsManager, times(1)).setWfcMode(
-                eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED),
-                eq(true));
+        verify(mImsMmTelManager, times(1)).setVoWiFiModeSetting(
+                eq(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
+        verify(mImsMmTelManager, times(1)).setVoWiFiRoamingModeSetting(
+                eq(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
     }
 
     @Test
     public void onSwitchChanged_enableSetting_shouldLaunchWfcDisclaimerFragment() {
-        ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
 
         mFragment.onSwitchChanged(null, true);
 
         // Check the WFC disclaimer fragment is launched.
         verify(mFragment).startActivityForResult(intentCaptor.capture(),
                 eq(WifiCallingSettingsForSub.REQUEST_CHECK_WFC_DISCLAIMER));
-        Intent intent = intentCaptor.getValue();
+        final Intent intent = intentCaptor.getValue();
         assertThat(intent.getStringExtra(EXTRA_SHOW_FRAGMENT))
                 .isEqualTo(WifiCallingDisclaimerFragment.class.getName());
     }
 
     @Test
     public void onActivityResult_finishWfcDisclaimerFragment_shouldLaunchCarrierActivity() {
-        ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
 
         // Emulate the WfcDisclaimerActivity finish.
         mFragment.onActivityResult(WifiCallingSettingsForSub.REQUEST_CHECK_WFC_DISCLAIMER,
@@ -308,7 +308,7 @@
         // Check the WFC emergency address activity is launched.
         verify(mFragment).startActivityForResult(intentCaptor.capture(),
                 eq(WifiCallingSettingsForSub.REQUEST_CHECK_WFC_EMERGENCY_ADDRESS));
-        Intent intent = intentCaptor.getValue();
+        final Intent intent = intentCaptor.getValue();
         assertEquals(intent.getComponent(), ComponentName.unflattenFromString(
                 TEST_EMERGENCY_ADDRESS_CARRIER_APP));
     }
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java
index 644e5e8..a22a18d 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java
@@ -22,7 +22,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
@@ -32,6 +31,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.telephony.CarrierConfigManager;
+import android.telephony.ims.ImsMmTelManager;
 
 import androidx.slice.Slice;
 import androidx.slice.SliceItem;
@@ -44,7 +44,6 @@
 import androidx.slice.widget.SliceContent;
 import androidx.slice.widget.SliceLiveData;
 
-import com.android.ims.ImsConfig;
 import com.android.ims.ImsManager;
 import com.android.settings.R;
 import com.android.settings.slices.CustomSliceRegistry;
@@ -76,6 +75,9 @@
     @Mock
     private ImsManager mMockImsManager;
 
+    @Mock
+    private ImsMmTelManager mMockImsMmTelManager;
+
     private FakeWifiCallingSliceHelper mWfcSliceHelper;
     private SettingsSliceProvider mProvider;
     private SliceBroadcastReceiver mReceiver;
@@ -189,10 +191,10 @@
                 .thenReturn(mWfcSliceHelper);
         mWfcSliceHelper.setActivationAppIntent(null);
 
-        ArgumentCaptor<Boolean> mWfcSettingCaptor = ArgumentCaptor.forClass(Boolean.class);
+        final ArgumentCaptor<Boolean> mWfcSettingCaptor = ArgumentCaptor.forClass(Boolean.class);
 
         // turn on Wifi calling setting
-        Intent intent = new Intent(WifiCallingSliceHelper.ACTION_WIFI_CALLING_CHANGED);
+        final Intent intent = new Intent(WifiCallingSliceHelper.ACTION_WIFI_CALLING_CHANGED);
         intent.putExtra(EXTRA_TOGGLE_STATE, true);
 
         // change the setting
@@ -242,8 +244,8 @@
         when(mMockImsManager.isWfcProvisionedOnDevice()).thenReturn(true);
         when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true);
         when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
-        when(mMockImsManager.getWfcMode(false)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
+        when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
         mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
 
         final Slice slice = mWfcSliceHelper.createWifiCallingPreferenceSlice(
@@ -260,8 +262,8 @@
         when(mMockImsManager.isWfcProvisionedOnDevice()).thenReturn(true);
         when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true);
         when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
-        when(mMockImsManager.getWfcMode(false)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
+        when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
         when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext))
                 .thenReturn(mWfcSliceHelper);
         mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
@@ -279,25 +281,26 @@
         when(mMockImsManager.isWfcProvisionedOnDevice()).thenReturn(true);
         when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true);
         when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
-        when(mMockImsManager.getWfcMode(false)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
+        when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
         when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext))
                 .thenReturn(mWfcSliceHelper);
         mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
 
-        ArgumentCaptor<Integer> mWfcPreferenceCaptor = ArgumentCaptor.forClass(Integer.class);
+        final ArgumentCaptor<Integer> mWfcPreferenceCaptor =
+                ArgumentCaptor.forClass(Integer.class);
 
         // Change preference to Cellular pref
-        Intent intent = new Intent(
+        final Intent intent = new Intent(
                 WifiCallingSliceHelper.ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED);
 
         mReceiver.onReceive(mContext, intent);
 
-        verify((mMockImsManager)).setWfcMode(mWfcPreferenceCaptor.capture(), eq(false));
+        verify((mMockImsMmTelManager)).setVoWiFiModeSetting(mWfcPreferenceCaptor.capture());
 
         // assert the change
         assertThat(mWfcPreferenceCaptor.getValue()).isEqualTo(
-                ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED);
+                ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED);
     }
 
     private void testWifiCallingSettingsUnavailableSlice(Slice slice,
@@ -400,7 +403,7 @@
     private void assertTitle(List<SliceItem> sliceItems, String title) {
         boolean hasTitle = false;
         for (SliceItem item : sliceItems) {
-            List<SliceItem> titleItems = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE,
+            final List<SliceItem> titleItems = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE,
                     null /* non-hints */);
             if (titleItems == null) {
                 continue;
@@ -434,6 +437,11 @@
             return mMockImsManager;
         }
 
+        @Override
+        protected ImsMmTelManager getImsMmTelManager(int subId) {
+            return mMockImsMmTelManager;
+        }
+
         protected int getDefaultVoiceSubId() {
             return mSubId;
         }
diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
index 81ac064..3ba7738 100644
--- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
@@ -69,8 +69,6 @@
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.R;
 import com.android.settings.Utils;
-import com.android.settings.core.FeatureFlags;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
 import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
 import com.android.settings.widget.EntityHeaderController;
@@ -1131,24 +1129,7 @@
     }
 
     @Test
-    public void forgetNetwork_v1_Passpoint() {
-        setUpForConnectedNetwork();
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, false);
-
-        mockWifiConfig.networkId = 5;
-        when(mockAccessPoint.isPasspoint()).thenReturn(true);
-        when(mockAccessPoint.getPasspointFqdn()).thenReturn(FQDN);
-
-        mController.displayPreference(mockScreen);
-        mForgetClickListener.getValue().onClick(null);
-
-        verify(mockWifiManager).removePasspointConfiguration(FQDN);
-        verify(mockMetricsFeatureProvider)
-                .action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_FORGET);
-    }
-
-    @Test
-    public void forgetNetwork_PasspointV2_shouldShowDialog() {
+    public void forgetNetwork_shouldShowDialog() {
         setUpForConnectedNetwork();
         final WifiDetailPreferenceController spyController = spy(mController);
 
@@ -1156,7 +1137,6 @@
         when(mockAccessPoint.isPasspoint()).thenReturn(true);
         when(mockAccessPoint.getPasspointFqdn()).thenReturn(FQDN);
         spyController.displayPreference(mockScreen);
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, true);
 
         mForgetClickListener.getValue().onClick(null);
 
diff --git a/tests/unit/src/com/android/settings/core/PreferenceControllerContractTest.java b/tests/unit/src/com/android/settings/core/PreferenceControllerContractTest.java
index 3fcccf6..2d083f0 100644
--- a/tests/unit/src/com/android/settings/core/PreferenceControllerContractTest.java
+++ b/tests/unit/src/com/android/settings/core/PreferenceControllerContractTest.java
@@ -29,8 +29,8 @@
 
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.search.SearchIndexableData;
 import com.android.settingslib.search.SearchIndexableResources;
 
 import org.junit.Before;
@@ -60,10 +60,10 @@
         final SearchIndexableResources resources =
                 FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
                         .getSearchIndexableResources();
-        for (Class<?> clazz : resources.getProviderValues()) {
+        for (SearchIndexableData bundle : resources.getProviderValues()) {
 
             final BaseSearchIndexProvider provider =
-                    (BaseSearchIndexProvider) DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+                    (BaseSearchIndexProvider) bundle.getSearchIndexProvider();
             if (provider == null) {
                 continue;
             }
diff --git a/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java b/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java
index 251c512..9ed1c91 100644
--- a/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java
+++ b/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java
@@ -32,8 +32,8 @@
 
 import com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 import com.android.settingslib.search.SearchIndexableRaw;
 import com.android.settingslib.search.SearchIndexableResources;
 
@@ -120,8 +120,8 @@
         final SearchIndexableResources resources =
                 FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
                         .getSearchIndexableResources();
-        for (Class<?> clazz : resources.getProviderValues()) {
-            verifyPreferenceKeys(uniqueKeys, duplicatedKeys, nullKeyClasses, clazz);
+        for (SearchIndexableData SearchIndexableData : resources.getProviderValues()) {
+            verifyPreferenceKeys(uniqueKeys, duplicatedKeys, nullKeyClasses, SearchIndexableData);
         }
 
         if (!nullKeyClasses.isEmpty()) {
@@ -145,14 +145,12 @@
     }
 
     private void verifyPreferenceKeys(Set<String> uniqueKeys, Set<String> duplicatedKeys,
-            Set<String> nullKeyClasses, Class<?> clazz)
+            Set<String> nullKeyClasses, SearchIndexableData searchIndexableData)
             throws IOException, XmlPullParserException, Resources.NotFoundException {
-        if (clazz == null) {
-            return;
-        }
-        final String className = clazz.getName();
+
+        final String className = searchIndexableData.getTargetClass().getName();
         final Indexable.SearchIndexProvider provider =
-                DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+                searchIndexableData.getSearchIndexProvider();
         final List<SearchIndexableRaw> rawsToIndex = provider.getRawDataToIndex(mContext, true);
         final List<SearchIndexableResource> resourcesToIndex =
                 provider.getXmlResourcesToIndex(mContext, true);
diff --git a/tests/unit/src/com/android/settings/core/UserRestrictionTest.java b/tests/unit/src/com/android/settings/core/UserRestrictionTest.java
index 0f5260a..e8e4927 100644
--- a/tests/unit/src/com/android/settings/core/UserRestrictionTest.java
+++ b/tests/unit/src/com/android/settings/core/UserRestrictionTest.java
@@ -33,8 +33,8 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 import com.android.settingslib.search.SearchIndexableResources;
 
 import com.google.android.collect.Sets;
@@ -84,22 +84,21 @@
         final SearchIndexableResources resources =
                 FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
                         .getSearchIndexableResources();
-        for (Class<?> clazz : resources.getProviderValues()) {
-            verifyUserRestriction(clazz);
+        for (SearchIndexableData bundle : resources.getProviderValues()) {
+            verifyUserRestriction(bundle);
         }
     }
 
-    private void verifyUserRestriction(Class<?> clazz)
+    private void verifyUserRestriction(SearchIndexableData searchIndexableData)
             throws IOException, XmlPullParserException, Resources.NotFoundException {
-        if (clazz == null) {
-            return;
-        }
-        final String className = clazz.getName();
+
         final Indexable.SearchIndexProvider provider =
-                DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+                searchIndexableData.getSearchIndexProvider();
         final List<SearchIndexableResource> resourcesToIndex =
                 provider.getXmlResourcesToIndex(mContext, true);
 
+        final String className = searchIndexableData.getTargetClass().getName();
+
         if (resourcesToIndex == null) {
             Log.d(TAG, className + "is not providing SearchIndexableResource, skipping");
             return;
diff --git a/tests/unit/src/com/android/settings/slices/SliceDataContractTest.java b/tests/unit/src/com/android/settings/slices/SliceDataContractTest.java
index 7e5a8b0..61629e9 100644
--- a/tests/unit/src/com/android/settings/slices/SliceDataContractTest.java
+++ b/tests/unit/src/com/android/settings/slices/SliceDataContractTest.java
@@ -31,8 +31,8 @@
 
 import com.android.settings.core.PreferenceXmlParserUtils;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 import com.android.settingslib.search.SearchIndexableResources;
 
 import org.junit.Before;
@@ -67,8 +67,8 @@
                 FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
                         .getSearchIndexableResources();
 
-        for (Class<?> clazz : resources.getProviderValues()) {
-            verifyPreferenceTitle(nullTitleFragments, clazz);
+        for (SearchIndexableData SearchIndexableData : resources.getProviderValues()) {
+            verifyPreferenceTitle(nullTitleFragments, SearchIndexableData);
         }
 
         if (!nullTitleFragments.isEmpty()) {
@@ -82,14 +82,13 @@
         }
     }
 
-    private void verifyPreferenceTitle(Set<String> nullTitleFragments, Class<?> clazz)
+    private void verifyPreferenceTitle(Set<String> nullTitleFragments,
+            SearchIndexableData searchIndexableData)
             throws IOException, XmlPullParserException {
-        if (clazz == null) {
-            return;
-        }
-        final String className = clazz.getName();
+
+        final String className = searchIndexableData.getTargetClass().getName();
         final Indexable.SearchIndexProvider provider =
-                DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+                searchIndexableData.getSearchIndexProvider();
 
         final List<SearchIndexableResource> resourcesToIndex =
                 provider.getXmlResourcesToIndex(mContext, true);
diff --git a/tests/unit/src/com/android/settings/wifi/WifiCallingSettingUiTest.java b/tests/unit/src/com/android/settings/wifi/WifiCallingSettingUiTest.java
index 3198914..c8a38f9 100644
--- a/tests/unit/src/com/android/settings/wifi/WifiCallingSettingUiTest.java
+++ b/tests/unit/src/com/android/settings/wifi/WifiCallingSettingUiTest.java
@@ -28,7 +28,6 @@
 import static org.hamcrest.CoreMatchers.anything;
 import static org.junit.Assert.assertEquals;
 import static org.junit.matchers.JUnitMatchers.containsString;
-import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.doReturn;
 
@@ -38,13 +37,13 @@
 import android.content.Intent;
 import android.support.test.uiautomator.UiDevice;
 import android.telephony.SubscriptionInfo;
+import android.telephony.ims.ImsMmTelManager;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.espresso.NoMatchingViewException;
 import androidx.test.espresso.ViewInteraction;
 import androidx.test.runner.AndroidJUnit4;
 
-import com.android.ims.ImsConfig;
 import com.android.ims.ImsManager;
 import com.android.internal.telephony.SubscriptionController;
 import com.android.settings.testutils.MockedServiceManager;
@@ -87,6 +86,10 @@
     ImsManager mImsManager0;
     @Mock
     ImsManager mImsManager1;
+    @Mock
+    ImsMmTelManager mImsMmTelManager0;
+    @Mock
+    ImsMmTelManager mImsMmTelManager1;
 
     @Before
     public void setUp() throws Exception {
@@ -134,10 +137,10 @@
     public void testSingleSimUi() throws InterruptedException {
         configureSingleSim();
         doReturn(true).when(mImsManager0).isWfcEnabledByUser();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager0).getWfcMode();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager0).getWfcMode(anyBoolean());
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiModeSetting();
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
 
         mInstrumentation.startActivitySync(createActivityIntent());
 
@@ -179,10 +182,10 @@
         doReturn(false).when(mImsManager1).isWfcEnabledByPlatform();
         doReturn(false).when(mImsManager1).isNonTtyOrTtyOnVolteEnabled();
         doReturn(false).when(mImsManager0).isWfcEnabledByUser();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager0).getWfcMode();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager0).getWfcMode(anyBoolean());
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiModeSetting();
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
 
         Activity activity = mInstrumentation.startActivitySync(createActivityIntent());
 
@@ -198,10 +201,10 @@
     public void testWfcDisabled() throws InterruptedException {
         configureSingleSim();
         doReturn(false).when(mImsManager0).isWfcEnabledByUser();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager0).getWfcMode();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager0).getWfcMode(anyBoolean());
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiModeSetting();
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
 
         Activity activity = mInstrumentation.startActivitySync(createActivityIntent());
 
@@ -218,10 +221,10 @@
         configureDualSim();
         doReturn(true).when(mImsManager0).isWfcEnabledByUser();
         doReturn(false).when(mImsManager1).isWfcEnabledByUser();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED)
-                .when(mImsManager0).getWfcMode();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED)
-                .when(mImsManager0).getWfcMode(anyBoolean());
+        doReturn(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiModeSetting();
+        doReturn(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
 
         mInstrumentation.startActivitySync(createActivityIntent());
 
@@ -256,6 +259,7 @@
                 com.android.settings.Settings.WifiCallingSettingsActivity.class);
         intent.setPackage("com.android.settings");
         intent.setAction("android.intent.action.MAIN");
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         return intent;
     }