Merge "Improve flicker when enter Security page" into sc-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 0a40c89..570b53d 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -713,7 +713,8 @@
         <activity
             android:name="Settings$ManageAssistActivity"
             android:exported="true"
-            android:label="@string/assist_and_voice_input_title">
+            android:label="@string/assist_and_voice_input_title"
+            android:theme="@style/Theme.SubSettings">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.VOICE_INPUT_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
diff --git a/src/com/android/settings/network/telephony/BackupCallingPreferenceController.java b/src/com/android/settings/network/telephony/BackupCallingPreferenceController.java
index d1c9f7b..4f64399 100644
--- a/src/com/android/settings/network/telephony/BackupCallingPreferenceController.java
+++ b/src/com/android/settings/network/telephony/BackupCallingPreferenceController.java
@@ -31,6 +31,7 @@
 
 import com.android.settings.R;
 import com.android.settings.network.SubscriptionUtil;
+import com.android.settings.network.ims.WifiCallingQueryImsState;
 
 import java.util.List;
 import java.util.Objects;
@@ -147,16 +148,20 @@
     }
 
     private boolean hasBackupCallingFeature(int subscriptionId) {
-        PersistableBundle carrierConfig = getCarrierConfigForSubId(subscriptionId);
-        Boolean featureEnableStatus = null;
-        if (carrierConfig != null) {
-            featureEnableStatus = carrierConfig.getBoolean(
-                    CarrierConfigManager.KEY_CARRIER_CROSS_SIM_IMS_AVAILABLE_BOOL, false);
+        return isCrossSimEnabledByPlatform(mContext, subscriptionId);
+    }
+
+    protected boolean isCrossSimEnabledByPlatform(Context context, int subscriptionId) {
+        // TODO : Change into API which created for accessing
+        //        com.android.ims.ImsManager#isCrossSimEnabledByPlatform()
+        if ((new WifiCallingQueryImsState(context, subscriptionId)).isWifiCallingSupported()) {
+            PersistableBundle bundle = getCarrierConfigForSubId(subscriptionId);
+            return (bundle != null) && bundle.getBoolean(
+                    CarrierConfigManager.KEY_CARRIER_CROSS_SIM_IMS_AVAILABLE_BOOL,
+                    false /*default*/);
         }
-        // TODO: remove log after fixing b/182326102
-        Log.d(LOG_TAG, "config " + CarrierConfigManager.KEY_CARRIER_CROSS_SIM_IMS_AVAILABLE_BOOL
-                + "=" + featureEnableStatus + " for subId=" + subscriptionId);
-        return (featureEnableStatus != null) && featureEnableStatus.booleanValue();
+        Log.d(LOG_TAG, "Not supported by framework. subId = " + subscriptionId);
+        return false;
     }
 
     private ImsMmTelManager getImsMmTelManager(int subId) {
diff --git a/src/com/android/settings/panel/PanelFeatureProviderImpl.java b/src/com/android/settings/panel/PanelFeatureProviderImpl.java
index 28c4ba1..ca30952 100644
--- a/src/com/android/settings/panel/PanelFeatureProviderImpl.java
+++ b/src/com/android/settings/panel/PanelFeatureProviderImpl.java
@@ -20,8 +20,6 @@
 import android.os.Bundle;
 import android.provider.Settings;
 
-import com.android.settings.Utils;
-
 public class PanelFeatureProviderImpl implements PanelFeatureProvider {
 
     @Override
@@ -41,9 +39,6 @@
             case Settings.Panel.ACTION_NFC:
                 return NfcPanel.create(context);
             case Settings.Panel.ACTION_WIFI:
-                if (Utils.isProviderModelEnabled(context)) {
-                    return InternetConnectivityPanel.create(context);
-                }
                 return WifiPanel.create(context);
             case Settings.Panel.ACTION_VOLUME:
                 return VolumePanel.create(context);
diff --git a/tests/unit/src/com/android/settings/panel/PanelFeatureProviderImplTest.java b/tests/unit/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
index 2199023..3b61a73 100644
--- a/tests/unit/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
+++ b/tests/unit/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
@@ -27,10 +27,7 @@
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
-import com.android.settings.testutils.FeatureFlagUtilsRule;
-
 import org.junit.Before;
-import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -39,9 +36,6 @@
 
     private static final String TEST_PACKAGENAME = "com.test.packagename";
 
-    @Rule
-    public final FeatureFlagUtilsRule mFeatureFlagUtilsRule = new FeatureFlagUtilsRule();
-
     private Context mContext;
     private PanelFeatureProviderImpl mProvider;
     private Bundle mBundle;
@@ -71,24 +65,4 @@
 
         assertThat(panel).isInstanceOf(VolumePanel.class);
     }
-
-    @Test
-    public void getPanel_wifi_returnsWifiPanelWhenProviderModelDisable() {
-        mFeatureFlagUtilsRule.setProviderModelEnabled(false);
-        mBundle.putString(KEY_PANEL_TYPE_ARGUMENT, Settings.Panel.ACTION_WIFI);
-
-        final PanelContent panel = mProvider.getPanel(mContext, mBundle);
-
-        assertThat(panel).isInstanceOf(WifiPanel.class);
-    }
-
-    @Test
-    public void getPanel_wifi_returnsInternetConnectivityPanelWhenProviderModelDisable() {
-        mFeatureFlagUtilsRule.setProviderModelEnabled(true);
-        mBundle.putString(KEY_PANEL_TYPE_ARGUMENT, Settings.Panel.ACTION_WIFI);
-
-        final PanelContent panel = mProvider.getPanel(mContext, mBundle);
-
-        assertThat(panel).isInstanceOf(InternetConnectivityPanel.class);
-    }
 }
diff --git a/tests/unit/src/com/android/settings/testutils/FeatureFlagUtilsRule.java b/tests/unit/src/com/android/settings/testutils/FeatureFlagUtilsRule.java
deleted file mode 100644
index 910073e..0000000
--- a/tests/unit/src/com/android/settings/testutils/FeatureFlagUtilsRule.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.testutils;
-
-import android.content.Context;
-import android.util.FeatureFlagUtils;
-
-import androidx.test.core.app.ApplicationProvider;
-
-import org.junit.rules.ExternalResource;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * A test rule that is used to automatically recover the FeatureFlagUtils resource after testing.
- *
- * Example:
- * <pre class="code"><code class="java">
- * public class ExampleTest {
- *
- *     &#064;Rule
- *     public final FeatureFlagUtilsRule mFeatureFlagUtilsRule = new FeatureFlagUtilsRule();
- *
- * }
- * </code></pre>
- */
-public class FeatureFlagUtilsRule extends ExternalResource {
-
-    private Context mContext;
-    private Map<String, Boolean> mBackupFeatureFlags = new HashMap<String, Boolean>();
-
-    @Override
-    protected void before() throws Throwable {
-        mContext = ApplicationProvider.getApplicationContext();
-    }
-
-    @Override
-    protected void after() {
-        mBackupFeatureFlags.forEach((k, v) -> FeatureFlagUtils.setEnabled(mContext, k, v));
-    }
-
-    public void setEnabled(String feature, boolean enabled) {
-        if (enabled == FeatureFlagUtils.isEnabled(mContext, feature)) {
-            return;
-        }
-        mBackupFeatureFlags.putIfAbsent(feature, !enabled);
-        FeatureFlagUtils.setEnabled(mContext, feature, enabled);
-    }
-
-    public void setProviderModelEnabled(boolean enabled) {
-        setEnabled(FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, enabled);
-    }
-}