Chromium Code Reviews| Index: gin/modules/module_runner_delegate.cc |
| diff --git a/gin/modules/module_runner_delegate.cc b/gin/modules/module_runner_delegate.cc |
| index 16b5afd0303ba8a8819cbe54aef25ec8c4c24a84..fc6d390c78aaf71a6a0217fe11e15bfeccdb4821 100644 |
| --- a/gin/modules/module_runner_delegate.cc |
| +++ b/gin/modules/module_runner_delegate.cc |
| @@ -4,6 +4,8 @@ |
| #include "gin/modules/module_runner_delegate.h" |
| +#include "base/bind.h" |
| +#include "base/bind_helpers.h" |
| #include "gin/modules/module_registry.h" |
| #include "gin/object_template_builder.h" |
| #include "gin/public/context_holder.h" |
| @@ -18,8 +20,22 @@ ModuleRunnerDelegate::ModuleRunnerDelegate( |
| ModuleRunnerDelegate::~ModuleRunnerDelegate() { |
| } |
| +namespace { |
| + |
| +v8::Local<v8::Value> CallModuleGetter(ModuleGetter getter, |
| + v8::Isolate* isolate) { |
| + return getter(isolate); |
| +} |
| + |
| +} // namespace |
| + |
| void ModuleRunnerDelegate::AddBuiltinModule(const std::string& id, |
| ModuleGetter getter) { |
| + builtin_modules_[id] = base::Bind(CallModuleGetter, base::Unretained(getter)); |
|
Aaron Boodman
2014/09/11 05:24:53
It's not possible to just do:
base::Bind(ModuleGe
hansmuller
2014/09/11 16:44:43
Sorry about that, I didn't need to insert the tram
|
| +} |
| + |
| +void ModuleRunnerDelegate::AddBuiltinModule(const std::string& id, |
| + const ModuleGetterCallback& getter) { |
| builtin_modules_[id] = getter; |
| } |
| @@ -46,9 +62,10 @@ void ModuleRunnerDelegate::DidCreateContext(ShellRunner* runner) { |
| ModuleRegistry* registry = ModuleRegistry::From(context); |
| v8::Isolate* isolate = runner->GetContextHolder()->isolate(); |
| + |
| for (BuiltinModuleMap::const_iterator it = builtin_modules_.begin(); |
| it != builtin_modules_.end(); ++it) { |
| - registry->AddBuiltinModule(isolate, it->first, it->second(isolate)); |
| + registry->AddBuiltinModule(isolate, it->first, it->second.Run(isolate)); |
| } |
| } |