Fix Settings crash when click uninstall button
am: 2d709131ba
Change-Id: I1e6228b5e4ecf10aa58bd41d2d8019b3d727b935
This commit is contained in:
@@ -160,7 +160,7 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
|
|||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
// TODO(b/37313605): Re-enable once this controller supports instant apps
|
// 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
|
@Override
|
||||||
@@ -189,7 +189,7 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
if (isAvailable() && !mFinishing) {
|
if (isAvailable()) {
|
||||||
mAppsControlDisallowedBySystem = RestrictedLockUtilsInternal.hasBaseUserRestriction(
|
mAppsControlDisallowedBySystem = RestrictedLockUtilsInternal.hasBaseUserRestriction(
|
||||||
mActivity, UserManager.DISALLOW_APPS_CONTROL, mUserId);
|
mActivity, UserManager.DISALLOW_APPS_CONTROL, mUserId);
|
||||||
mAppsControlDisallowedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
mAppsControlDisallowedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
||||||
|
@@ -19,8 +19,8 @@ package com.android.settings.applications.appinfo;
|
|||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.doAnswer;
|
import static org.mockito.Mockito.doAnswer;
|
||||||
@@ -39,8 +39,8 @@ import android.app.admin.DevicePolicyManager;
|
|||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.om.OverlayManager;
|
|
||||||
import android.content.om.OverlayInfo;
|
import android.content.om.OverlayInfo;
|
||||||
|
import android.content.om.OverlayManager;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
@@ -49,6 +49,8 @@ import android.os.UserManager;
|
|||||||
import android.util.ArraySet;
|
import android.util.ArraySet;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.core.InstrumentedPreferenceFragment;
|
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.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.widget.ActionButtonsPreference;
|
import com.android.settingslib.widget.ActionButtonsPreference;
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -70,12 +71,15 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.mockito.stubbing.Answer;
|
import org.mockito.stubbing.Answer;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.annotation.Implementation;
|
import org.robolectric.annotation.Implementation;
|
||||||
import org.robolectric.annotation.Implements;
|
import org.robolectric.annotation.Implements;
|
||||||
import org.robolectric.annotation.Resetter;
|
import org.robolectric.annotation.Resetter;
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class AppButtonsPreferenceControllerTest {
|
public class AppButtonsPreferenceControllerTest {
|
||||||
|
|
||||||
@@ -112,10 +116,9 @@ public class AppButtonsPreferenceControllerTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private UserManager mUserManager;
|
private UserManager mUserManager;
|
||||||
@Mock
|
@Mock
|
||||||
private Application mApplication;
|
|
||||||
@Mock
|
|
||||||
private PackageInfo mPackageInfo;
|
private PackageInfo mPackageInfo;
|
||||||
|
|
||||||
|
private Context mContext;
|
||||||
private Intent mUninstallIntent;
|
private Intent mUninstallIntent;
|
||||||
private ActionButtonsPreference mButtonPrefs;
|
private ActionButtonsPreference mButtonPrefs;
|
||||||
private AppButtonsPreferenceController mController;
|
private AppButtonsPreferenceController mController;
|
||||||
@@ -125,6 +128,7 @@ public class AppButtonsPreferenceControllerTest {
|
|||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
FakeFeatureFactory.setupForTest();
|
FakeFeatureFactory.setupForTest();
|
||||||
|
mContext = RuntimeEnvironment.application;
|
||||||
doReturn(mDpm).when(mSettingsActivity).getSystemService(Context.DEVICE_POLICY_SERVICE);
|
doReturn(mDpm).when(mSettingsActivity).getSystemService(Context.DEVICE_POLICY_SERVICE);
|
||||||
doReturn(mUserManager).when(mSettingsActivity).getSystemService(Context.USER_SERVICE);
|
doReturn(mUserManager).when(mSettingsActivity).getSystemService(Context.USER_SERVICE);
|
||||||
doReturn(mPackageManger).when(mSettingsActivity).getPackageManager();
|
doReturn(mPackageManger).when(mSettingsActivity).getPackageManager();
|
||||||
@@ -132,7 +136,7 @@ public class AppButtonsPreferenceControllerTest {
|
|||||||
doReturn(mOverlayManager).when(mSettingsActivity).
|
doReturn(mOverlayManager).when(mSettingsActivity).
|
||||||
getSystemService(OverlayManager.class);
|
getSystemService(OverlayManager.class);
|
||||||
doReturn(mAppEntry).when(mState).getEntry(anyString(), anyInt());
|
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);
|
when(mSettingsActivity.getResources().getString(anyInt())).thenReturn(RESOURCE_STRING);
|
||||||
|
|
||||||
mController = spy(new AppButtonsPreferenceController(mSettingsActivity, mFragment,
|
mController = spy(new AppButtonsPreferenceController(mSettingsActivity, mFragment,
|
||||||
@@ -161,6 +165,21 @@ public class AppButtonsPreferenceControllerTest {
|
|||||||
ShadowAppUtils.reset();
|
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
|
@Test
|
||||||
public void retrieveAppEntry_hasAppEntry_notNull()
|
public void retrieveAppEntry_hasAppEntry_notNull()
|
||||||
throws PackageManager.NameNotFoundException {
|
throws PackageManager.NameNotFoundException {
|
||||||
|
Reference in New Issue
Block a user