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

Side by Side Diff: chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc

Issue 23847004: "Redirecting URLs to Packaged Apps" implementation: revised (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Prevent interception for POSTs sooner; prevent when prerendering. Created 7 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate. h" 5 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate. h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 #include "chrome/browser/android/intercept_download_resource_throttle.h" 65 #include "chrome/browser/android/intercept_download_resource_throttle.h"
66 #include "components/navigation_interception/intercept_navigation_delegate.h" 66 #include "components/navigation_interception/intercept_navigation_delegate.h"
67 #endif 67 #endif
68 68
69 #if defined(OS_CHROMEOS) 69 #if defined(OS_CHROMEOS)
70 #include "chrome/browser/chromeos/login/merge_session_throttle.h" 70 #include "chrome/browser/chromeos/login/merge_session_throttle.h"
71 // TODO(oshima): Enable this for other platforms. 71 // TODO(oshima): Enable this for other platforms.
72 #include "chrome/browser/renderer_host/offline_resource_throttle.h" 72 #include "chrome/browser/renderer_host/offline_resource_throttle.h"
73 #endif 73 #endif
74 74
75 #if !defined(OS_ANDROID) && !defined(OS_IOS)
76 #include "chrome/browser/apps/app_url_redirector.h"
77 #endif
78
75 using content::BrowserThread; 79 using content::BrowserThread;
76 using content::RenderViewHost; 80 using content::RenderViewHost;
77 using content::ResourceDispatcherHostLoginDelegate; 81 using content::ResourceDispatcherHostLoginDelegate;
78 using content::ResourceRequestInfo; 82 using content::ResourceRequestInfo;
79 using extensions::Extension; 83 using extensions::Extension;
80 using extensions::StreamsPrivateAPI; 84 using extensions::StreamsPrivateAPI;
81 85
82 #if defined(OS_ANDROID) 86 #if defined(OS_ANDROID)
83 using navigation_interception::InterceptNavigationDelegate; 87 using navigation_interception::InterceptNavigationDelegate;
84 #endif 88 #endif
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 259
256 ChromeURLRequestUserData* user_data = 260 ChromeURLRequestUserData* user_data =
257 ChromeURLRequestUserData::Create(request); 261 ChromeURLRequestUserData::Create(request);
258 bool is_prerendering = prerender_tracker_->IsPrerenderingOnIOThread( 262 bool is_prerendering = prerender_tracker_->IsPrerenderingOnIOThread(
259 child_id, route_id); 263 child_id, route_id);
260 if (is_prerendering) { 264 if (is_prerendering) {
261 user_data->set_is_prerender(true); 265 user_data->set_is_prerender(true);
262 request->SetPriority(net::IDLE); 266 request->SetPriority(net::IDLE);
263 } 267 }
264 268
269 #if !defined(OS_ANDROID) && !defined(OS_IOS)
270 // Redirect some navigations to apps that have registered matching URL
271 // handlers ('url_handlers' in the manifest).
272 if (!is_prerendering && resource_type == ResourceType::MAIN_FRAME &&
darin (slow to review) 2013/09/05 23:54:25 I don't think this file should be built in the OS_
sergeygs 2013/09/06 02:51:14 Done. I guess you're right about this file not bui
273 request->method() != "POST") {
274 throttles->push_back(AppUrlRedirector::CreateThrottleFor(request));
not at google - send to devlin 2013/09/06 00:51:30 come to think of it, you should only need to regis
sergeygs 2013/09/06 02:51:14 Sure, I'll test that case. This is registered for
not at google - send to devlin 2013/09/06 03:02:11 As more recently discussed in person, the Extensio
275 }
276 #endif
277
265 #if defined(OS_ANDROID) 278 #if defined(OS_ANDROID)
266 if (!is_prerendering && resource_type == ResourceType::MAIN_FRAME) { 279 if (!is_prerendering && resource_type == ResourceType::MAIN_FRAME) {
267 throttles->push_back( 280 throttles->push_back(
268 InterceptNavigationDelegate::CreateThrottleFor(request)); 281 InterceptNavigationDelegate::CreateThrottleFor(request));
269 } 282 }
270 #endif 283 #endif
284
271 #if defined(OS_CHROMEOS) 285 #if defined(OS_CHROMEOS)
272 if (resource_type == ResourceType::MAIN_FRAME) { 286 if (resource_type == ResourceType::MAIN_FRAME) {
273 // We check offline first, then check safe browsing so that we still can 287 // We check offline first, then check safe browsing so that we still can
274 // block unsafe site after we remove offline page. 288 // block unsafe site after we remove offline page.
275 throttles->push_back(new OfflineResourceThrottle( 289 throttles->push_back(new OfflineResourceThrottle(
276 child_id, route_id, request, appcache_service)); 290 child_id, route_id, request, appcache_service));
277 // Add interstitial page while merge session process (cookie 291 // Add interstitial page while merge session process (cookie
278 // reconstruction from OAuth2 refresh token in ChromeOS login) is still in 292 // reconstruction from OAuth2 refresh token in ChromeOS login) is still in
279 // progress while we are attempting to load a google property. 293 // progress while we are attempting to load a google property.
280 throttles->push_back(new MergeSessionThrottle( 294 throttles->push_back(new MergeSessionThrottle(
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 if (!prerender::PrerenderManager::DoesURLHaveValidScheme(redirect_url) && 651 if (!prerender::PrerenderManager::DoesURLHaveValidScheme(redirect_url) &&
638 ResourceRequestInfo::ForRequest(request)->GetAssociatedRenderView( 652 ResourceRequestInfo::ForRequest(request)->GetAssociatedRenderView(
639 &child_id, &route_id) && 653 &child_id, &route_id) &&
640 prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id)) { 654 prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id)) {
641 ReportUnsupportedPrerenderScheme(redirect_url); 655 ReportUnsupportedPrerenderScheme(redirect_url);
642 prerender_tracker_->TryCancel( 656 prerender_tracker_->TryCancel(
643 child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME); 657 child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME);
644 request->Cancel(); 658 request->Cancel();
645 } 659 }
646 } 660 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698