Merge "developer-options: avoid oem-unlock preference controller crash"
This commit is contained in:
committed by
Android (Google) Code Review
commit
f66882f1e1
@@ -21,11 +21,13 @@ import static com.android.settings.development.DevelopmentOptionsActivityRequest
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.service.oemlock.OemLockManager;
|
import android.service.oemlock.OemLockManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
@@ -41,6 +43,7 @@ public class OemUnlockPreferenceController extends DeveloperOptionsPreferenceCon
|
|||||||
Preference.OnPreferenceChangeListener, PreferenceControllerMixin, OnActivityResultListener {
|
Preference.OnPreferenceChangeListener, PreferenceControllerMixin, OnActivityResultListener {
|
||||||
|
|
||||||
private static final String PREFERENCE_KEY = "oem_unlock_enable";
|
private static final String PREFERENCE_KEY = "oem_unlock_enable";
|
||||||
|
private static final String TAG = "OemUnlockPreferenceController";
|
||||||
|
|
||||||
private final OemLockManager mOemLockManager;
|
private final OemLockManager mOemLockManager;
|
||||||
private final UserManager mUserManager;
|
private final UserManager mUserManager;
|
||||||
@@ -52,7 +55,16 @@ public class OemUnlockPreferenceController extends DeveloperOptionsPreferenceCon
|
|||||||
public OemUnlockPreferenceController(Context context, Activity activity,
|
public OemUnlockPreferenceController(Context context, Activity activity,
|
||||||
DevelopmentSettingsDashboardFragment fragment) {
|
DevelopmentSettingsDashboardFragment fragment) {
|
||||||
super(context);
|
super(context);
|
||||||
mOemLockManager = (OemLockManager) context.getSystemService(Context.OEM_LOCK_SERVICE);
|
|
||||||
|
if (context.getPackageManager().hasSystemFeature(PackageManager
|
||||||
|
.FEATURE_TELEPHONY_CARRIERLOCK)) {
|
||||||
|
mOemLockManager = (OemLockManager) context.getSystemService(Context.OEM_LOCK_SERVICE);
|
||||||
|
} else {
|
||||||
|
mOemLockManager = null;
|
||||||
|
Log.i(TAG, "Missing FEATURE_TELEPHONY_CARRIERLOCK, OemUnlock Preference" +
|
||||||
|
" Controller disabled.");
|
||||||
|
}
|
||||||
|
|
||||||
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
|
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
|
||||||
mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||||
mFragment = fragment;
|
mFragment = fragment;
|
||||||
|
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.when;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.service.oemlock.OemLockManager;
|
import android.service.oemlock.OemLockManager;
|
||||||
@@ -60,6 +61,8 @@ public class OemUnlockPreferenceControllerTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private RestrictedSwitchPreference mPreference;
|
private RestrictedSwitchPreference mPreference;
|
||||||
@Mock
|
@Mock
|
||||||
|
private PackageManager mPackageManager;
|
||||||
|
@Mock
|
||||||
private PreferenceScreen mPreferenceScreen;
|
private PreferenceScreen mPreferenceScreen;
|
||||||
@Mock
|
@Mock
|
||||||
private OemLockManager mOemLockManager;
|
private OemLockManager mOemLockManager;
|
||||||
@@ -74,6 +77,9 @@ public class OemUnlockPreferenceControllerTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
|
when(mContext.getPackageManager().hasSystemFeature(PackageManager
|
||||||
|
.FEATURE_TELEPHONY_CARRIERLOCK)).thenReturn(true);
|
||||||
when(mContext.getSystemService(Context.OEM_LOCK_SERVICE)).thenReturn(mOemLockManager);
|
when(mContext.getSystemService(Context.OEM_LOCK_SERVICE)).thenReturn(mOemLockManager);
|
||||||
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
|
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
|
||||||
when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
|
when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
|
||||||
@@ -86,6 +92,16 @@ public class OemUnlockPreferenceControllerTest {
|
|||||||
mController.displayPreference(mPreferenceScreen);
|
mController.displayPreference(mPreferenceScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void OemUnlockPreferenceController_shouldNotCrashWhenMissingFEATURE_TELEPHONY_CARRIERLOCK() {
|
||||||
|
when(mContext.getPackageManager().hasSystemFeature(PackageManager
|
||||||
|
.FEATURE_TELEPHONY_CARRIERLOCK)).thenReturn(false);
|
||||||
|
when(mContext.getSystemService(Context.OEM_LOCK_SERVICE)).thenThrow
|
||||||
|
(new RuntimeException());
|
||||||
|
|
||||||
|
new OemUnlockPreferenceController(mContext, mActivity, mFragment);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isAvailable_shouldReturnTrueWhenOemLockManagerIsNotNull() {
|
public void isAvailable_shouldReturnTrueWhenOemLockManagerIsNotNull() {
|
||||||
boolean returnValue = mController.isAvailable();
|
boolean returnValue = mController.isAvailable();
|
||||||
|
Reference in New Issue
Block a user