| 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..69767a442e64516b272ecd6200b9504c98e520da 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -2460,9 +2460,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 +3674,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 +3684,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;
|
| }
|
|
|