module_runner_delegate.h revision 116680a4aac90f2aa7413d9095a592090648e557
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 3// found in the LICENSE file. 4 5#ifndef GIN_MODULES_MODULE_RUNNER_DELEGATE_H_ 6#define GIN_MODULES_MODULE_RUNNER_DELEGATE_H_ 7 8#include <map> 9 10#include "base/compiler_specific.h" 11#include "gin/gin_export.h" 12#include "gin/modules/file_module_provider.h" 13#include "gin/shell_runner.h" 14 15namespace gin { 16 17typedef v8::Local<v8::Value> (*ModuleGetter)(v8::Isolate* isolate); 18 19// Emebedders that use AMD modules will probably want to use a RunnerDelegate 20// that inherits from ModuleRunnerDelegate. ModuleRunnerDelegate lets embedders 21// register built-in modules and routes module requests to FileModuleProvider. 22class GIN_EXPORT ModuleRunnerDelegate : public ShellRunnerDelegate { 23 public: 24 explicit ModuleRunnerDelegate( 25 const std::vector<base::FilePath>& search_paths); 26 virtual ~ModuleRunnerDelegate(); 27 28 void AddBuiltinModule(const std::string& id, ModuleGetter getter); 29 30 protected: 31 void AttemptToLoadMoreModules(Runner* runner); 32 33 private: 34 typedef std::map<std::string, ModuleGetter> BuiltinModuleMap; 35 36 // From ShellRunnerDelegate: 37 virtual v8::Handle<v8::ObjectTemplate> GetGlobalTemplate( 38 ShellRunner* runner, 39 v8::Isolate* isolate) OVERRIDE; 40 virtual void DidCreateContext(ShellRunner* runner) OVERRIDE; 41 virtual void DidRunScript(ShellRunner* runner) OVERRIDE; 42 43 BuiltinModuleMap builtin_modules_; 44 FileModuleProvider module_provider_; 45 46 DISALLOW_COPY_AND_ASSIGN(ModuleRunnerDelegate); 47}; 48 49} // namespace gin 50 51#endif // GIN_MODULES_MODULE_RUNNER_DELEGATE_H_ 52