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

Commit 6748951f authored by Raff Tsai's avatar Raff Tsai Committed by android-build-merger
Browse files

Fix Settings crash when click uninstall button

am: 2d709131

Change-Id: I5e7c8f9e5ea9ac6854be24ddd025ee0849a200cf
parents 10ff4831 2d709131
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -160,7 +160,7 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
    @Override
    public int getAvailabilityStatus() {
        // TODO(b/37313605): Re-enable once this controller supports instant apps
        return isInstantApp() || isSystemModule() ? DISABLED_FOR_USER : AVAILABLE;
        return mFinishing || isInstantApp() || isSystemModule() ? DISABLED_FOR_USER : AVAILABLE;
    }

    @Override
@@ -189,7 +189,7 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp

    @Override
    public void onResume() {
        if (isAvailable() && !mFinishing) {
        if (isAvailable()) {
            mAppsControlDisallowedBySystem = RestrictedLockUtilsInternal.hasBaseUserRestriction(
                    mActivity, UserManager.DISALLOW_APPS_CONTROL, mUserId);
            mAppsControlDisallowedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
+32 −13
Original line number Diff line number Diff line
@@ -19,8 +19,8 @@ package com.android.settings.applications.appinfo;
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
@@ -39,8 +39,8 @@ import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.content.om.OverlayManager;
import android.content.om.OverlayInfo;
import android.content.om.OverlayManager;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
@@ -49,6 +49,8 @@ import android.os.UserManager;
import android.util.ArraySet;
import android.view.View;

import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.core.InstrumentedPreferenceFragment;
@@ -59,7 +61,6 @@ import com.android.settingslib.applications.instantapps.InstantAppDataProvider;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.ActionButtonsPreference;

import java.util.Set;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -70,12 +71,15 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.stubbing.Answer;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.Resetter;
import org.robolectric.util.ReflectionHelpers;

import java.util.Set;

@RunWith(RobolectricTestRunner.class)
public class AppButtonsPreferenceControllerTest {

@@ -112,10 +116,9 @@ public class AppButtonsPreferenceControllerTest {
    @Mock
    private UserManager mUserManager;
    @Mock
    private Application mApplication;
    @Mock
    private PackageInfo mPackageInfo;

    private Context mContext;
    private Intent mUninstallIntent;
    private ActionButtonsPreference mButtonPrefs;
    private AppButtonsPreferenceController mController;
@@ -125,6 +128,7 @@ public class AppButtonsPreferenceControllerTest {
        MockitoAnnotations.initMocks(this);

        FakeFeatureFactory.setupForTest();
        mContext = RuntimeEnvironment.application;
        doReturn(mDpm).when(mSettingsActivity).getSystemService(Context.DEVICE_POLICY_SERVICE);
        doReturn(mUserManager).when(mSettingsActivity).getSystemService(Context.USER_SERVICE);
        doReturn(mPackageManger).when(mSettingsActivity).getPackageManager();
@@ -132,7 +136,7 @@ public class AppButtonsPreferenceControllerTest {
        doReturn(mOverlayManager).when(mSettingsActivity).
                getSystemService(OverlayManager.class);
        doReturn(mAppEntry).when(mState).getEntry(anyString(), anyInt());
        when(mSettingsActivity.getApplication()).thenReturn(mApplication);
        doReturn(mContext).when(mSettingsActivity).getApplicationContext();
        when(mSettingsActivity.getResources().getString(anyInt())).thenReturn(RESOURCE_STRING);

        mController = spy(new AppButtonsPreferenceController(mSettingsActivity, mFragment,
@@ -161,6 +165,21 @@ public class AppButtonsPreferenceControllerTest {
        ShadowAppUtils.reset();
    }

    @Test
    @Config(shadows = ShadowAppUtils.class)
    public void isAvailable_validPackageName_isTrue() {
        assertThat(mController.isAvailable()).isTrue();
    }

    @Test
    public void isAvailable_nullPackageName_isFalse() {
        final AppButtonsPreferenceController controller = spy(
                new AppButtonsPreferenceController(mSettingsActivity, mFragment,
                        mLifecycle, null, mState, REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN));

        assertThat(controller.isAvailable()).isFalse();
    }

    @Test
    public void retrieveAppEntry_hasAppEntry_notNull()
            throws PackageManager.NameNotFoundException {