| Index: chrome/test/base/module_system_test.h
|
| diff --git a/chrome/test/base/module_system_test.h b/chrome/test/base/module_system_test.h
|
| index 8402d57b39e2e74921ffd3a11797cca91045dd74..e8dd221995950d4bf1d079e09fc26e9463a91fd9 100644
|
| --- a/chrome/test/base/module_system_test.h
|
| +++ b/chrome/test/base/module_system_test.h
|
| @@ -8,9 +8,63 @@
|
| #include "chrome/renderer/extensions/chrome_v8_context.h"
|
| #include "extensions/renderer/module_system.h"
|
| #include "extensions/renderer/scoped_persistent.h"
|
| +#include "gin/public/context_holder.h"
|
| +#include "gin/public/isolate_holder.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "v8/include/v8.h"
|
|
|
| +class ModuleSystemTestEnvironment {
|
| + public:
|
| + class AssertNatives;
|
| + class StringSourceMap;
|
| +
|
| + explicit ModuleSystemTestEnvironment(gin::IsolateHolder* isolate_holder);
|
| + ~ModuleSystemTestEnvironment();
|
| +
|
| + // Register a named JS module in the module system.
|
| + void RegisterModule(const std::string& name, const std::string& code);
|
| +
|
| + // Register a named JS module with source retrieved from a ResourceBundle.
|
| + void RegisterModule(const std::string& name, int resource_id);
|
| +
|
| + // Register a named JS module in the module system and tell the module system
|
| + // to use it to handle any requireNative() calls for native modules with that
|
| + // name.
|
| + void OverrideNativeHandler(const std::string& name, const std::string& code);
|
| +
|
| + // Registers |file_name| from chrome/test/data/extensions as a module name
|
| + // |module_name|.
|
| + void RegisterTestFile(const std::string& module_name,
|
| + const std::string& file_name);
|
| +
|
| + // Create an empty object in the global scope with name |name|.
|
| + v8::Handle<v8::Object> CreateGlobal(const std::string& name);
|
| +
|
| + void ShutdownGin();
|
| +
|
| + void ShutdownModuleSystem();
|
| +
|
| + extensions::ModuleSystem* module_system() {
|
| + return context_->module_system();
|
| + }
|
| +
|
| + extensions::ChromeV8Context* context() { return context_.get(); }
|
| +
|
| + v8::Isolate* isolate() { return isolate_holder_->isolate(); }
|
| +
|
| + AssertNatives* assert_natives() { return assert_natives_; }
|
| +
|
| + private:
|
| + gin::IsolateHolder* isolate_holder_;
|
| + scoped_ptr<gin::ContextHolder> context_holder_;
|
| + v8::HandleScope handle_scope_;
|
| + scoped_ptr<extensions::ChromeV8Context> context_;
|
| + AssertNatives* assert_natives_;
|
| + scoped_ptr<StringSourceMap> source_map_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ModuleSystemTestEnvironment);
|
| +};
|
| +
|
| // Test fixture for testing JS that makes use of the module system.
|
| //
|
| // Typically tests will look like:
|
| @@ -33,36 +87,21 @@ class ModuleSystemTest : public testing::Test {
|
| virtual void TearDown() OVERRIDE;
|
|
|
| protected:
|
| - // Register a named JS module in the module system.
|
| - void RegisterModule(const std::string& name, const std::string& code);
|
| -
|
| - // Register a named JS module with source retrieved from a ResourceBundle.
|
| - void RegisterModule(const std::string& name, int resource_id);
|
| -
|
| - // Register a named JS module in the module system and tell the module system
|
| - // to use it to handle any requireNative() calls for native modules with that
|
| - // name.
|
| - void OverrideNativeHandler(const std::string& name, const std::string& code);
|
| + ModuleSystemTestEnvironment* env() { return env_.get(); }
|
|
|
| - // Registers |file_name| from chrome/test/data/extensions as a module name
|
| - // |module_name|.
|
| - void RegisterTestFile(const std::string& module_name,
|
| - const std::string& file_name);
|
| + scoped_ptr<ModuleSystemTestEnvironment> CreateEnvironment();
|
|
|
| // Make the test fail if any asserts are called. By default a test will fail
|
| // if no asserts are called.
|
| void ExpectNoAssertionsMade();
|
|
|
| - // Create an empty object in the global scope with name |name|.
|
| - v8::Handle<v8::Object> CreateGlobal(const std::string& name);
|
| + // Runs promises that have been resolved. Resolved promises will not run
|
| + // until this is called.
|
| + void RunResolvedPromises();
|
|
|
| - v8::Isolate* isolate_;
|
| - v8::HandleScope handle_scope_;
|
| - scoped_ptr<extensions::ChromeV8Context> context_;
|
| - class AssertNatives;
|
| - AssertNatives* assert_natives_;
|
| - class StringSourceMap;
|
| - scoped_ptr<StringSourceMap> source_map_;
|
| + private:
|
| + gin::IsolateHolder isolate_holder_;
|
| + scoped_ptr<ModuleSystemTestEnvironment> env_;
|
| bool should_assertions_be_made_;
|
|
|
| private:
|
|
|