| Index: chrome/renderer/module_system_unittest.cc
|
| ===================================================================
|
| --- chrome/renderer/module_system_unittest.cc (revision 125813)
|
| +++ chrome/renderer/module_system_unittest.cc (working copy)
|
| @@ -4,14 +4,12 @@
|
|
|
| #include "base/callback.h"
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "base/string_piece.h"
|
| #include "chrome/renderer/module_system.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| #include <map>
|
| #include <string>
|
|
|
| -// Native JS functions for doing asserts.
|
| class AssertNatives : public NativeHandler {
|
| public:
|
| AssertNatives()
|
| @@ -35,69 +33,22 @@
|
| bool failed_;
|
| };
|
|
|
| -class StringSourceMap : public ModuleSystem::SourceMap {
|
| - public:
|
| - StringSourceMap() {}
|
| -
|
| - v8::Handle<v8::Value> GetSource(const std::string& name) OVERRIDE {
|
| - if (source_map_.count(name) == 0)
|
| - return v8::Undefined();
|
| - return v8::String::New(source_map_[name].c_str());
|
| - }
|
| -
|
| - bool Contains(const std::string& name) OVERRIDE {
|
| - return source_map_.count(name);
|
| - }
|
| -
|
| - void RegisterModule(const std::string& name, const std::string& source) {
|
| - source_map_[name] = source;
|
| - }
|
| -
|
| - private:
|
| - std::map<std::string, std::string> source_map_;
|
| -};
|
| -
|
| -// Native JS functions for disabling injection in ModuleSystem.
|
| -class DisableNativesHandler : public NativeHandler {
|
| - public:
|
| - explicit DisableNativesHandler(ModuleSystem* module_system)
|
| - : module_system_(module_system) {
|
| - RouteFunction("DisableNatives",
|
| - base::Bind(&DisableNativesHandler::DisableNatives,
|
| - base::Unretained(this)));
|
| - }
|
| -
|
| - v8::Handle<v8::Value> DisableNatives(const v8::Arguments& args) {
|
| - module_system_->set_natives_enabled(false);
|
| - return v8::Undefined();
|
| - }
|
| -
|
| - private:
|
| - ModuleSystem* module_system_;
|
| -};
|
| -
|
| class ModuleSystemTest : public testing::Test {
|
| public:
|
| ModuleSystemTest()
|
| : context_(v8::Context::New()),
|
| - handle_scope_(),
|
| - assert_natives_(new AssertNatives()),
|
| - source_map_(new StringSourceMap()),
|
| - module_system_(new ModuleSystem(source_map_)) {
|
| + assert_natives_(new AssertNatives()) {
|
| context_->Enter();
|
| + source_map_["add"] = "exports.Add = function(x, y) { return x + y; };";
|
| + module_system_.reset(new ModuleSystem(&source_map_));
|
| module_system_->RegisterNativeHandler("assert", scoped_ptr<NativeHandler>(
|
| assert_natives_));
|
| - RegisterModule("add", "exports.Add = function(x, y) { return x + y; };");
|
| }
|
|
|
| ~ModuleSystemTest() {
|
| context_.Dispose();
|
| }
|
|
|
| - void RegisterModule(const std::string& name, const std::string& code) {
|
| - source_map_->RegisterModule(name, code);
|
| - }
|
| -
|
| virtual void TearDown() {
|
| // All tests must call a native function at least once.
|
| ASSERT_TRUE(assert_natives_->native_function_called());
|
| @@ -105,63 +56,45 @@
|
| ASSERT_FALSE(try_catch_.HasCaught());
|
| }
|
|
|
| - v8::Persistent<v8::Context> context_;
|
| v8::HandleScope handle_scope_;
|
| v8::TryCatch try_catch_;
|
| + v8::Persistent<v8::Context> context_;
|
| AssertNatives* assert_natives_;
|
| - StringSourceMap* source_map_;
|
| + std::map<std::string, std::string> source_map_;
|
| scoped_ptr<ModuleSystem> module_system_;
|
| };
|
|
|
| TEST_F(ModuleSystemTest, TestRequire) {
|
| - RegisterModule("test",
|
| + source_map_["test"] =
|
| "var Add = require('add').Add;"
|
| - "requireNative('assert').AssertTrue(Add(3, 5) == 8);");
|
| + "requireNative('assert').AssertTrue(Add(3, 5) == 8);";
|
| module_system_->Require("test");
|
| }
|
|
|
| TEST_F(ModuleSystemTest, TestNestedRequire) {
|
| - RegisterModule("double",
|
| + source_map_["double"] =
|
| "var Add = require('add').Add;"
|
| - "exports.Double = function(x) { return Add(x, x); };");
|
| - RegisterModule("test",
|
| + "exports.Double = function(x) { return Add(x, x); };";
|
| + source_map_["test"] =
|
| "var Double = require('double').Double;"
|
| - "requireNative('assert').AssertTrue(Double(3) == 6);");
|
| + "requireNative('assert').AssertTrue(Double(3) == 6);";
|
| module_system_->Require("test");
|
| }
|
|
|
| TEST_F(ModuleSystemTest, TestModuleInsulation) {
|
| - RegisterModule("x",
|
| + source_map_["x"] =
|
| "var x = 10;"
|
| - "exports.X = function() { return x; };");
|
| - RegisterModule("y",
|
| + "exports.X = function() { return x; };";
|
| + source_map_["y"] =
|
| "var x = 15;"
|
| "require('x');"
|
| - "exports.Y = function() { return x; };");
|
| - RegisterModule("test",
|
| + "exports.Y = function() { return x; };";
|
| + source_map_["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);");
|
| + "assert.AssertTrue(X() == 10);";
|
| module_system_->Require("test");
|
| }
|
| -
|
| -TEST_F(ModuleSystemTest, TestDisableNativesPreventsNativeModulesBeingLoaded) {
|
| - module_system_->RegisterNativeHandler("disable",
|
| - scoped_ptr<NativeHandler>(
|
| - new DisableNativesHandler(module_system_.get())));
|
| - RegisterModule("test",
|
| - "var assert = requireNative('assert');"
|
| - "var disable = requireNative('disable');"
|
| - "disable.DisableNatives();"
|
| - "var caught = false;"
|
| - "try {"
|
| - " requireNative('assert');"
|
| - "} catch (e) {"
|
| - " caught = true;"
|
| - "}"
|
| - "assert.AssertTrue(caught);");
|
| - module_system_->Require("test");
|
| -}
|
|
|