fetch-later.html (1479B)
1 <!DOCTYPE html> 2 <head> 3 </head> 4 <body> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="/fetch/fetch-later/resources/fetch-later-helper.js"></script> 8 <script> 9 const PARAMS = new URL(location.href).searchParams; 10 const TARGET_URL= decodeURIComponent(PARAMS.get('url')) || ''; 11 const BODY_TYPE = PARAMS.get('bodyType'); 12 const BODY_SIZE = PARAMS.get('bodySize'); 13 const BODY = BODY_TYPE !== null && BODY_SIZE !== null ? makeBeaconData(generatePayload(BODY_SIZE), BODY_TYPE) : null; 14 const REQUEST_INIT = Object.assign({}, 15 PARAMS.has('activateAfter') ? {activateAfter: parseInt(PARAMS.get('activateAfter'), 10)} : null, 16 PARAMS.has('method') ? {method: PARAMS.get('method')} : null, 17 PARAMS.has('referrer') ? {referrer: PARAMS.get('referrer')} : null, 18 BODY !== null ? {body: BODY} : null, 19 ); 20 21 function postMessageBack(message) { 22 if (window.opener) { 23 window.opener.postMessage(message, '*'); 24 } else { 25 parent.postMessage(message, '*'); 26 } 27 } 28 29 try { 30 fetchLater(TARGET_URL, REQUEST_INIT); 31 postMessageBack({type: FetchLaterIframeMessageType.DONE}); 32 } catch (e) { 33 postMessageBack({ 34 type: FetchLaterIframeMessageType.ERROR, 35 // When an error is caught, it might not be cloneable across the boundary. 36 error: {name: e.name, message: e.message} 37 }); 38 } 39 </script> 40 </body>