Chromium Code Reviews| 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..1121c8ef493725d7faa6686f18599043caea1132 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_; |
| + bool is_secure_context_ = false; |
|
horo
2017/03/10 04:43:28
nit:
const bool is_secure_context_;
kinuko
2017/03/10 05:52:29
Done.
|
| }; |
| } // 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( |