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

Side by Side 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: adding OWNERS back 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.tab; 5 package org.chromium.chrome.browser.tab;
6 6
7 import org.chromium.base.VisibleForTesting; 7 import org.chromium.base.VisibleForTesting;
8 import org.chromium.chrome.R; 8 import org.chromium.chrome.R;
9 import org.chromium.chrome.browser.ChromeActivity; 9 import org.chromium.chrome.browser.ChromeActivity;
10 import org.chromium.chrome.browser.ChromeApplication; 10 import org.chromium.chrome.browser.ChromeApplication;
11 import org.chromium.chrome.browser.datausage.DataUseTabUIManager;
11 import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler; 12 import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler;
12 import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler.Overrid eUrlLoadingResult; 13 import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler.Overrid eUrlLoadingResult;
13 import org.chromium.chrome.browser.externalnav.ExternalNavigationParams; 14 import org.chromium.chrome.browser.externalnav.ExternalNavigationParams;
14 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; 15 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
15 import org.chromium.components.navigation_interception.InterceptNavigationDelega te; 16 import org.chromium.components.navigation_interception.InterceptNavigationDelega te;
16 import org.chromium.components.navigation_interception.NavigationParams; 17 import org.chromium.components.navigation_interception.NavigationParams;
17 import org.chromium.content_public.browser.NavigationController; 18 import org.chromium.content_public.browser.NavigationController;
18 import org.chromium.content_public.browser.WebContents; 19 import org.chromium.content_public.browser.WebContents;
19 import org.chromium.content_public.common.ConsoleMessageLevel; 20 import org.chromium.content_public.common.ConsoleMessageLevel;
20 21
21 /** 22 /**
22 * Class that controls navigations and allows to intercept them. It is used on A ndroid to 'convert' 23 * Class that controls navigations and allows to intercept them. It is used on A ndroid to 'convert'
23 * certain navigations to Intents to 3rd party applications. 24 * certain navigations to Intents to 3rd party applications and to "pause" navig ations when data use
25 * tracking has ended.
24 */ 26 */
25 public class InterceptNavigationDelegateImpl implements InterceptNavigationDeleg ate { 27 public class InterceptNavigationDelegateImpl implements InterceptNavigationDeleg ate {
26 private final ChromeActivity mActivity; 28 private final ChromeActivity mActivity;
27 private final Tab mTab; 29 private final Tab mTab;
28 private final ExternalNavigationHandler mExternalNavHandler; 30 private final ExternalNavigationHandler mExternalNavHandler;
29 private final AuthenticatorNavigationInterceptor mAuthenticatorHelper; 31 private final AuthenticatorNavigationInterceptor mAuthenticatorHelper;
30 private ExternalNavigationHandler.OverrideUrlLoadingResult mLastOverrideUrlL oadingResult = 32 private ExternalNavigationHandler.OverrideUrlLoadingResult mLastOverrideUrlL oadingResult =
31 ExternalNavigationHandler.OverrideUrlLoadingResult.NO_OVERRIDE; 33 ExternalNavigationHandler.OverrideUrlLoadingResult.NO_OVERRIDE;
32 34
33 /** 35 /**
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 .setTab(mTab) 101 .setTab(mTab)
100 .setApplicationMustBeInForeground(true) 102 .setApplicationMustBeInForeground(true)
101 .setRedirectHandler(tabRedirectHandler) 103 .setRedirectHandler(tabRedirectHandler)
102 .setOpenInNewTab(shouldCloseTab) 104 .setOpenInNewTab(shouldCloseTab)
103 .setIsBackgroundTabNavigation(mTab.isHidden() && !isInitialTabLa unchInBackground) 105 .setIsBackgroundTabNavigation(mTab.isHidden() && !isInitialTabLa unchInBackground)
104 .setIsMainFrame(navigationParams.isMainFrame) 106 .setIsMainFrame(navigationParams.isMainFrame)
105 .setHasUserGesture(navigationParams.hasUserGesture) 107 .setHasUserGesture(navigationParams.hasUserGesture)
106 .setShouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent(shoul dCloseTab 108 .setShouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent(shoul dCloseTab
107 && navigationParams.isMainFrame) 109 && navigationParams.isMainFrame)
108 .build(); 110 .build();
109 ExternalNavigationHandler.OverrideUrlLoadingResult result = 111 OverrideUrlLoadingResult result = mExternalNavHandler.shouldOverrideUrlL oading(params);
110 mExternalNavHandler.shouldOverrideUrlLoading(params);
111 mLastOverrideUrlLoadingResult = result; 112 mLastOverrideUrlLoadingResult = result;
112 switch (result) { 113 switch (result) {
113 case OVERRIDE_WITH_EXTERNAL_INTENT: 114 case OVERRIDE_WITH_EXTERNAL_INTENT:
114 assert mExternalNavHandler.canExternalAppHandleUrl(url); 115 assert mExternalNavHandler.canExternalAppHandleUrl(url);
115 if (navigationParams.isMainFrame) { 116 if (navigationParams.isMainFrame) {
116 onOverrideUrlLoadingAndLaunchIntent(); 117 onOverrideUrlLoadingAndLaunchIntent();
117 } 118 }
118 return true; 119 return true;
119 case OVERRIDE_WITH_CLOBBERING_TAB: 120 case OVERRIDE_WITH_CLOBBERING_TAB:
120 mShouldClearRedirectHistoryForTabClobbering = true; 121 mShouldClearRedirectHistoryForTabClobbering = true;
121 return true; 122 return true;
122 case OVERRIDE_WITH_ASYNC_ACTION: 123 case OVERRIDE_WITH_ASYNC_ACTION:
123 if (!shouldCloseTab && navigationParams.isMainFrame) { 124 if (!shouldCloseTab && navigationParams.isMainFrame) {
124 onOverrideUrlLoadingAndLaunchIntent(); 125 onOverrideUrlLoadingAndLaunchIntent();
125 } 126 }
126 return true; 127 return true;
127 case NO_OVERRIDE: 128 case NO_OVERRIDE:
128 default: 129 default:
129 if (navigationParams.isExternalProtocol) { 130 if (navigationParams.isExternalProtocol) {
130 logBlockedNavigationToDevToolsConsole(url); 131 logBlockedNavigationToDevToolsConsole(url);
131 return true; 132 return true;
132 } 133 }
133 return false; 134 return DataUseTabUIManager.shouldOverrideUrlLoading(mActivity, m Tab, url,
135 navigationParams.pageTransitionType, navigationParams.re ferrer);
134 } 136 }
135 } 137 }
136 138
137 /** 139 /**
138 * Updates navigation history if navigation is canceled due to intent handle r. We go back to the 140 * Updates navigation history if navigation is canceled due to intent handle r. We go back to the
139 * last committed entry index which was saved before the navigation, and rem ove the empty 141 * last committed entry index which was saved before the navigation, and rem ove the empty
140 * entries from the navigation history. See crbug.com/426679 142 * entries from the navigation history. See crbug.com/426679
141 */ 143 */
142 public void maybeUpdateNavigationHistory() { 144 public void maybeUpdateNavigationHistory() {
143 WebContents webContents = mTab.getWebContents(); 145 WebContents webContents = mTab.getWebContents();
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 } 227 }
226 228
227 private void logBlockedNavigationToDevToolsConsole(String url) { 229 private void logBlockedNavigationToDevToolsConsole(String url) {
228 int resId = mExternalNavHandler.canExternalAppHandleUrl(url) 230 int resId = mExternalNavHandler.canExternalAppHandleUrl(url)
229 ? R.string.blocked_navigation_warning 231 ? R.string.blocked_navigation_warning
230 : R.string.unreachable_navigation_warning; 232 : R.string.unreachable_navigation_warning;
231 mTab.getWebContents().addMessageToDevToolsConsole( 233 mTab.getWebContents().addMessageToDevToolsConsole(
232 ConsoleMessageLevel.WARNING, mTab.getApplicationContext().getStr ing(resId, url)); 234 ConsoleMessageLevel.WARNING, mTab.getApplicationContext().getStr ing(resId, url));
233 } 235 }
234 } 236 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698