Index: content/browser/renderer_host/resource_dispatcher_host_impl.cc |
=================================================================== |
--- content/browser/renderer_host/resource_dispatcher_host_impl.cc (revision 138143) |
+++ content/browser/renderer_host/resource_dispatcher_host_impl.cc (working copy) |
@@ -39,7 +39,7 @@ |
#include "content/browser/renderer_host/redirect_to_file_resource_handler.h" |
#include "content/browser/renderer_host/render_view_host_impl.h" |
#include "content/browser/renderer_host/resource_message_filter.h" |
-#include "content/public/browser/resource_request_details.h" |
+#include "content/browser/renderer_host/transfer_navigation_resource_throttle.h" |
#include "content/browser/renderer_host/resource_request_info_impl.h" |
#include "content/browser/renderer_host/sync_resource_handler.h" |
#include "content/browser/renderer_host/throttling_resource_handler.h" |
@@ -58,6 +58,7 @@ |
#include "content/public/browser/render_view_host_delegate.h" |
#include "content/public/browser/resource_dispatcher_host_delegate.h" |
#include "content/public/browser/resource_dispatcher_host_login_delegate.h" |
+#include "content/public/browser/resource_request_details.h" |
#include "content/public/browser/resource_throttle.h" |
#include "content/public/common/content_switches.h" |
#include "content/public/common/process_type.h" |
@@ -898,24 +899,33 @@ |
// Insert a buffered event handler before the actual one. |
handler = new BufferedResourceHandler(handler, this, request); |
+ ScopedVector<ResourceThrottle> throttles; |
darin (slow to review)
2012/05/22 05:23:06
not sure if it is worth it, but it would be less c
jam
2012/05/22 15:01:36
Done.
|
+ if (request_data.resource_type == ResourceType::MAIN_FRAME) |
+ throttles.push_back(new TransferNavigationResourceThrottle(request)); |
+ |
if (delegate_) { |
bool is_continuation_of_transferred_request = |
(deferred_request != NULL); |
- ScopedVector<ResourceThrottle> throttles; |
+ ScopedVector<ResourceThrottle> embedder_throttles; |
delegate_->RequestBeginning(request, |
resource_context, |
request_data.resource_type, |
child_id, |
route_id, |
is_continuation_of_transferred_request, |
- &throttles); |
- if (!throttles.empty()) { |
- handler = new ThrottlingResourceHandler(this, handler, child_id, |
- request_id, throttles.Pass()); |
- } |
+ &embedder_throttles); |
+ throttles.insert( |
+ throttles.end(), embedder_throttles.begin(), embedder_throttles.end()); |
+ embedder_throttles.weak_erase( |
+ embedder_throttles.begin(), embedder_throttles.end()); |
} |
+ if (!throttles.empty()) { |
+ handler = new ThrottlingResourceHandler(this, handler, child_id, request_id, |
+ throttles.Pass()); |
+ } |
+ |
bool allow_download = request_data.allow_download && |
ResourceType::IsFrame(request_data.resource_type); |
// Make extra info and read footer (contains request ID). |