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

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

Issue 2770403002: [Extensions Bindings] Remove ScriptContext::DispatchEvent (Closed)
Patch Set: Created 3 years, 9 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/dispatcher_delegate.h » ('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 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 { 353 {
354 std::unique_ptr<ModuleSystem> module_system( 354 std::unique_ptr<ModuleSystem> module_system(
355 new ModuleSystem(context, &source_map_)); 355 new ModuleSystem(context, &source_map_));
356 context->set_module_system(std::move(module_system)); 356 context->set_module_system(std::move(module_system));
357 } 357 }
358 ModuleSystem* module_system = context->module_system(); 358 ModuleSystem* module_system = context->module_system();
359 359
360 // Enable natives in startup. 360 // Enable natives in startup.
361 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system); 361 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system);
362 362
363 RegisterNativeHandlers(module_system, context, 363 RegisterNativeHandlers(module_system, context, bindings_system_.get(),
364 bindings_system_->GetRequestSender(),
365 v8_schema_registry_.get()); 364 v8_schema_registry_.get());
366 365
367 bindings_system_->DidCreateScriptContext(context); 366 bindings_system_->DidCreateScriptContext(context);
368 UpdateBindingsForContext(context); 367 UpdateBindingsForContext(context);
369 368
370 // Inject custom JS into the platform app context. 369 // Inject custom JS into the platform app context.
371 if (IsWithinPlatformApp()) { 370 if (IsWithinPlatformApp()) {
372 module_system->Require("platformApp"); 371 module_system->Require("platformApp");
373 } 372 }
374 373
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 // TODO(lazyboy): Make sure accessing |source_map_| in worker thread is 463 // TODO(lazyboy): Make sure accessing |source_map_| in worker thread is
465 // safe. 464 // safe.
466 context->set_module_system( 465 context->set_module_system(
467 base::MakeUnique<ModuleSystem>(context, &source_map_)); 466 base::MakeUnique<ModuleSystem>(context, &source_map_));
468 467
469 ModuleSystem* module_system = context->module_system(); 468 ModuleSystem* module_system = context->module_system();
470 // Enable natives in startup. 469 // Enable natives in startup.
471 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system); 470 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system);
472 ExtensionBindingsSystem* worker_bindings_system = 471 ExtensionBindingsSystem* worker_bindings_system =
473 WorkerThreadDispatcher::GetBindingsSystem(); 472 WorkerThreadDispatcher::GetBindingsSystem();
474 RegisterNativeHandlers(module_system, context, 473 RegisterNativeHandlers(module_system, context, worker_bindings_system,
475 worker_bindings_system->GetRequestSender(),
476 WorkerThreadDispatcher::GetV8SchemaRegistry()); 474 WorkerThreadDispatcher::GetV8SchemaRegistry());
477 475
478 worker_bindings_system->DidCreateScriptContext(context); 476 worker_bindings_system->DidCreateScriptContext(context);
479 worker_bindings_system->UpdateBindingsForContext(context); 477 worker_bindings_system->UpdateBindingsForContext(context);
480 478
481 // TODO(lazyboy): Get rid of RequireGuestViewModules() as this doesn't seem 479 // TODO(lazyboy): Get rid of RequireGuestViewModules() as this doesn't seem
482 // necessary for Extension SW. 480 // necessary for Extension SW.
483 RequireGuestViewModules(context); 481 RequireGuestViewModules(context);
484 delegate_->RequireAdditionalModules(context); 482 delegate_->RequireAdditionalModules(context);
485 } 483 }
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 resources.emplace_back("guestViewIframe", IDR_GUEST_VIEW_IFRAME_JS); 787 resources.emplace_back("guestViewIframe", IDR_GUEST_VIEW_IFRAME_JS);
790 resources.emplace_back("guestViewIframeContainer", 788 resources.emplace_back("guestViewIframeContainer",
791 IDR_GUEST_VIEW_IFRAME_CONTAINER_JS); 789 IDR_GUEST_VIEW_IFRAME_CONTAINER_JS);
792 } 790 }
793 791
794 return resources; 792 return resources;
795 } 793 }
796 794
797 // NOTE: please use the naming convention "foo_natives" for these. 795 // NOTE: please use the naming convention "foo_natives" for these.
798 // static 796 // static
799 void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system, 797 void Dispatcher::RegisterNativeHandlers(
800 ScriptContext* context, 798 ModuleSystem* module_system,
801 Dispatcher* dispatcher, 799 ScriptContext* context,
802 RequestSender* request_sender, 800 Dispatcher* dispatcher,
803 V8SchemaRegistry* v8_schema_registry) { 801 ExtensionBindingsSystem* bindings_system,
802 V8SchemaRegistry* v8_schema_registry) {
804 module_system->RegisterNativeHandler( 803 module_system->RegisterNativeHandler(
805 "chrome", 804 "chrome",
806 std::unique_ptr<NativeHandler>(new ChromeNativeHandler(context))); 805 std::unique_ptr<NativeHandler>(new ChromeNativeHandler(context)));
807 module_system->RegisterNativeHandler( 806 module_system->RegisterNativeHandler(
808 "logging", 807 "logging",
809 std::unique_ptr<NativeHandler>(new LoggingNativeHandler(context))); 808 std::unique_ptr<NativeHandler>(new LoggingNativeHandler(context)));
810 module_system->RegisterNativeHandler("schema_registry", 809 module_system->RegisterNativeHandler("schema_registry",
811 v8_schema_registry->AsNativeHandler()); 810 v8_schema_registry->AsNativeHandler());
812 module_system->RegisterNativeHandler( 811 module_system->RegisterNativeHandler(
813 "test_features", 812 "test_features",
(...skipping 11 matching lines...) Expand all
825 std::unique_ptr<NativeHandler>(new V8ContextNativeHandler(context))); 824 std::unique_ptr<NativeHandler>(new V8ContextNativeHandler(context)));
826 module_system->RegisterNativeHandler( 825 module_system->RegisterNativeHandler(
827 "event_natives", 826 "event_natives",
828 std::unique_ptr<NativeHandler>(new EventBindings(context))); 827 std::unique_ptr<NativeHandler>(new EventBindings(context)));
829 module_system->RegisterNativeHandler( 828 module_system->RegisterNativeHandler(
830 "messaging_natives", base::MakeUnique<MessagingBindings>(context)); 829 "messaging_natives", base::MakeUnique<MessagingBindings>(context));
831 module_system->RegisterNativeHandler( 830 module_system->RegisterNativeHandler(
832 "apiDefinitions", std::unique_ptr<NativeHandler>( 831 "apiDefinitions", std::unique_ptr<NativeHandler>(
833 new ApiDefinitionsNatives(dispatcher, context))); 832 new ApiDefinitionsNatives(dispatcher, context)));
834 module_system->RegisterNativeHandler( 833 module_system->RegisterNativeHandler(
835 "sendRequest", std::unique_ptr<NativeHandler>( 834 "sendRequest",
836 new SendRequestNatives(request_sender, context))); 835 base::MakeUnique<SendRequestNatives>(
836 // Note: |bindings_system| can be null in unit tests.
837 bindings_system ? bindings_system->GetRequestSender() : nullptr,
838 context));
837 module_system->RegisterNativeHandler( 839 module_system->RegisterNativeHandler(
838 "setIcon", std::unique_ptr<NativeHandler>(new SetIconNatives(context))); 840 "setIcon", std::unique_ptr<NativeHandler>(new SetIconNatives(context)));
839 module_system->RegisterNativeHandler( 841 module_system->RegisterNativeHandler(
840 "activityLogger", std::unique_ptr<NativeHandler>( 842 "activityLogger", std::unique_ptr<NativeHandler>(
841 new APIActivityLogger(context, dispatcher))); 843 new APIActivityLogger(context, dispatcher)));
842 module_system->RegisterNativeHandler( 844 module_system->RegisterNativeHandler(
843 "renderFrameObserverNatives", 845 "renderFrameObserverNatives",
844 std::unique_ptr<NativeHandler>(new RenderFrameObserverNatives(context))); 846 std::unique_ptr<NativeHandler>(new RenderFrameObserverNatives(context)));
845 847
846 // Natives used by multiple APIs. 848 // Natives used by multiple APIs.
(...skipping 18 matching lines...) Expand all
865 "guest_view_internal", std::unique_ptr<NativeHandler>( 867 "guest_view_internal", std::unique_ptr<NativeHandler>(
866 new GuestViewInternalCustomBindings(context))); 868 new GuestViewInternalCustomBindings(context)));
867 module_system->RegisterNativeHandler( 869 module_system->RegisterNativeHandler(
868 "id_generator", 870 "id_generator",
869 std::unique_ptr<NativeHandler>(new IdGeneratorCustomBindings(context))); 871 std::unique_ptr<NativeHandler>(new IdGeneratorCustomBindings(context)));
870 module_system->RegisterNativeHandler( 872 module_system->RegisterNativeHandler(
871 "runtime", 873 "runtime",
872 std::unique_ptr<NativeHandler>(new RuntimeCustomBindings(context))); 874 std::unique_ptr<NativeHandler>(new RuntimeCustomBindings(context)));
873 module_system->RegisterNativeHandler( 875 module_system->RegisterNativeHandler(
874 "display_source", 876 "display_source",
875 std::unique_ptr<NativeHandler>(new DisplaySourceCustomBindings(context))); 877 base::MakeUnique<DisplaySourceCustomBindings>(context, bindings_system));
876 } 878 }
877 879
878 bool Dispatcher::OnControlMessageReceived(const IPC::Message& message) { 880 bool Dispatcher::OnControlMessageReceived(const IPC::Message& message) {
879 bool handled = true; 881 bool handled = true;
880 IPC_BEGIN_MESSAGE_MAP(Dispatcher, message) 882 IPC_BEGIN_MESSAGE_MAP(Dispatcher, message)
881 IPC_MESSAGE_HANDLER(ExtensionMsg_ActivateExtension, OnActivateExtension) 883 IPC_MESSAGE_HANDLER(ExtensionMsg_ActivateExtension, OnActivateExtension)
882 IPC_MESSAGE_HANDLER(ExtensionMsg_CancelSuspend, OnCancelSuspend) 884 IPC_MESSAGE_HANDLER(ExtensionMsg_CancelSuspend, OnCancelSuspend)
883 IPC_MESSAGE_HANDLER(ExtensionMsg_DeliverMessage, OnDeliverMessage) 885 IPC_MESSAGE_HANDLER(ExtensionMsg_DeliverMessage, OnDeliverMessage)
884 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnConnect, OnDispatchOnConnect) 886 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnConnect, OnDispatchOnConnect)
885 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnDisconnect, OnDispatchOnDisconnect) 887 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnDisconnect, OnDispatchOnDisconnect)
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
1328 void Dispatcher::UpdateBindingsForContext(ScriptContext* context) { 1330 void Dispatcher::UpdateBindingsForContext(ScriptContext* context) {
1329 bindings_system_->UpdateBindingsForContext(context); 1331 bindings_system_->UpdateBindingsForContext(context);
1330 Feature::Context context_type = context->context_type(); 1332 Feature::Context context_type = context->context_type();
1331 if (context_type == Feature::WEB_PAGE_CONTEXT || 1333 if (context_type == Feature::WEB_PAGE_CONTEXT ||
1332 context_type == Feature::BLESSED_WEB_PAGE_CONTEXT) { 1334 context_type == Feature::BLESSED_WEB_PAGE_CONTEXT) {
1333 UpdateContentCapabilities(context); 1335 UpdateContentCapabilities(context);
1334 } 1336 }
1335 } 1337 }
1336 1338
1337 // NOTE: please use the naming convention "foo_natives" for these. 1339 // NOTE: please use the naming convention "foo_natives" for these.
1338 void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system, 1340 void Dispatcher::RegisterNativeHandlers(
1339 ScriptContext* context, 1341 ModuleSystem* module_system,
1340 RequestSender* request_sender, 1342 ScriptContext* context,
1341 V8SchemaRegistry* v8_schema_registry) { 1343 ExtensionBindingsSystem* bindings_system,
1342 RegisterNativeHandlers(module_system, context, this, request_sender, 1344 V8SchemaRegistry* v8_schema_registry) {
1345 RegisterNativeHandlers(module_system, context, this, bindings_system,
1343 v8_schema_registry); 1346 v8_schema_registry);
1344 const Extension* extension = context->extension(); 1347 const Extension* extension = context->extension();
1345 int manifest_version = extension ? extension->manifest_version() : 1; 1348 int manifest_version = extension ? extension->manifest_version() : 1;
1346 bool is_component_extension = 1349 bool is_component_extension =
1347 extension && Manifest::IsComponentLocation(extension->location()); 1350 extension && Manifest::IsComponentLocation(extension->location());
1348 bool send_request_disabled = 1351 bool send_request_disabled =
1349 (extension && Manifest::IsUnpackedLocation(extension->location()) && 1352 (extension && Manifest::IsUnpackedLocation(extension->location()) &&
1350 BackgroundInfo::HasLazyBackgroundPage(extension)); 1353 BackgroundInfo::HasLazyBackgroundPage(extension));
1351 module_system->RegisterNativeHandler( 1354 module_system->RegisterNativeHandler(
1352 "process", 1355 "process",
1353 std::unique_ptr<NativeHandler>(new ProcessInfoNativeHandler( 1356 std::unique_ptr<NativeHandler>(new ProcessInfoNativeHandler(
1354 context, context->GetExtensionID(), 1357 context, context->GetExtensionID(),
1355 context->GetContextTypeDescription(), 1358 context->GetContextTypeDescription(),
1356 ExtensionsRendererClient::Get()->IsIncognitoProcess(), 1359 ExtensionsRendererClient::Get()->IsIncognitoProcess(),
1357 is_component_extension, manifest_version, send_request_disabled))); 1360 is_component_extension, manifest_version, send_request_disabled)));
1358 1361
1359 delegate_->RegisterNativeHandlers(this, module_system, context); 1362 delegate_->RegisterNativeHandlers(this, module_system, bindings_system,
1363 context);
1360 } 1364 }
1361 1365
1362 void Dispatcher::UpdateContentCapabilities(ScriptContext* context) { 1366 void Dispatcher::UpdateContentCapabilities(ScriptContext* context) {
1363 APIPermissionSet permissions; 1367 APIPermissionSet permissions;
1364 for (const auto& extension : 1368 for (const auto& extension :
1365 *RendererExtensionRegistry::Get()->GetMainThreadExtensionSet()) { 1369 *RendererExtensionRegistry::Get()->GetMainThreadExtensionSet()) {
1366 blink::WebLocalFrame* web_frame = context->web_frame(); 1370 blink::WebLocalFrame* web_frame = context->web_frame();
1367 GURL url = context->url(); 1371 GURL url = context->url();
1368 // We allow about:blank pages to take on the privileges of their parents if 1372 // We allow about:blank pages to take on the privileges of their parents if
1369 // they aren't sandboxed. 1373 // they aren't sandboxed.
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1443 // The "guestViewDeny" module must always be loaded last. It registers 1447 // The "guestViewDeny" module must always be loaded last. It registers
1444 // error-providing custom elements for the GuestView types that are not 1448 // error-providing custom elements for the GuestView types that are not
1445 // available, and thus all of those types must have been checked and loaded 1449 // available, and thus all of those types must have been checked and loaded
1446 // (or not loaded) beforehand. 1450 // (or not loaded) beforehand.
1447 if (context_type == Feature::BLESSED_EXTENSION_CONTEXT) { 1451 if (context_type == Feature::BLESSED_EXTENSION_CONTEXT) {
1448 module_system->Require("guestViewDeny"); 1452 module_system->Require("guestViewDeny");
1449 } 1453 }
1450 } 1454 }
1451 1455
1452 } // namespace extensions 1456 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/renderer/dispatcher.h ('k') | extensions/renderer/dispatcher_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698