Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f66882f1 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "developer-options: avoid oem-unlock preference controller crash"

parents fcd91ccb 9bc365fe
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -21,11 +21,13 @@ import static com.android.settings.development.DevelopmentOptionsActivityRequest
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.UserHandle;
import android.os.UserManager;
import android.service.oemlock.OemLockManager;
import android.telephony.TelephonyManager;
import android.util.Log;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
@@ -41,6 +43,7 @@ public class OemUnlockPreferenceController extends DeveloperOptionsPreferenceCon
        Preference.OnPreferenceChangeListener, PreferenceControllerMixin, OnActivityResultListener {

    private static final String PREFERENCE_KEY = "oem_unlock_enable";
    private static final String TAG = "OemUnlockPreferenceController";

    private final OemLockManager mOemLockManager;
    private final UserManager mUserManager;
@@ -52,7 +55,16 @@ public class OemUnlockPreferenceController extends DeveloperOptionsPreferenceCon
    public OemUnlockPreferenceController(Context context, Activity activity,
            DevelopmentSettingsDashboardFragment fragment) {
        super(context);

        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);
        mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        mFragment = fragment;
+16 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.when;

import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.UserManager;
import android.service.oemlock.OemLockManager;
@@ -60,6 +61,8 @@ public class OemUnlockPreferenceControllerTest {
    @Mock
    private RestrictedSwitchPreference mPreference;
    @Mock
    private PackageManager mPackageManager;
    @Mock
    private PreferenceScreen mPreferenceScreen;
    @Mock
    private OemLockManager mOemLockManager;
@@ -74,6 +77,9 @@ public class OemUnlockPreferenceControllerTest {
    @Before
    public void setup() {
        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.USER_SERVICE)).thenReturn(mUserManager);
        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
@@ -86,6 +92,16 @@ public class OemUnlockPreferenceControllerTest {
        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
    public void isAvailable_shouldReturnTrueWhenOemLockManagerIsNotNull() {
        boolean returnValue = mController.isAvailable();