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

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

Issue 399363002: Add support for writing unit tests for Mojo-backed apps/extensions APIs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 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/module_system.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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/alias.h" 10 #include "base/debug/alias.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 #include "extensions/renderer/script_context.h" 68 #include "extensions/renderer/script_context.h"
69 #include "extensions/renderer/script_context_set.h" 69 #include "extensions/renderer/script_context_set.h"
70 #include "extensions/renderer/script_injection.h" 70 #include "extensions/renderer/script_injection.h"
71 #include "extensions/renderer/script_injection_manager.h" 71 #include "extensions/renderer/script_injection_manager.h"
72 #include "extensions/renderer/send_request_natives.h" 72 #include "extensions/renderer/send_request_natives.h"
73 #include "extensions/renderer/set_icon_natives.h" 73 #include "extensions/renderer/set_icon_natives.h"
74 #include "extensions/renderer/test_features_native_handler.h" 74 #include "extensions/renderer/test_features_native_handler.h"
75 #include "extensions/renderer/user_gestures_native_handler.h" 75 #include "extensions/renderer/user_gestures_native_handler.h"
76 #include "extensions/renderer/utils_native_handler.h" 76 #include "extensions/renderer/utils_native_handler.h"
77 #include "extensions/renderer/v8_context_native_handler.h" 77 #include "extensions/renderer/v8_context_native_handler.h"
78 #include "grit/content_resources.h"
78 #include "grit/extensions_renderer_resources.h" 79 #include "grit/extensions_renderer_resources.h"
80 #include "mojo/public/js/bindings/constants.h"
79 #include "third_party/WebKit/public/platform/WebString.h" 81 #include "third_party/WebKit/public/platform/WebString.h"
80 #include "third_party/WebKit/public/platform/WebURLRequest.h" 82 #include "third_party/WebKit/public/platform/WebURLRequest.h"
81 #include "third_party/WebKit/public/web/WebCustomElement.h" 83 #include "third_party/WebKit/public/web/WebCustomElement.h"
82 #include "third_party/WebKit/public/web/WebDataSource.h" 84 #include "third_party/WebKit/public/web/WebDataSource.h"
83 #include "third_party/WebKit/public/web/WebDocument.h" 85 #include "third_party/WebKit/public/web/WebDocument.h"
84 #include "third_party/WebKit/public/web/WebFrame.h" 86 #include "third_party/WebKit/public/web/WebFrame.h"
85 #include "third_party/WebKit/public/web/WebRuntimeFeatures.h" 87 #include "third_party/WebKit/public/web/WebRuntimeFeatures.h"
86 #include "third_party/WebKit/public/web/WebScopedUserGesture.h" 88 #include "third_party/WebKit/public/web/WebScopedUserGesture.h"
87 #include "third_party/WebKit/public/web/WebSecurityPolicy.h" 89 #include "third_party/WebKit/public/web/WebSecurityPolicy.h"
88 #include "third_party/WebKit/public/web/WebView.h" 90 #include "third_party/WebKit/public/web/WebView.h"
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 } 452 }
451 } 453 }
452 454
453 void Dispatcher::ClearPortData(int port_id) { 455 void Dispatcher::ClearPortData(int port_id) {
454 // Only the target port side has entries in |port_to_tab_id_map_|. If 456 // Only the target port side has entries in |port_to_tab_id_map_|. If
455 // |port_id| is a source port, std::map::erase() will just silently fail 457 // |port_id| is a source port, std::map::erase() will just silently fail
456 // here as a no-op. 458 // here as a no-op.
457 port_to_tab_id_map_.erase(port_id); 459 port_to_tab_id_map_.erase(port_id);
458 } 460 }
459 461
462 // static
463 std::vector<std::pair<std::string, int> > Dispatcher::GetJsResources() {
464 std::vector<std::pair<std::string, int> > resources;
465
466 // Libraries.
467 resources.push_back(std::make_pair("entryIdManager", IDR_ENTRY_ID_MANAGER));
468 resources.push_back(std::make_pair(kEventBindings, IDR_EVENT_BINDINGS_JS));
469 resources.push_back(std::make_pair("imageUtil", IDR_IMAGE_UTIL_JS));
470 resources.push_back(std::make_pair("json_schema", IDR_JSON_SCHEMA_JS));
471 resources.push_back(std::make_pair("lastError", IDR_LAST_ERROR_JS));
472 resources.push_back(std::make_pair("messaging", IDR_MESSAGING_JS));
473 resources.push_back(
474 std::make_pair("messaging_utils", IDR_MESSAGING_UTILS_JS));
475 resources.push_back(std::make_pair(kSchemaUtils, IDR_SCHEMA_UTILS_JS));
476 resources.push_back(std::make_pair("sendRequest", IDR_SEND_REQUEST_JS));
477 resources.push_back(std::make_pair("setIcon", IDR_SET_ICON_JS));
478 resources.push_back(std::make_pair("test", IDR_TEST_CUSTOM_BINDINGS_JS));
479 resources.push_back(
480 std::make_pair("test_environment_specific_bindings",
481 IDR_BROWSER_TEST_ENVIRONMENT_SPECIFIC_BINDINGS_JS));
482 resources.push_back(std::make_pair("uncaught_exception_handler",
483 IDR_UNCAUGHT_EXCEPTION_HANDLER_JS));
484 resources.push_back(std::make_pair("unload_event", IDR_UNLOAD_EVENT_JS));
485 resources.push_back(std::make_pair("utils", IDR_UTILS_JS));
486 resources.push_back(
487 std::make_pair(mojo::kBufferModuleName, IDR_MOJO_BUFFER_JS));
488 resources.push_back(
489 std::make_pair(mojo::kCodecModuleName, IDR_MOJO_CODEC_JS));
490 resources.push_back(
491 std::make_pair(mojo::kConnectionModuleName, IDR_MOJO_CONNECTION_JS));
492 resources.push_back(
493 std::make_pair(mojo::kConnectorModuleName, IDR_MOJO_CONNECTOR_JS));
494 resources.push_back(
495 std::make_pair(mojo::kRouterModuleName, IDR_MOJO_ROUTER_JS));
496 resources.push_back(
497 std::make_pair(mojo::kUnicodeModuleName, IDR_MOJO_UNICODE_JS));
498
499 // Custom bindings.
500 resources.push_back(
501 std::make_pair("app.runtime", IDR_APP_RUNTIME_CUSTOM_BINDINGS_JS));
502 resources.push_back(
503 std::make_pair("contextMenus", IDR_CONTEXT_MENUS_CUSTOM_BINDINGS_JS));
504 resources.push_back(
505 std::make_pair("extension", IDR_EXTENSION_CUSTOM_BINDINGS_JS));
506 resources.push_back(std::make_pair("i18n", IDR_I18N_CUSTOM_BINDINGS_JS));
507 resources.push_back(
508 std::make_pair("permissions", IDR_PERMISSIONS_CUSTOM_BINDINGS_JS));
509 resources.push_back(
510 std::make_pair("runtime", IDR_RUNTIME_CUSTOM_BINDINGS_JS));
511 resources.push_back(std::make_pair("binding", IDR_BINDING_JS));
512
513 // Custom types sources.
514 resources.push_back(std::make_pair("StorageArea", IDR_STORAGE_AREA_JS));
515
516 // Platform app sources that are not API-specific..
517 resources.push_back(std::make_pair("platformApp", IDR_PLATFORM_APP_JS));
518
519 return resources;
520 }
521
522 // NOTE: please use the naming convention "foo_natives" for these.
523 // static
524 void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system,
525 ScriptContext* context,
526 Dispatcher* dispatcher,
527 RequestSender* request_sender,
528 V8SchemaRegistry* v8_schema_registry) {
529 module_system->RegisterNativeHandler(
530 "chrome", scoped_ptr<NativeHandler>(new ChromeNativeHandler(context)));
531 module_system->RegisterNativeHandler(
532 "lazy_background_page",
533 scoped_ptr<NativeHandler>(new LazyBackgroundPageNativeHandler(context)));
534 module_system->RegisterNativeHandler(
535 "logging", scoped_ptr<NativeHandler>(new LoggingNativeHandler(context)));
536 module_system->RegisterNativeHandler("schema_registry",
537 v8_schema_registry->AsNativeHandler());
538 module_system->RegisterNativeHandler(
539 "print", scoped_ptr<NativeHandler>(new PrintNativeHandler(context)));
540 module_system->RegisterNativeHandler(
541 "test_features",
542 scoped_ptr<NativeHandler>(new TestFeaturesNativeHandler(context)));
543 module_system->RegisterNativeHandler(
544 "user_gestures",
545 scoped_ptr<NativeHandler>(new UserGesturesNativeHandler(context)));
546 module_system->RegisterNativeHandler(
547 "utils", scoped_ptr<NativeHandler>(new UtilsNativeHandler(context)));
548 module_system->RegisterNativeHandler(
549 "v8_context",
550 scoped_ptr<NativeHandler>(
551 new V8ContextNativeHandler(context, dispatcher)));
552 module_system->RegisterNativeHandler(
553 "event_natives",
554 scoped_ptr<NativeHandler>(new EventBindings(dispatcher, context)));
555 module_system->RegisterNativeHandler(
556 "messaging_natives",
557 scoped_ptr<NativeHandler>(MessagingBindings::Get(dispatcher, context)));
558 module_system->RegisterNativeHandler(
559 "apiDefinitions",
560 scoped_ptr<NativeHandler>(
561 new ApiDefinitionsNatives(dispatcher, context)));
562 module_system->RegisterNativeHandler(
563 "sendRequest",
564 scoped_ptr<NativeHandler>(
565 new SendRequestNatives(request_sender, context)));
566 module_system->RegisterNativeHandler(
567 "setIcon",
568 scoped_ptr<NativeHandler>(new SetIconNatives(request_sender, context)));
569 module_system->RegisterNativeHandler(
570 "activityLogger",
571 scoped_ptr<NativeHandler>(new APIActivityLogger(context)));
572 module_system->RegisterNativeHandler(
573 "renderViewObserverNatives",
574 scoped_ptr<NativeHandler>(new RenderViewObserverNatives(context)));
575
576 // Natives used by multiple APIs.
577 module_system->RegisterNativeHandler(
578 "file_system_natives",
579 scoped_ptr<NativeHandler>(new FileSystemNatives(context)));
580
581 // Custom bindings.
582 module_system->RegisterNativeHandler(
583 "app_runtime",
584 scoped_ptr<NativeHandler>(new AppRuntimeCustomBindings(context)));
585 module_system->RegisterNativeHandler(
586 "blob_natives",
587 scoped_ptr<NativeHandler>(new BlobNativeHandler(context)));
588 module_system->RegisterNativeHandler(
589 "context_menus",
590 scoped_ptr<NativeHandler>(new ContextMenusCustomBindings(context)));
591 module_system->RegisterNativeHandler(
592 "css_natives", scoped_ptr<NativeHandler>(new CssNativeHandler(context)));
593 module_system->RegisterNativeHandler(
594 "document_natives",
595 scoped_ptr<NativeHandler>(new DocumentCustomBindings(context)));
596 module_system->RegisterNativeHandler(
597 "i18n", scoped_ptr<NativeHandler>(new I18NCustomBindings(context)));
598 module_system->RegisterNativeHandler(
599 "id_generator",
600 scoped_ptr<NativeHandler>(new IdGeneratorCustomBindings(context)));
601 module_system->RegisterNativeHandler(
602 "runtime", scoped_ptr<NativeHandler>(new RuntimeCustomBindings(context)));
603 }
604
460 bool Dispatcher::OnControlMessageReceived(const IPC::Message& message) { 605 bool Dispatcher::OnControlMessageReceived(const IPC::Message& message) {
461 bool handled = true; 606 bool handled = true;
462 IPC_BEGIN_MESSAGE_MAP(Dispatcher, message) 607 IPC_BEGIN_MESSAGE_MAP(Dispatcher, message)
463 IPC_MESSAGE_HANDLER(ExtensionMsg_ActivateExtension, OnActivateExtension) 608 IPC_MESSAGE_HANDLER(ExtensionMsg_ActivateExtension, OnActivateExtension)
464 IPC_MESSAGE_HANDLER(ExtensionMsg_CancelSuspend, OnCancelSuspend) 609 IPC_MESSAGE_HANDLER(ExtensionMsg_CancelSuspend, OnCancelSuspend)
465 IPC_MESSAGE_HANDLER(ExtensionMsg_ClearTabSpecificPermissions, 610 IPC_MESSAGE_HANDLER(ExtensionMsg_ClearTabSpecificPermissions,
466 OnClearTabSpecificPermissions) 611 OnClearTabSpecificPermissions)
467 IPC_MESSAGE_HANDLER(ExtensionMsg_DeliverMessage, OnDeliverMessage) 612 IPC_MESSAGE_HANDLER(ExtensionMsg_DeliverMessage, OnDeliverMessage)
468 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnConnect, OnDispatchOnConnect) 613 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnConnect, OnDispatchOnConnect)
469 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnDisconnect, OnDispatchOnDisconnect) 614 IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnDisconnect, OnDispatchOnDisconnect)
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
955 module_system->SetNativeLazyField( 1100 module_system->SetNativeLazyField(
956 bind_object, bind_name, api_name, "binding"); 1101 bind_object, bind_name, api_name, "binding");
957 } else { 1102 } else {
958 module_system->SetLazyField(bind_object, bind_name, api_name, "binding"); 1103 module_system->SetLazyField(bind_object, bind_name, api_name, "binding");
959 } 1104 }
960 } 1105 }
961 1106
962 // NOTE: please use the naming convention "foo_natives" for these. 1107 // NOTE: please use the naming convention "foo_natives" for these.
963 void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system, 1108 void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system,
964 ScriptContext* context) { 1109 ScriptContext* context) {
965 module_system->RegisterNativeHandler( 1110 RegisterNativeHandlers(module_system,
966 "chrome", scoped_ptr<NativeHandler>(new ChromeNativeHandler(context))); 1111 context,
967 module_system->RegisterNativeHandler( 1112 this,
968 "lazy_background_page", 1113 request_sender_.get(),
969 scoped_ptr<NativeHandler>(new LazyBackgroundPageNativeHandler(context))); 1114 v8_schema_registry_.get());
970 module_system->RegisterNativeHandler(
971 "logging", scoped_ptr<NativeHandler>(new LoggingNativeHandler(context)));
972 module_system->RegisterNativeHandler("schema_registry",
973 v8_schema_registry_->AsNativeHandler());
974 module_system->RegisterNativeHandler(
975 "print", scoped_ptr<NativeHandler>(new PrintNativeHandler(context)));
976 module_system->RegisterNativeHandler(
977 "test_features",
978 scoped_ptr<NativeHandler>(new TestFeaturesNativeHandler(context)));
979 module_system->RegisterNativeHandler(
980 "user_gestures",
981 scoped_ptr<NativeHandler>(new UserGesturesNativeHandler(context)));
982 module_system->RegisterNativeHandler(
983 "utils", scoped_ptr<NativeHandler>(new UtilsNativeHandler(context)));
984 module_system->RegisterNativeHandler(
985 "v8_context",
986 scoped_ptr<NativeHandler>(new V8ContextNativeHandler(context, this)));
987
988 const Extension* extension = context->extension(); 1115 const Extension* extension = context->extension();
989 int manifest_version = extension ? extension->manifest_version() : 1; 1116 int manifest_version = extension ? extension->manifest_version() : 1;
990 bool send_request_disabled = 1117 bool send_request_disabled =
991 (extension && Manifest::IsUnpackedLocation(extension->location()) && 1118 (extension && Manifest::IsUnpackedLocation(extension->location()) &&
992 BackgroundInfo::HasLazyBackgroundPage(extension)); 1119 BackgroundInfo::HasLazyBackgroundPage(extension));
993 module_system->RegisterNativeHandler( 1120 module_system->RegisterNativeHandler(
994 "process", 1121 "process",
995 scoped_ptr<NativeHandler>(new ProcessInfoNativeHandler( 1122 scoped_ptr<NativeHandler>(new ProcessInfoNativeHandler(
996 context, 1123 context,
997 context->GetExtensionID(), 1124 context->GetExtensionID(),
998 context->GetContextTypeDescription(), 1125 context->GetContextTypeDescription(),
999 ExtensionsRendererClient::Get()->IsIncognitoProcess(), 1126 ExtensionsRendererClient::Get()->IsIncognitoProcess(),
1000 manifest_version, 1127 manifest_version,
1001 send_request_disabled))); 1128 send_request_disabled)));
1002 1129
1003 module_system->RegisterNativeHandler(
1004 "event_natives",
1005 scoped_ptr<NativeHandler>(new EventBindings(this, context)));
1006 module_system->RegisterNativeHandler(
1007 "messaging_natives",
1008 scoped_ptr<NativeHandler>(MessagingBindings::Get(this, context)));
1009 module_system->RegisterNativeHandler(
1010 "apiDefinitions",
1011 scoped_ptr<NativeHandler>(new ApiDefinitionsNatives(this, context)));
1012 module_system->RegisterNativeHandler(
1013 "sendRequest",
1014 scoped_ptr<NativeHandler>(
1015 new SendRequestNatives(request_sender_.get(), context)));
1016 module_system->RegisterNativeHandler(
1017 "setIcon",
1018 scoped_ptr<NativeHandler>(
1019 new SetIconNatives(request_sender_.get(), context)));
1020 module_system->RegisterNativeHandler(
1021 "activityLogger",
1022 scoped_ptr<NativeHandler>(new APIActivityLogger(context)));
1023 module_system->RegisterNativeHandler(
1024 "renderViewObserverNatives",
1025 scoped_ptr<NativeHandler>(new RenderViewObserverNatives(context)));
1026
1027 // Natives used by multiple APIs.
1028 module_system->RegisterNativeHandler(
1029 "file_system_natives",
1030 scoped_ptr<NativeHandler>(new FileSystemNatives(context)));
1031
1032 // Custom bindings.
1033 module_system->RegisterNativeHandler(
1034 "app_runtime",
1035 scoped_ptr<NativeHandler>(new AppRuntimeCustomBindings(context)));
1036 module_system->RegisterNativeHandler(
1037 "blob_natives",
1038 scoped_ptr<NativeHandler>(new BlobNativeHandler(context)));
1039 module_system->RegisterNativeHandler(
1040 "context_menus",
1041 scoped_ptr<NativeHandler>(new ContextMenusCustomBindings(context)));
1042 module_system->RegisterNativeHandler(
1043 "css_natives", scoped_ptr<NativeHandler>(new CssNativeHandler(context)));
1044 module_system->RegisterNativeHandler(
1045 "document_natives",
1046 scoped_ptr<NativeHandler>(new DocumentCustomBindings(context)));
1047 module_system->RegisterNativeHandler(
1048 "i18n", scoped_ptr<NativeHandler>(new I18NCustomBindings(context)));
1049 module_system->RegisterNativeHandler(
1050 "id_generator",
1051 scoped_ptr<NativeHandler>(new IdGeneratorCustomBindings(context)));
1052 module_system->RegisterNativeHandler(
1053 "runtime", scoped_ptr<NativeHandler>(new RuntimeCustomBindings(context)));
1054
1055 delegate_->RegisterNativeHandlers(this, module_system, context); 1130 delegate_->RegisterNativeHandlers(this, module_system, context);
1056 } 1131 }
1057 1132
1058 void Dispatcher::PopulateSourceMap() { 1133 void Dispatcher::PopulateSourceMap() {
1059 // Libraries. 1134 const std::vector<std::pair<std::string, int> > resources = GetJsResources();
1060 source_map_.RegisterSource("entryIdManager", IDR_ENTRY_ID_MANAGER); 1135 for (std::vector<std::pair<std::string, int> >::const_iterator resource =
1061 source_map_.RegisterSource(kEventBindings, IDR_EVENT_BINDINGS_JS); 1136 resources.begin();
1062 source_map_.RegisterSource("imageUtil", IDR_IMAGE_UTIL_JS); 1137 resource != resources.end();
1063 source_map_.RegisterSource("json_schema", IDR_JSON_SCHEMA_JS); 1138 ++resource) {
1064 source_map_.RegisterSource("lastError", IDR_LAST_ERROR_JS); 1139 source_map_.RegisterSource(resource->first, resource->second);
1065 source_map_.RegisterSource("messaging", IDR_MESSAGING_JS); 1140 }
1066 source_map_.RegisterSource("messaging_utils", IDR_MESSAGING_UTILS_JS);
1067 source_map_.RegisterSource(kSchemaUtils, IDR_SCHEMA_UTILS_JS);
1068 source_map_.RegisterSource("sendRequest", IDR_SEND_REQUEST_JS);
1069 source_map_.RegisterSource("setIcon", IDR_SET_ICON_JS);
1070 source_map_.RegisterSource("test", IDR_TEST_CUSTOM_BINDINGS_JS);
1071 source_map_.RegisterSource("uncaught_exception_handler",
1072 IDR_UNCAUGHT_EXCEPTION_HANDLER_JS);
1073 source_map_.RegisterSource("unload_event", IDR_UNLOAD_EVENT_JS);
1074 source_map_.RegisterSource("utils", IDR_UTILS_JS);
1075
1076 // Custom bindings.
1077 source_map_.RegisterSource("app.runtime", IDR_APP_RUNTIME_CUSTOM_BINDINGS_JS);
1078 source_map_.RegisterSource("contextMenus",
1079 IDR_CONTEXT_MENUS_CUSTOM_BINDINGS_JS);
1080 source_map_.RegisterSource("extension", IDR_EXTENSION_CUSTOM_BINDINGS_JS);
1081 source_map_.RegisterSource("i18n", IDR_I18N_CUSTOM_BINDINGS_JS);
1082 source_map_.RegisterSource("permissions", IDR_PERMISSIONS_CUSTOM_BINDINGS_JS);
1083 source_map_.RegisterSource("runtime", IDR_RUNTIME_CUSTOM_BINDINGS_JS);
1084 source_map_.RegisterSource("binding", IDR_BINDING_JS);
1085
1086 // Custom types sources.
1087 source_map_.RegisterSource("StorageArea", IDR_STORAGE_AREA_JS);
1088
1089 // Platform app sources that are not API-specific..
1090 source_map_.RegisterSource("platformApp", IDR_PLATFORM_APP_JS);
1091
1092 delegate_->PopulateSourceMap(&source_map_); 1141 delegate_->PopulateSourceMap(&source_map_);
1093 } 1142 }
1094 1143
1095 bool Dispatcher::IsWithinPlatformApp() { 1144 bool Dispatcher::IsWithinPlatformApp() {
1096 for (std::set<std::string>::iterator iter = active_extension_ids_.begin(); 1145 for (std::set<std::string>::iterator iter = active_extension_ids_.begin();
1097 iter != active_extension_ids_.end(); 1146 iter != active_extension_ids_.end();
1098 ++iter) { 1147 ++iter) {
1099 const Extension* extension = extensions_.GetByID(*iter); 1148 const Extension* extension = extensions_.GetByID(*iter);
1100 if (extension && extension->is_platform_app()) 1149 if (extension && extension->is_platform_app())
1101 return true; 1150 return true;
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1235 return v8::Handle<v8::Object>(); 1284 return v8::Handle<v8::Object>();
1236 1285
1237 if (bind_name) 1286 if (bind_name)
1238 *bind_name = split.back(); 1287 *bind_name = split.back();
1239 1288
1240 return bind_object.IsEmpty() ? AsObjectOrEmpty(GetOrCreateChrome(context)) 1289 return bind_object.IsEmpty() ? AsObjectOrEmpty(GetOrCreateChrome(context))
1241 : bind_object; 1290 : bind_object;
1242 } 1291 }
1243 1292
1244 } // namespace extensions 1293 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/renderer/dispatcher.h ('k') | extensions/renderer/module_system.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698