Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5181)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java

Issue 2397153003: Ensure web page clicks off SERP are loaded in Chrome. (Closed)
Patch Set: Fix the check for Google Search URL. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
index 5f1fd4f3c6b97fc347dd8b0bc67d3a6bf4de0fb4..79f80d557c54d4b636ecb30cce2a5f8e84fafe68 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
@@ -43,6 +43,8 @@ import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.util.UrlUtilities;
import org.chromium.chrome.browser.webapps.WebappActivity;
import org.chromium.content_public.browser.LoadUrlParams;
+import org.chromium.content_public.browser.NavigationController;
+import org.chromium.content_public.browser.NavigationEntry;
import org.chromium.content_public.common.Referrer;
import org.chromium.ui.base.PageTransition;
import org.chromium.ui.base.WindowAndroid;
@@ -560,9 +562,23 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
}
@Override
+ public boolean isSerpReferrer(String referrerUrl, Tab tab) {
+ if (referrerUrl == null || !referrerUrl.contains("www.google")) return false;
+
+ NavigationController nController = tab.getWebContents().getNavigationController();
+ int index = nController.getLastCommittedEntryIndex();
+ if (index == -1) return false;
+
+ NavigationEntry entry = nController.getEntryAtIndex(index);
+ if (entry == null) return false;
+
+ return UrlUtilities.nativeIsGoogleSearchUrl(entry.getUrl());
+ }
+
+ @Override
public boolean maybeLaunchInstantApp(Tab tab, String url, String referrerUrl,
boolean isIncomingRedirect) {
- if (tab == null) return false;
+ if (tab == null || tab.getWebContents() == null) return false;
InstantAppsHandler handler = InstantAppsHandler.getInstance();
Intent intent = tab.getTabRedirectHandler() != null
@@ -576,6 +592,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
return handler.handleIncomingIntent(getAvailableContext(), resolvedIntent,
ChromeLauncherActivity.isCustomTabIntent(resolvedIntent));
} else if (!isIncomingRedirect) {
+ // Check if the navigation is coming from SERP and skip instant app handling.
+ if (isSerpReferrer(referrerUrl, tab)) return false;
return handler.handleNavigation(
getAvailableContext(), url,
TextUtils.isEmpty(referrerUrl) ? null : Uri.parse(referrerUrl),

Powered by Google App Engine
This is Rietveld 408576698