| Index: content/browser/loader/resource_requester_info.cc
|
| diff --git a/content/browser/loader/resource_requester_info.cc b/content/browser/loader/resource_requester_info.cc
|
| index 3e71b2967ac306eb47b4e8affe718d16a57f210e..7b4f1e502475f8e9e8ca3b8ac3c76e671d0d8f00 100644
|
| --- a/content/browser/loader/resource_requester_info.cc
|
| +++ b/content/browser/loader/resource_requester_info.cc
|
| @@ -10,10 +10,25 @@
|
| #include "content/browser/blob_storage/chrome_blob_storage_context.h"
|
| #include "content/browser/service_worker/service_worker_context_wrapper.h"
|
| #include "content/public/browser/browser_thread.h"
|
| +#include "content/public/browser/resource_context.h"
|
| +#include "content/public/common/browser_side_navigation_policy.h"
|
| #include "storage/browser/fileapi/file_system_context.h"
|
|
|
| namespace content {
|
|
|
| +namespace {
|
| +
|
| +void GetContextsCallbackForNavigationPreload(
|
| + scoped_refptr<ServiceWorkerContextWrapper> service_worker_context,
|
| + ResourceType resource_type,
|
| + ResourceContext** resource_context_out,
|
| + net::URLRequestContext** request_context_out) {
|
| + *resource_context_out = service_worker_context->resource_context();
|
| + *request_context_out = (*resource_context_out)->GetRequestContext();
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| ResourceRequesterInfo::ResourceRequesterInfo(
|
| RequesterType type,
|
| int child_id,
|
| @@ -85,4 +100,31 @@ ResourceRequesterInfo::CreateForDownloadOrPageSave(int child_id) {
|
| GetContextsCallback()));
|
| }
|
|
|
| +scoped_refptr<ResourceRequesterInfo>
|
| +ResourceRequesterInfo::CreateForNavigationPreload(
|
| + ResourceRequesterInfo* original_request_info) {
|
| + GetContextsCallback get_contexts_callback =
|
| + original_request_info->get_contexts_callback_;
|
| + if (IsBrowserSideNavigationEnabled()) {
|
| + DCHECK(original_request_info->IsBrowserSideNavigation());
|
| + DCHECK(!get_contexts_callback);
|
| + DCHECK(original_request_info->service_worker_context());
|
| + // The requester info for browser side navigation doesn't have the
|
| + // get_contexts_callback. So create the callback here which gets the
|
| + // ResourceContext and the URLRequestContext form ServiceWorkerContext.
|
| + get_contexts_callback =
|
| + base::Bind(&GetContextsCallbackForNavigationPreload,
|
| + scoped_refptr<ServiceWorkerContextWrapper>(
|
| + original_request_info->service_worker_context()));
|
| + } else {
|
| + DCHECK(original_request_info->IsRenderer());
|
| + DCHECK(get_contexts_callback);
|
| + }
|
| +
|
| + return scoped_refptr<ResourceRequesterInfo>(new ResourceRequesterInfo(
|
| + RequesterType::NAVIGATION_PRELOAD, -1, nullptr /* appcache_service */,
|
| + nullptr /* blob_storage_context */, nullptr /* file_system_context */,
|
| + original_request_info->service_worker_context(), get_contexts_callback));
|
| +}
|
| +
|
| } // namespace content
|
|
|