| Index: chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
| index 5a86992c61579c0e43facf58d1d21524bd386ff0..62e7b26e134f1410c79c85b6eb56c6c04d801d72 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
| @@ -121,15 +121,15 @@ public class ExternalNavigationHandler {
|
| return result;
|
| }
|
|
|
| - private boolean intentsHaveSameResolvers(Intent intent, Intent previousIntent) {
|
| - HashSet<ComponentName> previousHandlers = new HashSet<>();
|
| - for (ResolveInfo r : mDelegate.queryIntentActivities(previousIntent)) {
|
| - previousHandlers.add(new ComponentName(r.activityInfo.packageName,
|
| - r.activityInfo.name));
|
| + private boolean resolversSubsetOf(List<ResolveInfo> infos, List<ResolveInfo> container) {
|
| + HashSet<ComponentName> containerSet = new HashSet<>();
|
| + for (ResolveInfo info : container) {
|
| + containerSet.add(
|
| + new ComponentName(info.activityInfo.packageName, info.activityInfo.name));
|
| }
|
| - for (ResolveInfo r : mDelegate.queryIntentActivities(intent)) {
|
| - if (!previousHandlers.contains(new ComponentName(
|
| - r.activityInfo.packageName, r.activityInfo.name))) {
|
| + for (ResolveInfo info : infos) {
|
| + if (!containerSet.contains(new ComponentName(
|
| + info.activityInfo.packageName, info.activityInfo.name))) {
|
| return false;
|
| }
|
| }
|
| @@ -377,10 +377,10 @@ public class ExternalNavigationHandler {
|
| previousIntent = null;
|
| }
|
|
|
| - if (previousIntent != null) {
|
| - if (intentsHaveSameResolvers(intent, previousIntent)) {
|
| - return OverrideUrlLoadingResult.NO_OVERRIDE;
|
| - }
|
| + if (previousIntent != null
|
| + && resolversSubsetOf(resolvingInfos,
|
| + mDelegate.queryIntentActivities(previousIntent))) {
|
| + return OverrideUrlLoadingResult.NO_OVERRIDE;
|
| }
|
| }
|
| }
|
|
|