Index: chrome/browser/renderer_host/resource_dispatcher_host.cc |
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.cc b/chrome/browser/renderer_host/resource_dispatcher_host.cc |
index 0066ad67f8d7dbca7d2c907261b751fea2213feb..b205fd0ddfe8917690365cad0e37d3167f7f0f30 100644 |
--- a/chrome/browser/renderer_host/resource_dispatcher_host.cc |
+++ b/chrome/browser/renderer_host/resource_dispatcher_host.cc |
@@ -21,6 +21,7 @@ |
#include "chrome/browser/download/download_manager.h" |
#include "chrome/browser/download/download_request_manager.h" |
#include "chrome/browser/download/save_file_manager.h" |
+#include "chrome/browser/extensions/user_script_listener.h" |
#include "chrome/browser/external_protocol_handler.h" |
#include "chrome/browser/in_process_webkit/webkit_thread.h" |
#include "chrome/browser/login_prompt.h" |
@@ -252,6 +253,8 @@ ResourceDispatcherHost::ResourceDispatcherHost(MessageLoop* io_loop) |
download_request_manager_(new DownloadRequestManager(io_loop, ui_loop_)), |
ALLOW_THIS_IN_INITIALIZER_LIST( |
save_file_manager_(new SaveFileManager(ui_loop_, io_loop, this))), |
+ ALLOW_THIS_IN_INITIALIZER_LIST(user_script_listener_( |
+ new UserScriptListener(ui_loop_, io_loop, this))), |
safe_browsing_(new SafeBrowsingService), |
webkit_thread_(new WebKitThread), |
request_id_(-1), |
@@ -282,6 +285,8 @@ ResourceDispatcherHost::~ResourceDispatcherHost() { |
iter != ids.end(); ++iter) { |
CancelBlockedRequestsForRoute(iter->first, iter->second); |
} |
+ |
+ user_script_listener_->OnResourceDispatcherHostGone(); |
} |
void ResourceDispatcherHost::Initialize() { |
@@ -1247,6 +1252,11 @@ void ResourceDispatcherHost::BeginRequestInternal(URLRequest* request) { |
// its content should be filtered) and start it itself. |
return; |
} |
+ if (!user_script_listener_->ShouldStartRequest(request)) { |
+ // This request depends on some user scripts that haven't loaded yet. The |
+ // UserScriptListener will resume the request when they're ready. |
+ return; |
+ } |
request->Start(); |
// Make sure we have the load state monitor running |