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

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: Code review (kalman) 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, context()->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(context()->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(context()->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) {
264 ChromeV8Context* context = 264 ChromeV8Context* context = GetContext();
not at google - send to devlin 2013/05/29 17:41:55 could inline this as context() too, etc below.
marja 2013/05/31 10:06:44 Done.
265 dispatcher()->v8_context_set().GetByV8Context(v8_context());
266 if (!context) 265 if (!context)
267 return v8::Undefined(); 266 return v8::Undefined();
268 RenderView* render_view = context->GetRenderView(); 267 RenderView* render_view = context->GetRenderView();
269 if (IsContextLazyBackgroundPage(render_view, context->extension())) { 268 if (IsContextLazyBackgroundPage(render_view, context->extension())) {
270 render_view->Send(new ExtensionHostMsg_IncrementLazyKeepaliveCount( 269 render_view->Send(new ExtensionHostMsg_IncrementLazyKeepaliveCount(
271 render_view->GetRoutingID())); 270 render_view->GetRoutingID()));
272 } 271 }
273 return v8::Undefined(); 272 return v8::Undefined();
274 } 273 }
275 274
276 v8::Handle<v8::Value> DecrementKeepaliveCount(const v8::Arguments& args) { 275 v8::Handle<v8::Value> DecrementKeepaliveCount(const v8::Arguments& args) {
277 ChromeV8Context* context = 276 ChromeV8Context* context = GetContext();
278 dispatcher()->v8_context_set().GetByV8Context(v8_context());
279 if (!context) 277 if (!context)
280 return v8::Undefined(); 278 return v8::Undefined();
281 RenderView* render_view = context->GetRenderView(); 279 RenderView* render_view = context->GetRenderView();
282 if (IsContextLazyBackgroundPage(render_view, context->extension())) { 280 if (IsContextLazyBackgroundPage(render_view, context->extension())) {
283 render_view->Send(new ExtensionHostMsg_DecrementLazyKeepaliveCount( 281 render_view->Send(new ExtensionHostMsg_DecrementLazyKeepaliveCount(
284 render_view->GetRoutingID())); 282 render_view->GetRoutingID()));
285 } 283 }
286 return v8::Undefined(); 284 return v8::Undefined();
287 } 285 }
288 286
289 private: 287 private:
290 bool IsContextLazyBackgroundPage(RenderView* render_view, 288 bool IsContextLazyBackgroundPage(RenderView* render_view,
291 const Extension* extension) { 289 const Extension* extension) {
292 if (!render_view) 290 if (!render_view)
293 return false; 291 return false;
294 292
295 ExtensionHelper* helper = ExtensionHelper::Get(render_view); 293 ExtensionHelper* helper = ExtensionHelper::Get(render_view);
296 return (extension && BackgroundInfo::HasLazyBackgroundPage(extension) && 294 return (extension && BackgroundInfo::HasLazyBackgroundPage(extension) &&
297 helper->view_type() == VIEW_TYPE_EXTENSION_BACKGROUND_PAGE); 295 helper->view_type() == VIEW_TYPE_EXTENSION_BACKGROUND_PAGE);
298 } 296 }
299 }; 297 };
300 298
301 class ProcessInfoNativeHandler : public ChromeV8Extension { 299 class ProcessInfoNativeHandler : public ChromeV8Extension {
302 public: 300 public:
303 ProcessInfoNativeHandler(Dispatcher* dispatcher, 301 ProcessInfoNativeHandler(Dispatcher* dispatcher,
304 v8::Handle<v8::Context> context, 302 ChromeV8Context* context,
305 const std::string& extension_id, 303 const std::string& extension_id,
306 const std::string& context_type, 304 const std::string& context_type,
307 bool is_incognito_context, 305 bool is_incognito_context,
308 int manifest_version, 306 int manifest_version,
309 bool send_request_disabled) 307 bool send_request_disabled)
310 : ChromeV8Extension(dispatcher, context), 308 : ChromeV8Extension(dispatcher, context),
311 extension_id_(extension_id), 309 extension_id_(extension_id),
312 context_type_(context_type), 310 context_type_(context_type),
313 is_incognito_context_(is_incognito_context), 311 is_incognito_context_(is_incognito_context),
314 manifest_version_(manifest_version), 312 manifest_version_(manifest_version),
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 private: 356 private:
359 std::string extension_id_; 357 std::string extension_id_;
360 std::string context_type_; 358 std::string context_type_;
361 bool is_incognito_context_; 359 bool is_incognito_context_;
362 int manifest_version_; 360 int manifest_version_;
363 bool send_request_disabled_; 361 bool send_request_disabled_;
364 }; 362 };
365 363
366 class LoggingNativeHandler : public ObjectBackedNativeHandler { 364 class LoggingNativeHandler : public ObjectBackedNativeHandler {
367 public: 365 public:
368 explicit LoggingNativeHandler(v8::Handle<v8::Context> context) 366 explicit LoggingNativeHandler(ChromeV8Context* context)
369 : ObjectBackedNativeHandler(context) { 367 : ObjectBackedNativeHandler(context) {
370 RouteFunction("DCHECK", 368 RouteFunction("DCHECK",
371 base::Bind(&LoggingNativeHandler::Dcheck, base::Unretained(this))); 369 base::Bind(&LoggingNativeHandler::Dcheck, base::Unretained(this)));
372 RouteFunction("CHECK", 370 RouteFunction("CHECK",
373 base::Bind(&LoggingNativeHandler::Check, base::Unretained(this))); 371 base::Bind(&LoggingNativeHandler::Check, base::Unretained(this)));
374 } 372 }
375 373
376 v8::Handle<v8::Value> Check(const v8::Arguments& args) { 374 v8::Handle<v8::Value> Check(const v8::Arguments& args) {
377 bool check_value; 375 bool check_value;
378 std::string error_message; 376 std::string error_message;
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 !context->GetAvailability(api_name).is_available()) { 758 !context->GetAvailability(api_name).is_available()) {
761 only_ancestor_available = true; 759 only_ancestor_available = true;
762 break; 760 break;
763 } 761 }
764 bind_object = GetOrCreateObject(bind_object, split[i]); 762 bind_object = GetOrCreateObject(bind_object, split[i]);
765 } 763 }
766 if (only_ancestor_available) 764 if (only_ancestor_available)
767 continue; 765 continue;
768 766
769 if (lazy_bindings_map_.find(api_name) != lazy_bindings_map_.end()) { 767 if (lazy_bindings_map_.find(api_name) != lazy_bindings_map_.end()) {
770 InstallBindings(module_system, context->v8_context(), api_name); 768 InstallBindings(
769 module_system, context->v8_context(), api_name);
771 } else if (!source_map_.Contains(api_name)) { 770 } else if (!source_map_.Contains(api_name)) {
772 module_system->RegisterNativeHandler( 771 module_system->RegisterNativeHandler(
773 api_name, 772 api_name,
774 scoped_ptr<NativeHandler>(new BindingGeneratingNativeHandler( 773 scoped_ptr<NativeHandler>(new BindingGeneratingNativeHandler(
775 module_system, 774 module_system,
776 api_name, 775 api_name,
777 "binding"))); 776 "binding")));
778 module_system->SetNativeLazyField(bind_object, 777 module_system->SetNativeLazyField(bind_object,
779 split.back(), 778 split.back(),
780 api_name, 779 api_name,
781 "binding"); 780 "binding");
782 } else { 781 } else {
783 module_system->SetLazyField(bind_object, 782 module_system->SetLazyField(bind_object,
784 split.back(), 783 split.back(),
785 api_name, 784 api_name,
786 "binding"); 785 "binding");
787 } 786 }
788 } 787 }
789 } 788 }
790 789
791 void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system, 790 void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system,
792 ChromeV8Context* context) { 791 ChromeV8Context* context) {
793 v8::Handle<v8::Context> v8_context = context->v8_context();
794
795 module_system->RegisterNativeHandler("event_bindings", 792 module_system->RegisterNativeHandler("event_bindings",
796 scoped_ptr<NativeHandler>(EventBindings::Create(this, v8_context))); 793 scoped_ptr<NativeHandler>(EventBindings::Create(this, context)));
797 module_system->RegisterNativeHandler("miscellaneous_bindings", 794 module_system->RegisterNativeHandler("miscellaneous_bindings",
798 scoped_ptr<NativeHandler>(MiscellaneousBindings::Get(this, v8_context))); 795 scoped_ptr<NativeHandler>(MiscellaneousBindings::Get(this, context)));
799 module_system->RegisterNativeHandler("apiDefinitions", 796 module_system->RegisterNativeHandler("apiDefinitions",
800 scoped_ptr<NativeHandler>(new ApiDefinitionsNatives(this, context))); 797 scoped_ptr<NativeHandler>(new ApiDefinitionsNatives(this, context)));
801 module_system->RegisterNativeHandler("sendRequest", 798 module_system->RegisterNativeHandler("sendRequest",
802 scoped_ptr<NativeHandler>( 799 scoped_ptr<NativeHandler>(
803 new SendRequestNatives(this, request_sender_.get(), context))); 800 new SendRequestNatives(this, request_sender_.get(), context)));
804 module_system->RegisterNativeHandler("setIcon", 801 module_system->RegisterNativeHandler("setIcon",
805 scoped_ptr<NativeHandler>( 802 scoped_ptr<NativeHandler>(
806 new SetIconNatives(this, request_sender_.get(), context))); 803 new SetIconNatives(this, request_sender_.get(), context)));
807 module_system->RegisterNativeHandler( 804 module_system->RegisterNativeHandler(
808 "contentWatcherNative", 805 "contentWatcherNative",
809 content_watcher_->MakeNatives(v8_context)); 806 content_watcher_->MakeNatives(context));
810 module_system->RegisterNativeHandler("activityLogger", 807 module_system->RegisterNativeHandler("activityLogger",
811 scoped_ptr<NativeHandler>(new APIActivityLogger(this, v8_context))); 808 scoped_ptr<NativeHandler>(new APIActivityLogger(this, context)));
812 809
813 // Natives used by multiple APIs. 810 // Natives used by multiple APIs.
814 module_system->RegisterNativeHandler("file_system_natives", 811 module_system->RegisterNativeHandler("file_system_natives",
815 scoped_ptr<NativeHandler>(new FileSystemNatives(v8_context))); 812 scoped_ptr<NativeHandler>(new FileSystemNatives(context)));
816 813
817 // Custom bindings. 814 // Custom bindings.
818 module_system->RegisterNativeHandler("app", 815 module_system->RegisterNativeHandler("app",
819 scoped_ptr<NativeHandler>(new AppBindings(this, context))); 816 scoped_ptr<NativeHandler>(new AppBindings(this, context)));
820 module_system->RegisterNativeHandler("app_runtime", 817 module_system->RegisterNativeHandler("app_runtime",
821 scoped_ptr<NativeHandler>( 818 scoped_ptr<NativeHandler>(
822 new AppRuntimeCustomBindings(this, v8_context))); 819 new AppRuntimeCustomBindings(this, context)));
823 module_system->RegisterNativeHandler("app_window", 820 module_system->RegisterNativeHandler("app_window",
824 scoped_ptr<NativeHandler>( 821 scoped_ptr<NativeHandler>(
825 new AppWindowCustomBindings(this, v8_context))); 822 new AppWindowCustomBindings(this, context)));
826 module_system->RegisterNativeHandler("context_menus", 823 module_system->RegisterNativeHandler("context_menus",
827 scoped_ptr<NativeHandler>( 824 scoped_ptr<NativeHandler>(
828 new ContextMenusCustomBindings(this, v8_context))); 825 new ContextMenusCustomBindings(this, context)));
829 module_system->RegisterNativeHandler("extension", 826 module_system->RegisterNativeHandler("extension",
830 scoped_ptr<NativeHandler>( 827 scoped_ptr<NativeHandler>(
831 new ExtensionCustomBindings(this, v8_context))); 828 new ExtensionCustomBindings(this, context)));
832 module_system->RegisterNativeHandler("sync_file_system", 829 module_system->RegisterNativeHandler("sync_file_system",
833 scoped_ptr<NativeHandler>( 830 scoped_ptr<NativeHandler>(
834 new SyncFileSystemCustomBindings(this, v8_context))); 831 new SyncFileSystemCustomBindings(this, context)));
835 module_system->RegisterNativeHandler("file_browser_handler", 832 module_system->RegisterNativeHandler("file_browser_handler",
836 scoped_ptr<NativeHandler>(new FileBrowserHandlerCustomBindings( 833 scoped_ptr<NativeHandler>(new FileBrowserHandlerCustomBindings(
837 this, v8_context))); 834 this, context)));
838 module_system->RegisterNativeHandler("file_browser_private", 835 module_system->RegisterNativeHandler("file_browser_private",
839 scoped_ptr<NativeHandler>(new FileBrowserPrivateCustomBindings( 836 scoped_ptr<NativeHandler>(new FileBrowserPrivateCustomBindings(
840 this, v8_context))); 837 this, context)));
841 module_system->RegisterNativeHandler("i18n", 838 module_system->RegisterNativeHandler("i18n",
842 scoped_ptr<NativeHandler>( 839 scoped_ptr<NativeHandler>(
843 new I18NCustomBindings(this, v8_context))); 840 new I18NCustomBindings(this, context)));
844 module_system->RegisterNativeHandler("mediaGalleries", 841 module_system->RegisterNativeHandler("mediaGalleries",
845 scoped_ptr<NativeHandler>( 842 scoped_ptr<NativeHandler>(
846 new MediaGalleriesCustomBindings(this, v8_context))); 843 new MediaGalleriesCustomBindings(this, context)));
847 module_system->RegisterNativeHandler("page_actions", 844 module_system->RegisterNativeHandler("page_actions",
848 scoped_ptr<NativeHandler>( 845 scoped_ptr<NativeHandler>(
849 new PageActionsCustomBindings(this, v8_context))); 846 new PageActionsCustomBindings(this, context)));
850 module_system->RegisterNativeHandler("page_capture", 847 module_system->RegisterNativeHandler("page_capture",
851 scoped_ptr<NativeHandler>( 848 scoped_ptr<NativeHandler>(
852 new PageCaptureCustomBindings(this, v8_context))); 849 new PageCaptureCustomBindings(this, context)));
853 module_system->RegisterNativeHandler("runtime", 850 module_system->RegisterNativeHandler("runtime",
854 scoped_ptr<NativeHandler>(new RuntimeCustomBindings(this, context))); 851 scoped_ptr<NativeHandler>(new RuntimeCustomBindings(this, context)));
855 module_system->RegisterNativeHandler("tabs", 852 module_system->RegisterNativeHandler("tabs",
856 scoped_ptr<NativeHandler>(new TabsCustomBindings(this, v8_context))); 853 scoped_ptr<NativeHandler>(new TabsCustomBindings(this, context)));
857 module_system->RegisterNativeHandler("tts", 854 module_system->RegisterNativeHandler("tts",
858 scoped_ptr<NativeHandler>(new TTSCustomBindings(this, v8_context))); 855 scoped_ptr<NativeHandler>(new TTSCustomBindings(this, context)));
859 module_system->RegisterNativeHandler("web_request", 856 module_system->RegisterNativeHandler("web_request",
860 scoped_ptr<NativeHandler>( 857 scoped_ptr<NativeHandler>(
861 new WebRequestCustomBindings(this, v8_context))); 858 new WebRequestCustomBindings(this, context)));
862 module_system->RegisterNativeHandler("webstore", 859 module_system->RegisterNativeHandler("webstore",
863 scoped_ptr<NativeHandler>(new WebstoreBindings(this, context))); 860 scoped_ptr<NativeHandler>(new WebstoreBindings(this, context)));
864 } 861 }
865 862
866 void Dispatcher::PopulateSourceMap() { 863 void Dispatcher::PopulateSourceMap() {
867 source_map_.RegisterSource("event_bindings", IDR_EVENT_BINDINGS_JS); 864 source_map_.RegisterSource("event_bindings", IDR_EVENT_BINDINGS_JS);
868 source_map_.RegisterSource("miscellaneous_bindings", 865 source_map_.RegisterSource("miscellaneous_bindings",
869 IDR_MISCELLANEOUS_BINDINGS_JS); 866 IDR_MISCELLANEOUS_BINDINGS_JS);
870 source_map_.RegisterSource("json", IDR_JSON_JS); 867 source_map_.RegisterSource("json", IDR_JSON_JS);
871 source_map_.RegisterSource("json_schema", IDR_JSON_SCHEMA_JS); 868 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(), 1009 ExtensionURLInfo url_info(frame->document().securityOrigin(),
1013 UserScriptSlave::GetDataSourceURLForFrame(frame)); 1010 UserScriptSlave::GetDataSourceURLForFrame(frame));
1014 1011
1015 Feature::Context context_type = 1012 Feature::Context context_type =
1016 ClassifyJavaScriptContext(extension_id, extension_group, url_info); 1013 ClassifyJavaScriptContext(extension_id, extension_group, url_info);
1017 1014
1018 ChromeV8Context* context = 1015 ChromeV8Context* context =
1019 new ChromeV8Context(v8_context, frame, extension, context_type); 1016 new ChromeV8Context(v8_context, frame, extension, context_type);
1020 v8_context_set_.Add(context); 1017 v8_context_set_.Add(context);
1021 1018
1022 scoped_ptr<ModuleSystem> module_system(new ModuleSystem(v8_context, 1019 scoped_ptr<ModuleSystem> module_system(new ModuleSystem(context,
1023 &source_map_)); 1020 &source_map_));
1024 // Enable natives in startup. 1021 // Enable natives in startup.
1025 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system.get()); 1022 ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system.get());
1026 1023
1027 RegisterNativeHandlers(module_system.get(), context); 1024 RegisterNativeHandlers(module_system.get(), context);
1028 1025
1029 module_system->RegisterNativeHandler("chrome", 1026 module_system->RegisterNativeHandler("chrome",
1030 scoped_ptr<NativeHandler>(new ChromeNativeHandler(v8_context))); 1027 scoped_ptr<NativeHandler>(new ChromeNativeHandler(context)));
1031 module_system->RegisterNativeHandler("chrome_hidden", 1028 module_system->RegisterNativeHandler("chrome_hidden",
1032 scoped_ptr<NativeHandler>(new ChromeHiddenNativeHandler(v8_context))); 1029 scoped_ptr<NativeHandler>(new ChromeHiddenNativeHandler(context)));
1033 module_system->RegisterNativeHandler("print", 1030 module_system->RegisterNativeHandler("print",
1034 scoped_ptr<NativeHandler>(new PrintNativeHandler(v8_context))); 1031 scoped_ptr<NativeHandler>(new PrintNativeHandler(context)));
1035 module_system->RegisterNativeHandler("lazy_background_page", 1032 module_system->RegisterNativeHandler("lazy_background_page",
1036 scoped_ptr<NativeHandler>( 1033 scoped_ptr<NativeHandler>(
1037 new LazyBackgroundPageNativeHandler(this, v8_context))); 1034 new LazyBackgroundPageNativeHandler(this, context)));
1038 module_system->RegisterNativeHandler("logging", 1035 module_system->RegisterNativeHandler("logging",
1039 scoped_ptr<NativeHandler>(new LoggingNativeHandler(v8_context))); 1036 scoped_ptr<NativeHandler>(new LoggingNativeHandler(context)));
1040 module_system->RegisterNativeHandler("schema_registry", 1037 module_system->RegisterNativeHandler("schema_registry",
1041 scoped_ptr<NativeHandler>( 1038 scoped_ptr<NativeHandler>(
1042 new SchemaRegistryNativeHandler(v8_schema_registry(), v8_context))); 1039 new SchemaRegistryNativeHandler(v8_schema_registry(), context)));
1043 module_system->RegisterNativeHandler("v8_context", 1040 module_system->RegisterNativeHandler("v8_context",
1044 scoped_ptr<NativeHandler>(new V8ContextNativeHandler(context, this))); 1041 scoped_ptr<NativeHandler>(new V8ContextNativeHandler(context, this)));
1045 module_system->RegisterNativeHandler("test_features", 1042 module_system->RegisterNativeHandler("test_features",
1046 scoped_ptr<NativeHandler>(new TestFeaturesNativeHandler(v8_context))); 1043 scoped_ptr<NativeHandler>(new TestFeaturesNativeHandler(context)));
1047 1044
1048 int manifest_version = extension ? extension->manifest_version() : 1; 1045 int manifest_version = extension ? extension->manifest_version() : 1;
1049 bool send_request_disabled = 1046 bool send_request_disabled =
1050 (extension && Manifest::IsUnpackedLocation(extension->location()) && 1047 (extension && Manifest::IsUnpackedLocation(extension->location()) &&
1051 BackgroundInfo::HasLazyBackgroundPage(extension)); 1048 BackgroundInfo::HasLazyBackgroundPage(extension));
1052 module_system->RegisterNativeHandler("process", 1049 module_system->RegisterNativeHandler("process",
1053 scoped_ptr<NativeHandler>(new ProcessInfoNativeHandler( 1050 scoped_ptr<NativeHandler>(new ProcessInfoNativeHandler(
1054 this, v8_context, context->GetExtensionID(), 1051 this, context, context->GetExtensionID(),
1055 context->GetContextTypeDescription(), 1052 context->GetContextTypeDescription(),
1056 ChromeRenderProcessObserver::is_incognito_process(), 1053 ChromeRenderProcessObserver::is_incognito_process(),
1057 manifest_version, send_request_disabled))); 1054 manifest_version, send_request_disabled)));
1058 1055
1059 GetOrCreateChrome(v8_context); 1056 GetOrCreateChrome(v8_context);
1060 1057
1061 // Loading JavaScript is expensive, so only run the full API bindings 1058 // Loading JavaScript is expensive, so only run the full API bindings
1062 // generation mechanisms in extension pages (NOT all web pages). 1059 // generation mechanisms in extension pages (NOT all web pages).
1063 switch (context_type) { 1060 switch (context_type) {
1064 case Feature::UNSPECIFIED_CONTEXT: 1061 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()); 1456 std::string error_msg = base::StringPrintf(kMessage, function_name.c_str());
1460 v8::ThrowException( 1457 v8::ThrowException(
1461 v8::Exception::Error(v8::String::New(error_msg.c_str()))); 1458 v8::Exception::Error(v8::String::New(error_msg.c_str())));
1462 return false; 1459 return false;
1463 } 1460 }
1464 1461
1465 return true; 1462 return true;
1466 } 1463 }
1467 1464
1468 } // namespace extensions 1465 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698