OLD | NEW |
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 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc
e-loading | 5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc
e-loading |
6 | 6 |
7 #include "content/browser/renderer_host/resource_dispatcher_host.h" | 7 #include "content/browser/renderer_host/resource_dispatcher_host.h" |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 #include <vector> | 10 #include <vector> |
(...skipping 26 matching lines...) Expand all Loading... |
37 #include "content/browser/renderer_host/cross_site_resource_handler.h" | 37 #include "content/browser/renderer_host/cross_site_resource_handler.h" |
38 #include "content/browser/renderer_host/redirect_to_file_resource_handler.h" | 38 #include "content/browser/renderer_host/redirect_to_file_resource_handler.h" |
39 #include "content/browser/renderer_host/render_view_host.h" | 39 #include "content/browser/renderer_host/render_view_host.h" |
40 #include "content/browser/renderer_host/render_view_host_delegate.h" | 40 #include "content/browser/renderer_host/render_view_host_delegate.h" |
41 #include "content/browser/renderer_host/resource_dispatcher_host_login_delegate.
h" | 41 #include "content/browser/renderer_host/resource_dispatcher_host_login_delegate.
h" |
42 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" | 42 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" |
43 #include "content/browser/renderer_host/resource_message_filter.h" | 43 #include "content/browser/renderer_host/resource_message_filter.h" |
44 #include "content/browser/renderer_host/resource_queue.h" | 44 #include "content/browser/renderer_host/resource_queue.h" |
45 #include "content/browser/renderer_host/resource_request_details.h" | 45 #include "content/browser/renderer_host/resource_request_details.h" |
46 #include "content/browser/renderer_host/sync_resource_handler.h" | 46 #include "content/browser/renderer_host/sync_resource_handler.h" |
| 47 #include "content/browser/renderer_host/doomed_resource_handler.h" |
47 #include "content/browser/resource_context.h" | 48 #include "content/browser/resource_context.h" |
48 #include "content/browser/ssl/ssl_client_auth_handler.h" | 49 #include "content/browser/ssl/ssl_client_auth_handler.h" |
49 #include "content/browser/ssl/ssl_manager.h" | 50 #include "content/browser/ssl/ssl_manager.h" |
50 #include "content/browser/worker_host/worker_service_impl.h" | 51 #include "content/browser/worker_host/worker_service_impl.h" |
51 #include "content/common/resource_messages.h" | 52 #include "content/common/resource_messages.h" |
52 #include "content/common/view_messages.h" | 53 #include "content/common/view_messages.h" |
53 #include "content/public/browser/browser_thread.h" | 54 #include "content/public/browser/browser_thread.h" |
54 #include "content/public/browser/content_browser_client.h" | 55 #include "content/public/browser/content_browser_client.h" |
55 #include "content/public/browser/download_manager.h" | 56 #include "content/public/browser/download_manager.h" |
56 #include "content/public/browser/global_request_id.h" | 57 #include "content/public/browser/global_request_id.h" |
(...skipping 2187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2244 bool ResourceDispatcherHost::allow_cross_origin_auth_prompt() { | 2245 bool ResourceDispatcherHost::allow_cross_origin_auth_prompt() { |
2245 return allow_cross_origin_auth_prompt_; | 2246 return allow_cross_origin_auth_prompt_; |
2246 } | 2247 } |
2247 | 2248 |
2248 void ResourceDispatcherHost::set_allow_cross_origin_auth_prompt(bool value) { | 2249 void ResourceDispatcherHost::set_allow_cross_origin_auth_prompt(bool value) { |
2249 allow_cross_origin_auth_prompt_ = value; | 2250 allow_cross_origin_auth_prompt_ = value; |
2250 } | 2251 } |
2251 | 2252 |
2252 void ResourceDispatcherHost::MarkAsTransferredNavigation( | 2253 void ResourceDispatcherHost::MarkAsTransferredNavigation( |
2253 const GlobalRequestID& transferred_request_id, | 2254 const GlobalRequestID& transferred_request_id, |
2254 net::URLRequest* ransferred_request) { | 2255 net::URLRequest* transferred_request) { |
2255 transferred_navigations_[transferred_request_id] = ransferred_request; | 2256 transferred_navigations_[transferred_request_id] = transferred_request; |
| 2257 |
| 2258 // If a URLRequest is transferred to a new RenderViewHost, its |
| 2259 // ResourceHandlers should not receive any notifications because they may |
| 2260 // depend on the state of the old RVH. We set a ResourceHandler that only |
| 2261 // allows canceling requests, because on shutdown of the RDH all pending |
| 2262 // requests are canceled. The RVH of requests that are being transferred may |
| 2263 // be gone by that time. If the request is resumed, the ResoureHandlers are |
| 2264 // substituted again. |
| 2265 ResourceDispatcherHostRequestInfo* info = InfoForRequest(transferred_request); |
| 2266 scoped_refptr<ResourceHandler> transferred_resource_handler( |
| 2267 new DoomedResourceHandler(info->resource_handler())); |
| 2268 info->set_resource_handler(transferred_resource_handler.get()); |
2256 } | 2269 } |
2257 | 2270 |
2258 bool ResourceDispatcherHost::IsTransferredNavigation( | 2271 bool ResourceDispatcherHost::IsTransferredNavigation( |
2259 const content::GlobalRequestID& transferred_request_id) const { | 2272 const content::GlobalRequestID& transferred_request_id) const { |
2260 return transferred_navigations_.find(transferred_request_id) != | 2273 return transferred_navigations_.find(transferred_request_id) != |
2261 transferred_navigations_.end(); | 2274 transferred_navigations_.end(); |
2262 } | 2275 } |
OLD | NEW |