Merge "Fix a crash when launching app detail for bad package name"
am: ada1a39ffb
Change-Id: Ia96ca4a889e9005da4e685b8e04ae2d6b78eff85
diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
index 2c54ea3..d370ce0 100755
--- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
+++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
@@ -203,17 +203,23 @@
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();
super.onDestroy();
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
index 3128f30..1a55059 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
@@ -167,7 +167,7 @@
}
@Test
- public void launchFragment_hasNoPackageInfo_shouldFinish() {
+ public void ensurePackageInfoAvailable_hasNoPackageInfo_shouldFinish() {
ReflectionHelpers.setField(mFragment, "mPackageInfo", null);
assertThat(mFragment.ensurePackageInfoAvailable(mActivity)).isFalse();
@@ -175,7 +175,7 @@
}
@Test
- public void launchFragment_hasPackageInfo_shouldReturnTrue() {
+ public void ensurePackageInfoAvailable_hasPackageInfo_shouldReturnTrue() {
final PackageInfo packageInfo = mock(PackageInfo.class);
ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo);
@@ -184,6 +184,16 @@
}
@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);
mFragment.onPackageSizeChanged("Not_" + PACKAGE_NAME);