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

Unified Diff: content/browser/renderer_host/resource_dispatcher_host.cc

Issue 6966017: Remove a chrome dependency by removing Prerender from ResourceDispatcherHost. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 7 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 side-by-side diff with in-line comments
Download patch
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 451f99e0ecae7defef1fa19d4d1f219d3df29a11..58e8d9879a976186e4ae50b19c77b0db59727039 100644
--- a/content/browser/renderer_host/resource_dispatcher_host.cc
+++ b/content/browser/renderer_host/resource_dispatcher_host.cc
@@ -25,8 +25,6 @@
#include "chrome/browser/download/save_file_manager.h"
#include "chrome/browser/external_protocol_handler.h"
#include "chrome/browser/net/url_request_tracking.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"
@@ -281,7 +279,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);
}
@@ -433,48 +432,14 @@ 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. If prerendering is enabled, trigger a prerender for the URL
- // and abort the request, to prevent double-gets. Otherwise, do a normal
- // prefetch.
- 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;
- }
- if (prerender::PrerenderManager::IsPrerenderingPossible()) {
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- NewRunnableFunction(prerender::HandlePrefetchTag,
- resource_context.prerender_manager(),
- child_id,
- route_id,
- request_data.url,
- referrer,
- is_prerendering));
- AbortRequestBeforeItStarts(filter_, sync_result, route_id, request_id);
- return;
- }
- // Otherwise, treat like a normal request, and fall-through.
- }
- // 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;
- }
+ // 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;
}
// Construct the event handler.
@@ -524,12 +489,13 @@ void ResourceDispatcherHost::BeginRequest(
load_flags |= net::LOAD_DO_NOT_PROMPT_FOR_LOGIN;
}
- if (is_prerendering)
- load_flags |= net::LOAD_PRERENDER;
-
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)
@@ -2034,7 +2000,6 @@ net::RequestPriority ResourceDispatcherHost::DetermineRequestPriority(
}
}
-
// static
bool ResourceDispatcherHost::is_prefetch_enabled() {
return is_prefetch_enabled_;

Powered by Google App Engine
This is Rietveld 408576698