Mark only browser as default in app detail page
Change-Id: I8112d859ba788a1dc67c44b5e0de668c0fc13169
Fix: 35307728
Test: make RunSettingsRoboTests
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index 9c4ee08..441a02e 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -1076,8 +1076,8 @@
}
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 dca300b..7077912 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.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 @@
/**
* 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<ResolveInfo> 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 2f5602f..10cfba0 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 @@
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.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 @@
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();
+ }
}