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 142ca2bdbaf94e3715e6d3f59749bd05c19e7f8d..90fa5422360f229f4e95ea5841e9d4b7e0257842 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -18,6 +18,7 @@ |
| #include "content/child/plugin_messages.h" |
| #include "content/child/quota_dispatcher.h" |
| #include "content/child/request_extra_data.h" |
| +#include "content/child/service_worker/service_worker_network_provider.h" |
| #include "content/child/service_worker/web_service_worker_provider_impl.h" |
| #include "content/common/frame_messages.h" |
| #include "content/common/socket_stream_handle_data.h" |
| @@ -929,6 +930,14 @@ void RenderFrameImpl::didCreateDataSource(blink::WebFrame* frame, |
| // * PopulateDocumentStateFromPending |
| // * CreateNavigationStateFromPending |
| render_view_->didCreateDataSource(frame, datasource); |
| + |
| + // Create the serviceworker's per-document network observing object. |
| + scoped_ptr<ServiceWorkerNetworkProvider> network_provider( |
| + new ServiceWorkerNetworkProvider( |
| + ChildThread::current()->thread_safe_sender())); |
| + ServiceWorkerNetworkProvider::AttachToDocumentState( |
| + DocumentState::FromDataSource(datasource), |
| + network_provider.Pass()); |
| } |
| void RenderFrameImpl::didStartProvisionalLoad(blink::WebFrame* frame) { |
| @@ -1431,6 +1440,21 @@ void RenderFrameImpl::willSendRequest( |
| should_replace_current_entry = |
| navigation_state->should_replace_current_entry(); |
| } |
| + |
| + // TODO(michaeln): Add WebDataSource* as a param to willSendRequest so |
| + // this ambiguity about which datasource can be removed. |
| + ServiceWorkerNetworkProvider* service_worker_network_provider = NULL; |
| + if (request.targetType() == blink::WebURLRequest::TargetIsMainFrame || |
| + request.targetType() == blink::WebURLRequest::TargetIsSubframe) { |
| + service_worker_network_provider = |
| + ServiceWorkerNetworkProvider::FromDocumentState( |
| + DocumentState::FromDataSource(frame->provisionalDataSource())); |
| + } else { |
| + service_worker_network_provider = |
| + ServiceWorkerNetworkProvider::FromDocumentState( |
| + DocumentState::FromDataSource(frame->dataSource())); |
| + } |
|
kinuko
2014/02/28 04:31:00
Couldn't we just use document_state retrieved at l
michaeln
2014/02/28 20:48:27
Nope, that's from the wrong document. That corresp
kinuko
2014/03/03 03:26:33
I see, thanks. Some of the tests look failing prob
|
| + |
| // TODO(creis): Remove the second routing ID from the request, now that we |
| // use routing IDs instead of frame IDs. (This is a viral change, so I'm |
| // splitting it into multiple CLs.) |
| @@ -1450,7 +1474,8 @@ void RenderFrameImpl::willSendRequest( |
| transition_type, |
| should_replace_current_entry, |
| navigation_state->transferred_request_child_id(), |
| - navigation_state->transferred_request_request_id())); |
| + navigation_state->transferred_request_request_id(), |
| + service_worker_network_provider->provider_id())); |
| DocumentState* top_document_state = |
| DocumentState::FromDataSource(top_data_source); |