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

Unified Diff: chrome/test/base/module_system_test.cc

Issue 359413004: Add support for using AMD modules from extensions modules. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cross-context tests Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/base/module_system_test.cc
diff --git a/chrome/test/base/module_system_test.cc b/chrome/test/base/module_system_test.cc
index bfc8308f1576ae9b8592e06962814397009e7e63..d3f0701dcd007ae1b463cc41cf1603156c1de899 100644
--- a/chrome/test/base/module_system_test.cc
+++ b/chrome/test/base/module_system_test.cc
@@ -62,7 +62,8 @@ base::LazyInstance<V8ExtensionConfigurator>::Leaky g_v8_extension_configurator =
} // namespace
// Native JS functions for doing asserts.
-class ModuleSystemTest::AssertNatives : public ObjectBackedNativeHandler {
+class ModuleSystemTestEnvironment::AssertNatives
+ : public ObjectBackedNativeHandler {
public:
explicit AssertNatives(extensions::ChromeV8Context* context)
: ObjectBackedNativeHandler(context),
@@ -95,7 +96,8 @@ class ModuleSystemTest::AssertNatives : public ObjectBackedNativeHandler {
};
// Source map that operates on std::strings.
-class ModuleSystemTest::StringSourceMap : public ModuleSystem::SourceMap {
+class ModuleSystemTestEnvironment::StringSourceMap
+ : public extensions::ModuleSystem::SourceMap {
public:
StringSourceMap() {}
virtual ~StringSourceMap() {}
@@ -120,19 +122,19 @@ class ModuleSystemTest::StringSourceMap : public ModuleSystem::SourceMap {
std::map<std::string, std::string> source_map_;
};
-ModuleSystemTest::ModuleSystemTest()
- : isolate_(v8::Isolate::GetCurrent()),
- handle_scope_(isolate_),
- context_(
- new extensions::ChromeV8Context(
- v8::Context::New(
- isolate_,
- g_v8_extension_configurator.Get().GetConfiguration()),
- NULL, // WebFrame
- NULL, // Extension
- extensions::Feature::UNSPECIFIED_CONTEXT)),
- source_map_(new StringSourceMap()),
- should_assertions_be_made_(true) {
+ModuleSystemTestEnvironment::ModuleSystemTestEnvironment(
+ gin::IsolateHolder* isolate_holder)
+ : context_holder_(new gin::ContextHolder(isolate_holder->isolate())),
+ handle_scope_(isolate_holder->isolate()),
+ source_map_(new StringSourceMap()) {
+ context_holder_->SetContext(
+ v8::Context::New(isolate_holder->isolate(),
+ g_v8_extension_configurator.Get().GetConfiguration()));
+ context_.reset(new extensions::ChromeV8Context(
+ context_holder_->context(),
+ NULL, // WebFrame
+ NULL, // Extension
+ extensions::Feature::UNSPECIFIED_CONTEXT));
context_->v8_context()->Enter();
assert_natives_ = new AssertNatives(context_.get());
@@ -152,30 +154,33 @@ ModuleSystemTest::ModuleSystemTest()
scoped_ptr<ModuleSystem::ExceptionHandler>(new FailsOnException));
}
-ModuleSystemTest::~ModuleSystemTest() {
- context_->v8_context()->Exit();
+ModuleSystemTestEnvironment::~ModuleSystemTestEnvironment() {
+ if (context_)
+ context_->v8_context()->Exit();
}
-void ModuleSystemTest::RegisterModule(const std::string& name,
- const std::string& code) {
+void ModuleSystemTestEnvironment::RegisterModule(const std::string& name,
+ const std::string& code) {
source_map_->RegisterModule(name, code);
}
-void ModuleSystemTest::RegisterModule(const std::string& name,
- int resource_id) {
+void ModuleSystemTestEnvironment::RegisterModule(const std::string& name,
+ int resource_id) {
const std::string& code = ResourceBundle::GetSharedInstance().
GetRawDataResource(resource_id).as_string();
source_map_->RegisterModule(name, code);
}
-void ModuleSystemTest::OverrideNativeHandler(const std::string& name,
- const std::string& code) {
+void ModuleSystemTestEnvironment::OverrideNativeHandler(
+ const std::string& name,
+ const std::string& code) {
RegisterModule(name, code);
context_->module_system()->OverrideNativeHandlerForTest(name);
}
-void ModuleSystemTest::RegisterTestFile(const std::string& module_name,
- const std::string& file_name) {
+void ModuleSystemTestEnvironment::RegisterTestFile(
+ const std::string& module_name,
+ const std::string& file_name) {
base::FilePath test_js_file_path;
ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_js_file_path));
test_js_file_path = test_js_file_path.AppendASCII("extensions")
@@ -185,18 +190,17 @@ void ModuleSystemTest::RegisterTestFile(const std::string& module_name,
source_map_->RegisterModule(module_name, test_js);
}
-void ModuleSystemTest::TearDown() {
- // All tests must assert at least once unless otherwise specified.
- EXPECT_EQ(should_assertions_be_made_,
- assert_natives_->assertion_made());
- EXPECT_FALSE(assert_natives_->failed());
+void ModuleSystemTestEnvironment::DeleteContextHolder() {
+ context_holder_.reset();
}
-void ModuleSystemTest::ExpectNoAssertionsMade() {
- should_assertions_be_made_ = false;
+void ModuleSystemTestEnvironment::DeleteModuleSystem() {
+ context_->v8_context()->Exit();
+ context_.reset();
}
-v8::Handle<v8::Object> ModuleSystemTest::CreateGlobal(const std::string& name) {
+v8::Handle<v8::Object> ModuleSystemTestEnvironment::CreateGlobal(
+ const std::string& name) {
v8::Isolate* isolate = v8::Isolate::GetCurrent();
v8::EscapableHandleScope handle_scope(isolate);
v8::Local<v8::Object> object = v8::Object::New(isolate);
@@ -204,3 +208,27 @@ v8::Handle<v8::Object> ModuleSystemTest::CreateGlobal(const std::string& name) {
v8::String::NewFromUtf8(isolate, name.c_str()), object);
return handle_scope.Escape(object);
}
+
+ModuleSystemTest::ModuleSystemTest()
+ : isolate_holder_(v8::Isolate::GetCurrent(), NULL),
+ env_(&isolate_holder_),
+ should_assertions_be_made_(true) {
+}
+
+ModuleSystemTest::~ModuleSystemTest() {
+}
+
+void ModuleSystemTest::TearDown() {
+ // All tests must assert at least once unless otherwise specified.
+ EXPECT_EQ(should_assertions_be_made_,
+ env_.assert_natives()->assertion_made());
+ EXPECT_FALSE(env_.assert_natives()->failed());
+}
+
+void ModuleSystemTest::ExpectNoAssertionsMade() {
+ should_assertions_be_made_ = false;
+}
+
+void ModuleSystemTest::RunResolvedPromises() {
+ isolate_holder_.isolate()->RunMicrotasks();
+}

Powered by Google App Engine
This is Rietveld 408576698