// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef EXTENSIONS_RENDERER_MODULE_SYSTEM_H_ #define EXTENSIONS_RENDERER_MODULE_SYSTEM_H_ #include <map> #include <memory> #include <set> #include <string> #include <utility> #include <vector> #include "base/compiler_specific.h" #include "base/memory/raw_ptr.h" #include "extensions/renderer/native_handler.h" #include "extensions/renderer/object_backed_native_handler.h" #include "third_party/blink/public/web/web_script_execution_callback.h" #include "v8/include/v8-forward.h" #include "v8/include/v8-object.h" #include "v8/include/v8-persistent-handle.h" namespace extensions { class ScriptContext; class SourceMap; // A module system for JS similar to node.js' require() function. // Each module has three variables in the global scope: // - exports, an object returned to dependencies who require() this // module. // - require, a function that takes a module name as an argument and returns // that module's exports object. // - requireNative, a function that takes the name of a registered // NativeHandler and returns an object that contains the functions the // NativeHandler defines. // // Each module in a ModuleSystem is executed at most once and its exports // object cached. // // Note that a ModuleSystem must be used only in conjunction with a single // v8::Context. // TODO(koz): Rename this to JavaScriptModuleSystem. class ModuleSystem : public ObjectBackedNativeHandler { … }; } // namespace extensions #endif // EXTENSIONS_RENDERER_MODULE_SYSTEM_H_