Index: chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java |
index 031c06741a1f2fc346f31ee4ab5b8290dc19a608..5b32d7ea18a7964109cda646ddc8f8f47180e5d2 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java |
@@ -8,8 +8,8 @@ import org.chromium.base.VisibleForTesting; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.ChromeActivity; |
import org.chromium.chrome.browser.ChromeApplication; |
+import org.chromium.chrome.browser.datausage.DataUseTabUIManager; |
import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler; |
-import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler.OverrideUrlLoadingResult; |
import org.chromium.chrome.browser.externalnav.ExternalNavigationParams; |
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
import org.chromium.components.navigation_interception.InterceptNavigationDelegate; |
@@ -20,15 +20,16 @@ import org.chromium.content_public.common.ConsoleMessageLevel; |
/** |
* Class that controls navigations and allows to intercept them. It is used on Android to 'convert' |
- * certain navigations to Intents to 3rd party applications. |
+ * certain navigations to Intents to 3rd party applications and to "pause" navigations when data use |
+ * tracking has ended. |
*/ |
public class InterceptNavigationDelegateImpl implements InterceptNavigationDelegate { |
private final ChromeActivity mActivity; |
private final Tab mTab; |
private final ExternalNavigationHandler mExternalNavHandler; |
private final AuthenticatorNavigationInterceptor mAuthenticatorHelper; |
- private ExternalNavigationHandler.OverrideUrlLoadingResult mLastOverrideUrlLoadingResult = |
- ExternalNavigationHandler.OverrideUrlLoadingResult.NO_OVERRIDE; |
+ private OverrideUrlLoadingResult mLastOverrideUrlLoadingResult = |
+ OverrideUrlLoadingResult.NO_OVERRIDE; |
/** |
* Whether forward history should be cleared after navigation is committed. |
@@ -37,6 +38,21 @@ public class InterceptNavigationDelegateImpl implements InterceptNavigationDeleg |
private boolean mShouldClearRedirectHistoryForTabClobbering; |
/** |
+ * Result types for checking if URL loading should be overridden. |
+ */ |
+ public enum OverrideUrlLoadingResult { |
+ /* Override the URL loading and launch an intent. */ |
+ OVERRIDE_WITH_EXTERNAL_INTENT, |
+ /* Override the URL loading and clobber the current tab. */ |
+ OVERRIDE_WITH_CLOBBERING_TAB, |
+ /* Override the URL loading. The desired action will be determined asynchronously (e.g. by |
+ * requiring user confirmation). */ |
+ OVERRIDE_WITH_ASYNC_ACTION, |
+ /* Don't override the URL loading. */ |
+ NO_OVERRIDE, |
+ } |
+ |
+ /** |
* Default constructor of {@link InterceptNavigationDelegateImpl}. |
*/ |
public InterceptNavigationDelegateImpl(ChromeActivity activity, Tab tab) { |
@@ -66,7 +82,7 @@ public class InterceptNavigationDelegateImpl implements InterceptNavigationDeleg |
.setOpenInNewTab(true) |
.build(); |
return mExternalNavHandler.shouldOverrideUrlLoading(params) |
- != ExternalNavigationHandler.OverrideUrlLoadingResult.NO_OVERRIDE; |
+ != OverrideUrlLoadingResult.NO_OVERRIDE; |
} |
@VisibleForTesting |
@@ -105,10 +121,13 @@ public class InterceptNavigationDelegateImpl implements InterceptNavigationDeleg |
.setHasUserGesture(navigationParams.hasUserGesture) |
.setShouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent(shouldCloseTab |
&& navigationParams.isMainFrame) |
- .build(); |
- ExternalNavigationHandler.OverrideUrlLoadingResult result = |
- mExternalNavHandler.shouldOverrideUrlLoading(params); |
+ .build(); |
+ OverrideUrlLoadingResult result = mExternalNavHandler.shouldOverrideUrlLoading(params); |
mLastOverrideUrlLoadingResult = result; |
+ if (result == OverrideUrlLoadingResult.NO_OVERRIDE) { |
+ result = DataUseTabUIManager.shouldOverrideUrlLoading(mActivity, mTab, url, |
newt (away)
2015/11/06 20:40:36
Do we want to warn users if they're leaving Chrome
megjablon
2015/11/06 23:41:40
For v1 we're not going to alert the user when he o
|
+ navigationParams.pageTransitionType, navigationParams.referrer); |
+ } |
switch (result) { |
case OVERRIDE_WITH_EXTERNAL_INTENT: |
assert mExternalNavHandler.canExternalAppHandleUrl(url); |