helper.js (1810B)
1 function assert_no_message_from_frame(test, frame) { 2 window.addEventListener("message", test.step_func(e => { 3 assert_not_equals(e.source, frame.contentWindow); 4 })); 5 } 6 7 function appendFrameAndGetElement(test, frame) { 8 return new Promise((resolve, reject) => { 9 frame.onload = test.step_func(_ => { 10 frame.onload = null; 11 resolve(frame.contentDocument.querySelector('#dangling')); 12 }); 13 document.body.appendChild(frame); 14 }); 15 } 16 17 function appendAndSubmit(test, frame) { 18 return new Promise((resolve, reject) => { 19 frame.onload = test.step_func(_ => { 20 frame.onload = null; 21 frame.contentDocument.querySelector('form').addEventListener("error", _ => { 22 resolve("error"); 23 }); 24 frame.contentDocument.querySelector('form').addEventListener("submit", _ => { 25 resolve("submit"); 26 }); 27 frame.contentDocument.querySelector('[type=submit]').click(); 28 }); 29 document.body.appendChild(frame); 30 }); 31 } 32 33 function assert_no_submission(test, frame) { 34 assert_no_message_from_frame(test, frame); 35 36 appendAndSubmit(test, frame) 37 .then(test.step_func_done(result => { 38 assert_equals(result, "error"); 39 frame.remove(); 40 })); 41 } 42 43 function assert_img_loaded(test, frame) { 44 appendFrameAndGetElement(test, frame) 45 .then(test.step_func_done(img => { 46 assert_equals(img.naturalHeight, 103, "Height"); 47 assert_equals(img.naturalWidth, 76, "Width"); 48 })); 49 } 50 51 function assert_img_not_loaded(test, frame) { 52 appendFrameAndGetElement(test, frame) 53 .then(test.step_func_done(img => { 54 assert_equals(img.naturalHeight, 0, "Height"); 55 assert_equals(img.naturalWidth, 0, "Width"); 56 })); 57 } 58 59 function createFrame(markup) { 60 var i = document.createElement('iframe'); 61 i.srcdoc = `${markup}sekrit`; 62 return i; 63 }