Merge "Avoid oem-unlock preference controller crash"
This commit is contained in:
committed by
Android (Google) Code Review
commit
9acfbdbe04
@@ -22,11 +22,13 @@ import android.app.Activity;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Build;
|
import android.os.SystemProperties;
|
||||||
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.text.TextUtils;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
@@ -43,6 +45,9 @@ public class OemUnlockPreferenceController extends DeveloperOptionsPreferenceCon
|
|||||||
|
|
||||||
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 static final String TAG = "OemUnlockPreferenceController";
|
||||||
|
private static final String OEM_UNLOCK_SUPPORTED_KEY = "ro.oem_unlock_supported";
|
||||||
|
private static final String UNSUPPORTED = "-9999";
|
||||||
|
private static final String SUPPORTED = "1";
|
||||||
|
|
||||||
private final OemLockManager mOemLockManager;
|
private final OemLockManager mOemLockManager;
|
||||||
private final UserManager mUserManager;
|
private final UserManager mUserManager;
|
||||||
@@ -55,8 +60,10 @@ public class OemUnlockPreferenceController extends DeveloperOptionsPreferenceCon
|
|||||||
DevelopmentSettingsDashboardFragment fragment) {
|
DevelopmentSettingsDashboardFragment fragment) {
|
||||||
super(context);
|
super(context);
|
||||||
|
|
||||||
if (Build.IS_EMULATOR && Build.IS_ENG) {
|
if (!TextUtils.equals(SystemProperties.get(OEM_UNLOCK_SUPPORTED_KEY, UNSUPPORTED),
|
||||||
|
SUPPORTED)) {
|
||||||
mOemLockManager = null;
|
mOemLockManager = null;
|
||||||
|
Log.w(TAG, "oem_unlock not supported.");
|
||||||
} else {
|
} else {
|
||||||
mOemLockManager = (OemLockManager) context.getSystemService(Context.OEM_LOCK_SERVICE);
|
mOemLockManager = (OemLockManager) context.getSystemService(Context.OEM_LOCK_SERVICE);
|
||||||
}
|
}
|
||||||
|
@@ -32,7 +32,7 @@ import android.app.Activity;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Build;
|
import android.os.SystemProperties;
|
||||||
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;
|
||||||
@@ -49,12 +49,14 @@ import org.mockito.Answers;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.annotation.Config;
|
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class OemUnlockPreferenceControllerTest {
|
public class OemUnlockPreferenceControllerTest {
|
||||||
|
|
||||||
|
private static final String OEM_UNLOCK_SUPPORTED_KEY = "ro.oem_unlock_supported";
|
||||||
|
private static final String UNSUPPORTED = "-9999";
|
||||||
|
private static final String SUPPORTED = "1";
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
@Mock
|
@Mock
|
||||||
@@ -80,6 +82,7 @@ public class OemUnlockPreferenceControllerTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
SystemProperties.set(OEM_UNLOCK_SUPPORTED_KEY, SUPPORTED);
|
||||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
when(mContext.getPackageManager().hasSystemFeature(PackageManager
|
when(mContext.getPackageManager().hasSystemFeature(PackageManager
|
||||||
.FEATURE_TELEPHONY_CARRIERLOCK)).thenReturn(true);
|
.FEATURE_TELEPHONY_CARRIERLOCK)).thenReturn(true);
|
||||||
@@ -96,20 +99,14 @@ public class OemUnlockPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Config(qualifiers = "mcc999")
|
public void OemUnlockPreferenceController_oemUnlockUnsupported_shouldNotCrash() {
|
||||||
public void OemUnlockPreferenceController_shouldNotCrashInEmulatorEngBuild() {
|
SystemProperties.set(OEM_UNLOCK_SUPPORTED_KEY, UNSUPPORTED);
|
||||||
ReflectionHelpers.setStaticField(Build.class, "IS_EMULATOR", true);
|
|
||||||
ReflectionHelpers.setStaticField(Build.class, "IS_ENG", true);
|
|
||||||
|
|
||||||
new OemUnlockPreferenceController(mContext, mActivity, mFragment);
|
new OemUnlockPreferenceController(mContext, mActivity, mFragment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Config(qualifiers = "mcc999")
|
public void OemUnlockPreferenceController_oemUnlockSupported_shouldNotCrash() {
|
||||||
public void OemUnlockPreferenceController_shouldNotCrashInOtherBuild() {
|
|
||||||
ReflectionHelpers.setStaticField(Build.class, "IS_EMULATOR", false);
|
|
||||||
ReflectionHelpers.setStaticField(Build.class, "IS_ENG", false);
|
|
||||||
|
|
||||||
new OemUnlockPreferenceController(mContext, mActivity, mFragment);
|
new OemUnlockPreferenceController(mContext, mActivity, mFragment);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user