| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index e31995735bdd3134ccfd0a0977db277b5b57ea60..5a7b20148ac4011cbe71da2b291f1ec54410e926 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -187,6 +187,7 @@
|
| #include "third_party/WebKit/public/platform/WebURLError.h"
|
| #include "third_party/WebKit/public/platform/WebURLResponse.h"
|
| #include "third_party/WebKit/public/platform/WebVector.h"
|
| +#include "third_party/WebKit/public/platform/modules/serviceworker/WebServiceWorkerNetworkProvider.h"
|
| #include "third_party/WebKit/public/platform/scheduler/renderer/renderer_scheduler.h"
|
| #include "third_party/WebKit/public/web/WebColorSuggestion.h"
|
| #include "third_party/WebKit/public/web/WebConsoleMessage.h"
|
| @@ -2987,16 +2988,14 @@ RenderFrameImpl::createServiceWorkerProvider() {
|
| if (!ChildThreadImpl::current())
|
| return nullptr; // May be null in some tests.
|
| ServiceWorkerNetworkProvider* provider =
|
| - ServiceWorkerNetworkProvider::FromDocumentState(
|
| - DocumentState::FromDataSource(frame_->dataSource()));
|
| - DCHECK(provider);
|
| + ServiceWorkerNetworkProvider::FromWebServiceWorkerNetworkProvider(
|
| + frame_->dataSource()->getServiceWorkerNetworkProvider());
|
| if (!provider->context()) {
|
| // The context can be null when the frame is sandboxed.
|
| return nullptr;
|
| }
|
| return new WebServiceWorkerProviderImpl(
|
| - ChildThreadImpl::current()->thread_safe_sender(),
|
| - provider->context());
|
| + ChildThreadImpl::current()->thread_safe_sender(), provider->context());
|
| }
|
|
|
| void RenderFrameImpl::didAccessInitialDocument() {
|
| @@ -3418,12 +3417,10 @@ void RenderFrameImpl::didCreateDataSource(blink::WebLocalFrame* frame,
|
| // Create the serviceworker's per-document network observing object if it
|
| // does not exist (When navigation happens within a page, the provider already
|
| // exists).
|
| - if (ServiceWorkerNetworkProvider::FromDocumentState(
|
| - DocumentState::FromDataSource(datasource)))
|
| + if (datasource->getServiceWorkerNetworkProvider())
|
| return;
|
|
|
| - ServiceWorkerNetworkProvider::AttachToDocumentState(
|
| - DocumentState::FromDataSource(datasource),
|
| + datasource->setServiceWorkerNetworkProvider(
|
| ServiceWorkerNetworkProvider::CreateForNavigation(
|
| routing_id_, navigation_state->request_params(), frame,
|
| content_initiated));
|
| @@ -4280,31 +4277,30 @@ void RenderFrameImpl::willSendRequest(blink::WebLocalFrame* frame,
|
| // when it is re-created in the new process.
|
| bool should_replace_current_entry = data_source->replacesCurrentHistoryItem();
|
|
|
| - int provider_id = kInvalidServiceWorkerProviderId;
|
| + // Initializes service worker related request info.
|
| if (request.getFrameType() == blink::WebURLRequest::FrameTypeTopLevel ||
|
| request.getFrameType() == blink::WebURLRequest::FrameTypeNested) {
|
| // |provisionalDataSource| may be null in some content::ResourceFetcher
|
| // use cases, we don't hook those requests.
|
| if (frame->provisionalDataSource()) {
|
| - ServiceWorkerNetworkProvider* provider =
|
| - ServiceWorkerNetworkProvider::FromDocumentState(
|
| - DocumentState::FromDataSource(frame->provisionalDataSource()));
|
| + blink::WebServiceWorkerNetworkProvider* provider =
|
| + frame->provisionalDataSource()->getServiceWorkerNetworkProvider();
|
| DCHECK(provider);
|
| - provider_id = provider->provider_id();
|
| + provider->willSendRequest(request);
|
| }
|
| } else if (frame->dataSource()) {
|
| - ServiceWorkerNetworkProvider* provider =
|
| - ServiceWorkerNetworkProvider::FromDocumentState(
|
| - DocumentState::FromDataSource(frame->dataSource()));
|
| + blink::WebServiceWorkerNetworkProvider* provider =
|
| + frame->dataSource()->getServiceWorkerNetworkProvider();
|
| DCHECK(provider);
|
| - provider_id = provider->provider_id();
|
| + provider->willSendRequest(request);
|
| +
|
| // If the provider does not have a controller at this point, the renderer
|
| // expects the request to never be handled by a controlling service worker,
|
| // so set the ServiceWorkerMode to skip local workers here. Otherwise, a
|
| // service worker that is in the process of becoming the controller (i.e.,
|
| // via claim()) on the browser-side could handle the request and break
|
| // the assumptions of the renderer.
|
| - if (!provider->IsControlledByServiceWorker() &&
|
| + if (!provider->isControlledByServiceWorker() &&
|
| request.getServiceWorkerMode() !=
|
| blink::WebURLRequest::ServiceWorkerMode::None) {
|
| request.setServiceWorkerMode(
|
| @@ -4315,7 +4311,10 @@ void RenderFrameImpl::willSendRequest(blink::WebLocalFrame* frame,
|
| WebFrame* parent = frame->parent();
|
| int parent_routing_id = parent ? GetRoutingIdForFrameOrProxy(parent) : -1;
|
|
|
| - RequestExtraData* extra_data = new RequestExtraData();
|
| + RequestExtraData* extra_data =
|
| + static_cast<RequestExtraData*>(request.getExtraData());
|
| + if (!extra_data)
|
| + extra_data = new RequestExtraData();
|
| extra_data->set_visibility_state(visibilityState());
|
| extra_data->set_custom_user_agent(custom_user_agent);
|
| extra_data->set_requested_with(requested_with);
|
| @@ -4329,7 +4328,6 @@ void RenderFrameImpl::willSendRequest(blink::WebLocalFrame* frame,
|
| navigation_state->common_params().allow_download);
|
| extra_data->set_transition_type(transition_type);
|
| extra_data->set_should_replace_current_entry(should_replace_current_entry);
|
| - extra_data->set_service_worker_provider_id(provider_id);
|
| extra_data->set_stream_override(std::move(stream_override));
|
| bool is_prefetch =
|
| GetContentClient()->renderer()->IsPrefetchOnly(this, request);
|
| @@ -4661,22 +4659,6 @@ blink::WebScreenOrientationClient*
|
| return screen_orientation_dispatcher_;
|
| }
|
|
|
| -bool RenderFrameImpl::isControlledByServiceWorker(WebDataSource& data_source) {
|
| - ServiceWorkerNetworkProvider* provider =
|
| - ServiceWorkerNetworkProvider::FromDocumentState(
|
| - DocumentState::FromDataSource(&data_source));
|
| - return provider->IsControlledByServiceWorker();
|
| -}
|
| -
|
| -int64_t RenderFrameImpl::serviceWorkerID(WebDataSource& data_source) {
|
| - ServiceWorkerNetworkProvider* provider =
|
| - ServiceWorkerNetworkProvider::FromDocumentState(
|
| - DocumentState::FromDataSource(&data_source));
|
| - if (provider->context() && provider->context()->controller())
|
| - return provider->context()->controller()->version_id();
|
| - return kInvalidServiceWorkerVersionId;
|
| -}
|
| -
|
| void RenderFrameImpl::postAccessibilityEvent(const blink::WebAXObject& obj,
|
| blink::WebAXEvent event) {
|
| HandleWebAccessibilityEvent(obj, event);
|
|
|