Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Unified Diff: content/renderer/render_frame_impl.cc

Issue 183993004: Tease apart ServiceWorkerNetworkProvider from other stuff. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/content_child.gypi ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_frame_impl.cc
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index e5ed7854de36737b4689bfff63944028b94716fe..599bbe395d3af3f40b77cffdabf9261252dee20b 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"
@@ -1220,6 +1222,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) {
@@ -1776,6 +1785,25 @@ void RenderFrameImpl::willSendRequest(
should_replace_current_entry =
navigation_state->should_replace_current_entry();
}
+
+ int provider_id = kInvalidServiceWorkerProviderId;
+ if (request.targetType() == blink::WebURLRequest::TargetIsMainFrame ||
+ request.targetType() == blink::WebURLRequest::TargetIsSubframe) {
+ // |provisionalDataSource| may be null in some content::ResourceFetcher
+ // use cases, we don't hook those requests.
+ if (frame->provisionalDataSource()) {
+ 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(
@@ -1791,7 +1819,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);
« no previous file with comments | « content/content_child.gypi ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698