Index: chrome/renderer/extensions/utils_unittest.cc |
diff --git a/chrome/renderer/extensions/utils_unittest.cc b/chrome/renderer/extensions/utils_unittest.cc |
index 3a718ddccd14a4477469f25e7566a2054f5a8f7c..7145d431aaa6d1ac31a6b5d9fb3d966b9bd98836 100644 |
--- a/chrome/renderer/extensions/utils_unittest.cc |
+++ b/chrome/renderer/extensions/utils_unittest.cc |
@@ -119,5 +119,44 @@ TEST_F(UtilsUnittest, SuperClass) { |
context_->module_system()->Require("test"); |
} |
+TEST_F(UtilsUnittest, DeepCopy) { |
+ ModuleSystem::NativesEnabledScope natives_enabled_scope( |
+ context_->module_system()); |
+ RegisterTestModule( |
+ "var nested = {\n" |
+ " string: 'abc',\n" |
+ " _null: null\n" |
+ "};\n" |
+ "var top = {\n" |
+ " array: [1, 'abc', nested],\n" |
+ " uint8array: new Uint8Array([1,2,3])\n" |
+ "};\n" |
+ "\n" |
+ "var copy = utils.deepCopy(top);\n" |
+ "// Ensure that the copy is not referencing to the original.\n" |
+ "AssertTrue(copy !== top);\n" |
+ "AssertTrue(copy.array !== top.array);\n" |
+ "AssertTrue(copy.array[2] !== top.array[2]);\n" |
+ "AssertTrue(copy.uint8array !== top.uint8array);\n" |
+ "AssertTrue(copy.uint8array.buffer !== top.uint8array.buffer);\n" |
+ "\n" |
+ "// Check |copy|.\n" |
+ "AssertTrue(Object.keys(copy) == 'array,uint8array');\n" |
+ "\n" |
+ "// Check |copy.array|.\n" |
+ "AssertTrue(Array.isArray(copy.array));\n" |
+ "AssertTrue(copy.array.length === 3);\n" |
+ "AssertTrue(copy.array[0] === 1);\n" |
+ "AssertTrue(copy.array[1] === 'abc');\n" |
+ "\n" |
+ "// Check |copy.array[2]|.\n" |
+ "var copyNested = copy.array[2];\n" |
+ "AssertTrue(Object.keys(copyNested) == 'string,_null');\n" |
+ "AssertTrue(copyNested.string === 'abc');\n" |
+ "AssertTrue(copyNested._null === null);\n"); |
+ |
+ context_->module_system()->Require("test"); |
+} |
+ |
} // namespace |
} // namespace extensions |