diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index e9b7481d0e4..6cc37e7769d 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.HashSet; 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 @@ public class InstalledAppDetails extends AppInfoBase 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 2e938766852..a89766f2145 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.content.pm.ResolveInfo; 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 @@ public class DefaultHomePreferenceController extends DefaultAppPreferenceControl return false; } - public static boolean isHomeDefault(String pkg, Context context) { - ArrayList homeActivities = new ArrayList<>(); - PackageManager pm = context.getPackageManager(); + public static boolean isHomeDefault(String pkg, PackageManagerWrapper pm) { + final ArrayList 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 6d6e2f81cd6..21537f5e1d7 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 @@ public class DefaultHomePreferenceControllerTest { 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(); + } }