Merge "Hide "Wipe eUICC" option when it isn't useful."
This commit is contained in:
@@ -23,6 +23,7 @@ import android.accounts.AccountManager;
|
||||
import android.accounts.AuthenticatorDescription;
|
||||
import android.app.Activity;
|
||||
import android.app.FragmentManager;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
@@ -34,6 +35,7 @@ import android.os.Environment;
|
||||
import android.os.SystemProperties;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
import android.support.annotation.VisibleForTesting;
|
||||
import android.telephony.euicc.EuiccManager;
|
||||
import android.util.Log;
|
||||
@@ -208,9 +210,7 @@ public class MasterClear extends OptionsMenuFragment
|
||||
});
|
||||
}
|
||||
|
||||
EuiccManager euiccManager =
|
||||
(EuiccManager) getActivity().getSystemService(Context.EUICC_SERVICE);
|
||||
if (euiccManager.isEnabled()) {
|
||||
if (showWipeEuicc()) {
|
||||
mEsimStorageContainer.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
@@ -244,6 +244,30 @@ public class MasterClear extends OptionsMenuFragment
|
||||
mScrollView.getViewTreeObserver().addOnGlobalLayoutListener(mOnGlobalLayoutListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether to show the checkbox to wipe the eUICC.
|
||||
*
|
||||
* <p>We show the checkbox on any device which supports eUICC as long as either the eUICC was
|
||||
* ever provisioned (that is, at least one profile was ever downloaded onto it), or if the user
|
||||
* has enabled development mode.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
boolean showWipeEuicc() {
|
||||
Context context = getContext();
|
||||
if (!isEuiccEnabled(context)) {
|
||||
return false;
|
||||
}
|
||||
ContentResolver cr = context.getContentResolver();
|
||||
return Settings.Global.getInt(cr, Settings.Global.EUICC_PROVISIONED, 0) != 0
|
||||
|| Settings.Global.getInt(cr, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
protected boolean isEuiccEnabled(Context context) {
|
||||
EuiccManager euiccManager = (EuiccManager) context.getSystemService(Context.EUICC_SERVICE);
|
||||
return euiccManager.isEnabled();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
boolean hasReachedBottom(final ScrollView scrollView) {
|
||||
if (scrollView.getChildCount() < 1) {
|
||||
|
@@ -17,13 +17,18 @@
|
||||
package com.android.settings;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.robolectric.Shadows.shadowOf;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Fragment;
|
||||
import android.content.ContentResolver;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.CheckBox;
|
||||
@@ -82,6 +87,60 @@ public class MasterClearTest {
|
||||
when(mScrollView.getChildCount()).thenReturn(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShowWipeEuicc_euiccDisabled() {
|
||||
prepareEuiccState(
|
||||
false /* isEuiccEnabled */, true /* isEuiccProvisioned */,
|
||||
true /* isDevelopmentSettingsEnabled */);
|
||||
assertThat(mMasterClear.showWipeEuicc()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShowWipeEuicc_euiccEnabled_unprovisioned() {
|
||||
prepareEuiccState(
|
||||
true /* isEuiccEnabled */, false /* isEuiccProvisioned */,
|
||||
false /* isDevelopmentSettingsEnabled */);
|
||||
assertThat(mMasterClear.showWipeEuicc()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShowWipeEuicc_euiccEnabled_provisioned() {
|
||||
prepareEuiccState(
|
||||
true /* isEuiccEnabled */, true /* isEuiccProvisioned */,
|
||||
false /* isDevelopmentSettingsEnabled */);
|
||||
assertThat(mMasterClear.showWipeEuicc()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShowWipeEuicc_euiccEnabled_developmentSettingsEnabled() {
|
||||
prepareEuiccState(
|
||||
true /* isEuiccEnabled */, false /* isEuiccProvisioned */,
|
||||
true /* isDevelopmentSettingsEnabled */);
|
||||
assertThat(mMasterClear.showWipeEuicc()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShowWipeEuicc_euiccEnabled_provisioned_developmentSettingsEnabled() {
|
||||
prepareEuiccState(
|
||||
true /* isEuiccEnabled */, true /* isEuiccProvisioned */,
|
||||
true /* isDevelopmentSettingsEnabled */);
|
||||
assertThat(mMasterClear.showWipeEuicc()).isTrue();
|
||||
}
|
||||
|
||||
private void prepareEuiccState(
|
||||
boolean isEuiccEnabled,
|
||||
boolean isEuiccProvisioned,
|
||||
boolean isDevelopmentSettingsEnabled) {
|
||||
doReturn(mActivity).when(mMasterClear).getContext();
|
||||
doReturn(isEuiccEnabled).when(mMasterClear).isEuiccEnabled(any());
|
||||
ContentResolver cr = mActivity.getContentResolver();
|
||||
Settings.Global.putInt(
|
||||
cr, android.provider.Settings.Global.EUICC_PROVISIONED, isEuiccProvisioned ? 1 : 0);
|
||||
Settings.Global.putInt(
|
||||
cr, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED,
|
||||
isDevelopmentSettingsEnabled ? 1 : 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShowFinalConfirmation_EraseEsimChecked() {
|
||||
ActivityForTest testActivity = new ActivityForTest();
|
||||
|
Reference in New Issue
Block a user