diff --git a/AndroidManifest.xml b/AndroidManifest.xml index cb1d9e3d993..a2268120a23 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -190,6 +190,7 @@ - @@ -318,12 +314,16 @@ android:icon="@drawable/ic_homepage_network" android:exported="true" android:configChanges="orientation|keyboardHidden|screenSize"> + + + + + android:value="com.android.settings.network.NetworkProviderSettings"/> + android:value="@string/menu_key_network"/> + android:value="true"/> @@ -334,9 +334,11 @@ android:icon="@drawable/ic_homepage_network" android:exported="true"> + android:value="com.android.settings.network.NetworkProviderSettings"/> + android:value="@string/menu_key_network"/> + - - + + - - - - - - + + + android:value="com.android.settings.network.NetworkProviderSettings"/> + android:value="@string/menu_key_network"/> - - - - - + android:value="true"/> diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index cd87424f447..39ff8f37d6d 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -89,9 +89,7 @@ public class Settings extends SettingsActivity { public static class PrivateVolumeForgetActivity extends SettingsActivity { /* empty */ } public static class PublicVolumeSettingsActivity extends SettingsActivity { /* empty */ } public static class WifiSettingsActivity extends SettingsActivity { /* empty */ } - public static class WifiSettings2Activity extends SettingsActivity { /* empty */ } public static class NetworkProviderSettingsActivity extends SettingsActivity { /* empty */ } - public static class NetworkSelectActivity extends SettingsActivity { /* empty */ } /** Activity for the Wi-Fi network details settings. */ public static class WifiDetailsSettingsActivity extends SettingsActivity { /* empty */ } public static class WifiP2pSettingsActivity extends SettingsActivity { /* empty */ } diff --git a/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java index 7894c6e2789..10a0bce5c5a 100644 --- a/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java +++ b/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java @@ -63,6 +63,9 @@ public class AccessibilityScreenSizeForSetupWizardActivity extends InstrumentedA int SCREEN_SIZE = 2; } + // Keep the last height of the scroll view in the {@link GlifLayout} + private int mLastScrollViewHeight; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -143,11 +146,13 @@ public class AccessibilityScreenSizeForSetupWizardActivity extends InstrumentedA * Scrolls to bottom while {@link ScrollView} layout changed. */ private void scrollToBottom() { + mLastScrollViewHeight = 0; final GlifLayout layout = findViewById(R.id.setup_wizard_layout); final ScrollView scrollView = layout.getScrollView(); scrollView.getViewTreeObserver().addOnGlobalLayoutListener(() -> { final int scrollViewHeight = scrollView.getHeight(); - if (scrollViewHeight > 0) { + if (scrollViewHeight > 0 && scrollViewHeight != mLastScrollViewHeight) { + mLastScrollViewHeight = scrollViewHeight; scrollView.post(() -> { // Here is no need to show the scrolling animation. So disabled first and // then enabled it after scrolling finished. diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java index bb84d01ea6a..6897a094816 100644 --- a/src/com/android/settings/core/gateway/SettingsGateway.java +++ b/src/com/android/settings/core/gateway/SettingsGateway.java @@ -120,7 +120,6 @@ import com.android.settings.network.NetworkDashboardFragment; import com.android.settings.network.NetworkProviderSettings; import com.android.settings.network.apn.ApnEditor; import com.android.settings.network.apn.ApnSettings; -import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.nfc.AndroidBeam; import com.android.settings.nfc.PaymentSettings; import com.android.settings.notification.ConfigureNotificationSettings; @@ -320,7 +319,6 @@ public class SettingsGateway { InteractAcrossProfilesDetails.class.getName(), MediaControlsSettings.class.getName(), NetworkProviderSettings.class.getName(), - NetworkSelectSettings.class.getName(), AlarmsAndRemindersDetails.class.getName(), MediaManagementAppsDetails.class.getName(), AutoBrightnessSettings.class.getName() @@ -345,7 +343,6 @@ public class SettingsGateway { Settings.WifiSettingsActivity.class.getName(), Settings.DataUsageSummaryActivity.class.getName(), Settings.NetworkProviderSettingsActivity.class.getName(), - Settings.NetworkSelectActivity.class.getName(), // Home page > Connected devices Settings.BluetoothSettingsActivity.class.getName(), Settings.WifiDisplaySettingsActivity.class.getName(), diff --git a/src/com/android/settings/datausage/BillingCycleSettings.java b/src/com/android/settings/datausage/BillingCycleSettings.java index 8c433a061a6..57931c1b36b 100644 --- a/src/com/android/settings/datausage/BillingCycleSettings.java +++ b/src/com/android/settings/datausage/BillingCycleSettings.java @@ -271,12 +271,14 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements mView = dialogInflater.inflate(R.layout.data_usage_bytes_editor, null, false); setupPicker((EditText) mView.findViewById(R.id.bytes), (Spinner) mView.findViewById(R.id.size_spinner)); - return new AlertDialog.Builder(context) + Dialog dialog = new AlertDialog.Builder(context) .setTitle(isLimit ? R.string.data_usage_limit_editor_title : R.string.data_usage_warning_editor_title) .setView(mView) .setPositiveButton(R.string.data_usage_cycle_editor_positive, this) .create(); + dialog.setCanceledOnTouchOutside(false); + return dialog; } private void setupPicker(EditText bytesPicker, Spinner type) { @@ -402,10 +404,12 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements mCycleDayPicker.setValue(cycleDay); mCycleDayPicker.setWrapSelectorWheel(true); - return builder.setTitle(R.string.data_usage_cycle_editor_title) + Dialog dialog = builder.setTitle(R.string.data_usage_cycle_editor_title) .setView(view) .setPositiveButton(R.string.data_usage_cycle_editor_positive, this) .create(); + dialog.setCanceledOnTouchOutside(false); + return dialog; } @Override @@ -466,12 +470,14 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements public Dialog onCreateDialog(Bundle savedInstanceState) { final Context context = getActivity(); - return new AlertDialog.Builder(context) + Dialog dialog = new AlertDialog.Builder(context) .setTitle(R.string.data_usage_limit_dialog_title) .setMessage(R.string.data_usage_limit_dialog_mobile) .setPositiveButton(android.R.string.ok, this) .setNegativeButton(android.R.string.cancel, null) .create(); + dialog.setCanceledOnTouchOutside(false); + return dialog; } @Override diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardsFragment.java b/src/com/android/settings/homepage/contextualcards/ContextualCardsFragment.java index 3b75ebf420e..fb879bacc5a 100644 --- a/src/com/android/settings/homepage/contextualcards/ContextualCardsFragment.java +++ b/src/com/android/settings/homepage/contextualcards/ContextualCardsFragment.java @@ -129,7 +129,7 @@ public class ContextualCardsFragment extends InstrumentedFragment implements private void registerKeyEventReceiver() { getActivity().registerReceiver(mKeyEventReceiver, - new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); + new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS), Context.RECEIVER_EXPORTED); } private void unregisterKeyEventReceiver() { diff --git a/src/com/android/settings/network/telephony/EuiccOperationSidecar.java b/src/com/android/settings/network/telephony/EuiccOperationSidecar.java index 0ee6d95fa83..05c866e7e9a 100644 --- a/src/com/android/settings/network/telephony/EuiccOperationSidecar.java +++ b/src/com/android/settings/network/telephony/EuiccOperationSidecar.java @@ -114,7 +114,8 @@ public abstract class EuiccOperationSidecar extends SidecarFragment { mReceiver, new IntentFilter(getReceiverAction()), Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS, - null); + null, + Context.RECEIVER_EXPORTED); } @Override diff --git a/src/com/android/settings/network/telephony/NetworkSelectSettings.java b/src/com/android/settings/network/telephony/NetworkSelectSettings.java index b26e7835754..d20cc2711e1 100644 --- a/src/com/android/settings/network/telephony/NetworkSelectSettings.java +++ b/src/com/android/settings/network/telephony/NetworkSelectSettings.java @@ -19,7 +19,6 @@ package com.android.settings.network.telephony; import android.app.Activity; import android.app.settings.SettingsEnums; import android.content.Context; -import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -103,7 +102,7 @@ public class NetworkSelectSettings extends DashboardFragment { @VisibleForTesting protected void onCreateInitialization() { mUseNewApi = enableNewAutoSelectNetworkUI(getContext()); - mSubId = getSubId(); + mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID); mPreferenceCategory = getPreferenceCategory(PREF_KEY_NETWORK_OPERATORS); mStatusMessagePreference = new Preference(getContext()); @@ -122,7 +121,7 @@ public class NetworkSelectSettings extends DashboardFragment { mMetricsFeatureProvider = getMetricsFeatureProvider(getContext()); mIsAggregationEnabled = enableAggregation(getContext()); Log.d(TAG, "init: mUseNewApi:" + mUseNewApi - + " ,mIsAggregationEnabled:" + mIsAggregationEnabled + " ,mSubId:" + mSubId); + + " ,mIsAggregationEnabled:" + mIsAggregationEnabled); } @Keep @@ -176,18 +175,6 @@ public class NetworkSelectSettings extends DashboardFragment { getPreferenceScreen().setEnabled(enable); } - @Keep - @VisibleForTesting - protected int getSubId() { - int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; - Intent intent = getActivity().getIntent(); - if (intent != null) { - subId = intent.getIntExtra(Settings.EXTRA_SUB_ID, - SubscriptionManager.INVALID_SUBSCRIPTION_ID); - } - return subId; - } - @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); diff --git a/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.java b/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.java index 7615fe339bc..b585ecec6a4 100644 --- a/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.java +++ b/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.java @@ -46,6 +46,7 @@ public class NrAdvancedCallingPreferenceController extends TelephonyTogglePrefer Preference mPreference; private TelephonyManager mTelephonyManager; private PhoneCallStateTelephonyCallback mTelephonyCallback; + private boolean mIsVonrEnabledFromCarrierConfig = false; private boolean mIsVonrVisibleFromCarrierConfig = false; private boolean mIsNrEnableFromCarrierConfig = false; private boolean mHas5gCapability = false; @@ -83,6 +84,9 @@ public class NrAdvancedCallingPreferenceController extends TelephonyTogglePrefer if (carrierConfig == null) { return this; } + mIsVonrEnabledFromCarrierConfig = carrierConfig.getBoolean( + CarrierConfigManager.KEY_VONR_ENABLED_BOOL); + mIsVonrVisibleFromCarrierConfig = carrierConfig.getBoolean( CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL); @@ -92,6 +96,7 @@ public class NrAdvancedCallingPreferenceController extends TelephonyTogglePrefer Log.d(TAG, "mHas5gCapability: " + mHas5gCapability + ",mIsNrEnabledFromCarrierConfig: " + mIsNrEnableFromCarrierConfig + + ",mIsVonrEnabledFromCarrierConfig: " + mIsVonrEnabledFromCarrierConfig + ",mIsVonrVisibleFromCarrierConfig: " + mIsVonrVisibleFromCarrierConfig); return this; } @@ -100,7 +105,10 @@ public class NrAdvancedCallingPreferenceController extends TelephonyTogglePrefer public int getAvailabilityStatus(int subId) { init(subId); - if (mHas5gCapability && mIsNrEnableFromCarrierConfig && mIsVonrVisibleFromCarrierConfig) { + if (mHas5gCapability + && mIsNrEnableFromCarrierConfig + && mIsVonrEnabledFromCarrierConfig + && mIsVonrVisibleFromCarrierConfig) { return AVAILABLE; } return CONDITIONALLY_UNAVAILABLE; diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java index 028c4e77a78..997235c8a0c 100644 --- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java +++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java @@ -20,8 +20,9 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.app.ProgressDialog; +import android.app.settings.SettingsEnums; import android.content.Context; -import android.content.Intent; +import android.os.Bundle; import android.os.Handler; import android.os.HandlerExecutor; import android.os.Looper; @@ -42,8 +43,10 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.settings.R; +import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.telephony.MobileNetworkUtils; +import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.network.telephony.TelephonyTogglePreferenceController; import com.android.settingslib.utils.ThreadUtils; @@ -148,26 +151,25 @@ public class AutoSelectPreferenceController extends TelephonyTogglePreferenceCon public boolean setChecked(boolean isChecked) { if (isChecked) { setAutomaticSelectionMode(); + return false; } else { - if (mSwitchPreference != null) { - Intent intent = new Intent(); - intent.setClassName("com.android.settings", - "com.android.settings.Settings$NetworkSelectActivity"); - intent.putExtra(Settings.EXTRA_SUB_ID, mSubId); - mSwitchPreference.setIntent(intent); - } + final Bundle bundle = new Bundle(); + bundle.putInt(Settings.EXTRA_SUB_ID, mSubId); + new SubSettingLauncher(mContext) + .setDestination(NetworkSelectSettings.class.getName()) + .setSourceMetricsCategory(SettingsEnums.MOBILE_NETWORK_SELECT) + .setTitleRes(R.string.choose_network_title) + .setArguments(bundle) + .launch(); + return false; } - return false; } @VisibleForTesting Future setAutomaticSelectionMode() { final long startMillis = SystemClock.elapsedRealtime(); showAutoSelectProgressBar(); - if (mSwitchPreference != null) { - mSwitchPreference.setIntent(null); - mSwitchPreference.setEnabled(false); - } + mSwitchPreference.setEnabled(false); return ThreadUtils.postOnBackgroundThread(() -> { // set network selection mode in background mTelephonyManager.setNetworkSelectionModeAutomatic(); diff --git a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java index 54f5ce15d72..4047009b325 100644 --- a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java +++ b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java @@ -19,12 +19,14 @@ package com.android.settings.network.telephony.gsm; import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; +import android.app.settings.SettingsEnums; import android.content.Context; -import android.content.Intent; +import android.os.Bundle; import android.provider.Settings; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; +import android.text.TextUtils; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; @@ -33,8 +35,10 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; +import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.telephony.MobileNetworkUtils; +import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.network.telephony.TelephonyBasePreferenceController; /** @@ -98,12 +102,6 @@ public class OpenNetworkSelectPagePreferenceController extends super.updateState(preference); preference.setEnabled(mTelephonyManager.getNetworkSelectionMode() != TelephonyManager.NETWORK_SELECTION_MODE_AUTO); - - Intent intent = new Intent(); - intent.setClassName("com.android.settings", - "com.android.settings.Settings$NetworkSelectActivity"); - intent.putExtra(Settings.EXTRA_SUB_ID, mSubId); - preference.setIntent(intent); } @Override @@ -116,6 +114,23 @@ public class OpenNetworkSelectPagePreferenceController extends } } + @Override + public boolean handlePreferenceTreeClick(Preference preference) { + if (TextUtils.equals(preference.getKey(), getPreferenceKey())) { + final Bundle bundle = new Bundle(); + bundle.putInt(Settings.EXTRA_SUB_ID, mSubId); + new SubSettingLauncher(mContext) + .setDestination(NetworkSelectSettings.class.getName()) + .setSourceMetricsCategory(SettingsEnums.MOBILE_NETWORK_SELECT) + .setTitleRes(R.string.choose_network_title) + .setArguments(bundle) + .launch(); + return true; + } + + return false; + } + public OpenNetworkSelectPagePreferenceController init(Lifecycle lifecycle, int subId) { mSubId = subId; mTelephonyManager = mContext.getSystemService(TelephonyManager.class) diff --git a/src/com/android/settings/password/PasswordUtils.java b/src/com/android/settings/password/PasswordUtils.java index 5b75033f0f2..e8e309c40ec 100644 --- a/src/com/android/settings/password/PasswordUtils.java +++ b/src/com/android/settings/password/PasswordUtils.java @@ -79,18 +79,20 @@ public final class PasswordUtils extends com.android.settingslib.Utils { } /** Crashes the calling application and provides it with {@code message}. */ - public static void crashCallingApplication(IBinder activityToken, String message) { + public static void crashCallingApplication(IBinder activityToken, String message, + int exceptionTypeId) { IActivityManager am = ActivityManager.getService(); try { int uid = am.getLaunchedFromUid(activityToken); int userId = UserHandle.getUserId(uid); - am.crashApplication( + am.crashApplicationWithType( uid, /* initialPid= */ -1, getCallingAppPackageName(activityToken), userId, message, - false); + false, + exceptionTypeId); } catch (RemoteException e) { Log.v(TAG, "Could not talk to activity manager.", e); } diff --git a/src/com/android/settings/password/SetNewPasswordActivity.java b/src/com/android/settings/password/SetNewPasswordActivity.java index 22825872128..fc664eccde1 100644 --- a/src/com/android/settings/password/SetNewPasswordActivity.java +++ b/src/com/android/settings/password/SetNewPasswordActivity.java @@ -29,6 +29,7 @@ import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_I import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_REQUESTED_MIN_COMPLEXITY; import android.app.Activity; +import android.app.RemoteServiceException.MissingRequestPasswordComplexityPermissionException; import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager.PasswordComplexity; import android.app.admin.PasswordMetrics; @@ -101,7 +102,8 @@ public class SetNewPasswordActivity extends Activity implements SetNewPasswordCo PasswordUtils.crashCallingApplication(activityToken, "Must have permission " + REQUEST_PASSWORD_COMPLEXITY + " to use extra " - + EXTRA_PASSWORD_COMPLEXITY); + + EXTRA_PASSWORD_COMPLEXITY, + MissingRequestPasswordComplexityPermissionException.TYPE_ID); finish(); return; } diff --git a/src/com/android/settings/password/SetupChooseLockGeneric.java b/src/com/android/settings/password/SetupChooseLockGeneric.java index 3261b81083b..968af3232f8 100644 --- a/src/com/android/settings/password/SetupChooseLockGeneric.java +++ b/src/com/android/settings/password/SetupChooseLockGeneric.java @@ -21,6 +21,7 @@ import static android.app.admin.DevicePolicyManager.EXTRA_PASSWORD_COMPLEXITY; import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_REQUESTED_MIN_COMPLEXITY; +import android.app.RemoteServiceException.MissingRequestPasswordComplexityPermissionException; import android.content.Context; import android.content.Intent; import android.os.Bundle; @@ -79,7 +80,8 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric { if (!hasPermission) { PasswordUtils.crashCallingApplication(activityToken, "Must have permission " + REQUEST_PASSWORD_COMPLEXITY - + " to use extra " + EXTRA_PASSWORD_COMPLEXITY); + + " to use extra " + EXTRA_PASSWORD_COMPLEXITY, + MissingRequestPasswordComplexityPermissionException.TYPE_ID); finish(); return; } diff --git a/src/com/android/settings/wifi/tether/TetherService.java b/src/com/android/settings/wifi/tether/TetherService.java index 59027193ed5..8a557ba0c3e 100644 --- a/src/com/android/settings/wifi/tether/TetherService.java +++ b/src/com/android/settings/wifi/tether/TetherService.java @@ -119,7 +119,8 @@ public class TetherService extends Service { if (mExpectedProvisionResponseAction != null) unregisterReceiver(mReceiver); registerReceiver(mReceiver, new IntentFilter(responseAction), - android.Manifest.permission.TETHER_PRIVILEGED, null /* handler */); + android.Manifest.permission.TETHER_PRIVILEGED, null /* handler */, + Context.RECEIVER_EXPORTED); mExpectedProvisionResponseAction = responseAction; if (DEBUG) Log.d(TAG, "registerReceiver " + responseAction); } diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java index 7d860185a31..6449c65ffe7 100644 --- a/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java @@ -122,6 +122,10 @@ public class NetworkSelectSettingsTest { public TargetClass(NetworkSelectSettingsTest env) { mTestEnv = env; + + Bundle bundle = new Bundle(); + bundle.putInt(Settings.EXTRA_SUB_ID, SUB_ID); + setArguments(bundle); } @Override @@ -180,11 +184,6 @@ public class NetworkSelectSettingsTest { protected boolean enableAggregation(Context context) { return mTestEnv.mIsAggregationEnabled; } - - @Override - protected int getSubId() { - return SUB_ID; - } } @Test diff --git a/tests/unit/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceControllerTest.java index 9eb67df96ca..fac777232f0 100644 --- a/tests/unit/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceControllerTest.java @@ -80,7 +80,8 @@ public class NrAdvancedCallingPreferenceControllerTest { mTelephonyManager).setVoNrEnabled(anyBoolean()); mCarrierConfig = new PersistableBundle(); doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); - mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, false); + mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_ENABLED_BOOL, false); + mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, true); mCarrierConfig.putIntArray(CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY, new int[]{1, 2}); @@ -92,7 +93,8 @@ public class NrAdvancedCallingPreferenceControllerTest { } @Test - public void getAvailabilityStatus_vonrDisabled_returnUnavailable() { + public void getAvailabilityStatus_vonrEnabledAndVisibleDisable_returnUnavailable() { + mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_ENABLED_BOOL, true); mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, false); mController.init(SUB_ID); @@ -102,7 +104,30 @@ public class NrAdvancedCallingPreferenceControllerTest { } @Test - public void getAvailabilityStatus_vonrEnabled_returnAvailable() { + public void getAvailabilityStatus_vonrDisabledAndVisibleDisable_returnUnavailable() { + mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_ENABLED_BOOL, false); + mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, false); + + mController.init(SUB_ID); + + assertThat(mController.getAvailabilityStatus()).isEqualTo( + BasePreferenceController.CONDITIONALLY_UNAVAILABLE); + } + + @Test + public void getAvailabilityStatus_vonrDisabledAndVisibleEnable_returnUnavailable() { + mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_ENABLED_BOOL, false); + mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, true); + + mController.init(SUB_ID); + + assertThat(mController.getAvailabilityStatus()).isEqualTo( + BasePreferenceController.CONDITIONALLY_UNAVAILABLE); + } + + @Test + public void getAvailabilityStatus_vonrEnabledAndVisibleEnable_returnAvailable() { + mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_ENABLED_BOOL, true); mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, true); mController.init(SUB_ID);