| Index: content/renderer/shared_worker/embedded_shared_worker_stub.cc
|
| diff --git a/content/renderer/shared_worker/embedded_shared_worker_stub.cc b/content/renderer/shared_worker/embedded_shared_worker_stub.cc
|
| index eb8d6e33d68a6a42660212760d8fac5ab568c68d..cb5ef55d60ed0b612fc78644f0dcec74b8f0eaf0 100644
|
| --- a/content/renderer/shared_worker/embedded_shared_worker_stub.cc
|
| +++ b/content/renderer/shared_worker/embedded_shared_worker_stub.cc
|
| @@ -26,10 +26,9 @@
|
| #include "ipc/ipc_message_macros.h"
|
| #include "third_party/WebKit/public/platform/URLConversion.h"
|
| #include "third_party/WebKit/public/platform/WebSecurityOrigin.h"
|
| -#include "third_party/WebKit/public/web/WebDataSource.h"
|
| +#include "third_party/WebKit/public/platform/modules/serviceworker/WebServiceWorkerNetworkProvider.h"
|
| #include "third_party/WebKit/public/web/WebSharedWorker.h"
|
| #include "third_party/WebKit/public/web/WebSharedWorkerClient.h"
|
| -#include "third_party/WebKit/public/web/modules/serviceworker/WebServiceWorkerNetworkProvider.h"
|
| #include "url/origin.h"
|
|
|
| namespace content {
|
| @@ -66,33 +65,21 @@ class SharedWorkerWebApplicationCacheHostImpl
|
| }
|
| };
|
|
|
| -// We store an instance of this class in the "extra data" of the WebDataSource
|
| -// and attach a ServiceWorkerNetworkProvider to it as base::UserData.
|
| -// (see createServiceWorkerNetworkProvider).
|
| -class DataSourceExtraData
|
| - : public blink::WebDataSource::ExtraData,
|
| - public base::SupportsUserData {
|
| - public:
|
| - DataSourceExtraData() {}
|
| - ~DataSourceExtraData() override {}
|
| - bool is_secure_context = false;
|
| -};
|
| -
|
| // Called on the main thread only and blink owns it.
|
| class WebServiceWorkerNetworkProviderImpl
|
| : public blink::WebServiceWorkerNetworkProvider {
|
| public:
|
| + WebServiceWorkerNetworkProviderImpl(
|
| + std::unique_ptr<ServiceWorkerNetworkProvider> provider,
|
| + bool is_secure_context)
|
| + : provider_(std::move(provider)), is_secure_context_(is_secure_context) {}
|
| +
|
| // Blink calls this method for each request starting with the main script,
|
| // we tag them with the provider id.
|
| - void willSendRequest(blink::WebDataSource* data_source,
|
| - blink::WebURLRequest& request) override {
|
| - ServiceWorkerNetworkProvider* provider =
|
| - GetNetworkProviderFromDataSource(data_source);
|
| + void willSendRequest(blink::WebURLRequest& request) override {
|
| std::unique_ptr<RequestExtraData> extra_data(new RequestExtraData);
|
| - extra_data->set_service_worker_provider_id(provider->provider_id());
|
| - extra_data->set_initiated_in_secure_context(
|
| - static_cast<DataSourceExtraData*>(data_source->getExtraData())
|
| - ->is_secure_context);
|
| + extra_data->set_service_worker_provider_id(provider_->provider_id());
|
| + extra_data->set_initiated_in_secure_context(is_secure_context_);
|
| request.setExtraData(extra_data.release());
|
| // If the provider does not have a controller at this point, the renderer
|
| // expects subresource requests to never be handled by a controlling service
|
| @@ -102,7 +89,7 @@ class WebServiceWorkerNetworkProviderImpl
|
| // request and break the assumptions of the renderer.
|
| if (request.getRequestContext() !=
|
| blink::WebURLRequest::RequestContextSharedWorker &&
|
| - !provider->IsControlledByServiceWorker() &&
|
| + !provider_->IsControlledByServiceWorker() &&
|
| request.getServiceWorkerMode() !=
|
| blink::WebURLRequest::ServiceWorkerMode::None) {
|
| request.setServiceWorkerMode(
|
| @@ -110,26 +97,19 @@ class WebServiceWorkerNetworkProviderImpl
|
| }
|
| }
|
|
|
| - bool isControlledByServiceWorker(blink::WebDataSource& data_source) override {
|
| - ServiceWorkerNetworkProvider* provider =
|
| - GetNetworkProviderFromDataSource(&data_source);
|
| - return provider->IsControlledByServiceWorker();
|
| + bool isControlledByServiceWorker() override {
|
| + return provider_->IsControlledByServiceWorker();
|
| }
|
|
|
| - int64_t serviceWorkerID(blink::WebDataSource& data_source) override {
|
| - ServiceWorkerNetworkProvider* provider =
|
| - GetNetworkProviderFromDataSource(&data_source);
|
| - if (provider->context()->controller())
|
| - return provider->context()->controller()->version_id();
|
| + int64_t serviceWorkerID() override {
|
| + if (provider_->context()->controller())
|
| + return provider_->context()->controller()->version_id();
|
| return kInvalidServiceWorkerVersionId;
|
| }
|
|
|
| private:
|
| - ServiceWorkerNetworkProvider* GetNetworkProviderFromDataSource(
|
| - const blink::WebDataSource* data_source) {
|
| - return ServiceWorkerNetworkProvider::FromDocumentState(
|
| - static_cast<DataSourceExtraData*>(data_source->getExtraData()));
|
| - }
|
| + std::unique_ptr<ServiceWorkerNetworkProvider> provider_;
|
| + const bool is_secure_context_;
|
| };
|
|
|
| } // namespace
|
| @@ -245,8 +225,7 @@ blink::WebWorkerContentSettingsClientProxy*
|
| }
|
|
|
| blink::WebServiceWorkerNetworkProvider*
|
| -EmbeddedSharedWorkerStub::createServiceWorkerNetworkProvider(
|
| - blink::WebDataSource* data_source) {
|
| +EmbeddedSharedWorkerStub::createServiceWorkerNetworkProvider() {
|
| // Create a content::ServiceWorkerNetworkProvider for this data source so
|
| // we can observe its requests.
|
| std::unique_ptr<ServiceWorkerNetworkProvider> provider(
|
| @@ -254,16 +233,9 @@ EmbeddedSharedWorkerStub::createServiceWorkerNetworkProvider(
|
| route_id_, SERVICE_WORKER_PROVIDER_FOR_SHARED_WORKER,
|
| true /* is_parent_frame_secure */));
|
|
|
| - // The provider is kept around for the lifetime of the DataSource
|
| - // and ownership is transferred to the DataSource.
|
| - DataSourceExtraData* extra_data = new DataSourceExtraData();
|
| - extra_data->is_secure_context = IsOriginSecure(url_);
|
| - data_source->setExtraData(extra_data);
|
| - ServiceWorkerNetworkProvider::AttachToDocumentState(extra_data,
|
| - std::move(provider));
|
| -
|
| // Blink is responsible for deleting the returned object.
|
| - return new WebServiceWorkerNetworkProviderImpl();
|
| + return new WebServiceWorkerNetworkProviderImpl(std::move(provider),
|
| + IsOriginSecure(url_));
|
| }
|
|
|
| void EmbeddedSharedWorkerStub::sendDevToolsMessage(
|
|
|