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

Unified Diff: extensions/renderer/request_sender.cc

Issue 1880933002: Begin to enable extension APIs in Extension Service Worker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sync @tott Created 4 years, 7 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 | « extensions/renderer/request_sender.h ('k') | extensions/renderer/resources/runtime_custom_bindings.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/renderer/request_sender.cc
diff --git a/extensions/renderer/request_sender.cc b/extensions/renderer/request_sender.cc
index 607d25ab3b2ba50c1c5647c95925c2970807d9a1..bd836b9e57a5de5a0a929f6fb5ed25f27a7b1d2d 100644
--- a/extensions/renderer/request_sender.cc
+++ b/extensions/renderer/request_sender.cc
@@ -76,11 +76,18 @@ void RequestSender::StartRequest(Source* source,
if (!context)
return;
+ bool for_service_worker =
+ context->context_type() == Feature::SERVICE_WORKER_CONTEXT;
// Get the current RenderFrame so that we can send a routed IPC message from
// the correct source.
+ // Note that |render_frame| would be nullptr for Service Workers. Service
+ // Workers use control IPC instead.
content::RenderFrame* render_frame = context->GetRenderFrame();
- if (!render_frame)
+ if (!for_service_worker && !render_frame) {
+ // It is important to early exit here for non Service Worker contexts so
+ // that we do not create orphaned PendingRequests below.
return;
+ }
// TODO(koz): See if we can make this a CHECK.
if (!context->HasAccessOrThrowError(name))
@@ -103,6 +110,17 @@ void RequestSender::StartRequest(Source* source,
params.has_callback = has_callback;
params.user_gesture =
blink::WebUserGestureIndicator::isProcessingUserGesture();
+
+ // Set Service Worker specific params to default values.
+ params.worker_thread_id = -1;
+ params.embedded_worker_id = -1;
+
+ SendRequest(render_frame, for_io_thread, params);
+}
+
+void RequestSender::SendRequest(content::RenderFrame* render_frame,
+ bool for_io_thread,
+ ExtensionHostMsg_Request_Params& params) {
if (for_io_thread) {
render_frame->Send(new ExtensionHostMsg_RequestForIOThread(
render_frame->GetRoutingID(), params));
« no previous file with comments | « extensions/renderer/request_sender.h ('k') | extensions/renderer/resources/runtime_custom_bindings.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698