Loading src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java +10 −1 Original line number Diff line number Diff line Loading @@ -17,9 +17,11 @@ package com.android.settings.applications.defaultapps; import android.content.Context; import android.content.pm.ComponentInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.util.ArraySet; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; Loading @@ -27,6 +29,7 @@ import com.android.settingslib.applications.DefaultAppInfo; import java.util.ArrayList; import java.util.List; import java.util.Set; /** * Fragment for choosing default browser. Loading Loading @@ -62,14 +65,20 @@ public class DefaultBrowserPicker extends DefaultAppPickerFragment { DefaultBrowserPreferenceController.BROWSE_PROBE, PackageManager.MATCH_ALL, mUserId); final int count = list.size(); final Set<String> addedPackages = new ArraySet<>(); for (int i = 0; i < count; i++) { ResolveInfo info = list.get(i); if (info.activityInfo == null || !info.handleAllWebDataURI) { continue; } final String packageName = info.activityInfo.packageName; if (addedPackages.contains(packageName)) { continue; } try { candidates.add(new DefaultAppInfo(context, mPm, mPm.getApplicationInfoAsUser(info.activityInfo.packageName, 0, mUserId))); mPm.getApplicationInfoAsUser(packageName, 0, mUserId))); addedPackages.add(packageName); } catch (PackageManager.NameNotFoundException e) { // Skip unknown packages. } Loading tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPickerTest.java +47 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.settings.applications.defaultapps; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; Loading @@ -23,11 +25,20 @@ import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.os.UserManager; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settingslib.applications.DefaultAppInfo; import com.android.settingslib.wrapper.PackageManagerWrapper; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -53,6 +64,7 @@ public class DefaultBrowserPickerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); FakeFeatureFactory.setupForTest(); when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); mPicker = new DefaultBrowserPicker(); Loading @@ -72,4 +84,39 @@ public class DefaultBrowserPickerTest { mPicker.getDefaultKey(); verify(mPackageManager).getDefaultBrowserPackageNameAsUser(anyInt()); } @Test public void getCandidates_shouldNotIncludeDuplicatePackageName() throws NameNotFoundException { final List<ResolveInfo> resolveInfos = new ArrayList<>(); final String PACKAGE_ONE = "com.first.package"; final String PACKAGE_TWO = "com.second.package"; resolveInfos.add(createResolveInfo(PACKAGE_ONE)); resolveInfos.add(createResolveInfo(PACKAGE_TWO)); resolveInfos.add(createResolveInfo(PACKAGE_ONE)); resolveInfos.add(createResolveInfo(PACKAGE_TWO)); when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt())) .thenReturn(resolveInfos); when(mPackageManager.getApplicationInfoAsUser(eq(PACKAGE_ONE), anyInt(), anyInt())) .thenReturn(createApplicationInfo(PACKAGE_ONE)); when(mPackageManager.getApplicationInfoAsUser(eq(PACKAGE_TWO), anyInt(), anyInt())) .thenReturn(createApplicationInfo(PACKAGE_TWO)); final List<DefaultAppInfo> defaultBrowserInfo = mPicker.getCandidates(); assertThat(defaultBrowserInfo.size()).isEqualTo(2); } private ResolveInfo createResolveInfo(String packageName) { final ResolveInfo info = new ResolveInfo(); info.handleAllWebDataURI = true; info.activityInfo = new ActivityInfo(); info.activityInfo.packageName = packageName; return info; } private ApplicationInfo createApplicationInfo(String packageName) { final ApplicationInfo info = new ApplicationInfo(); info.packageName = packageName; return info; } } Loading
src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java +10 −1 Original line number Diff line number Diff line Loading @@ -17,9 +17,11 @@ package com.android.settings.applications.defaultapps; import android.content.Context; import android.content.pm.ComponentInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.util.ArraySet; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; Loading @@ -27,6 +29,7 @@ import com.android.settingslib.applications.DefaultAppInfo; import java.util.ArrayList; import java.util.List; import java.util.Set; /** * Fragment for choosing default browser. Loading Loading @@ -62,14 +65,20 @@ public class DefaultBrowserPicker extends DefaultAppPickerFragment { DefaultBrowserPreferenceController.BROWSE_PROBE, PackageManager.MATCH_ALL, mUserId); final int count = list.size(); final Set<String> addedPackages = new ArraySet<>(); for (int i = 0; i < count; i++) { ResolveInfo info = list.get(i); if (info.activityInfo == null || !info.handleAllWebDataURI) { continue; } final String packageName = info.activityInfo.packageName; if (addedPackages.contains(packageName)) { continue; } try { candidates.add(new DefaultAppInfo(context, mPm, mPm.getApplicationInfoAsUser(info.activityInfo.packageName, 0, mUserId))); mPm.getApplicationInfoAsUser(packageName, 0, mUserId))); addedPackages.add(packageName); } catch (PackageManager.NameNotFoundException e) { // Skip unknown packages. } Loading
tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPickerTest.java +47 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.settings.applications.defaultapps; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; Loading @@ -23,11 +25,20 @@ import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.os.UserManager; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settingslib.applications.DefaultAppInfo; import com.android.settingslib.wrapper.PackageManagerWrapper; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -53,6 +64,7 @@ public class DefaultBrowserPickerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); FakeFeatureFactory.setupForTest(); when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); mPicker = new DefaultBrowserPicker(); Loading @@ -72,4 +84,39 @@ public class DefaultBrowserPickerTest { mPicker.getDefaultKey(); verify(mPackageManager).getDefaultBrowserPackageNameAsUser(anyInt()); } @Test public void getCandidates_shouldNotIncludeDuplicatePackageName() throws NameNotFoundException { final List<ResolveInfo> resolveInfos = new ArrayList<>(); final String PACKAGE_ONE = "com.first.package"; final String PACKAGE_TWO = "com.second.package"; resolveInfos.add(createResolveInfo(PACKAGE_ONE)); resolveInfos.add(createResolveInfo(PACKAGE_TWO)); resolveInfos.add(createResolveInfo(PACKAGE_ONE)); resolveInfos.add(createResolveInfo(PACKAGE_TWO)); when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt())) .thenReturn(resolveInfos); when(mPackageManager.getApplicationInfoAsUser(eq(PACKAGE_ONE), anyInt(), anyInt())) .thenReturn(createApplicationInfo(PACKAGE_ONE)); when(mPackageManager.getApplicationInfoAsUser(eq(PACKAGE_TWO), anyInt(), anyInt())) .thenReturn(createApplicationInfo(PACKAGE_TWO)); final List<DefaultAppInfo> defaultBrowserInfo = mPicker.getCandidates(); assertThat(defaultBrowserInfo.size()).isEqualTo(2); } private ResolveInfo createResolveInfo(String packageName) { final ResolveInfo info = new ResolveInfo(); info.handleAllWebDataURI = true; info.activityInfo = new ActivityInfo(); info.activityInfo.packageName = packageName; return info; } private ApplicationInfo createApplicationInfo(String packageName) { final ApplicationInfo info = new ApplicationInfo(); info.packageName = packageName; return info; } }