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

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

Issue 16032015: Extensions: pass ChromeV8Context around instead of v8::Handle. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/renderer/extensions/dispatcher.h" 5 #include "chrome/renderer/extensions/dispatcher.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/debug/alias.h" 9 #include "base/debug/alias.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 v8::Handle<v8::Object> chrome_object(v8::Object::New()); 112 v8::Handle<v8::Object> chrome_object(v8::Object::New());
113 global->Set(chrome_string, chrome_object); 113 global->Set(chrome_string, chrome_object);
114 return chrome_object; 114 return chrome_object;
115 } 115 }
116 CHECK(chrome->IsObject()); 116 CHECK(chrome->IsObject());
117 return chrome->ToObject(); 117 return chrome->ToObject();
118 } 118 }
119 119
120 class TestFeaturesNativeHandler : public ObjectBackedNativeHandler { 120 class TestFeaturesNativeHandler : public ObjectBackedNativeHandler {
121 public: 121 public:
122 explicit TestFeaturesNativeHandler(v8::Handle<v8::Context> context) 122 explicit TestFeaturesNativeHandler(ChromeV8Context* context)
123 : ObjectBackedNativeHandler(context) { 123 : ObjectBackedNativeHandler(context) {
124 RouteFunction("GetAPIFeatures", 124 RouteFunction("GetAPIFeatures",
125 base::Bind(&TestFeaturesNativeHandler::GetAPIFeatures, 125 base::Bind(&TestFeaturesNativeHandler::GetAPIFeatures,
126 base::Unretained(this))); 126 base::Unretained(this)));
127 } 127 }
128 128
129 private: 129 private:
130 v8::Handle<v8::Value> GetAPIFeatures(const v8::Arguments& args) { 130 v8::Handle<v8::Value> GetAPIFeatures(const v8::Arguments& args) {
131 base::Value* value = base::JSONReader::Read( 131 base::Value* value = base::JSONReader::Read(
132 ResourceBundle::GetSharedInstance().GetRawDataResource( 132 ResourceBundle::GetSharedInstance().GetRawDataResource(
133 IDR_EXTENSION_API_FEATURES).as_string()); 133 IDR_EXTENSION_API_FEATURES).as_string());
134 scoped_ptr<content::V8ValueConverter> converter( 134 scoped_ptr<content::V8ValueConverter> converter(
135 content::V8ValueConverter::create()); 135 content::V8ValueConverter::create());
136 return converter->ToV8Value(value, v8_context()); 136 return converter->ToV8Value(value, v8_context());
137 } 137 }
138 }; 138 };
139 139
140 class SchemaRegistryNativeHandler : public ObjectBackedNativeHandler { 140 class SchemaRegistryNativeHandler : public ObjectBackedNativeHandler {
141 public: 141 public:
142 SchemaRegistryNativeHandler(V8SchemaRegistry* registry, 142 SchemaRegistryNativeHandler(V8SchemaRegistry* registry,
143 v8::Handle<v8::Context> context) 143 ChromeV8Context* context)
144 : ObjectBackedNativeHandler(context), 144 : ObjectBackedNativeHandler(context),
145 registry_(registry) { 145 registry_(registry) {
146 RouteFunction("GetSchema", 146 RouteFunction("GetSchema",
147 base::Bind(&SchemaRegistryNativeHandler::GetSchema, 147 base::Bind(&SchemaRegistryNativeHandler::GetSchema,
148 base::Unretained(this))); 148 base::Unretained(this)));
149 } 149 }
150 150
151 private: 151 private:
152 v8::Handle<v8::Value> GetSchema(const v8::Arguments& args) { 152 v8::Handle<v8::Value> GetSchema(const v8::Arguments& args) {
153 return registry_->GetSchema(*v8::String::AsciiValue(args[0])); 153 return registry_->GetSchema(*v8::String::AsciiValue(args[0]));
154 } 154 }
155 155
156 V8SchemaRegistry* registry_; 156 V8SchemaRegistry* registry_;
157 }; 157 };
158 158
159 class V8ContextNativeHandler : public ObjectBackedNativeHandler { 159 class V8ContextNativeHandler : public ObjectBackedNativeHandler {
160 public: 160 public:
161 V8ContextNativeHandler(ChromeV8Context* context, Dispatcher* dispatcher) 161 V8ContextNativeHandler(ChromeV8Context* context, Dispatcher* dispatcher)
162 : ObjectBackedNativeHandler(context->v8_context()), 162 : ObjectBackedNativeHandler(context),
163 context_(context), 163 context_(context),
164 dispatcher_(dispatcher) { 164 dispatcher_(dispatcher) {
165 RouteFunction("GetAvailability", 165 RouteFunction("GetAvailability",
166 base::Bind(&V8ContextNativeHandler::GetAvailability, 166 base::Bind(&V8ContextNativeHandler::GetAvailability,
167 base::Unretained(this))); 167 base::Unretained(this)));
168 RouteFunction("GetModuleSystem", 168 RouteFunction("GetModuleSystem",
169 base::Bind(&V8ContextNativeHandler::GetModuleSystem, 169 base::Bind(&V8ContextNativeHandler::GetModuleSystem,
170 base::Unretained(this))); 170 base::Unretained(this)));
171 } 171 }
172 172
(...skipping 20 matching lines...) Expand all
193 v8_context); 193 v8_context);
194 return context->module_system()->NewInstance(); 194 return context->module_system()->NewInstance();
195 } 195 }
196 196
197 ChromeV8Context* context_; 197 ChromeV8Context* context_;
198 Dispatcher* dispatcher_; 198 Dispatcher* dispatcher_;
199 }; 199 };
200 200
201 class ChromeHiddenNativeHandler : public ObjectBackedNativeHandler { 201 class ChromeHiddenNativeHandler : public ObjectBackedNativeHandler {
202 public: 202 public:
203 explicit ChromeHiddenNativeHandler(v8::Handle<v8::Context> context) 203 explicit ChromeHiddenNativeHandler(ChromeV8Context* context)
204 : ObjectBackedNativeHandler(context) { 204 : ObjectBackedNativeHandler(context) {
205 RouteFunction("GetChromeHidden", 205 RouteFunction("GetChromeHidden",
206 base::Bind(&ChromeHiddenNativeHandler::GetChromeHidden, 206 base::Bind(&ChromeHiddenNativeHandler::GetChromeHidden,
207 base::Unretained(this))); 207 base::Unretained(this)));
208 } 208 }
209 209
210 v8::Handle<v8::Value> GetChromeHidden(const v8::Arguments& args) { 210 v8::Handle<v8::Value> GetChromeHidden(const v8::Arguments& args) {
211 return ChromeV8Context::GetOrCreateChromeHidden(v8_context()); 211 return ChromeV8Context::GetOrCreateChromeHidden(v8_context());
212 } 212 }
213 }; 213 };
214 214
215 class ChromeNativeHandler : public ObjectBackedNativeHandler { 215 class ChromeNativeHandler : public ObjectBackedNativeHandler {
216 public: 216 public:
217 explicit ChromeNativeHandler(v8::Handle<v8::Context> context) 217 explicit ChromeNativeHandler(ChromeV8Context* context)
218 : ObjectBackedNativeHandler(context) { 218 : ObjectBackedNativeHandler(context) {
219 RouteFunction("GetChrome", 219 RouteFunction("GetChrome",
220 base::Bind(&ChromeNativeHandler::GetChrome, base::Unretained(this))); 220 base::Bind(&ChromeNativeHandler::GetChrome, base::Unretained(this)));
221 } 221 }
222 222
223 v8::Handle<v8::Value> GetChrome(const v8::Arguments& args) { 223 v8::Handle<v8::Value> GetChrome(const v8::Arguments& args) {
224 return GetOrCreateChrome(v8_context()); 224 return GetOrCreateChrome(v8_context());
225 } 225 }
226 }; 226 };
227 227
228 class PrintNativeHandler : public ObjectBackedNativeHandler { 228 class PrintNativeHandler : public ObjectBackedNativeHandler {
229 public: 229 public:
230 explicit PrintNativeHandler(v8::Handle<v8::Context> context) 230 explicit PrintNativeHandler(ChromeV8Context* context)
231 : ObjectBackedNativeHandler(context) { 231 : ObjectBackedNativeHandler(context) {
232 RouteFunction("Print", 232 RouteFunction("Print",
233 base::Bind(&PrintNativeHandler::Print, 233 base::Bind(&PrintNativeHandler::Print,
234 base::Unretained(this))); 234 base::Unretained(this)));
235 } 235 }
236 236
237 v8::Handle<v8::Value> Print(const v8::Arguments& args) { 237 v8::Handle<v8::Value> Print(const v8::Arguments& args) {
238 if (args.Length() < 1) 238 if (args.Length() < 1)
239 return v8::Undefined(); 239 return v8::Undefined();
240 240
241 std::vector<std::string> components; 241 std::vector<std::string> components;
242 for (int i = 0; i < args.Length(); ++i) 242 for (int i = 0; i < args.Length(); ++i)
243 components.push_back(*v8::String::Utf8Value(args[i]->ToString())); 243 components.push_back(*v8::String::Utf8Value(args[i]->ToString()));
244 244
245 LOG(ERROR) << JoinString(components, ','); 245 LOG(ERROR) << JoinString(components, ',');
246 return v8::Undefined(); 246 return v8::Undefined();
247 } 247 }
248 }; 248 };
249 249
250 class LazyBackgroundPageNativeHandler : public ChromeV8Extension { 250 class LazyBackgroundPageNativeHandler : public ChromeV8Extension {
251 public: 251 public:
252 LazyBackgroundPageNativeHandler(Dispatcher* dispatcher, 252 LazyBackgroundPageNativeHandler(Dispatcher* dispatcher,
253 v8::Handle<v8::Context> context) 253 ChromeV8Context* context)
254 : ChromeV8Extension(dispatcher, context) { 254 : ChromeV8Extension(dispatcher, context) {
255 RouteFunction("IncrementKeepaliveCount", 255 RouteFunction("IncrementKeepaliveCount",
256 base::Bind(&LazyBackgroundPageNativeHandler::IncrementKeepaliveCount, 256 base::Bind(&LazyBackgroundPageNativeHandler::IncrementKeepaliveCount,
257 base::Unretained(this))); 257 base::Unretained(this)));
258 RouteFunction("DecrementKeepaliveCount", 258 RouteFunction("DecrementKeepaliveCount",
259 base::Bind(&LazyBackgroundPageNativeHandler::DecrementKeepaliveCount, 259 base::Bind(&LazyBackgroundPageNativeHandler::DecrementKeepaliveCount,
260 base::Unretained(this))); 260 base::Unretained(this)));
261 } 261 }
262 262
263 v8::Handle<v8::Value> IncrementKeepaliveCount(const v8::Arguments& args) { 263 v8::Handle<v8::Value> IncrementKeepaliveCount(const v8::Arguments& args) {
(...skipping 30 matching lines...) Expand all
294 294
295 ExtensionHelper* helper = ExtensionHelper::Get(render_view); 295 ExtensionHelper* helper = ExtensionHelper::Get(render_view);
296 return (extension && BackgroundInfo::HasLazyBackgroundPage(extension) && 296 return (extension && BackgroundInfo::HasLazyBackgroundPage(extension) &&
297 helper->view_type() == VIEW_TYPE_EXTENSION_BACKGROUND_PAGE); 297 helper->view_type() == VIEW_TYPE_EXTENSION_BACKGROUND_PAGE);
298 } 298 }
299 }; 299 };
300 300
301 class ProcessInfoNativeHandler : public ChromeV8Extension { 301 class ProcessInfoNativeHandler : public ChromeV8Extension {
302 public: 302 public:
303 ProcessInfoNativeHandler(Dispatcher* dispatcher, 303 ProcessInfoNativeHandler(Dispatcher* dispatcher,
304 v8::Handle<v8::Context> context, 304 ChromeV8Context* context,
305 const std::string& extension_id, 305 const std::string& extension_id,
306 const std::string& context_type, 306 const std::string& context_type,
307 bool is_incognito_context, 307 bool is_incognito_context,
308 int manifest_version, 308 int manifest_version,
309 bool send_request_disabled) 309 bool send_request_disabled)
310 : ChromeV8Extension(dispatcher, context), 310 : ChromeV8Extension(dispatcher, context),
311 extension_id_(extension_id), 311 extension_id_(extension_id),
312 context_type_(context_type), 312 context_type_(context_type),
313 is_incognito_context_(is_incognito_context), 313 is_incognito_context_(is_incognito_context),
314 manifest_version_(manifest_version), 314 manifest_version_(manifest_version),
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 private: 358 private:
359 std::string extension_id_; 359 std::string extension_id_;
360 std::string context_type_; 360 std::string context_type_;
361 bool is_incognito_context_; 361 bool is_incognito_context_;
362 int manifest_version_; 362 int manifest_version_;
363 bool send_request_disabled_; 363 bool send_request_disabled_;
364 }; 364 };
365 365
366 class LoggingNativeHandler : public ObjectBackedNativeHandler { 366 class LoggingNativeHandler : public ObjectBackedNativeHandler {
367 public: 367 public:
368 explicit LoggingNativeHandler(v8::Handle<v8::Context> context) 368 explicit LoggingNativeHandler(ChromeV8Context* context)
369 : ObjectBackedNativeHandler(context) { 369 : ObjectBackedNativeHandler(context) {
370 RouteFunction("DCHECK", 370 RouteFunction("DCHECK",
371 base::Bind(&LoggingNativeHandler::Dcheck, base::Unretained(this))); 371 base::Bind(&LoggingNativeHandler::Dcheck, base::Unretained(this)));
372 RouteFunction("CHECK", 372 RouteFunction("CHECK",
373 base::Bind(&LoggingNativeHandler::Check, base::Unretained(this))); 373 base::Bind(&LoggingNativeHandler::Check, base::Unretained(this)));
374 } 374 }
375 375
376 v8::Handle<v8::Value> Check(const v8::Arguments& args) { 376 v8::Handle<v8::Value> Check(const v8::Arguments& args) {
377 bool check_value; 377 bool check_value;
378 std::string error_message; 378 std::string error_message;
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 module_system->SetLazyField(bind_object, 783 module_system->SetLazyField(bind_object,
784 split.back(), 784 split.back(),
785 api_name, 785 api_name,
786 "binding"); 786 "binding");
787 } 787 }
788 } 788 }
789 } 789 }
790 790
791 void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system, 791 void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system,
792 ChromeV8Context* context) { 792 ChromeV8Context* context) {
793 v8::Handle<v8::Context> v8_context = context->v8_context();
794
795 module_system->RegisterNativeHandler("event_bindings", 793 module_system->RegisterNativeHandler("event_bindings",
796 scoped_ptr<NativeHandler>(EventBindings::Create(this, v8_context))); 794 scoped_ptr<NativeHandler>(EventBindings::Create(this, context)));
797 module_system->RegisterNativeHandler("miscellaneous_bindings", 795 module_system->RegisterNativeHandler("miscellaneous_bindings",
798 scoped_ptr<NativeHandler>(MiscellaneousBindings::Get(this, v8_context))); 796 scoped_ptr<NativeHandler>(MiscellaneousBindings::Get(this, context)));
799 module_system->RegisterNativeHandler("apiDefinitions", 797 module_system->RegisterNativeHandler("apiDefinitions",
800 scoped_ptr<NativeHandler>(new ApiDefinitionsNatives(this, context))); 798 scoped_ptr<NativeHandler>(new ApiDefinitionsNatives(this, context)));
801 module_system->RegisterNativeHandler("sendRequest", 799 module_system->RegisterNativeHandler("sendRequest",
802 scoped_ptr<NativeHandler>( 800 scoped_ptr<NativeHandler>(
803 new SendRequestNatives(this, request_sender_.get(), context))); 801 new SendRequestNatives(this, request_sender_.get(), context)));
804 module_system->RegisterNativeHandler("setIcon", 802 module_system->RegisterNativeHandler("setIcon",
805 scoped_ptr<NativeHandler>( 803 scoped_ptr<NativeHandler>(
806 new SetIconNatives(this, request_sender_.get(), context))); 804 new SetIconNatives(this, request_sender_.get(), context)));
807 module_system->RegisterNativeHandler( 805 module_system->RegisterNativeHandler(
808 "contentWatcherNative", 806 "contentWatcherNative",
809 content_watcher_->MakeNatives(v8_context)); 807 content_watcher_->MakeNatives(context));
810 module_system->RegisterNativeHandler("activityLogger", 808 module_system->RegisterNativeHandler("activityLogger",
811 scoped_ptr<NativeHandler>(new APIActivityLogger(this, v8_context))); 809 scoped_ptr<NativeHandler>(new APIActivityLogger(this, context)));
812 810
813 // Natives used by multiple APIs. 811 // Natives used by multiple APIs.
814 module_system->RegisterNativeHandler("file_system_natives", 812 module_system->RegisterNativeHandler("file_system_natives",
815 scoped_ptr<NativeHandler>(new FileSystemNatives(v8_context))); 813 scoped_ptr<NativeHandler>(new FileSystemNatives(context)));
816 814
817 // Custom bindings. 815 // Custom bindings.
818 module_system->RegisterNativeHandler("app", 816 module_system->RegisterNativeHandler("app",
819 scoped_ptr<NativeHandler>(new AppBindings(this, context))); 817 scoped_ptr<NativeHandler>(new AppBindings(this, context)));
820 module_system->RegisterNativeHandler("app_runtime", 818 module_system->RegisterNativeHandler("app_runtime",
821 scoped_ptr<NativeHandler>( 819 scoped_ptr<NativeHandler>(
822 new AppRuntimeCustomBindings(this, v8_context))); 820 new AppRuntimeCustomBindings(this, context)));
823 module_system->RegisterNativeHandler("app_window", 821 module_system->RegisterNativeHandler("app_window",
824 scoped_ptr<NativeHandler>( 822 scoped_ptr<NativeHandler>(
825 new AppWindowCustomBindings(this, v8_context))); 823 new AppWindowCustomBindings(this, context)));
826 module_system->RegisterNativeHandler("context_menus", 824 module_system->RegisterNativeHandler("context_menus",
827 scoped_ptr<NativeHandler>( 825 scoped_ptr<NativeHandler>(
828 new ContextMenusCustomBindings(this, v8_context))); 826 new ContextMenusCustomBindings(this, context)));
829 module_system->RegisterNativeHandler("extension", 827 module_system->RegisterNativeHandler("extension",
830 scoped_ptr<NativeHandler>( 828 scoped_ptr<NativeHandler>(
831 new ExtensionCustomBindings(this, v8_context))); 829 new ExtensionCustomBindings(this, context)));
832 module_system->RegisterNativeHandler("sync_file_system", 830 module_system->RegisterNativeHandler("sync_file_system",
833 scoped_ptr<NativeHandler>( 831 scoped_ptr<NativeHandler>(
834 new SyncFileSystemCustomBindings(this, v8_context))); 832 new SyncFileSystemCustomBindings(this, context)));
835 module_system->RegisterNativeHandler("file_browser_handler", 833 module_system->RegisterNativeHandler("file_browser_handler",
836 scoped_ptr<NativeHandler>(new FileBrowserHandlerCustomBindings( 834 scoped_ptr<NativeHandler>(new FileBrowserHandlerCustomBindings(
837 this, v8_context))); 835 this, context)));
838 module_system->RegisterNativeHandler("file_browser_private", 836 module_system->RegisterNativeHandler("file_browser_private",
839 scoped_ptr<NativeHandler>(new FileBrowserPrivateCustomBindings( 837 scoped_ptr<NativeHandler>(new FileBrowserPrivateCustomBindings(
840 this, v8_context))); 838 this, context)));
841 module_system->RegisterNativeHandler("i18n", 839 module_system->RegisterNativeHandler("i18n",
842 scoped_ptr<NativeHandler>( 840 scoped_ptr<NativeHandler>(
843 new I18NCustomBindings(this, v8_context))); 841 new I18NCustomBindings(this, context)));
844 module_system->RegisterNativeHandler("mediaGalleries", 842 module_system->RegisterNativeHandler("mediaGalleries",
845 scoped_ptr<NativeHandler>( 843 scoped_ptr<NativeHandler>(
846 new MediaGalleriesCustomBindings(this, v8_context))); 844 new MediaGalleriesCustomBindings(this, context)));
847 module_system->RegisterNativeHandler("page_actions", 845 module_system->RegisterNativeHandler("page_actions",
848 scoped_ptr<NativeHandler>( 846 scoped_ptr<NativeHandler>(
849 new PageActionsCustomBindings(this, v8_context))); 847 new PageActionsCustomBindings(this, context)));
850 module_system->RegisterNativeHandler("page_capture", 848 module_system->RegisterNativeHandler("page_capture",
851 scoped_ptr<NativeHandler>( 849 scoped_ptr<NativeHandler>(
852 new PageCaptureCustomBindings(this, v8_context))); 850 new PageCaptureCustomBindings(this, context)));
853 module_system->RegisterNativeHandler("runtime", 851 module_system->RegisterNativeHandler("runtime",
854 scoped_ptr<NativeHandler>(new RuntimeCustomBindings(this, context))); 852 scoped_ptr<NativeHandler>(new RuntimeCustomBindings(this, context)));
855 module_system->RegisterNativeHandler("tabs", 853 module_system->RegisterNativeHandler("tabs",
856 scoped_ptr<NativeHandler>(new TabsCustomBindings(this, v8_context))); 854 scoped_ptr<NativeHandler>(new TabsCustomBindings(this, context)));
857 module_system->RegisterNativeHandler("tts", 855 module_system->RegisterNativeHandler("tts",
858 scoped_ptr<NativeHandler>(new TTSCustomBindings(this, v8_context))); 856 scoped_ptr<NativeHandler>(new TTSCustomBindings(this, context)));
859 module_system->RegisterNativeHandler("web_request", 857 module_system->RegisterNativeHandler("web_request",
860 scoped_ptr<NativeHandler>( 858 scoped_ptr<NativeHandler>(
861 new WebRequestCustomBindings(this, v8_context))); 859 new WebRequestCustomBindings(this, context)));
862 module_system->RegisterNativeHandler("webstore", 860 module_system->RegisterNativeHandler("webstore",
863 scoped_ptr<NativeHandler>(new WebstoreBindings(this, context))); 861 scoped_ptr<NativeHandler>(new WebstoreBindings(this, context)));
864 } 862 }
865 863
866 void Dispatcher::PopulateSourceMap() { 864 void Dispatcher::PopulateSourceMap() {
867 source_map_.RegisterSource("event_bindings", IDR_EVENT_BINDINGS_JS); 865 source_map_.RegisterSource("event_bindings", IDR_EVENT_BINDINGS_JS);
868 source_map_.RegisterSource("miscellaneous_bindings", 866 source_map_.RegisterSource("miscellaneous_bindings",
869 IDR_MISCELLANEOUS_BINDINGS_JS); 867 IDR_MISCELLANEOUS_BINDINGS_JS);
870 source_map_.RegisterSource("json", IDR_JSON_JS); 868 source_map_.RegisterSource("json", IDR_JSON_JS);
871 source_map_.RegisterSource("json_schema", IDR_JSON_SCHEMA_JS); 869 source_map_.RegisterSource("json_schema", IDR_JSON_SCHEMA_JS);
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 ExtensionURLInfo url_info(frame->document().securityOrigin(), 1010 ExtensionURLInfo url_info(frame->document().securityOrigin(),
1013 UserScriptSlave::GetDataSourceURLForFrame(frame)); 1011 UserScriptSlave::GetDataSourceURLForFrame(frame));
1014 1012
1015 Feature::Context context_type = 1013 Feature::Context context_type =
1016 ClassifyJavaScriptContext(extension_id, extension_group, url_info); 1014 ClassifyJavaScriptContext(extension_id, extension_group, url_info);
1017 1015
1018 ChromeV8Context* context = 1016 ChromeV8Context* context =
1019 new ChromeV8Context(v8_context, frame, extension, context_type); 1017 new ChromeV8Context(v8_context, frame, extension, context_type);
1020 v8_context_set_.Add(context); 1018 v8_context_set_.Add(context);
1021 1019
1022 scoped_ptr<ModuleSystem> module_system(new ModuleSystem(v8_context, 1020 scoped_ptr<ModuleSystem> module_system(new ModuleSystem(context,
1023 &source_map_)); 1021 &source_map_));
1024 // Enable natives in startup. 1022 // Enable natives in startup.
1025 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system.get()); 1023 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system.get());
1026 1024
1027 RegisterNativeHandlers(module_system.get(), context); 1025 RegisterNativeHandlers(module_system.get(), context);
1028 1026
1029 module_system->RegisterNativeHandler("chrome", 1027 module_system->RegisterNativeHandler("chrome",
1030 scoped_ptr<NativeHandler>(new ChromeNativeHandler(v8_context))); 1028 scoped_ptr<NativeHandler>(new ChromeNativeHandler(context)));
1031 module_system->RegisterNativeHandler("chrome_hidden", 1029 module_system->RegisterNativeHandler("chrome_hidden",
1032 scoped_ptr<NativeHandler>(new ChromeHiddenNativeHandler(v8_context))); 1030 scoped_ptr<NativeHandler>(new ChromeHiddenNativeHandler(context)));
1033 module_system->RegisterNativeHandler("print", 1031 module_system->RegisterNativeHandler("print",
1034 scoped_ptr<NativeHandler>(new PrintNativeHandler(v8_context))); 1032 scoped_ptr<NativeHandler>(new PrintNativeHandler(context)));
1035 module_system->RegisterNativeHandler("lazy_background_page", 1033 module_system->RegisterNativeHandler("lazy_background_page",
1036 scoped_ptr<NativeHandler>( 1034 scoped_ptr<NativeHandler>(
1037 new LazyBackgroundPageNativeHandler(this, v8_context))); 1035 new LazyBackgroundPageNativeHandler(this, context)));
1038 module_system->RegisterNativeHandler("logging", 1036 module_system->RegisterNativeHandler("logging",
1039 scoped_ptr<NativeHandler>(new LoggingNativeHandler(v8_context))); 1037 scoped_ptr<NativeHandler>(new LoggingNativeHandler(context)));
1040 module_system->RegisterNativeHandler("schema_registry", 1038 module_system->RegisterNativeHandler("schema_registry",
1041 scoped_ptr<NativeHandler>( 1039 scoped_ptr<NativeHandler>(
1042 new SchemaRegistryNativeHandler(v8_schema_registry(), v8_context))); 1040 new SchemaRegistryNativeHandler(v8_schema_registry(), context)));
1043 module_system->RegisterNativeHandler("v8_context", 1041 module_system->RegisterNativeHandler("v8_context",
1044 scoped_ptr<NativeHandler>(new V8ContextNativeHandler(context, this))); 1042 scoped_ptr<NativeHandler>(new V8ContextNativeHandler(context, this)));
1045 module_system->RegisterNativeHandler("test_features", 1043 module_system->RegisterNativeHandler("test_features",
1046 scoped_ptr<NativeHandler>(new TestFeaturesNativeHandler(v8_context))); 1044 scoped_ptr<NativeHandler>(new TestFeaturesNativeHandler(context)));
1047 1045
1048 int manifest_version = extension ? extension->manifest_version() : 1; 1046 int manifest_version = extension ? extension->manifest_version() : 1;
1049 bool send_request_disabled = 1047 bool send_request_disabled =
1050 (extension && Manifest::IsUnpackedLocation(extension->location()) && 1048 (extension && Manifest::IsUnpackedLocation(extension->location()) &&
1051 BackgroundInfo::HasLazyBackgroundPage(extension)); 1049 BackgroundInfo::HasLazyBackgroundPage(extension));
1052 module_system->RegisterNativeHandler("process", 1050 module_system->RegisterNativeHandler("process",
1053 scoped_ptr<NativeHandler>(new ProcessInfoNativeHandler( 1051 scoped_ptr<NativeHandler>(new ProcessInfoNativeHandler(
1054 this, v8_context, context->GetExtensionID(), 1052 this, context, context->GetExtensionID(),
1055 context->GetContextTypeDescription(), 1053 context->GetContextTypeDescription(),
1056 ChromeRenderProcessObserver::is_incognito_process(), 1054 ChromeRenderProcessObserver::is_incognito_process(),
1057 manifest_version, send_request_disabled))); 1055 manifest_version, send_request_disabled)));
1058 1056
1059 GetOrCreateChrome(v8_context); 1057 GetOrCreateChrome(v8_context);
1060 1058
1061 // Loading JavaScript is expensive, so only run the full API bindings 1059 // Loading JavaScript is expensive, so only run the full API bindings
1062 // generation mechanisms in extension pages (NOT all web pages). 1060 // generation mechanisms in extension pages (NOT all web pages).
1063 switch (context_type) { 1061 switch (context_type) {
1064 case Feature::UNSPECIFIED_CONTEXT: 1062 case Feature::UNSPECIFIED_CONTEXT:
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
1459 std::string error_msg = base::StringPrintf(kMessage, function_name.c_str()); 1457 std::string error_msg = base::StringPrintf(kMessage, function_name.c_str());
1460 v8::ThrowException( 1458 v8::ThrowException(
1461 v8::Exception::Error(v8::String::New(error_msg.c_str()))); 1459 v8::Exception::Error(v8::String::New(error_msg.c_str())));
1462 return false; 1460 return false;
1463 } 1461 }
1464 1462
1465 return true; 1463 return true;
1466 } 1464 }
1467 1465
1468 } // namespace extensions 1466 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698