OLD | NEW |
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 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 module_system->SetLazyField(chrome, "webstore", "webstore", "chromeWebstore"); | 372 module_system->SetLazyField(chrome, "webstore", "webstore", "chromeWebstore"); |
373 } | 373 } |
374 | 374 |
375 // Calls a method |method_name| in a module |module_name| belonging to the | 375 // Calls a method |method_name| in a module |module_name| belonging to the |
376 // module system from |context|. Intended as a callback target from | 376 // module system from |context|. Intended as a callback target from |
377 // ChromeV8ContextSet::ForEach. | 377 // ChromeV8ContextSet::ForEach. |
378 void CallModuleMethod(const std::string& module_name, | 378 void CallModuleMethod(const std::string& module_name, |
379 const std::string& method_name, | 379 const std::string& method_name, |
380 const base::ListValue* args, | 380 const base::ListValue* args, |
381 ChromeV8Context* context) { | 381 ChromeV8Context* context) { |
382 v8::HandleScope handle_scope; | 382 v8::HandleScope handle_scope(context->isolate()); |
383 v8::Context::Scope context_scope(context->v8_context()); | 383 v8::Context::Scope context_scope(context->v8_context()); |
384 | 384 |
385 scoped_ptr<content::V8ValueConverter> converter( | 385 scoped_ptr<content::V8ValueConverter> converter( |
386 content::V8ValueConverter::create()); | 386 content::V8ValueConverter::create()); |
387 | 387 |
388 std::vector<v8::Handle<v8::Value> > arguments; | 388 std::vector<v8::Handle<v8::Value> > arguments; |
389 for (base::ListValue::const_iterator it = args->begin(); it != args->end(); | 389 for (base::ListValue::const_iterator it = args->begin(); it != args->end(); |
390 ++it) { | 390 ++it) { |
391 arguments.push_back(converter->ToV8Value(*it, context->v8_context())); | 391 arguments.push_back(converter->ToV8Value(*it, context->v8_context())); |
392 } | 392 } |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
639 CHECK(value->IsObject()); | 639 CHECK(value->IsObject()); |
640 return v8::Handle<v8::Object>::Cast(value); | 640 return v8::Handle<v8::Object>::Cast(value); |
641 } | 641 } |
642 | 642 |
643 v8::Handle<v8::Object> new_object = v8::Object::New(); | 643 v8::Handle<v8::Object> new_object = v8::Object::New(); |
644 object->Set(key, new_object); | 644 object->Set(key, new_object); |
645 return new_object; | 645 return new_object; |
646 } | 646 } |
647 | 647 |
648 void Dispatcher::AddOrRemoveBindingsForContext(ChromeV8Context* context) { | 648 void Dispatcher::AddOrRemoveBindingsForContext(ChromeV8Context* context) { |
649 v8::HandleScope handle_scope; | 649 v8::HandleScope handle_scope(context->isolate()); |
650 v8::Context::Scope context_scope(context->v8_context()); | 650 v8::Context::Scope context_scope(context->v8_context()); |
651 | 651 |
652 // TODO(kalman): Make the bindings registration have zero overhead then run | 652 // TODO(kalman): Make the bindings registration have zero overhead then run |
653 // the same code regardless of context type. | 653 // the same code regardless of context type. |
654 switch (context->context_type()) { | 654 switch (context->context_type()) { |
655 case Feature::UNSPECIFIED_CONTEXT: | 655 case Feature::UNSPECIFIED_CONTEXT: |
656 case Feature::WEB_PAGE_CONTEXT: { | 656 case Feature::WEB_PAGE_CONTEXT: { |
657 // Web page context; it's too expensive to run the full bindings code. | 657 // Web page context; it's too expensive to run the full bindings code. |
658 // Hard-code that the app and webstore APIs are available... | 658 // Hard-code that the app and webstore APIs are available... |
659 RegisterBinding("app", context); | 659 RegisterBinding("app", context); |
(...skipping 902 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1562 RenderView* background_view = | 1562 RenderView* background_view = |
1563 ExtensionHelper::GetBackgroundPage(extension_id); | 1563 ExtensionHelper::GetBackgroundPage(extension_id); |
1564 if (background_view) { | 1564 if (background_view) { |
1565 background_view->Send(new ExtensionHostMsg_EventAck( | 1565 background_view->Send(new ExtensionHostMsg_EventAck( |
1566 background_view->GetRoutingID())); | 1566 background_view->GetRoutingID())); |
1567 } | 1567 } |
1568 } | 1568 } |
1569 } | 1569 } |
1570 | 1570 |
1571 } // namespace extensions | 1571 } // namespace extensions |
OLD | NEW |