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

Side by Side Diff: gin/modules/module_runner_delegate.cc

Issue 467263006: JavaScript Content Handler Version 0.0 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changes per review feedback. Created 6 years, 3 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "gin/modules/module_runner_delegate.h" 5 #include "gin/modules/module_runner_delegate.h"
6 6
7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
7 #include "gin/modules/module_registry.h" 9 #include "gin/modules/module_registry.h"
8 #include "gin/object_template_builder.h" 10 #include "gin/object_template_builder.h"
9 #include "gin/public/context_holder.h" 11 #include "gin/public/context_holder.h"
10 12
11 namespace gin { 13 namespace gin {
12 14
13 ModuleRunnerDelegate::ModuleRunnerDelegate( 15 ModuleRunnerDelegate::ModuleRunnerDelegate(
14 const std::vector<base::FilePath>& search_paths) 16 const std::vector<base::FilePath>& search_paths)
15 : module_provider_(search_paths) { 17 : module_provider_(search_paths) {
16 } 18 }
17 19
18 ModuleRunnerDelegate::~ModuleRunnerDelegate() { 20 ModuleRunnerDelegate::~ModuleRunnerDelegate() {
19 } 21 }
20 22
23 namespace {
24
25 v8::Local<v8::Value> CallModuleGetter(ModuleGetter getter,
26 v8::Isolate* isolate) {
27 return getter(isolate);
28 }
29
30 } // namespace
31
21 void ModuleRunnerDelegate::AddBuiltinModule(const std::string& id, 32 void ModuleRunnerDelegate::AddBuiltinModule(const std::string& id,
22 ModuleGetter getter) { 33 ModuleGetter getter) {
34 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
35 }
36
37 void ModuleRunnerDelegate::AddBuiltinModule(const std::string& id,
38 const ModuleGetterCallback& getter) {
23 builtin_modules_[id] = getter; 39 builtin_modules_[id] = getter;
24 } 40 }
25 41
26 void ModuleRunnerDelegate::AttemptToLoadMoreModules(Runner* runner) { 42 void ModuleRunnerDelegate::AttemptToLoadMoreModules(Runner* runner) {
27 ModuleRegistry* registry = ModuleRegistry::From( 43 ModuleRegistry* registry = ModuleRegistry::From(
28 runner->GetContextHolder()->context()); 44 runner->GetContextHolder()->context());
29 registry->AttemptToLoadMoreModules(runner->GetContextHolder()->isolate()); 45 registry->AttemptToLoadMoreModules(runner->GetContextHolder()->isolate());
30 module_provider_.AttempToLoadModules( 46 module_provider_.AttempToLoadModules(
31 runner, registry->unsatisfied_dependencies()); 47 runner, registry->unsatisfied_dependencies());
32 } 48 }
33 49
34 v8::Handle<v8::ObjectTemplate> ModuleRunnerDelegate::GetGlobalTemplate( 50 v8::Handle<v8::ObjectTemplate> ModuleRunnerDelegate::GetGlobalTemplate(
35 ShellRunner* runner, 51 ShellRunner* runner,
36 v8::Isolate* isolate) { 52 v8::Isolate* isolate) {
37 v8::Handle<v8::ObjectTemplate> templ = ObjectTemplateBuilder(isolate).Build(); 53 v8::Handle<v8::ObjectTemplate> templ = ObjectTemplateBuilder(isolate).Build();
38 ModuleRegistry::RegisterGlobals(isolate, templ); 54 ModuleRegistry::RegisterGlobals(isolate, templ);
39 return templ; 55 return templ;
40 } 56 }
41 57
42 void ModuleRunnerDelegate::DidCreateContext(ShellRunner* runner) { 58 void ModuleRunnerDelegate::DidCreateContext(ShellRunner* runner) {
43 ShellRunnerDelegate::DidCreateContext(runner); 59 ShellRunnerDelegate::DidCreateContext(runner);
44 60
45 v8::Handle<v8::Context> context = runner->GetContextHolder()->context(); 61 v8::Handle<v8::Context> context = runner->GetContextHolder()->context();
46 ModuleRegistry* registry = ModuleRegistry::From(context); 62 ModuleRegistry* registry = ModuleRegistry::From(context);
47 63
48 v8::Isolate* isolate = runner->GetContextHolder()->isolate(); 64 v8::Isolate* isolate = runner->GetContextHolder()->isolate();
65
49 for (BuiltinModuleMap::const_iterator it = builtin_modules_.begin(); 66 for (BuiltinModuleMap::const_iterator it = builtin_modules_.begin();
50 it != builtin_modules_.end(); ++it) { 67 it != builtin_modules_.end(); ++it) {
51 registry->AddBuiltinModule(isolate, it->first, it->second(isolate)); 68 registry->AddBuiltinModule(isolate, it->first, it->second.Run(isolate));
52 } 69 }
53 } 70 }
54 71
55 void ModuleRunnerDelegate::DidRunScript(ShellRunner* runner) { 72 void ModuleRunnerDelegate::DidRunScript(ShellRunner* runner) {
56 AttemptToLoadMoreModules(runner); 73 AttemptToLoadMoreModules(runner);
57 } 74 }
58 75
59 } // namespace gin 76 } // namespace gin
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698