Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 <!DOCTYPE HTML> | |
| 2 <html> | |
| 3 | |
| 4 <head> | |
| 5 <title>External scripts with matching SRI hash should be allowed.</title> | |
| 6 <script src='/resources/testharness.js' nonce='dummy'></script> | |
| 7 <script src='/resources/testharnessreport.js' nonce='dummy'></script> | |
| 8 | |
| 9 <!-- CSP served: script-src 'nonce-dummy' 'sha256-wIc3KtqOuTFEu6t17sIBuOswgk V406VJvhSk79Gw6U0=' 'sha256-L7/UQ9VWpyG7C9RDEC4ctS5hI3Zcw+ta+haPGlByG9c=' 'sha51 2-rYCVMxWV5nq8IsMo+UZNObWtEiWGok/vDN8BMoEQi41s0znSes6E1Q2aag3Lw3u2J1w2rqH7uF2ws6 FpQhfSOA=' --> | |
| 10 </head> | |
| 11 | |
| 12 <body> | |
| 13 <h1>External scripts with matching SRI hash should be allowed.</h1> | |
| 14 <div id='log'></div> | |
| 15 | |
| 16 <script nonce='dummy'> | |
| 17 // Test name, integrity, expected to run. | |
| 18 var test_cases = [ | |
| 19 [ 'matching integrity', | |
| 20 'sha256-L7/UQ9VWpyG7C9RDEC4ctS5hI3Zcw+ta+haPGlByG9c=', | |
| 21 true ], | |
| 22 [ 'multiple matching integrity', | |
| 23 'sha256-L7/UQ9VWpyG7C9RDEC4ctS5hI3Zcw+ta+haPGlByG9c= sha512-rYCVMxWV 5nq8IsMo+UZNObWtEiWGok/vDN8BMoEQi41s0znSes6E1Q2aag3Lw3u2J1w2rqH7uF2ws6FpQhfSOA=' , | |
| 24 true ], | |
| 25 [ 'no integrity', '', false ], | |
| 26 [ 'matching plus unsupported integrity', | |
| 27 'sha256-L7/UQ9VWpyG7C9RDEC4ctS5hI3Zcw+ta+haPGlByG9c= sha999-xyz', | |
| 28 true ], | |
| 29 [ 'mismatched integrity', 'sha256-xyz', false ], | |
| 30 [ 'multiple mismatched intgerity', 'sha256-xyz sha256-zyx', false ], | |
| 31 [ 'partially matching integrity', | |
| 32 'sha256-L7/UQ9VWpyG7C9RDEC4ctS5hI3Zcw+ta+haPGlByG9c= sha256-xyz', | |
| 33 false ], | |
| 34 ]; | |
| 35 | |
| 36 test(_ => { | |
| 37 for (item of test_cases) { | |
| 38 async_test(t => { | |
| 39 var s = document.createElement('script'); | |
| 40 s.id = item[0].replace(' ', '-'); | |
| 41 s.src = './simpleSourcedScript.js'; | |
| 42 s.integrity = item[1]; | |
| 43 | |
| 44 if (item[2]) { | |
| 45 s.onerror = t.unreached_func("Script should load!"); | |
| 46 window.addEventListener('message', t.step_func(e => { | |
| 47 if (e.data == s.id) | |
| 48 t.done(); | |
| 49 })); | |
| 50 } else { | |
| 51 s.onerror = t.step_func_done(); | |
| 52 window.addEventListener('message', t.step_func(e => { | |
| 53 if (e.data == s.id) | |
| 54 assert_unreached("Script should not execute!"); | |
| 55 })); | |
| 56 } | |
| 57 | |
| 58 document.body.appendChild(s); | |
| 59 }, item[0]); | |
| 60 } | |
| 61 }, "Load all the tests."); | |
| 62 </script> | |
| 63 | |
| 64 <script nonce='dummy'> | |
|
Marc Treib
2017/04/06 12:26:30
This is the new attempt for the parser-inserted-sc
| |
| 65 async_test(t => { | |
| 66 window.addEventListener('message', t.step_func(e => { | |
| 67 if (e.data == 'external-script') | |
| 68 t.done(); | |
| 69 })); | |
| 70 }, 'v2: External script in a script tag with matching SRI hash should ru n.'); | |
| 71 </script> | |
| 72 <script id='external-script' src='./simpleSourcedScript.js' | |
| 73 integrity="sha256-L7/UQ9VWpyG7C9RDEC4ctS5hI3Zcw+ta+haPGlByG9c="></script > | |
| 74 | |
| 75 <script nonce='dummy'> | |
|
Marc Treib
2017/04/06 12:26:30
This is the previous version of the parser-inserte
| |
| 76 var externalRan = false; | |
| 77 </script> | |
| 78 <script src='./externalScript.js' | |
| 79 integrity="sha256-wIc3KtqOuTFEu6t17sIBuOswgkV406VJvhSk79Gw6U0="></script > | |
| 80 <script nonce='dummy'> | |
| 81 test(function() { | |
| 82 assert_true(externalRan, 'External script ran.'); | |
| 83 }, 'v1: External script in a script tag with matching SRI hash should ru n.'); | |
| 84 </script> | |
| 85 | |
| 86 </body> | |
| 87 | |
| 88 </html> | |
| OLD | NEW |