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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java

Issue 1418473005: Add a dialog UI for Data Use accounting (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@freighterSnackbar
Patch Set: remove we Created 5 years, 1 month 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/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);

Powered by Google App Engine
This is Rietveld 408576698