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

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: address comments -> round 1 Created 4 years, 8 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
Index: extensions/renderer/request_sender.cc
diff --git a/extensions/renderer/request_sender.cc b/extensions/renderer/request_sender.cc
index 6f3cf51a8f100760cc8f712290a164fcee5b1a19..dcf873ab267de20ad2773c5a014f90c0411f84e5 100644
--- a/extensions/renderer/request_sender.cc
+++ b/extensions/renderer/request_sender.cc
@@ -78,11 +78,19 @@ 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
+ // RenderFrame cannot be found PendingRequest below.
Devlin 2016/04/14 22:34:52 this comment needs to be reworded
lazyboy 2016/04/15 00:57:47 Done.
return;
+ }
// TODO(koz): See if we can make this a CHECK.
if (!context->HasAccessOrThrowError(name))
@@ -105,6 +113,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));

Powered by Google App Engine
This is Rietveld 408576698