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

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: Rebasing 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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 58
59 #if defined(USE_SYSTEM_PROTOBUF) 59 #if defined(USE_SYSTEM_PROTOBUF)
60 #include <google/protobuf/repeated_field.h> 60 #include <google/protobuf/repeated_field.h>
61 #else 61 #else
62 #include "third_party/protobuf/src/google/protobuf/repeated_field.h" 62 #include "third_party/protobuf/src/google/protobuf/repeated_field.h"
63 #endif 63 #endif
64 64
65 #if defined(OS_ANDROID) 65 #if defined(OS_ANDROID)
66 #include "chrome/browser/android/intercept_download_resource_throttle.h" 66 #include "chrome/browser/android/intercept_download_resource_throttle.h"
67 #include "components/navigation_interception/intercept_navigation_delegate.h" 67 #include "components/navigation_interception/intercept_navigation_delegate.h"
68 #else
69 #include "chrome/browser/apps/app_url_redirector.h"
68 #endif 70 #endif
69 71
70 #if defined(OS_CHROMEOS) 72 #if defined(OS_CHROMEOS)
71 #include "chrome/browser/chromeos/login/merge_session_throttle.h" 73 #include "chrome/browser/chromeos/login/merge_session_throttle.h"
72 // TODO(oshima): Enable this for other platforms. 74 // TODO(oshima): Enable this for other platforms.
73 #include "chrome/browser/renderer_host/offline_resource_throttle.h" 75 #include "chrome/browser/renderer_host/offline_resource_throttle.h"
74 #endif 76 #endif
75 77
76 using content::BrowserThread; 78 using content::BrowserThread;
77 using content::RenderViewHost; 79 using content::RenderViewHost;
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 258
257 ChromeURLRequestUserData* user_data = 259 ChromeURLRequestUserData* user_data =
258 ChromeURLRequestUserData::Create(request); 260 ChromeURLRequestUserData::Create(request);
259 bool is_prerendering = prerender_tracker_->IsPrerenderingOnIOThread( 261 bool is_prerendering = prerender_tracker_->IsPrerenderingOnIOThread(
260 child_id, route_id); 262 child_id, route_id);
261 if (is_prerendering) { 263 if (is_prerendering) {
262 user_data->set_is_prerender(true); 264 user_data->set_is_prerender(true);
263 request->SetPriority(net::IDLE); 265 request->SetPriority(net::IDLE);
264 } 266 }
265 267
268 ProfileIOData* io_data = ProfileIOData::FromResourceContext(
269 resource_context);
270
271 if (!is_prerendering && resource_type == ResourceType::MAIN_FRAME) {
266 #if defined(OS_ANDROID) 272 #if defined(OS_ANDROID)
267 if (!is_prerendering && resource_type == ResourceType::MAIN_FRAME) {
268 throttles->push_back( 273 throttles->push_back(
269 InterceptNavigationDelegate::CreateThrottleFor(request)); 274 InterceptNavigationDelegate::CreateThrottleFor(request));
275 #else
276 // Redirect some navigations to apps that have registered matching URL
277 // handlers ('url_handlers' in the manifest).
278 content::ResourceThrottle* url_to_app_throttle =
279 AppUrlRedirector::MaybeCreateThrottleFor(request, io_data);
280 if (url_to_app_throttle)
281 throttles->push_back(url_to_app_throttle);
282 #endif
270 } 283 }
271 #endif 284
272 #if defined(OS_CHROMEOS) 285 #if defined(OS_CHROMEOS)
273 if (resource_type == ResourceType::MAIN_FRAME) { 286 if (resource_type == ResourceType::MAIN_FRAME) {
274 // 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
275 // block unsafe site after we remove offline page. 288 // block unsafe site after we remove offline page.
276 throttles->push_back(new OfflineResourceThrottle( 289 throttles->push_back(new OfflineResourceThrottle(
277 child_id, route_id, request, appcache_service)); 290 child_id, route_id, request, appcache_service));
278 // Add interstitial page while merge session process (cookie 291 // Add interstitial page while merge session process (cookie
279 // reconstruction from OAuth2 refresh token in ChromeOS login) is still in 292 // reconstruction from OAuth2 refresh token in ChromeOS login) is still in
280 // progress while we are attempting to load a google property. 293 // progress while we are attempting to load a google property.
281 throttles->push_back(new MergeSessionThrottle( 294 throttles->push_back(new MergeSessionThrottle(
282 child_id, route_id, request)); 295 child_id, route_id, request));
283 } 296 }
284 #endif 297 #endif
285 298
286 // Don't attempt to append headers to requests that have already started. 299 // Don't attempt to append headers to requests that have already started.
287 // TODO(stevet): Remove this once the request ordering issues are resolved 300 // TODO(stevet): Remove this once the request ordering issues are resolved
288 // in crbug.com/128048. 301 // in crbug.com/128048.
289 if (!request->is_pending()) { 302 if (!request->is_pending()) {
290 net::HttpRequestHeaders headers; 303 net::HttpRequestHeaders headers;
291 headers.CopyFrom(request->extra_request_headers()); 304 headers.CopyFrom(request->extra_request_headers());
292 ProfileIOData* io_data = ProfileIOData::FromResourceContext(
293 resource_context);
294 bool incognito = io_data->is_incognito(); 305 bool incognito = io_data->is_incognito();
295 chrome_variations::VariationsHttpHeaderProvider::GetInstance()-> 306 chrome_variations::VariationsHttpHeaderProvider::GetInstance()->
296 AppendHeaders(request->url(), 307 AppendHeaders(request->url(),
297 incognito, 308 incognito,
298 !incognito && io_data->GetMetricsEnabledStateOnIOThread(), 309 !incognito && io_data->GetMetricsEnabledStateOnIOThread(),
299 &headers); 310 &headers);
300 request->SetExtraRequestHeaders(headers); 311 request->SetExtraRequestHeaders(headers);
301 } 312 }
302 313
303 #if defined(ENABLE_ONE_CLICK_SIGNIN) 314 #if defined(ENABLE_ONE_CLICK_SIGNIN)
304 AppendChromeSyncGaiaHeader(request, resource_context); 315 AppendChromeSyncGaiaHeader(request, resource_context);
305 #endif 316 #endif
306 317
307 AppendStandardResourceThrottles(request, 318 AppendStandardResourceThrottles(request,
308 resource_context, 319 resource_context,
309 child_id, 320 child_id,
310 route_id, 321 route_id,
311 resource_type, 322 resource_type,
312 throttles); 323 throttles);
313 324
314 ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context);
315 if (io_data->resource_prefetch_predictor_observer()) { 325 if (io_data->resource_prefetch_predictor_observer()) {
316 io_data->resource_prefetch_predictor_observer()->OnRequestStarted( 326 io_data->resource_prefetch_predictor_observer()->OnRequestStarted(
317 request, resource_type, child_id, route_id); 327 request, resource_type, child_id, route_id);
318 } 328 }
319 } 329 }
320 330
321 void ChromeResourceDispatcherHostDelegate::DownloadStarting( 331 void ChromeResourceDispatcherHostDelegate::DownloadStarting(
322 net::URLRequest* request, 332 net::URLRequest* request,
323 content::ResourceContext* resource_context, 333 content::ResourceContext* resource_context,
324 int child_id, 334 int child_id,
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 if (!prerender::PrerenderManager::DoesURLHaveValidScheme(redirect_url) && 651 if (!prerender::PrerenderManager::DoesURLHaveValidScheme(redirect_url) &&
642 ResourceRequestInfo::ForRequest(request)->GetAssociatedRenderView( 652 ResourceRequestInfo::ForRequest(request)->GetAssociatedRenderView(
643 &child_id, &route_id) && 653 &child_id, &route_id) &&
644 prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id)) { 654 prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id)) {
645 ReportUnsupportedPrerenderScheme(redirect_url); 655 ReportUnsupportedPrerenderScheme(redirect_url);
646 prerender_tracker_->TryCancel( 656 prerender_tracker_->TryCancel(
647 child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME); 657 child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME);
648 request->Cancel(); 658 request->Cancel();
649 } 659 }
650 } 660 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698