Index: gin/modules/module_runner_delegate.cc |
diff --git a/gin/modules/module_runner_delegate.cc b/gin/modules/module_runner_delegate.cc |
index e029a93fda8c0feed797ffc1124dd1f474e976df..50b9f5e71db7859ae3382f2139eed3a84e691c33 100644 |
--- a/gin/modules/module_runner_delegate.cc |
+++ b/gin/modules/module_runner_delegate.cc |
@@ -15,6 +15,11 @@ ModuleRunnerDelegate::ModuleRunnerDelegate(const base::FilePath& module_base) |
ModuleRunnerDelegate::~ModuleRunnerDelegate() { |
} |
+void ModuleRunnerDelegate::AddBuiltinModule(const std::string& id, |
+ ModuleTemplateGetter templ) { |
+ builtin_modules_[id] = templ; |
+} |
+ |
v8::Handle<v8::ObjectTemplate> ModuleRunnerDelegate::GetGlobalTemplate( |
Runner* runner) { |
v8::Handle<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(); |
@@ -22,6 +27,19 @@ v8::Handle<v8::ObjectTemplate> ModuleRunnerDelegate::GetGlobalTemplate( |
return templ; |
} |
+void ModuleRunnerDelegate::DidCreateContext(Runner* runner) { |
+ RunnerDelegate::DidCreateContext(runner); |
+ |
+ v8::Handle<v8::Context> context = runner->context(); |
+ ModuleRegistry* registry = ModuleRegistry::From(context); |
+ |
+ for (BuiltinModuleMap::const_iterator it = builtin_modules_.begin(); |
+ it != builtin_modules_.end(); ++it) { |
+ registry->AddBuiltinModule(runner->isolate(), it->first, |
+ it->second(runner->isolate())); |
+ } |
+} |
+ |
void ModuleRunnerDelegate::DidRunScript(Runner* runner, |
v8::Handle<v8::Script> script) { |
ModuleRegistry* registry = ModuleRegistry::From(runner->context()); |