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

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

Issue 7058041: Remove ResourceDispatcherHost dependency on Chrome's LoginHandler and ExternalProtocolHandler. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix deps Created 9 years, 6 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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_observer. h" 5 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate. h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/external_protocol/external_protocol_handler.h"
9 #include "chrome/browser/prerender/prerender_manager.h" 10 #include "chrome/browser/prerender/prerender_manager.h"
10 #include "chrome/browser/prerender/prerender_tracker.h" 11 #include "chrome/browser/prerender/prerender_tracker.h"
11 #include "chrome/browser/renderer_host/safe_browsing_resource_handler.h" 12 #include "chrome/browser/renderer_host/safe_browsing_resource_handler.h"
12 #include "chrome/browser/safe_browsing/safe_browsing_service.h" 13 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
14 #include "chrome/browser/ui/login/login_prompt.h"
13 #include "content/browser/browser_thread.h" 15 #include "content/browser/browser_thread.h"
14 #include "content/browser/resource_context.h" 16 #include "content/browser/resource_context.h"
17 #include "content/browser/renderer_host/resource_dispatcher_host.h"
15 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" 18 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h"
16 #include "content/common/resource_messages.h" 19 #include "content/common/resource_messages.h"
17 #include "net/base/load_flags.h" 20 #include "net/base/load_flags.h"
18 21
19 // TODO(oshima): Enable this for other platforms. 22 // TODO(oshima): Enable this for other platforms.
20 #if defined(OS_CHROMEOS) 23 #if defined(OS_CHROMEOS)
21 #include "chrome/browser/renderer_host/offline_resource_handler.h" 24 #include "chrome/browser/renderer_host/offline_resource_handler.h"
22 #endif 25 #endif
23 26
24 ChromeResourceDispatcherHostObserver::ChromeResourceDispatcherHostObserver( 27 ChromeResourceDispatcherHostDelegate::ChromeResourceDispatcherHostDelegate(
25 ResourceDispatcherHost* resource_dispatcher_host, 28 ResourceDispatcherHost* resource_dispatcher_host,
26 prerender::PrerenderTracker* prerender_tracker) 29 prerender::PrerenderTracker* prerender_tracker)
27 : resource_dispatcher_host_(resource_dispatcher_host), 30 : resource_dispatcher_host_(resource_dispatcher_host),
28 safe_browsing_(g_browser_process->safe_browsing_service()), 31 safe_browsing_(g_browser_process->safe_browsing_service()),
29 prerender_tracker_(prerender_tracker) { 32 prerender_tracker_(prerender_tracker) {
30 } 33 }
31 34
32 ChromeResourceDispatcherHostObserver::~ChromeResourceDispatcherHostObserver() { 35 ChromeResourceDispatcherHostDelegate::~ChromeResourceDispatcherHostDelegate() {
33 } 36 }
34 37
35 bool ChromeResourceDispatcherHostObserver::ShouldBeginRequest( 38 bool ChromeResourceDispatcherHostDelegate::ShouldBeginRequest(
36 int child_id, int route_id, 39 int child_id, int route_id,
37 const ResourceHostMsg_Request& request_data, 40 const ResourceHostMsg_Request& request_data,
38 const content::ResourceContext& resource_context, 41 const content::ResourceContext& resource_context,
39 const GURL& referrer) { 42 const GURL& referrer) {
40 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 43 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
41 44
42 // Handle a PREFETCH resource type. If prefetch is disabled, squelch the 45 // Handle a PREFETCH resource type. If prefetch is disabled, squelch the
43 // request. Otherwise, do a normal request to warm the cache. 46 // request. Otherwise, do a normal request to warm the cache.
44 if (request_data.resource_type == ResourceType::PREFETCH) { 47 if (request_data.resource_type == ResourceType::PREFETCH) {
45 // All PREFETCH requests should be GETs, but be defensive about it. 48 // All PREFETCH requests should be GETs, but be defensive about it.
(...skipping 26 matching lines...) Expand all
72 !prerender::PrerenderManager::IsValidHttpMethod(request_data.method)) { 75 !prerender::PrerenderManager::IsValidHttpMethod(request_data.method)) {
73 prerender_tracker_->TryCancelOnIOThread( 76 prerender_tracker_->TryCancelOnIOThread(
74 child_id, route_id, 77 child_id, route_id,
75 prerender::FINAL_STATUS_INVALID_HTTP_METHOD); 78 prerender::FINAL_STATUS_INVALID_HTTP_METHOD);
76 return false; 79 return false;
77 } 80 }
78 81
79 return true; 82 return true;
80 } 83 }
81 84
82 void ChromeResourceDispatcherHostObserver::RequestBeginning( 85 ResourceHandler* ChromeResourceDispatcherHostDelegate::RequestBeginning(
83 ResourceHandler** handler, 86 ResourceHandler* handler,
84 net::URLRequest* request, 87 net::URLRequest* request,
85 bool is_subresource, 88 bool is_subresource,
86 int child_id, 89 int child_id,
87 int route_id) { 90 int route_id) {
88 if (prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id)) 91 if (prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id))
89 request->set_load_flags(request->load_flags() | net::LOAD_PRERENDERING); 92 request->set_load_flags(request->load_flags() | net::LOAD_PRERENDERING);
90 93
91 // Insert safe browsing at the front of the chain, so it gets to decide 94 // Insert safe browsing at the front of the chain, so it gets to decide
92 // on policies first. 95 // on policies first.
93 if (safe_browsing_->enabled()) { 96 if (safe_browsing_->enabled()) {
94 *handler = CreateSafeBrowsingResourceHandler( 97 handler = CreateSafeBrowsingResourceHandler(
95 *handler, child_id, route_id, is_subresource); 98 handler, child_id, route_id, is_subresource);
96 } 99 }
97 100
98 #if defined(OS_CHROMEOS) 101 #if defined(OS_CHROMEOS)
99 // We check offline first, then check safe browsing so that we still can block 102 // We check offline first, then check safe browsing so that we still can block
100 // unsafe site after we remove offline page. 103 // unsafe site after we remove offline page.
101 *handler = new OfflineResourceHandler( 104 handler = new OfflineResourceHandler(
102 *handler, child_id, route_id, resource_dispatcher_host_, request); 105 handler, child_id, route_id, resource_dispatcher_host_, request);
103 #endif 106 #endif
107 return handler;
104 } 108 }
105 109
106 void ChromeResourceDispatcherHostObserver::DownloadStarting( 110 ResourceHandler* ChromeResourceDispatcherHostDelegate::DownloadStarting(
107 ResourceHandler** handler, 111 ResourceHandler* handler,
108 int child_id, 112 int child_id,
109 int route_id) { 113 int route_id) {
110 if (safe_browsing_->enabled()) { 114 if (!safe_browsing_->enabled())
111 *handler = CreateSafeBrowsingResourceHandler( 115 return handler;
112 *handler, child_id, route_id, false); 116
113 } 117 return CreateSafeBrowsingResourceHandler(handler, child_id, route_id, false);
114 } 118 }
115 119
116 bool ChromeResourceDispatcherHostObserver::ShouldDeferStart( 120 bool ChromeResourceDispatcherHostDelegate::ShouldDeferStart(
117 net::URLRequest* request, 121 net::URLRequest* request,
118 const content::ResourceContext& resource_context) { 122 const content::ResourceContext& resource_context) {
119 ResourceDispatcherHostRequestInfo* info = 123 ResourceDispatcherHostRequestInfo* info =
120 resource_dispatcher_host_->InfoForRequest(request); 124 resource_dispatcher_host_->InfoForRequest(request);
121 return prerender_tracker_->PotentiallyDelayRequestOnIOThread( 125 return prerender_tracker_->PotentiallyDelayRequestOnIOThread(
122 request->url(), resource_context.prerender_manager(), 126 request->url(), resource_context.prerender_manager(),
123 info->child_id(), info->route_id(), info->request_id()); 127 info->child_id(), info->route_id(), info->request_id());
124 } 128 }
125 129
126 bool ChromeResourceDispatcherHostObserver::AcceptSSLClientCertificateRequest( 130 bool ChromeResourceDispatcherHostDelegate::AcceptSSLClientCertificateRequest(
127 net::URLRequest* request, net::SSLCertRequestInfo* cert_request_info) { 131 net::URLRequest* request, net::SSLCertRequestInfo* cert_request_info) {
128 if (request->load_flags() & net::LOAD_PREFETCH) 132 if (request->load_flags() & net::LOAD_PREFETCH)
129 return false; 133 return false;
130 134
131 if (request->load_flags() & net::LOAD_PRERENDERING) { 135 if (request->load_flags() & net::LOAD_PRERENDERING) {
132 int child_id, route_id; 136 int child_id, route_id;
133 if (ResourceDispatcherHost::RenderViewForRequest( 137 if (ResourceDispatcherHost::RenderViewForRequest(
134 request, &child_id, &route_id)) { 138 request, &child_id, &route_id)) {
135 if (prerender_tracker_->TryCancel( 139 if (prerender_tracker_->TryCancel(
136 child_id, route_id, 140 child_id, route_id,
137 prerender::FINAL_STATUS_SSL_CLIENT_CERTIFICATE_REQUESTED)) { 141 prerender::FINAL_STATUS_SSL_CLIENT_CERTIFICATE_REQUESTED)) {
138 return false; 142 return false;
139 } 143 }
140 } 144 }
141 } 145 }
142 146
143 return true; 147 return true;
144 } 148 }
145 149
146 bool ChromeResourceDispatcherHostObserver::AcceptAuthRequest( 150 bool ChromeResourceDispatcherHostDelegate::AcceptAuthRequest(
147 net::URLRequest* request, 151 net::URLRequest* request,
148 net::AuthChallengeInfo* auth_info) { 152 net::AuthChallengeInfo* auth_info) {
149 if (!(request->load_flags() & net::LOAD_PRERENDERING)) 153 if (!(request->load_flags() & net::LOAD_PRERENDERING))
150 return true; 154 return true;
151 155
152 int child_id, route_id; 156 int child_id, route_id;
153 if (!ResourceDispatcherHost::RenderViewForRequest( 157 if (!ResourceDispatcherHost::RenderViewForRequest(
154 request, &child_id, &route_id)) { 158 request, &child_id, &route_id)) {
155 NOTREACHED(); 159 NOTREACHED();
156 return true; 160 return true;
157 } 161 }
158 162
159 if (!prerender_tracker_->TryCancelOnIOThread( 163 if (!prerender_tracker_->TryCancelOnIOThread(
160 child_id, route_id, prerender::FINAL_STATUS_AUTH_NEEDED)) { 164 child_id, route_id, prerender::FINAL_STATUS_AUTH_NEEDED)) {
161 return true; 165 return true;
162 } 166 }
163 167
164 return false; 168 return false;
165 } 169 }
166 170
171 ResourceDispatcherHostLoginDelegate*
172 ChromeResourceDispatcherHostDelegate::CreateLoginDelegate(
173 net::AuthChallengeInfo* auth_info, net::URLRequest* request) {
174 return CreateLoginPrompt(auth_info, request);
175 }
176
177 void ChromeResourceDispatcherHostDelegate::HandleExternalProtocol(
178 const GURL& url, int child_id, int route_id) {
179 BrowserThread::PostTask(
180 BrowserThread::UI, FROM_HERE,
181 NewRunnableFunction(
182 &ExternalProtocolHandler::LaunchUrl, url, child_id, route_id));
183 }
184
167 ResourceHandler* 185 ResourceHandler*
168 ChromeResourceDispatcherHostObserver::CreateSafeBrowsingResourceHandler( 186 ChromeResourceDispatcherHostDelegate::CreateSafeBrowsingResourceHandler(
169 ResourceHandler* handler, int child_id, int route_id, 187 ResourceHandler* handler, int child_id, int route_id,
170 bool subresource) { 188 bool subresource) {
171 return SafeBrowsingResourceHandler::Create( 189 return SafeBrowsingResourceHandler::Create(
172 handler, child_id, route_id, subresource, safe_browsing_, 190 handler, child_id, route_id, subresource, safe_browsing_,
173 resource_dispatcher_host_); 191 resource_dispatcher_host_);
174 } 192 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698