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

Unified Diff: content/browser/loader/resource_dispatcher_host_impl.cc

Issue 2847443002: PlzNavigate: make NavigationResourceHandler a LayeredResourceHandler (Closed)
Patch Set: Removed one unit test Created 3 years, 8 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/loader/resource_dispatcher_host_impl.cc
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc
index 7271a3ac1ced5a4e7514c3296c9c5c942d01eef3..01d6b4418e3b999e54661f6e6a2aec49d5c89cc5 100644
--- a/content/browser/loader/resource_dispatcher_host_impl.cc
+++ b/content/browser/loader/resource_dispatcher_host_impl.cc
@@ -524,8 +524,8 @@ ResourceDispatcherHostImpl::MaybeInterceptAsStream(
StreamContext* stream_context =
GetStreamContextForResourceContext(info->GetContext());
- std::unique_ptr<StreamResourceHandler> handler(
- new StreamResourceHandler(request, stream_context->registry(), origin));
+ std::unique_ptr<StreamResourceHandler> handler(new StreamResourceHandler(
+ request, stream_context->registry(), origin, false));
info->set_is_stream(true);
std::unique_ptr<StreamInfo> stream_info(new StreamInfo);
@@ -1477,7 +1477,7 @@ ResourceDispatcherHostImpl::CreateResourceHandler(
request_data.fetch_request_context_type,
request_data.fetch_mixed_content_context_type,
requester_info->appcache_service(), child_id,
- route_id, std::move(handler));
+ route_id, std::move(handler), nullptr, nullptr);
}
std::unique_ptr<ResourceHandler>
@@ -1490,7 +1490,9 @@ ResourceDispatcherHostImpl::AddStandardHandlers(
AppCacheService* appcache_service,
int child_id,
int route_id,
- std::unique_ptr<ResourceHandler> handler) {
+ std::unique_ptr<ResourceHandler> handler,
+ NavigationURLLoaderImplCore* loader,
mmenke 2017/04/28 16:02:21 Can we give this a name that makes it clearer this
clamy 2017/05/02 15:05:44 Done.
+ std::unique_ptr<StreamHandle> stream_handle) {
// The InterceptingResourceHandler will replace its next handler with an
// appropriate one based on the MIME type of the response if needed. It
// should be placed at the end of the chain, just before |handler|.
@@ -1502,7 +1504,7 @@ ResourceDispatcherHostImpl::AddStandardHandlers(
// Add a NavigationResourceThrottle for navigations.
// PlzNavigate: the throttle is unnecessary as communication with the UI
- // thread is handled by the NavigationURLloader.
+ // thread is handled by the NavigationResourceHandler below.
if (!IsBrowserSideNavigationEnabled() && IsResourceTypeFrame(resource_type)) {
throttles.push_back(base::MakeUnique<NavigationResourceThrottle>(
request, delegate_, fetch_request_context_type,
@@ -1546,6 +1548,14 @@ ResourceDispatcherHostImpl::AddStandardHandlers(
handler.reset(new ThrottlingResourceHandler(
std::move(handler), request, std::move(post_mime_sniffing_throttles)));
+ if (IsBrowserSideNavigationEnabled() && IsResourceTypeFrame(resource_type)) {
mmenke 2017/04/28 16:02:21 DCHECK(loader); DCHECK(stream_handle); Alternativ
clamy 2017/05/02 15:05:44 Done.
+ // PlzNavigate
+ // Add a NavigationResourceHandler that will control the flow of navigation.
+ handler.reset(new NavigationResourceHandler(request, std::move(handler),
+ loader, delegate(),
+ std::move(stream_handle)));
+ }
mmenke 2017/04/28 16:02:21 } else { DCHECK(!loader); DCHECK(!stream_handl
clamy 2017/05/02 15:05:44 Done.
+
PluginService* plugin_service = nullptr;
#if BUILDFLAG(ENABLE_PLUGINS)
plugin_service = PluginService::GetInstance();
@@ -2072,8 +2082,15 @@ void ResourceDispatcherHostImpl::BeginNavigationRequest(
new_request.get(), appcache_handle_core->host(), resource_type, false);
}
+ StreamContext* stream_context =
+ GetStreamContextForResourceContext(extra_info->GetContext());
mmenke 2017/04/28 16:02:21 extra_info->GetContext() is just resource_context.
clamy 2017/05/02 15:05:44 Done.
std::unique_ptr<ResourceHandler> handler(
- new NavigationResourceHandler(new_request.get(), loader, delegate()));
+ new StreamResourceHandler(new_request.get(), stream_context->registry(),
+ new_request->url().GetOrigin(), true));
mmenke 2017/04/28 16:02:21 Maybe a comment on the use of immediate mode?
clamy 2017/05/02 15:05:44 Done.
+ std::unique_ptr<StreamHandle> stream_handle =
+ static_cast<StreamResourceHandler*>(handler.get())
mmenke 2017/04/28 16:02:21 Remove this cast, and just make handler a unqiue_p
clamy 2017/05/02 15:05:44 This require creating another std::unique_ptr<Reso
+ ->stream()
+ ->CreateHandle();
// TODO(davidben): Fix the dependency on child_id/route_id. Those are used
// by the ResourceScheduler. currently it's a no-op.
@@ -2085,7 +2102,7 @@ void ResourceDispatcherHostImpl::BeginNavigationRequest(
: nullptr,
-1, // child_id
-1, // route_id
- std::move(handler));
+ std::move(handler), loader, std::move(stream_handle));
BeginRequestInternal(std::move(new_request), std::move(handler));
}

Powered by Google App Engine
This is Rietveld 408576698