| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index 9c7635523fe8714489d7c7aafd50e2f96a924997..7ed7d51c8a5da2468a742ef71921da21b392e04c 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -2059,9 +2059,10 @@ blink::WebServiceWorkerProvider* RenderFrameImpl::createServiceWorkerProvider(
|
| ServiceWorkerNetworkProvider* provider =
|
| ServiceWorkerNetworkProvider::FromDocumentState(
|
| DocumentState::FromDataSource(frame->dataSource()));
|
| + DCHECK(provider);
|
| return new WebServiceWorkerProviderImpl(
|
| ChildThreadImpl::current()->thread_safe_sender(),
|
| - provider ? provider->context() : NULL);
|
| + provider->context());
|
| }
|
|
|
| void RenderFrameImpl::didAccessInitialDocument(blink::WebLocalFrame* frame) {
|
| @@ -2460,9 +2461,14 @@ void RenderFrameImpl::didCreateDataSource(blink::WebLocalFrame* frame,
|
| // exists).
|
| if (!ServiceWorkerNetworkProvider::FromDocumentState(
|
| DocumentState::FromDataSource(datasource))) {
|
| + ServiceWorkerProviderType provider_type =
|
| + SERVICE_WORKER_PROVIDER_FOR_WINDOW;
|
| + if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) ==
|
| + blink::WebSandboxFlags::Origin) {
|
| + provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME;
|
| + }
|
| scoped_ptr<ServiceWorkerNetworkProvider> network_provider(
|
| - new ServiceWorkerNetworkProvider(routing_id_,
|
| - SERVICE_WORKER_PROVIDER_FOR_WINDOW));
|
| + new ServiceWorkerNetworkProvider(routing_id_, provider_type));
|
| ServiceWorkerNetworkProvider::AttachToDocumentState(
|
| DocumentState::FromDataSource(datasource),
|
| network_provider.Pass());
|
| @@ -3669,6 +3675,8 @@ bool RenderFrameImpl::isControlledByServiceWorker(WebDataSource& data_source) {
|
| ServiceWorkerNetworkProvider* provider =
|
| ServiceWorkerNetworkProvider::FromDocumentState(
|
| DocumentState::FromDataSource(&data_source));
|
| + if (!provider->context())
|
| + return false;
|
| return provider->context()->controller_handle_id() !=
|
| kInvalidServiceWorkerHandleId;
|
| }
|
| @@ -3677,8 +3685,7 @@ int64_t RenderFrameImpl::serviceWorkerID(WebDataSource& data_source) {
|
| ServiceWorkerNetworkProvider* provider =
|
| ServiceWorkerNetworkProvider::FromDocumentState(
|
| DocumentState::FromDataSource(&data_source));
|
| -
|
| - if (provider->context()->controller())
|
| + if (provider->context() && provider->context()->controller())
|
| return provider->context()->controller()->version_id();
|
| return kInvalidServiceWorkerVersionId;
|
| }
|
|
|