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

Side by Side Diff: extensions/renderer/dispatcher.cc

Issue 2166523003: Add ref count to service workers for extension API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sync@tott Created 4 years, 2 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 unified diff | Download patch
« no previous file with comments | « extensions/renderer/dispatcher.h ('k') | extensions/renderer/request_sender.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/renderer/dispatcher.h" 5 #include "extensions/renderer/dispatcher.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 #include "extensions/renderer/render_frame_observer_natives.h" 80 #include "extensions/renderer/render_frame_observer_natives.h"
81 #include "extensions/renderer/renderer_extension_registry.h" 81 #include "extensions/renderer/renderer_extension_registry.h"
82 #include "extensions/renderer/request_sender.h" 82 #include "extensions/renderer/request_sender.h"
83 #include "extensions/renderer/runtime_custom_bindings.h" 83 #include "extensions/renderer/runtime_custom_bindings.h"
84 #include "extensions/renderer/safe_builtins.h" 84 #include "extensions/renderer/safe_builtins.h"
85 #include "extensions/renderer/script_context.h" 85 #include "extensions/renderer/script_context.h"
86 #include "extensions/renderer/script_context_set.h" 86 #include "extensions/renderer/script_context_set.h"
87 #include "extensions/renderer/script_injection.h" 87 #include "extensions/renderer/script_injection.h"
88 #include "extensions/renderer/script_injection_manager.h" 88 #include "extensions/renderer/script_injection_manager.h"
89 #include "extensions/renderer/send_request_natives.h" 89 #include "extensions/renderer/send_request_natives.h"
90 #include "extensions/renderer/service_worker_request_sender.h"
90 #include "extensions/renderer/set_icon_natives.h" 91 #include "extensions/renderer/set_icon_natives.h"
91 #include "extensions/renderer/static_v8_external_one_byte_string_resource.h" 92 #include "extensions/renderer/static_v8_external_one_byte_string_resource.h"
92 #include "extensions/renderer/test_features_native_handler.h" 93 #include "extensions/renderer/test_features_native_handler.h"
93 #include "extensions/renderer/test_native_handler.h" 94 #include "extensions/renderer/test_native_handler.h"
94 #include "extensions/renderer/user_gestures_native_handler.h" 95 #include "extensions/renderer/user_gestures_native_handler.h"
95 #include "extensions/renderer/utils_native_handler.h" 96 #include "extensions/renderer/utils_native_handler.h"
96 #include "extensions/renderer/v8_context_native_handler.h" 97 #include "extensions/renderer/v8_context_native_handler.h"
97 #include "extensions/renderer/v8_helpers.h" 98 #include "extensions/renderer/v8_helpers.h"
98 #include "extensions/renderer/wake_event_page.h" 99 #include "extensions/renderer/wake_event_page.h"
99 #include "extensions/renderer/worker_script_context_set.h" 100 #include "extensions/renderer/worker_script_context_set.h"
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 // Handled in DidInitializeServiceWorkerContextOnWorkerThread(). 391 // Handled in DidInitializeServiceWorkerContextOnWorkerThread().
391 NOTREACHED(); 392 NOTREACHED();
392 break; 393 break;
393 } 394 }
394 395
395 VLOG(1) << "Num tracked contexts: " << script_context_set_->size(); 396 VLOG(1) << "Num tracked contexts: " << script_context_set_->size();
396 } 397 }
397 398
398 void Dispatcher::DidInitializeServiceWorkerContextOnWorkerThread( 399 void Dispatcher::DidInitializeServiceWorkerContextOnWorkerThread(
399 v8::Local<v8::Context> v8_context, 400 v8::Local<v8::Context> v8_context,
400 int embedded_worker_id, 401 int64_t service_worker_version_id,
401 const GURL& url) { 402 const GURL& url) {
402 const base::TimeTicks start_time = base::TimeTicks::Now(); 403 const base::TimeTicks start_time = base::TimeTicks::Now();
403 404
404 if (!url.SchemeIs(kExtensionScheme) && 405 if (!url.SchemeIs(kExtensionScheme) &&
405 !url.SchemeIs(kExtensionResourceScheme)) { 406 !url.SchemeIs(kExtensionResourceScheme)) {
406 // Early-out if this isn't a chrome-extension:// or resource scheme, 407 // Early-out if this isn't a chrome-extension:// or resource scheme,
407 // because looking up the extension registry is unnecessary if it's not. 408 // because looking up the extension registry is unnecessary if it's not.
408 // Checking this will also skip over hosted apps, which is the desired 409 // Checking this will also skip over hosted apps, which is the desired
409 // behavior - hosted app service workers are not our concern. 410 // behavior - hosted app service workers are not our concern.
410 return; 411 return;
(...skipping 25 matching lines...) Expand all
436 // won't work before that event has fired? 437 // won't work before that event has fired?
437 return; 438 return;
438 } 439 }
439 440
440 ScriptContext* context = new ScriptContext( 441 ScriptContext* context = new ScriptContext(
441 v8_context, nullptr, extension, Feature::SERVICE_WORKER_CONTEXT, 442 v8_context, nullptr, extension, Feature::SERVICE_WORKER_CONTEXT,
442 extension, Feature::SERVICE_WORKER_CONTEXT); 443 extension, Feature::SERVICE_WORKER_CONTEXT);
443 context->set_url(url); 444 context->set_url(url);
444 445
445 if (ExtensionsClient::Get()->ExtensionAPIEnabledInExtensionServiceWorkers()) { 446 if (ExtensionsClient::Get()->ExtensionAPIEnabledInExtensionServiceWorkers()) {
446 WorkerThreadDispatcher::Get()->AddWorkerData(embedded_worker_id); 447 WorkerThreadDispatcher::Get()->AddWorkerData(service_worker_version_id);
447 { 448 {
448 // TODO(lazyboy): Make sure accessing |source_map_| in worker thread is 449 // TODO(lazyboy): Make sure accessing |source_map_| in worker thread is
449 // safe. 450 // safe.
450 std::unique_ptr<ModuleSystem> module_system( 451 std::unique_ptr<ModuleSystem> module_system(
451 new ModuleSystem(context, &source_map_)); 452 new ModuleSystem(context, &source_map_));
452 context->set_module_system(std::move(module_system)); 453 context->set_module_system(std::move(module_system));
453 } 454 }
454 455
455 ModuleSystem* module_system = context->module_system(); 456 ModuleSystem* module_system = context->module_system();
456 // Enable natives in startup. 457 // Enable natives in startup.
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 // In fact |request_sender_| should really be owned by ScriptContext. 531 // In fact |request_sender_| should really be owned by ScriptContext.
531 request_sender_->InvalidateSource(context); 532 request_sender_->InvalidateSource(context);
532 533
533 script_context_set_->Remove(context); 534 script_context_set_->Remove(context);
534 VLOG(1) << "Num tracked contexts: " << script_context_set_->size(); 535 VLOG(1) << "Num tracked contexts: " << script_context_set_->size();
535 } 536 }
536 537
537 // static 538 // static
538 void Dispatcher::WillDestroyServiceWorkerContextOnWorkerThread( 539 void Dispatcher::WillDestroyServiceWorkerContextOnWorkerThread(
539 v8::Local<v8::Context> v8_context, 540 v8::Local<v8::Context> v8_context,
540 int embedded_worker_id, 541 int64_t service_worker_version_id,
541 const GURL& url) { 542 const GURL& url) {
542 if (url.SchemeIs(kExtensionScheme) || 543 if (url.SchemeIs(kExtensionScheme) ||
543 url.SchemeIs(kExtensionResourceScheme)) { 544 url.SchemeIs(kExtensionResourceScheme)) {
544 // See comment in DidInitializeServiceWorkerContextOnWorkerThread. 545 // See comment in DidInitializeServiceWorkerContextOnWorkerThread.
545 g_worker_script_context_set.Get().Remove(v8_context, url); 546 g_worker_script_context_set.Get().Remove(v8_context, url);
546 } 547 }
547 if (ExtensionsClient::Get()->ExtensionAPIEnabledInExtensionServiceWorkers()) 548 if (ExtensionsClient::Get()->ExtensionAPIEnabledInExtensionServiceWorkers())
548 WorkerThreadDispatcher::Get()->RemoveWorkerData(embedded_worker_id); 549 WorkerThreadDispatcher::Get()->RemoveWorkerData(service_worker_version_id);
549 } 550 }
550 551
551 void Dispatcher::DidCreateDocumentElement(blink::WebLocalFrame* frame) { 552 void Dispatcher::DidCreateDocumentElement(blink::WebLocalFrame* frame) {
552 // Note: use GetEffectiveDocumentURL not just frame->document()->url() 553 // Note: use GetEffectiveDocumentURL not just frame->document()->url()
553 // so that this also injects the stylesheet on about:blank frames that 554 // so that this also injects the stylesheet on about:blank frames that
554 // are hosted in the extension process. 555 // are hosted in the extension process.
555 GURL effective_document_url = ScriptContext::GetEffectiveDocumentURL( 556 GURL effective_document_url = ScriptContext::GetEffectiveDocumentURL(
556 frame, frame->document().url(), true /* match_about_blank */); 557 frame, frame->document().url(), true /* match_about_blank */);
557 558
558 const Extension* extension = 559 const Extension* extension =
(...skipping 1092 matching lines...) Expand 10 before | Expand all | Expand 10 after
1651 // The "guestViewDeny" module must always be loaded last. It registers 1652 // The "guestViewDeny" module must always be loaded last. It registers
1652 // error-providing custom elements for the GuestView types that are not 1653 // error-providing custom elements for the GuestView types that are not
1653 // available, and thus all of those types must have been checked and loaded 1654 // available, and thus all of those types must have been checked and loaded
1654 // (or not loaded) beforehand. 1655 // (or not loaded) beforehand.
1655 if (context_type == Feature::BLESSED_EXTENSION_CONTEXT) { 1656 if (context_type == Feature::BLESSED_EXTENSION_CONTEXT) {
1656 module_system->Require("guestViewDeny"); 1657 module_system->Require("guestViewDeny");
1657 } 1658 }
1658 } 1659 }
1659 1660
1660 } // namespace extensions 1661 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/renderer/dispatcher.h ('k') | extensions/renderer/request_sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698