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 aa6645b3baa62c085b1db1eda7a8e700856106ab..948753026f0c1e1337cf70e7aad6e1e42ce56769 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -20,9 +20,11 @@ |
| #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/child/web_socket_stream_handle_impl.h" |
| #include "content/common/frame_messages.h" |
| +#include "content/common/service_worker/service_worker_types.h" |
| #include "content/common/socket_stream_handle_data.h" |
| #include "content/common/swapped_out_messages.h" |
| #include "content/common/view_messages.h" |
| @@ -1179,6 +1181,13 @@ 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()); |
| + ServiceWorkerNetworkProvider::AttachToDocumentState( |
| + DocumentState::FromDataSource(datasource), |
| + network_provider.Pass()); |
| } |
| void RenderFrameImpl::didStartProvisionalLoad(blink::WebFrame* frame) { |
| @@ -1735,6 +1744,25 @@ 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. |
|
michaeln
2014/03/04 04:27:49
i don't plan on leaving this comment here
|
| + int provider_id = kInvalidServiceWorkerProviderId; |
| + if (request.targetType() == blink::WebURLRequest::TargetIsMainFrame || |
| + request.targetType() == blink::WebURLRequest::TargetIsSubframe) { |
| + if (frame->provisionalDataSource()) { // May be null is some tests. |
|
michaeln
2014/03/04 04:27:49
i'll remove the 'tests' comment since this can app
kinuko
2014/03/04 12:53:08
When you remove the comment can you add a brief co
|
| + ServiceWorkerNetworkProvider* provider = |
| + ServiceWorkerNetworkProvider::FromDocumentState( |
| + DocumentState::FromDataSource(frame->provisionalDataSource())); |
| + provider_id = provider->provider_id(); |
| + } |
| + } else if (frame->dataSource()) { |
| + ServiceWorkerNetworkProvider* provider = |
| + ServiceWorkerNetworkProvider::FromDocumentState( |
| + DocumentState::FromDataSource(frame->dataSource())); |
| + provider_id = provider->provider_id(); |
| + } |
| + |
| int parent_routing_id = frame->parent() ? |
| FromWebFrame(frame->parent())->GetRoutingID() : -1; |
| request.setExtraData( |
| @@ -1750,7 +1778,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(), |
| + provider_id)); |
| DocumentState* top_document_state = |
| DocumentState::FromDataSource(top_data_source); |