Fix a crash when launching app detail for bad package name

Change-Id: I3bfb5f8e003b810c09d295bc89f4a59af186a121
Fixes: 78779901
Test: robotests
This commit is contained in:
Fan Zhang
2018-09-11 14:52:46 -07:00
parent 98a1ebedcd
commit 13d2551156
2 changed files with 20 additions and 4 deletions

View File

@@ -205,16 +205,22 @@ public class AppInfoDashboardFragment extends DashboardFragment
mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
mPm = activity.getPackageManager();
if (!ensurePackageInfoAvailable(activity)) {
return;
}
startListeningToPackageRemove();
setHasOptionsMenu(true);
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
if (!ensurePackageInfoAvailable(getActivity())) {
return;
}
super.onCreatePreferences(savedInstanceState, rootKey);
}
@Override
public void onDestroy() {
stopListeningToPackageRemove();

View File

@@ -170,7 +170,7 @@ public final class AppInfoDashboardFragmentTest {
}
@Test
public void launchFragment_hasNoPackageInfo_shouldFinish() {
public void ensurePackageInfoAvailable_hasNoPackageInfo_shouldFinish() {
ReflectionHelpers.setField(mFragment, "mPackageInfo", null);
assertThat(mFragment.ensurePackageInfoAvailable(mActivity)).isFalse();
@@ -178,7 +178,7 @@ public final class AppInfoDashboardFragmentTest {
}
@Test
public void launchFragment_hasPackageInfo_shouldReturnTrue() {
public void ensurePackageInfoAvailable_hasPackageInfo_shouldReturnTrue() {
final PackageInfo packageInfo = mock(PackageInfo.class);
ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo);
@@ -186,6 +186,16 @@ public final class AppInfoDashboardFragmentTest {
verify(mActivity, never()).finishAndRemoveTask();
}
@Test
public void createPreference_hasNoPackageInfo_shouldSkip() {
ReflectionHelpers.setField(mFragment, "mPackageInfo", null);
mFragment.onCreatePreferences(new Bundle(), "root_key");
verify(mActivity).finishAndRemoveTask();
verify(mFragment, never()).getPreferenceScreen();
}
@Test
public void packageSizeChange_isOtherPackage_shouldNotRefreshUi() {
ReflectionHelpers.setField(mFragment, "mPackageName", PACKAGE_NAME);