Chromium Code Reviews| Index: content/renderer/render_frame_impl.cc |
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
| index 67ae44acdd11aee6bfad43f2c7fc953dcc39548b..1e5d0128ef9b36fb38eafefa47db5cd65754143c 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -67,6 +67,7 @@ |
| #include "content/common/page_messages.h" |
| #include "content/common/savable_subframe.h" |
| #include "content/common/service_worker/service_worker_types.h" |
| +#include "content/common/service_worker/service_worker_utils.h" |
| #include "content/common/site_isolation_policy.h" |
| #include "content/common/swapped_out_messages.h" |
| #include "content/common/view_messages.h" |
| @@ -2918,6 +2919,8 @@ RenderFrameImpl::CreateWorkerFetchContext() { |
| ServiceWorkerNetworkProvider* provider = |
| ServiceWorkerNetworkProvider::FromWebServiceWorkerNetworkProvider( |
| web_provider); |
| + if (!provider) |
| + return nullptr; |
| worker_fetch_context->set_service_worker_provider_id( |
| provider->provider_id()); |
| worker_fetch_context->set_is_controlled_by_service_worker( |
| @@ -2969,7 +2972,7 @@ RenderFrameImpl::CreateServiceWorkerProvider() { |
| ServiceWorkerNetworkProvider* provider = |
| ServiceWorkerNetworkProvider::FromWebServiceWorkerNetworkProvider( |
| frame_->DataSource()->GetServiceWorkerNetworkProvider()); |
|
falken
2017/06/12 01:10:36
To make the two paths more clear, could this be be
kinuko
2017/06/12 02:16:51
Done.
|
| - if (!provider->context()) { |
| + if (!provider || !provider->context()) { |
| // The context can be null when the frame is sandboxed. |
| return nullptr; |
| } |
| @@ -3426,6 +3429,12 @@ void RenderFrameImpl::DidCreateDataSource(blink::WebLocalFrame* frame, |
| if (datasource->GetServiceWorkerNetworkProvider()) |
| return; |
| + if (ServiceWorkerUtils::IsServicificationEnabled()) { |
| + // Disable interception via ServiceWorkerNetworkProvider if |
| + // servicification is enabled. |
| + return; |
| + } |
| + |
| datasource->SetServiceWorkerNetworkProvider( |
| ServiceWorkerNetworkProvider::CreateForNavigation( |
| routing_id_, navigation_state->request_params(), frame, |