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

Unified Diff: chrome/renderer/extensions/module_system_unittest.cc

Issue 375243002: Move ModuleSystemTest and the tests that use it into extensions/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: namespace extensions 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/renderer/extensions/module_system_unittest.cc
diff --git a/chrome/renderer/extensions/module_system_unittest.cc b/chrome/renderer/extensions/module_system_unittest.cc
deleted file mode 100644
index f99cb622256b6450e7dee2883764ae73b2595d7a..0000000000000000000000000000000000000000
--- a/chrome/renderer/extensions/module_system_unittest.cc
+++ /dev/null
@@ -1,489 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/memory/scoped_ptr.h"
-#include "chrome/test/base/module_system_test.h"
-#include "extensions/renderer/module_system.h"
-#include "gin/modules/module_registry.h"
-
-// TODO(cduvall/kalman): Put this file in extensions namespace.
-using extensions::ModuleSystem;
-using extensions::NativeHandler;
-using extensions::ObjectBackedNativeHandler;
-
-class CounterNatives : public ObjectBackedNativeHandler {
- public:
- explicit CounterNatives(extensions::ChromeV8Context* context)
- : ObjectBackedNativeHandler(context), counter_(0) {
- RouteFunction("Get", base::Bind(&CounterNatives::Get,
- base::Unretained(this)));
- RouteFunction("Increment", base::Bind(&CounterNatives::Increment,
- base::Unretained(this)));
- }
-
- void Get(const v8::FunctionCallbackInfo<v8::Value>& args) {
- args.GetReturnValue().Set(static_cast<int32_t>(counter_));
- }
-
- void Increment(const v8::FunctionCallbackInfo<v8::Value>& args) {
- counter_++;
- }
-
- private:
- int counter_;
-};
-
-class TestExceptionHandler : public ModuleSystem::ExceptionHandler {
- public:
- TestExceptionHandler()
- : handled_exception_(false) {
- }
-
- virtual void HandleUncaughtException(const v8::TryCatch& try_catch) OVERRIDE {
- handled_exception_ = true;
- }
-
- bool handled_exception() const { return handled_exception_; }
-
- private:
- bool handled_exception_;
-};
-
-TEST_F(ModuleSystemTest, TestExceptionHandling) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- TestExceptionHandler* handler = new TestExceptionHandler;
- scoped_ptr<ModuleSystem::ExceptionHandler> scoped_handler(handler);
- ASSERT_FALSE(handler->handled_exception());
- env()->module_system()->SetExceptionHandlerForTest(scoped_handler.Pass());
-
- env()->RegisterModule("test", "throw 'hi';");
- env()->module_system()->Require("test");
- ASSERT_TRUE(handler->handled_exception());
-
- ExpectNoAssertionsMade();
-}
-
-TEST_F(ModuleSystemTest, TestRequire) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("add",
- "exports.Add = function(x, y) { return x + y; };");
- env()->RegisterModule("test",
- "var Add = require('add').Add;"
- "requireNative('assert').AssertTrue(Add(3, 5) == 8);");
- env()->module_system()->Require("test");
-}
-
-TEST_F(ModuleSystemTest, TestNestedRequire) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("add",
- "exports.Add = function(x, y) { return x + y; };");
- env()->RegisterModule("double",
- "var Add = require('add').Add;"
- "exports.Double = function(x) { return Add(x, x); };");
- env()->RegisterModule("test",
- "var Double = require('double').Double;"
- "requireNative('assert').AssertTrue(Double(3) == 6);");
- env()->module_system()->Require("test");
-}
-
-TEST_F(ModuleSystemTest, TestModuleInsulation) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("x",
- "var x = 10;"
- "exports.X = function() { return x; };");
- env()->RegisterModule("y",
- "var x = 15;"
- "require('x');"
- "exports.Y = function() { return x; };");
- env()->RegisterModule("test",
- "var Y = require('y').Y;"
- "var X = require('x').X;"
- "var assert = requireNative('assert');"
- "assert.AssertTrue(!this.hasOwnProperty('x'));"
- "assert.AssertTrue(Y() == 15);"
- "assert.AssertTrue(X() == 10);");
- env()->module_system()->Require("test");
-}
-
-TEST_F(ModuleSystemTest, TestNativesAreDisabledOutsideANativesEnabledScope) {
- env()->RegisterModule("test",
- "var assert;"
- "try {"
- " assert = requireNative('assert');"
- "} catch (e) {"
- " var caught = true;"
- "}"
- "if (assert) {"
- " assert.AssertTrue(true);"
- "}");
- env()->module_system()->Require("test");
- ExpectNoAssertionsMade();
-}
-
-TEST_F(ModuleSystemTest, TestNativesAreEnabledWithinANativesEnabledScope) {
- env()->RegisterModule("test",
- "var assert = requireNative('assert');"
- "assert.AssertTrue(true);");
-
- {
- ModuleSystem::NativesEnabledScope natives_enabled(env()->module_system());
- {
- ModuleSystem::NativesEnabledScope natives_enabled_inner(
- env()->module_system());
- }
- env()->module_system()->Require("test");
- }
-}
-
-TEST_F(ModuleSystemTest, TestLazyField) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("lazy", "exports.x = 5;");
-
- v8::Handle<v8::Object> object = env()->CreateGlobal("object");
-
- env()->module_system()->SetLazyField(object, "blah", "lazy", "x");
-
- env()->RegisterModule("test",
- "var assert = requireNative('assert');"
- "assert.AssertTrue(object.blah == 5);");
- env()->module_system()->Require("test");
-}
-
-TEST_F(ModuleSystemTest, TestLazyFieldYieldingObject) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule(
- "lazy",
- "var object = {};"
- "object.__defineGetter__('z', function() { return 1; });"
- "object.x = 5;"
- "object.y = function() { return 10; };"
- "exports.object = object;");
-
- v8::Handle<v8::Object> object = env()->CreateGlobal("object");
-
- env()->module_system()->SetLazyField(object, "thing", "lazy", "object");
-
- env()->RegisterModule("test",
- "var assert = requireNative('assert');"
- "assert.AssertTrue(object.thing.x == 5);"
- "assert.AssertTrue(object.thing.y() == 10);"
- "assert.AssertTrue(object.thing.z == 1);");
- env()->module_system()->Require("test");
-}
-
-TEST_F(ModuleSystemTest, TestLazyFieldIsOnlyEvaledOnce) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->module_system()->RegisterNativeHandler(
- "counter",
- scoped_ptr<NativeHandler>(new CounterNatives(env()->context())));
- env()->RegisterModule("lazy",
- "requireNative('counter').Increment();"
- "exports.x = 5;");
-
- v8::Handle<v8::Object> object = env()->CreateGlobal("object");
-
- env()->module_system()->SetLazyField(object, "x", "lazy", "x");
-
- env()->RegisterModule("test",
- "var assert = requireNative('assert');"
- "var counter = requireNative('counter');"
- "assert.AssertTrue(counter.Get() == 0);"
- "object.x;"
- "assert.AssertTrue(counter.Get() == 1);"
- "object.x;"
- "assert.AssertTrue(counter.Get() == 1);");
- env()->module_system()->Require("test");
-}
-
-TEST_F(ModuleSystemTest, TestRequireNativesAfterLazyEvaluation) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("lazy", "exports.x = 5;");
- v8::Handle<v8::Object> object = env()->CreateGlobal("object");
-
- env()->module_system()->SetLazyField(object, "x", "lazy", "x");
- env()->RegisterModule("test",
- "object.x;"
- "requireNative('assert').AssertTrue(true);");
- env()->module_system()->Require("test");
-}
-
-TEST_F(ModuleSystemTest, TestTransitiveRequire) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("dependency", "exports.x = 5;");
- env()->RegisterModule("lazy", "exports.output = require('dependency');");
-
- v8::Handle<v8::Object> object = env()->CreateGlobal("object");
-
- env()->module_system()->SetLazyField(object, "thing", "lazy", "output");
-
- env()->RegisterModule("test",
- "var assert = requireNative('assert');"
- "assert.AssertTrue(object.thing.x == 5);");
- env()->module_system()->Require("test");
-}
-
-TEST_F(ModuleSystemTest, TestModulesOnlyGetEvaledOnce) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->module_system()->RegisterNativeHandler(
- "counter",
- scoped_ptr<NativeHandler>(new CounterNatives(env()->context())));
-
- env()->RegisterModule("incrementsWhenEvaled",
- "requireNative('counter').Increment();");
- env()->RegisterModule("test",
- "var assert = requireNative('assert');"
- "var counter = requireNative('counter');"
- "assert.AssertTrue(counter.Get() == 0);"
- "require('incrementsWhenEvaled');"
- "assert.AssertTrue(counter.Get() == 1);"
- "require('incrementsWhenEvaled');"
- "assert.AssertTrue(counter.Get() == 1);");
-
- env()->module_system()->Require("test");
-}
-
-TEST_F(ModuleSystemTest, TestOverrideNativeHandler) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->OverrideNativeHandler("assert", "exports.AssertTrue = function() {};");
- env()->RegisterModule("test", "requireNative('assert').AssertTrue(true);");
- ExpectNoAssertionsMade();
- env()->module_system()->Require("test");
-}
-
-TEST_F(ModuleSystemTest, TestOverrideNonExistentNativeHandler) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->OverrideNativeHandler("thing", "exports.x = 5;");
- env()->RegisterModule("test",
- "var assert = requireNative('assert');"
- "assert.AssertTrue(requireNative('thing').x == 5);");
- env()->module_system()->Require("test");
-}
-
-TEST_F(ModuleSystemTest, TestRequireAsync) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("add",
- "define('add', [], function() {"
- " return { Add: function(x, y) { return x + y; } };"
- "});");
- env()->RegisterModule("math",
- "define('math', ['add'], function(add) {"
- " return { Add: add.Add };"
- "});");
- env()->RegisterModule(
- "test",
- "requireAsync('math').then(function(math) {"
- " requireNative('assert').AssertTrue(math.Add(3, 5) == 8);"
- "});");
- env()->module_system()->Require("test");
- RunResolvedPromises();
-}
-
-TEST_F(ModuleSystemTest, TestRequireAsyncInParallel) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("add",
- "define('add', [], function() {"
- " return { Add: function(x, y) { return x + y; } };"
- "});");
- env()->RegisterModule(
- "subtract",
- "define('subtract', [], function() {"
- " return { Subtract: function(x, y) { return x - y; } };"
- "});");
- env()->RegisterModule(
- "math",
- "exports.AddAndSubtract = function(x, y, z) {"
- " return Promise.all([requireAsync('add'),"
- " requireAsync('subtract')"
- " ]).then(function(modules) {"
- " return modules[1].Subtract(modules[0].Add(x, y), z);"
- " });"
- "};");
- env()->RegisterModule("test",
- "var AddAndSubtract = require('math').AddAndSubtract;"
- "AddAndSubtract(3, 5, 2).then(function(result) {"
- " requireNative('assert').AssertTrue(result == 6);"
- "});");
- env()->module_system()->Require("test");
- RunResolvedPromises();
-}
-
-TEST_F(ModuleSystemTest, TestNestedRequireAsyncs) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("first",
- "define('first', [], function() {"
- " return { next: 'second' };"
- "});");
- env()->RegisterModule("second",
- "define('second', [], function() {"
- " return { next: '' };"
- "});");
- env()->RegisterModule(
- "test",
- "requireAsync('first').then(function(module) {"
- " return requireAsync(module.next)"
- "}).then(function(module) {"
- " requireNative('assert').AssertTrue(module.next === '');"
- "});");
- env()->module_system()->Require("test");
- RunResolvedPromises();
-}
-
-TEST_F(ModuleSystemTest, TestRequireFromAMDModule) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("add",
- "exports.Add = function(x, y) { return x + y; };");
- env()->RegisterModule("math",
- "define('math', [], function() {"
- " var add = require('add');"
- " return { Add: add.Add };"
- "});");
- env()->RegisterModule(
- "test",
- "requireAsync('math').then(function(math) {"
- " requireNative('assert').AssertTrue(math.Add(3, 5) == 8);"
- "});");
- env()->module_system()->Require("test");
- RunResolvedPromises();
-}
-
-TEST_F(ModuleSystemTest, TestRequireAsyncFromAMDModule) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("add",
- "define('add', [], function() {"
- " return { Add: function(x, y) { return x + y; } };"
- "});");
- env()->RegisterModule("math",
- "define('math', [], function() {"
- " function Add(x, y) {"
- " return requireAsync('add').then(function(add) {"
- " return add.Add(x, y);"
- " });"
- " }"
- " return { Add: Add };"
- "});");
- env()->RegisterModule("test",
- "requireAsync('math').then(function(math) {"
- " return math.Add(3, 6);"
- "}).then(function(result) {"
- " requireNative('assert').AssertTrue(result == 9);"
- "});");
- env()->module_system()->Require("test");
- RunResolvedPromises();
-}
-
-TEST_F(ModuleSystemTest, TestRequireAsyncFromAnotherContext) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule(
- "test",
- "requireAsync('natives').then(function(natives) {"
- " natives.requireAsync('ping').then(function(ping) {"
- " return ping();"
- " }).then(function(result) {"
- " requireNative('assert').AssertTrue(result == 'pong');"
- " });"
- "});");
- scoped_ptr<ModuleSystemTestEnvironment> other_env = CreateEnvironment();
- other_env->RegisterModule("ping",
- "define('ping', ['natives'], function(natives) {"
- " return function() {"
- " return 'pong';"
- " }"
- "});");
- gin::ModuleRegistry::From(env()->context()->v8_context())->AddBuiltinModule(
- env()->isolate(), "natives", other_env->module_system()->NewInstance());
- gin::ModuleRegistry::From(other_env->context()->v8_context())
- ->AddBuiltinModule(
- env()->isolate(), "natives", env()->module_system()->NewInstance());
- env()->module_system()->Require("test");
- RunResolvedPromises();
-}
-
-TEST_F(ModuleSystemTest, TestRequireAsyncBetweenContexts) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("pong",
- "define('pong', [], function() {"
- " return function() { return 'done'; };"
- "});");
- env()->RegisterModule(
- "test",
- "requireAsync('natives').then(function(natives) {"
- " natives.requireAsync('ping').then(function(ping) {"
- " return ping();"
- " }).then(function(pong) {"
- " return pong();"
- " }).then(function(result) {"
- " requireNative('assert').AssertTrue(result == 'done');"
- " });"
- "});");
- scoped_ptr<ModuleSystemTestEnvironment> other_env = CreateEnvironment();
- other_env->RegisterModule("ping",
- "define('ping', ['natives'], function(natives) {"
- " return function() {"
- " return natives.requireAsync('pong');"
- " }"
- "});");
- gin::ModuleRegistry::From(env()->context()->v8_context())->AddBuiltinModule(
- env()->isolate(), "natives", other_env->module_system()->NewInstance());
- gin::ModuleRegistry::From(other_env->context()->v8_context())
- ->AddBuiltinModule(
- env()->isolate(), "natives", env()->module_system()->NewInstance());
- env()->module_system()->Require("test");
- RunResolvedPromises();
-}
-
-TEST_F(ModuleSystemTest, TestRequireAsyncFromContextWithNoModuleRegistry) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("test",
- "requireAsync('natives').then(function(natives) {"
- " var AssertTrue = requireNative('assert').AssertTrue;"
- " natives.requireAsync('foo').then(function() {"
- " AssertTrue(false);"
- " }).catch(function(error) {"
- " AssertTrue(error.message == "
- " 'Extension view no longer exists');"
- " });"
- "});");
- scoped_ptr<ModuleSystemTestEnvironment> other_env = CreateEnvironment();
- gin::ModuleRegistry::From(env()->context()->v8_context())->AddBuiltinModule(
- env()->isolate(), "natives", other_env->module_system()->NewInstance());
- other_env->ShutdownGin();
- env()->module_system()->Require("test");
- RunResolvedPromises();
-}
-
-TEST_F(ModuleSystemTest, TestRequireAsyncFromContextWithNoModuleSystem) {
- ModuleSystem::NativesEnabledScope natives_enabled_scope(
- env()->module_system());
- env()->RegisterModule("test",
- "requireAsync('natives').then(function(natives) {"
- " requireNative('assert').AssertTrue("
- " natives.requireAsync('foo') === undefined);"
- "});");
- scoped_ptr<ModuleSystemTestEnvironment> other_env = CreateEnvironment();
- gin::ModuleRegistry::From(env()->context()->v8_context())->AddBuiltinModule(
- env()->isolate(), "natives", other_env->module_system()->NewInstance());
- other_env->ShutdownModuleSystem();
- env()->module_system()->Require("test");
- RunResolvedPromises();
-}

Powered by Google App Engine
This is Rietveld 408576698