Index: third_party/WebKit/LayoutTests/external/wpt/webmessaging/with-ports/010.html |
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webmessaging/with-ports/010.html b/third_party/WebKit/LayoutTests/external/wpt/webmessaging/with-ports/010.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..05080e3f7ae85a8b276569c6d532e9959bb78646 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/external/wpt/webmessaging/with-ports/010.html |
@@ -0,0 +1,113 @@ |
+<!doctype html> |
+<title>message clone</title> |
+<script src="/resources/testharness.js"></script> |
+<script src="/resources/testharnessreport.js"></script> |
+<script src="../support/compare.js"></script> |
+<div id=log></div> |
+<script> |
+ var err = new Error('foo'); |
+ var date = new Date(); |
+ |
+ var test_array = [ undefined, |
+ null, |
+ false, |
+ true, |
+ 1, |
+ NaN, |
+ Infinity, |
+ 'foo', |
+ date, |
+ /foo/, |
+ null/*self*/, |
+ null/*err*/]; |
+ |
+ var cloned_array = [ undefined, |
+ null, |
+ false, |
+ true, |
+ 1, |
+ NaN, |
+ Infinity, |
+ 'foo', |
+ date, |
+ /foo/, |
+ null/*self*/, |
+ null/*err*/]; |
+ |
+ var test_object = {a: undefined, |
+ b: null, |
+ c: false, |
+ d: true, |
+ e: 1, |
+ f: NaN, |
+ g: Infinity, |
+ h: 'foo', |
+ i: date, |
+ j: /foo/, |
+ k: null/*self*/, |
+ l: [], |
+ m: {}, |
+ n: null /*err*/}; |
+ |
+ var cloned_object = {a:undefined, b:null, c:false, d:true, e:1, f:NaN, g:Infinity, h:'foo', i: date, j: /foo/, k:null, l: [], m: {}, n:null}; |
+ |
+ var tests = [undefined, null, |
+ false, true, |
+ 1, NaN, Infinity, |
+ 'foo', |
+ date, |
+ /foo/, |
+ /* ImageData, File, FileData, FileList, */ |
+ null /*self*/, |
+ test_array, |
+ test_object, |
+ null /*err*/]; |
+ |
+ for (var i = 0; i < tests.length; ++i) { |
+ postMessage(tests[i], '*', []); |
+ } |
+ |
+ var test_undefined = async_test('undefined'); |
+ var test_null = async_test('null'); |
+ var test_false = async_test('false'); |
+ var test_true = async_test('true'); |
+ var test_1 = async_test('1'); |
+ var test_NaN = async_test('NaN'); |
+ var test_Infinity = async_test('Infinity'); |
+ var test_string = async_test('string'); |
+ var test_date = async_test('date'); |
+ var test_regex = async_test('regex'); |
+ var test_self = async_test('self'); |
+ var test_array = async_test('array'); |
+ var test_object = async_test('object'); |
+ var test_error = async_test('error'); |
+ var test_unreached = async_test('unreached'); |
+ |
+ var j = 0; |
+ onmessage = function(e) { |
+ switch (j) { |
+ case 0: test_undefined.step(function() { assert_equals(e.data, undefined); this.done(); }); break; |
+ case 1: test_null.step(function() { assert_equals(e.data, null); this.done(); }); break; |
+ case 2: test_false.step(function() { assert_false(e.data); this.done(); }); break; |
+ case 3: test_true.step(function() { assert_true(e.data); this.done(); }); break; |
+ case 4: test_1.step(function() { assert_equals(e.data, 1); this.done(); }); break; |
+ case 5: test_NaN.step(function() { assert_equals(e.data, NaN); this.done(); }); break; |
+ case 6: test_Infinity.step(function() { assert_equals(e.data, Infinity); this.done(); }); break; |
+ case 7: test_string.step(function() { assert_equals(e.data, 'foo'); this.done(); }); break; |
+ case 8: test_date.step(function() { assert_true(sameDate(e.data, date)); this.done(); }); break; |
+ case 9: test_regex.step(function() { assert_equals('' + e.data, '/foo/'); assert_equals(e.data instanceof RegExp, true, 'e.data instanceof RegExp'); this.done(); }); break; |
+ // not testing it any more, as cloning host objects will now raise exceptions. TODO: add (exceptional) tests for these. |
+ case 10: test_self.step(function() { assert_equals(e.data, null); this.done(); }); break; |
+ case 11: test_array.step(function() { assert_array_equals_(e.data, cloned_array, 'array'); this.done(); }); break; |
+ case 12: test_object.step(function() { assert_object_equals_(e.data, cloned_object, 'object'); this.done(); }); break; |
+ case 13: |
+ test_error.step(function() { assert_equals(e.data, null, 'new Error()'); this.done(); }); |
+ setTimeout(test_unreached.step_func(function() { assert_equals(j, 14); this.done(); }), 50); |
+ break; |
+ default: test_unreached.step(function() { assert_unreached('got an unexpected message event ('+j+')'); }); |
+ }; |
+ j++; |
+ } |
+ |
+ |
+</script> |