From 6786d8cd5335d51479ec09b4aa0dd67a68bd9729 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Thu, 16 Feb 2017 11:56:18 -0800 Subject: [PATCH] Mark only browser as default in app detail page Change-Id: I8112d859ba788a1dc67c44b5e0de668c0fc13169 Fix: 35307728 Test: make RunSettingsRoboTests --- .../applications/InstalledAppDetails.java | 4 ++-- .../DefaultBrowserPreferenceController.java | 15 ++++++++++----- .../DefaultBrowserPreferenceControllerTest.java | 14 ++++++++++++++ 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index 9c4ee08a3e6..441a02ea216 100755 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -1076,8 +1076,8 @@ public class InstalledAppDetails extends AppInfoBase } pref = findPreference("default_browser"); if (pref != null) { - pref.setSummary( - DefaultBrowserPreferenceController.isBrowserDefault(mPackageName, context) + pref.setSummary(new DefaultBrowserPreferenceController(context) + .isBrowserDefault(mPackageName, mUserId) ? R.string.yes : R.string.no); } pref = findPreference("default_phone_app"); diff --git a/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java index dca300b04d3..7077912ddc6 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java +++ b/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java @@ -21,7 +21,6 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; -import android.os.UserHandle; import android.support.v7.preference.Preference; import android.text.TextUtils; @@ -96,9 +95,15 @@ public class DefaultBrowserPreferenceController extends DefaultAppPreferenceCont /** * Whether or not the pkg is the default browser */ - public static boolean isBrowserDefault(String pkg, Context context) { - String defaultPackage = context.getPackageManager() - .getDefaultBrowserPackageNameAsUser(UserHandle.myUserId()); - return defaultPackage != null && defaultPackage.equals(pkg); + public boolean isBrowserDefault(String pkg, int userId) { + String defaultPackage = mPackageManager.getDefaultBrowserPackageNameAsUser(userId); + if (defaultPackage != null) { + return defaultPackage.equals(pkg); + } + + final List list = mPackageManager.queryIntentActivitiesAsUser(BROWSE_PROBE, + PackageManager.MATCH_ALL, userId); + // There is only 1 app, it must be the default browser. + return list != null && list.size() == 1; } } diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java index 2f5602fdbc1..10cfba0be4e 100644 --- a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java @@ -19,6 +19,7 @@ package com.android.settings.applications.defaultapps; import android.content.Context; import android.content.Intent; +import android.content.pm.ResolveInfo; import android.os.UserManager; import android.support.v7.preference.Preference; @@ -35,6 +36,8 @@ import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; +import java.util.Arrays; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; @@ -85,4 +88,15 @@ public class DefaultBrowserPreferenceControllerTest { verify(mPackageManager).getDefaultBrowserPackageNameAsUser(anyInt()); } + + @Test + public void isBrowserDefault_onlyApp_shouldReturnTrue() { + final String testPkg = "pkg"; + when(mPackageManager.getDefaultBrowserPackageNameAsUser(anyInt())) + .thenReturn(null); + when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt())) + .thenReturn(Arrays.asList(new ResolveInfo())); + + assertThat(mController.isBrowserDefault(testPkg, 0)).isTrue(); + } }