Index: chrome/renderer/extensions/json_js_unittest.cc |
diff --git a/chrome/renderer/extensions/json_js_unittest.cc b/chrome/renderer/extensions/json_js_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..130c03bc4a2616b6be09c1a91c5e55d868733eb0 |
--- /dev/null |
+++ b/chrome/renderer/extensions/json_js_unittest.cc |
@@ -0,0 +1,64 @@ |
+// Copyright 2013 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 "chrome/test/base/module_system_test.h" |
+#include "grit/renderer_resources.h" |
+ |
+namespace extensions { |
+namespace { |
+ |
+// Tests chrome/renderer/resources/json.js. |
+class JsonJsTest : public ModuleSystemTest { |
+ virtual void SetUp() OVERRIDE { |
+ ModuleSystemTest::SetUp(); |
+ RegisterModule("json", IDR_JSON_JS); |
+ } |
+ |
+ protected: |
+ std::string requires() { |
+ return |
+ "var assert = requireNative('assert');\n" |
+ "var json = require('json');\n"; |
+ } |
+ |
+ std::string test_body() { |
+ return |
+ "var str = '{\"a\":1,\"b\":true,\"c\":[\"hi\"]}';\n" |
+ "var obj = json.parse(str);\n" |
+ "assert.AssertTrue(json.stringify(obj) === str);\n" |
+ "assert.AssertTrue(obj.a === 1);\n" |
+ "assert.AssertTrue(obj.b === true);\n" |
+ "assert.AssertTrue(obj.c.length === 1);\n" |
+ "assert.AssertTrue(obj.c[0] === 'hi');\n"; |
+ } |
+}; |
+ |
+TEST_F(JsonJsTest, NoOverrides) { |
+ ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); |
+ RegisterModule("test", requires() + test_body()); |
+ module_system_->Require("test"); |
+} |
+ |
+TEST_F(JsonJsTest, EverythingOverridden) { |
+ ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get()); |
+ std::string test = |
+ requires() + |
+ "function fakeToJSON() { throw '42'; }\n" |
+ "Object.prototype.toJSON = fakeToJSON;\n" |
+ "Array.prototype.toJSON = fakeToJSON;\n" |
+ "Number.prototype.toJSON = fakeToJSON;\n" |
+ "Boolean.prototype.toJSON = fakeToJSON;\n" |
+ "String.prototype.toJSON = fakeToJSON;\n" + |
+ test_body() + |
+ "assert.AssertTrue(Object.prototype.toJSON == fakeToJSON);\n" |
+ "assert.AssertTrue(Array.prototype.toJSON == fakeToJSON);\n" |
+ "assert.AssertTrue(Number.prototype.toJSON == fakeToJSON);\n" |
+ "assert.AssertTrue(Boolean.prototype.toJSON == fakeToJSON);\n" |
+ "assert.AssertTrue(String.prototype.toJSON == fakeToJSON);\n"; |
+ RegisterModule("test", test); |
+ module_system_->Require("test"); |
+} |
+ |
+} // namespace |
+} // namespace extensions |