Merge "Fix a crash when launching app detail for bad package name"

This commit is contained in:
Treehugger Robot
2018-09-12 00:57:40 +00:00
committed by Gerrit Code Review
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); mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE); mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
mPm = activity.getPackageManager(); mPm = activity.getPackageManager();
if (!ensurePackageInfoAvailable(activity)) { if (!ensurePackageInfoAvailable(activity)) {
return; return;
} }
startListeningToPackageRemove(); startListeningToPackageRemove();
setHasOptionsMenu(true); setHasOptionsMenu(true);
} }
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
if (!ensurePackageInfoAvailable(getActivity())) {
return;
}
super.onCreatePreferences(savedInstanceState, rootKey);
}
@Override @Override
public void onDestroy() { public void onDestroy() {
stopListeningToPackageRemove(); stopListeningToPackageRemove();

View File

@@ -170,7 +170,7 @@ public final class AppInfoDashboardFragmentTest {
} }
@Test @Test
public void launchFragment_hasNoPackageInfo_shouldFinish() { public void ensurePackageInfoAvailable_hasNoPackageInfo_shouldFinish() {
ReflectionHelpers.setField(mFragment, "mPackageInfo", null); ReflectionHelpers.setField(mFragment, "mPackageInfo", null);
assertThat(mFragment.ensurePackageInfoAvailable(mActivity)).isFalse(); assertThat(mFragment.ensurePackageInfoAvailable(mActivity)).isFalse();
@@ -178,7 +178,7 @@ public final class AppInfoDashboardFragmentTest {
} }
@Test @Test
public void launchFragment_hasPackageInfo_shouldReturnTrue() { public void ensurePackageInfoAvailable_hasPackageInfo_shouldReturnTrue() {
final PackageInfo packageInfo = mock(PackageInfo.class); final PackageInfo packageInfo = mock(PackageInfo.class);
ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo); ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo);
@@ -186,6 +186,16 @@ public final class AppInfoDashboardFragmentTest {
verify(mActivity, never()).finishAndRemoveTask(); 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 @Test
public void packageSizeChange_isOtherPackage_shouldNotRefreshUi() { public void packageSizeChange_isOtherPackage_shouldNotRefreshUi() {
ReflectionHelpers.setField(mFragment, "mPackageName", PACKAGE_NAME); ReflectionHelpers.setField(mFragment, "mPackageName", PACKAGE_NAME);