Correctly report whether the current app is default home.
Change-Id: I79c374228e82c91667d7b5a0dcc19fa1216e57c4
Fix: 38065524
Test: make RunSettingsRoboTests
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index e9b7481..6cc37e7 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -16,8 +16,6 @@
package com.android.settings.applications;
-import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
-
import android.Manifest.permission;
import android.app.Activity;
import android.app.ActivityManager;
@@ -116,6 +114,8 @@
import java.util.List;
import java.util.Set;
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
/**
* Activity to display application information from Settings. This activity presents
* extended information associated with a package like code, data, total size, permissions
@@ -1200,7 +1200,8 @@
Preference pref = findPreference("default_home");
if (pref != null) {
- pref.setSummary(DefaultHomePreferenceController.isHomeDefault(mPackageName, context)
+ pref.setSummary(DefaultHomePreferenceController.isHomeDefault(mPackageName,
+ new PackageManagerWrapperImpl(context.getPackageManager()))
? R.string.yes : R.string.no);
}
pref = findPreference("default_browser");
diff --git a/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java
index 2e93876..a89766f 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceController.java
@@ -26,6 +26,8 @@
import android.support.v7.preference.Preference;
import android.text.TextUtils;
+import com.android.settings.applications.PackageManagerWrapper;
+
import java.util.ArrayList;
import java.util.List;
@@ -106,11 +108,10 @@
return false;
}
- public static boolean isHomeDefault(String pkg, Context context) {
- ArrayList<ResolveInfo> homeActivities = new ArrayList<>();
- PackageManager pm = context.getPackageManager();
+ public static boolean isHomeDefault(String pkg, PackageManagerWrapper pm) {
+ final ArrayList<ResolveInfo> homeActivities = new ArrayList<>();
ComponentName def = pm.getHomeActivities(homeActivities);
- return def != null && def.getPackageName().equals(pkg);
+ return def == null || def.getPackageName().equals(pkg);
}
}
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceControllerTest.java
index 6d6e2f8..21537f5 100644
--- a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePreferenceControllerTest.java
@@ -17,6 +17,7 @@
package com.android.settings.applications.defaultapps;
+import android.content.ComponentName;
import android.content.Context;
import android.os.UserManager;
import android.support.v7.preference.Preference;
@@ -84,4 +85,33 @@
verify(mPackageManager).getHomeActivities(anyList());
}
+
+ @Test
+ public void testIsHomeDefault_noDefaultSet_shouldReturnTrue() {
+ when(mPackageManager.getHomeActivities(anyList())).thenReturn(null);
+ assertThat(DefaultHomePreferenceController.isHomeDefault("test.pkg", mPackageManager))
+ .isTrue();
+ }
+
+ @Test
+ public void testIsHomeDefault_defaultSetToPkg_shouldReturnTrue() {
+ final String pkgName = "test.pkg";
+ final ComponentName defaultHome = new ComponentName(pkgName, "class");
+
+ when(mPackageManager.getHomeActivities(anyList())).thenReturn(defaultHome);
+
+ assertThat(DefaultHomePreferenceController.isHomeDefault(pkgName, mPackageManager))
+ .isTrue();
+ }
+
+ @Test
+ public void testIsHomeDefault_defaultSetToOtherPkg_shouldReturnFalse() {
+ final String pkgName = "test.pkg";
+ final ComponentName defaultHome = new ComponentName("not" + pkgName, "class");
+
+ when(mPackageManager.getHomeActivities(anyList())).thenReturn(defaultHome);
+
+ assertThat(DefaultHomePreferenceController.isHomeDefault(pkgName, mPackageManager))
+ .isFalse();
+ }
}