OLD | NEW |
1 <?php | 1 <?php |
2 setcookie("test_cookie", "a_value"); | 2 setcookie("test_cookie", "a_value"); |
3 header("Suborigin: foobar 'unsafe-cookies';"); | 3 header("Suborigin: foobar 'unsafe-cookies'"); |
4 ?> | 4 ?> |
5 <!DOCTYPE html> | 5 <!DOCTYPE html> |
6 <html> | 6 <html> |
7 <head> | 7 <head> |
| 8 <meta charset="utf-8"> |
8 <script src="/resources/testharness.js"></script> | 9 <script src="/resources/testharness.js"></script> |
9 <script src="/resources/testharnessreport.js"></script> | 10 <script src="/resources/testharnessreport.js"></script> |
10 </head> | 11 </head> |
11 <body> | 12 <body> |
12 <script> | 13 <script> |
13 test(t => { | 14 test(t => { |
14 assert_equals(document.cookie, "test_cookie=a_value"); | 15 assert_equals(document.cookie, 'test_cookie=a_value'); |
15 document.cookie = "foo=bar"; | 16 document.cookie = 'foo=bar'; |
16 assert_equals(document.cookie, "test_cookie=a_value; foo=bar"); | 17 assert_equals(document.cookie, 'test_cookie=a_value; foo=bar'); |
17 t.done(); | 18 t.done(); |
18 }, "Document is not cookie-averse"); | 19 }, 'Document is not cookie-averse'); |
19 | 20 |
20 test(t => { | 21 test(t => { |
21 Object.defineProperties(document, { | 22 Object.defineProperties(document, { |
22 "cookie": { | 23 'cookie': { |
23 get: function() { return this.x; }, | 24 get: function() { return this.x; }, |
24 set: function(x) { this.x = x; } | 25 set: function(x) { this.x = x; } |
25 } | 26 } |
26 }); | 27 }); |
27 | 28 |
28 document.cookie = "foo"; | 29 document.cookie = 'foo'; |
29 assert_equals(document.cookie, "foo"); | 30 assert_equals(document.cookie, 'foo'); |
30 delete document.cookie; | 31 delete document.cookie; |
31 t.done(); | 32 t.done(); |
32 }, "Document getters and setters still work"); | 33 }, 'Document getters and setters still work'); |
33 | 34 |
34 async_test(t => { | 35 async_test(t => { |
35 window.addEventListener('message', function(event) { | 36 window.addEventListener('message', function(event) { |
36 if (event.data.test_name != "iframetest") | 37 if (event.data.test_name != 'iframetest') |
| 38 return; |
| 39 |
| 40 var cookie_val = event.data.cookie_val; |
| 41 assert_equals(cookie_val, 'test_cookie=a_value; foo=bar'); |
| 42 t.done(); |
| 43 }); |
| 44 |
| 45 var iframe = document.createElement('iframe'); |
| 46 iframe.src = 'resources/post-document-cookie.php?testname=iframetest'; |
| 47 document.body.appendChild(iframe); |
| 48 }, |
| 49 'Cookies set in a frame with a regular, same-origin src modify the ' + |
| 50 'suborigin\'s document.cookie'); |
| 51 |
| 52 function make_iframe_string(test_name) { |
| 53 var post_message_content = '{cookie_val: document.cookie, ' + |
| 54 'test_name: \'' + test_name + '\'}'; |
| 55 return 'document.cookie = \'foo=bar\'; window.parent.postMessage(' + |
| 56 post_message_content + ', \'*\')'; |
| 57 } |
| 58 |
| 59 async_test(t => { |
| 60 window.addEventListener('message', function(event) { |
| 61 if (event.data.test_name != 'about:blanktest') |
| 62 return; |
| 63 |
| 64 assert_equals(event.data.cookie_val, 'test_cookie=a_value; foo=bar'); |
| 65 t.done(); |
| 66 }); |
| 67 |
| 68 var iframe = document.createElement('iframe'); |
| 69 iframe.src = 'about:blank'; |
| 70 iframe.onload = function() { |
| 71 var script = iframe.contentWindow.document.createElement('script'); |
| 72 script.innerHTML = make_iframe_string('about:blanktest'); |
| 73 iframe.contentWindow.document.body.appendChild(script); |
| 74 }; |
| 75 document.body.appendChild(iframe); |
| 76 }, |
| 77 'Cookies set in an about:blank frame modify the suborigin\'s ' + |
| 78 'document.cookie and also have the same document.cookie'); |
| 79 |
| 80 // TODO(jww): Re-enabled this test after https://crbug.com/649893 is addressed. |
| 81 /* |
| 82 async_test(t => { |
| 83 window.addEventListener('message', function(event) { |
| 84 if (event.data.test_name != 'blob:test') |
37 return; | 85 return; |
38 | 86 |
39 var cookie_val = event.data.cookie_val; | 87 assert_equals(event.data.cookie_val, ''); |
40 assert_equals(cookie_val, "test_cookie=a_value; foo=bar"); | |
41 t.done(); | 88 t.done(); |
42 }); | 89 }); |
43 | 90 |
44 var iframe = document.createElement('iframe'); | 91 var iframe = document.createElement('iframe'); |
45 iframe.src = "resources/post-document-cookie.php?testname=iframetest"; | 92 var script = '<' + 'script>' + make_iframe_string('blob:test') + '<' + '/scr
ipt>'; |
| 93 var blob = new Blob([script], {type: 'text/html'}); |
| 94 iframe.src = URL.createObjectURL(blob); |
46 document.body.appendChild(iframe); | 95 document.body.appendChild(iframe); |
47 }, "Cookies set in a frame with a regular, same-origin src modify the suborigin'
s document.cookie"); | 96 }, |
48 | 97 'Cookies set in a blob: frame do not modify the suborigin\'s ' + |
49 function makeIframeString(test_name) { | 98 'document.cookie and also have an empty document.cookie (blobs are still diffe
rent origin)'); |
50 var postMessageContent = "{cookie_val: document.cookie, test_name: '" + test
_name + "'}"; | 99 */ |
51 return "document.cookie = 'foo=bar'; window.parent.postMessage(" + postMessa
geContent + ", '*')"; | |
52 } | |
53 | 100 |
54 async_test(t => { | 101 async_test(t => { |
55 window.addEventListener('message', function(event) { | 102 window.addEventListener('message', function(event) { |
56 if (event.data.test_name != "about:blanktest") | 103 if (event.data.test_name != 'srcdoc:test') |
57 return; | 104 return; |
58 | 105 |
59 assert_equals(event.data.cookie_val, "test_cookie=a_value; foo=bar"); | 106 assert_equals(event.data.cookie_val, 'test_cookie=a_value; foo=bar'); |
60 t.done(); | 107 t.done(); |
61 }); | 108 }); |
62 | 109 |
63 var iframe = document.createElement('iframe'); | 110 var iframe = document.createElement('iframe'); |
64 iframe.src = "about:blank"; | 111 var script = '<' + 'script>' + make_iframe_string('srcdoc:test') + |
65 iframe.onload = function() { | 112 '<' + '/script>'; |
66 var script = iframe.contentWindow.document.createElement("script"); | 113 iframe.srcdoc = 'srcdoc:' + script; |
67 script.innerHTML = makeIframeString("about:blanktest"); | |
68 iframe.contentWindow.document.body.appendChild(script); | |
69 }; | |
70 document.body.appendChild(iframe); | 114 document.body.appendChild(iframe); |
71 }, "Cookies set in an about:blank frame modify the suborigin's document.cookie a
nd also have the same document.cookie"); | 115 }, |
72 | 116 'Cookies set in a srcdoc frame modify the suborigin\'s ' + |
73 async_test(t => { | 117 'document.cookie and also have the same document.cookie'); |
74 window.addEventListener('message', function(event) { | |
75 if (event.data.test_name != "blob:test") | |
76 return; | |
77 | |
78 assert_equals(event.data.cookie_val, ""); | |
79 t.done(); | |
80 }); | |
81 | |
82 var iframe = document.createElement('iframe'); | |
83 var script = "<" + "script>" + makeIframeString("blob:test") + "<" + "/scrip
t>"; | |
84 var blob = new Blob([script], {type: 'text/html'}); | |
85 iframe.src = URL.createObjectURL(blob); | |
86 document.body.appendChild(iframe); | |
87 }, "Cookies set in a blob: frame do not modify the suborigin's document.cookie a
nd also have an empty document.cookie (blobs are still different origin)"); | |
88 | |
89 async_test(t => { | |
90 window.addEventListener('message', function(event) { | |
91 if (event.data.test_name != "srcdoc:test") | |
92 return; | |
93 | |
94 assert_equals(event.data.cookie_val, "test_cookie=a_value; foo=bar"); | |
95 t.done(); | |
96 }); | |
97 | |
98 var iframe = document.createElement('iframe'); | |
99 var script = "<" + "script>" + makeIframeString("srcdoc:test") + "<" + "/scr
ipt>"; | |
100 iframe.srcdoc = "srcdoc:" + script; | |
101 document.body.appendChild(iframe); | |
102 }, "Cookies set in a srcdoc frame modify the suborigin's document.cookie and als
o have the same document.cookie"); | |
103 | |
104 </script> | 118 </script> |
105 </body> | 119 </body> |
106 </html> | 120 </html> |
OLD | NEW |