Index: content/browser/renderer_host/resource_dispatcher_host.cc |
diff --git a/content/browser/renderer_host/resource_dispatcher_host.cc b/content/browser/renderer_host/resource_dispatcher_host.cc |
index 17633a8d31ed7038af5685909d3d070fd1f73a38..9865e8e42633e8cd1cefc15113d90b8e615590bb 100644 |
--- a/content/browser/renderer_host/resource_dispatcher_host.cc |
+++ b/content/browser/renderer_host/resource_dispatcher_host.cc |
@@ -24,9 +24,6 @@ |
#include "chrome/browser/download/download_util.h" |
#include "chrome/browser/download/save_file_manager.h" |
#include "chrome/browser/external_protocol_handler.h" |
-#include "chrome/browser/prerender/prerender_manager.h" |
-#include "chrome/browser/prerender/prerender_tracker.h" |
-#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/renderer_host/download_resource_handler.h" |
#include "chrome/browser/renderer_host/safe_browsing_resource_handler.h" |
#include "chrome/browser/renderer_host/save_file_resource_handler.h" |
@@ -280,7 +277,8 @@ ResourceDispatcherHost::ResourceDispatcherHost( |
is_shutdown_(false), |
max_outstanding_requests_cost_per_process_( |
kMaxOutstandingRequestsCostPerProcess), |
- filter_(NULL) { |
+ filter_(NULL), |
+ observer_(NULL) { |
resource_queue_.Initialize(resource_queue_delegates); |
} |
@@ -432,54 +430,16 @@ void ResourceDispatcherHost::BeginRequest( |
} |
const GURL referrer = MaybeStripReferrer(request_data.referrer); |
- const bool is_prerendering = |
- prerender::PrerenderTracker::GetInstance()->IsPrerenderingOnIOThread( |
- child_id, route_id); |
- |
- // Handle a PREFETCH resource type. If prefetch is disabled, squelch the |
- // request. Otherwise, do a normal request to warm the cache. |
- if (request_data.resource_type == ResourceType::PREFETCH) { |
- // All PREFETCH requests should be GETs, but be defensive about it. |
- if (request_data.method != "GET") { |
- AbortRequestBeforeItStarts(filter_, sync_result, route_id, request_id); |
- return; |
- } |
- if (!ResourceDispatcherHost::is_prefetch_enabled()) { |
- AbortRequestBeforeItStarts(filter_, sync_result, route_id, request_id); |
- return; |
- } |
- // Otherwise, treat like a normal request, and fall-through. |
- } |
- |
- // Handle a PRERENDER motivated request. Very similar to rel=prefetch, these |
- // rel=prerender requests instead launch an early render of the entire page. |
- if (request_data.resource_type == ResourceType::PRERENDER) { |
- if (prerender::PrerenderManager::IsPrerenderingPossible()) { |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- NewRunnableFunction(prerender::HandleTag, |
- resource_context.prerender_manager(), |
- child_id, |
- route_id, |
- request_data.url, |
- referrer, |
- is_prerendering)); |
- } |
- // Prerendering or not, this request should stop. |
+ |
+ // Allow the observer to block/handle the request. |
+ if (observer_ && !observer_->ShouldBeginRequest(child_id, route_id, |
+ request_data, |
+ resource_context, |
+ referrer)) { |
AbortRequestBeforeItStarts(filter_, sync_result, route_id, request_id); |
return; |
} |
- // Abort any prerenders that spawn requests that use invalid HTTP methods. |
- if (is_prerendering && |
- !prerender::PrerenderManager::IsValidHttpMethod(request_data.method)) { |
- if (prerender::PrerenderTracker::GetInstance()->TryCancelOnIOThread( |
- child_id, route_id, prerender::FINAL_STATUS_INVALID_HTTP_METHOD)) { |
- AbortRequestBeforeItStarts(filter_, sync_result, route_id, request_id); |
- return; |
- } |
- } |
- |
// Construct the event handler. |
scoped_refptr<ResourceHandler> handler; |
if (sync_result) { |
@@ -527,12 +487,13 @@ void ResourceDispatcherHost::BeginRequest( |
load_flags |= net::LOAD_DO_NOT_PROMPT_FOR_LOGIN; |
} |
- if (is_prerendering) |
- load_flags |= net::LOAD_PRERENDERING; |
- |
if (sync_result) |
load_flags |= net::LOAD_IGNORE_LIMITS; |
+ // Allow the observer to change the load flags. |
+ if (observer_) |
+ observer_->MutateLoadFlags(child_id, route_id, &load_flags); |
+ |
// Raw headers are sensitive, as they inclide Cookie/Set-Cookie, so only |
// allow requesting them if requestor has ReadRawCookies permission. |
if ((load_flags & net::LOAD_REPORT_RAW_HEADERS) |
@@ -2039,7 +2000,6 @@ net::RequestPriority ResourceDispatcherHost::DetermineRequestPriority( |
} |
} |
- |
// static |
bool ResourceDispatcherHost::is_prefetch_enabled() { |
return is_prefetch_enabled_; |