diff options
Diffstat (limited to 'chromium/content/browser/shared_worker/shared_worker_script_loader_factory.cc')
-rw-r--r-- | chromium/content/browser/shared_worker/shared_worker_script_loader_factory.cc | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/chromium/content/browser/shared_worker/shared_worker_script_loader_factory.cc b/chromium/content/browser/shared_worker/shared_worker_script_loader_factory.cc new file mode 100644 index 00000000000..f819351042c --- /dev/null +++ b/chromium/content/browser/shared_worker/shared_worker_script_loader_factory.cc @@ -0,0 +1,69 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/browser/shared_worker/shared_worker_script_loader_factory.h" + +#include <memory> +#include "content/browser/service_worker/service_worker_context_core.h" +#include "content/browser/service_worker/service_worker_context_wrapper.h" +#include "content/browser/service_worker/service_worker_provider_host.h" +#include "content/browser/service_worker/service_worker_version.h" +#include "content/browser/shared_worker/shared_worker_script_loader.h" +#include "content/browser/url_loader_factory_getter.h" +#include "content/common/service_worker/service_worker_utils.h" +#include "mojo/public/cpp/bindings/strong_binding.h" +#include "services/network/public/cpp/resource_response.h" +#include "third_party/blink/public/mojom/service_worker/service_worker_provider_type.mojom.h" + +namespace content { + +SharedWorkerScriptLoaderFactory::SharedWorkerScriptLoaderFactory( + ServiceWorkerContextWrapper* context, + base::WeakPtr<ServiceWorkerProviderHost> service_worker_provider_host, + ResourceContext* resource_context, + scoped_refptr<URLLoaderFactoryGetter> loader_factory_getter) + : service_worker_provider_host_(service_worker_provider_host), + resource_context_(resource_context), + loader_factory_getter_(loader_factory_getter) { + DCHECK(ServiceWorkerUtils::IsServicificationEnabled()); + DCHECK_EQ(service_worker_provider_host_->provider_type(), + blink::mojom::ServiceWorkerProviderType::kForSharedWorker); +} + +SharedWorkerScriptLoaderFactory::~SharedWorkerScriptLoaderFactory() {} + +void SharedWorkerScriptLoaderFactory::CreateLoaderAndStart( + network::mojom::URLLoaderRequest request, + int32_t routing_id, + int32_t request_id, + uint32_t options, + const network::ResourceRequest& resource_request, + network::mojom::URLLoaderClientPtr client, + const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) { + // Handle only the main script (RESOURCE_TYPE_SHARED_WORKER). Import scripts + // should go to the network loader or controller. + if (resource_request.resource_type != RESOURCE_TYPE_SHARED_WORKER) { + mojo::ReportBadMessage( + "SharedWorkerScriptLoaderFactory should only get requests for shared " + "worker scripts"); + return; + } + + // Create a SharedWorkerScriptLoader to load the script. + mojo::MakeStrongBinding( + std::make_unique<SharedWorkerScriptLoader>( + routing_id, request_id, options, resource_request, std::move(client), + service_worker_provider_host_, resource_context_, + loader_factory_getter_, traffic_annotation), + std::move(request)); +} + +void SharedWorkerScriptLoaderFactory::Clone( + network::mojom::URLLoaderFactoryRequest request) { + // This method is required to support synchronous requests, which shared + // worker script requests are not. + NOTIMPLEMENTED(); +} + +} // namespace content |