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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java

Issue 2774763002: Kick incognito tabs from CCTs to tabbed mode. (Closed)
Patch Set: Rebase Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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.customtabs; 5 package org.chromium.chrome.browser.customtabs;
6 6
7 import android.app.Activity; 7 import android.app.Activity;
8 import android.content.ComponentName;
8 import android.content.Context; 9 import android.content.Context;
9 import android.content.Intent; 10 import android.content.Intent;
10 import android.content.pm.ResolveInfo; 11 import android.content.pm.ResolveInfo;
11 import android.text.TextUtils; 12 import android.text.TextUtils;
12 13
14 import org.chromium.base.ContextUtils;
13 import org.chromium.base.VisibleForTesting; 15 import org.chromium.base.VisibleForTesting;
16 import org.chromium.chrome.browser.ChromeTabbedActivity;
14 import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator; 17 import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator;
15 import org.chromium.chrome.browser.contextmenu.ContextMenuPopulator; 18 import org.chromium.chrome.browser.contextmenu.ContextMenuPopulator;
16 import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl; 19 import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl;
17 import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler; 20 import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler;
18 import org.chromium.chrome.browser.fullscreen.BrowserStateBrowserControlsVisibil ityDelegate; 21 import org.chromium.chrome.browser.fullscreen.BrowserStateBrowserControlsVisibil ityDelegate;
19 import org.chromium.chrome.browser.fullscreen.ComposedBrowserControlsVisibilityD elegate; 22 import org.chromium.chrome.browser.fullscreen.ComposedBrowserControlsVisibilityD elegate;
23 import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
20 import org.chromium.chrome.browser.tab.BrowserControlsVisibilityDelegate; 24 import org.chromium.chrome.browser.tab.BrowserControlsVisibilityDelegate;
21 import org.chromium.chrome.browser.tab.InterceptNavigationDelegateImpl; 25 import org.chromium.chrome.browser.tab.InterceptNavigationDelegateImpl;
22 import org.chromium.chrome.browser.tab.Tab; 26 import org.chromium.chrome.browser.tab.Tab;
23 import org.chromium.chrome.browser.tab.TabContextMenuItemDelegate; 27 import org.chromium.chrome.browser.tab.TabContextMenuItemDelegate;
24 import org.chromium.chrome.browser.tab.TabDelegateFactory; 28 import org.chromium.chrome.browser.tab.TabDelegateFactory;
25 import org.chromium.chrome.browser.tab.TabStateBrowserControlsVisibilityDelegate ; 29 import org.chromium.chrome.browser.tab.TabStateBrowserControlsVisibilityDelegate ;
26 import org.chromium.chrome.browser.tab.TabWebContentsDelegateAndroid; 30 import org.chromium.chrome.browser.tab.TabWebContentsDelegateAndroid;
31 import org.chromium.chrome.browser.tabmodel.TabModel;
32 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
33 import org.chromium.chrome.browser.tabmodel.document.AsyncTabCreationParams;
34 import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
27 import org.chromium.chrome.browser.util.IntentUtils; 35 import org.chromium.chrome.browser.util.IntentUtils;
28 import org.chromium.chrome.browser.util.UrlUtilities; 36 import org.chromium.chrome.browser.util.UrlUtilities;
37 import org.chromium.content_public.browser.LoadUrlParams;
38 import org.chromium.content_public.common.ResourceRequestBody;
39 import org.chromium.ui.mojom.WindowOpenDisposition;
29 40
30 /** 41 /**
31 * A {@link TabDelegateFactory} class to be used in all {@link Tab} owned 42 * A {@link TabDelegateFactory} class to be used in all {@link Tab} owned
32 * by a {@link CustomTabActivity}. 43 * by a {@link CustomTabActivity}.
33 */ 44 */
34 public class CustomTabDelegateFactory extends TabDelegateFactory { 45 public class CustomTabDelegateFactory extends TabDelegateFactory {
35 /** 46 /**
36 * A custom external navigation delegate that forbids the intent picker from showing up. 47 * A custom external navigation delegate that forbids the intent picker from showing up.
37 */ 48 */
38 static class CustomTabNavigationDelegate extends ExternalNavigationDelegateI mpl { 49 static class CustomTabNavigationDelegate extends ExternalNavigationDelegateI mpl {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 141
131 @Override 142 @Override
132 public boolean shouldResumeRequestsForCreatedWindow() { 143 public boolean shouldResumeRequestsForCreatedWindow() {
133 return true; 144 return true;
134 } 145 }
135 146
136 @Override 147 @Override
137 protected void bringActivityToForeground() { 148 protected void bringActivityToForeground() {
138 // No-op here. If client's task is in background Chrome is unable to foreground it. 149 // No-op here. If client's task is in background Chrome is unable to foreground it.
139 } 150 }
151
152 @Override
153 public void openNewTab(String url, String extraHeaders, ResourceRequestB ody postData,
154 int disposition, boolean isRendererInitiated) {
155 // If attempting to open an incognito tab, always send the user to t abbed mode.
156 if (disposition == WindowOpenDisposition.OFF_THE_RECORD) {
157 if (isRendererInitiated) {
158 throw new IllegalStateException(
159 "Invalid attempt to open an incognito tab from the r enderer");
160 }
161 LoadUrlParams loadUrlParams = new LoadUrlParams(url);
162 loadUrlParams.setVerbatimHeaders(extraHeaders);
163 loadUrlParams.setPostData(postData);
164 loadUrlParams.setIsRendererInitiated(isRendererInitiated);
165
166 Class<? extends ChromeTabbedActivity> tabbedClass =
167 MultiWindowUtils.getInstance().getTabbedActivityForInten t(
168 null, ContextUtils.getApplicationContext());
169 AsyncTabCreationParams tabParams = new AsyncTabCreationParams(lo adUrlParams,
170 new ComponentName(ContextUtils.getApplicationContext(), tabbedClass));
171 new TabDelegate(true).createNewTab(tabParams,
172 TabLaunchType.FROM_LONGPRESS_FOREGROUND, TabModel.INVALI D_TAB_INDEX);
173 return;
174 }
175
176 super.openNewTab(url, extraHeaders, postData, disposition, isRendere rInitiated);
177 }
140 } 178 }
141 179
142 private final boolean mShouldHideBrowserControls; 180 private final boolean mShouldHideBrowserControls;
143 private final boolean mIsOpenedByChrome; 181 private final boolean mIsOpenedByChrome;
144 private final BrowserStateBrowserControlsVisibilityDelegate mBrowserStateVis ibilityDelegate; 182 private final BrowserStateBrowserControlsVisibilityDelegate mBrowserStateVis ibilityDelegate;
145 183
146 private ExternalNavigationDelegateImpl mNavigationDelegate; 184 private ExternalNavigationDelegateImpl mNavigationDelegate;
147 private ExternalNavigationHandler mNavigationHandler; 185 private ExternalNavigationHandler mNavigationHandler;
148 186
149 /** 187 /**
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 @VisibleForTesting 245 @VisibleForTesting
208 ExternalNavigationDelegateImpl getExternalNavigationDelegate() { 246 ExternalNavigationDelegateImpl getExternalNavigationDelegate() {
209 return mNavigationDelegate; 247 return mNavigationDelegate;
210 } 248 }
211 249
212 @Override 250 @Override
213 public boolean canShowAppBanners(Tab tab) { 251 public boolean canShowAppBanners(Tab tab) {
214 return false; 252 return false;
215 } 253 }
216 } 254 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698