Mark only browser as default in app detail page

Change-Id: I8112d859ba788a1dc67c44b5e0de668c0fc13169
Fix: 35307728
Test: make RunSettingsRoboTests
This commit is contained in:
Fan Zhang
2017-02-16 11:56:18 -08:00
parent 42df1dcac0
commit 6786d8cd53
3 changed files with 26 additions and 7 deletions

View File

@@ -1076,8 +1076,8 @@ public class InstalledAppDetails extends AppInfoBase
} }
pref = findPreference("default_browser"); pref = findPreference("default_browser");
if (pref != null) { if (pref != null) {
pref.setSummary( pref.setSummary(new DefaultBrowserPreferenceController(context)
DefaultBrowserPreferenceController.isBrowserDefault(mPackageName, context) .isBrowserDefault(mPackageName, mUserId)
? R.string.yes : R.string.no); ? R.string.yes : R.string.no);
} }
pref = findPreference("default_phone_app"); pref = findPreference("default_phone_app");

View File

@@ -21,7 +21,6 @@ import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo; import android.content.pm.ResolveInfo;
import android.net.Uri; import android.net.Uri;
import android.os.UserHandle;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.text.TextUtils; import android.text.TextUtils;
@@ -96,9 +95,15 @@ public class DefaultBrowserPreferenceController extends DefaultAppPreferenceCont
/** /**
* Whether or not the pkg is the default browser * Whether or not the pkg is the default browser
*/ */
public static boolean isBrowserDefault(String pkg, Context context) { public boolean isBrowserDefault(String pkg, int userId) {
String defaultPackage = context.getPackageManager() String defaultPackage = mPackageManager.getDefaultBrowserPackageNameAsUser(userId);
.getDefaultBrowserPackageNameAsUser(UserHandle.myUserId()); if (defaultPackage != null) {
return defaultPackage != null && defaultPackage.equals(pkg); 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;
} }
} }

View File

@@ -19,6 +19,7 @@ package com.android.settings.applications.defaultapps;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.os.UserManager; import android.os.UserManager;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
@@ -35,6 +36,8 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
import java.util.Arrays;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyInt;
@@ -85,4 +88,15 @@ public class DefaultBrowserPreferenceControllerTest {
verify(mPackageManager).getDefaultBrowserPackageNameAsUser(anyInt()); 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();
}
} }