preload-xhr.html (1776B)
1 <script src="/resources/testharness.js"></script> 2 <script src="/resources/testharnessreport.js"></script> 3 <script src="/common/utils.js"></script> 4 <script src="/preload/resources/preload_helper.js"></script> 5 <script> 6 7 const dummyContent = '<?xml version="1.0" encoding="utf-8"?>\n<root>Text.me</root>\n'; 8 promise_test(async (t) => { 9 const url = `resources/dummy.xml?token=${token()}`; 10 const link = document.createElement('link'); 11 link.rel = 'preload'; 12 link.as = 'fetch'; 13 link.href = url; 14 link.crossOrigin = 'anonymous'; 15 16 document.head.appendChild(link); 17 18 const xhr = new XMLHttpRequest(); 19 await new Promise((resolve, reject) => { 20 xhr.onloadend = resolve; 21 xhr.onloaderror = reject; 22 xhr.open('GET', url); 23 xhr.send(); 24 }); 25 verifyNumberOfResourceTimingEntries(url, 1); 26 assert_equals(xhr.status, 200); 27 assert_equals(xhr.responseText, dummyContent); 28 29 }, 'Make an XHR request immediately after creating link rel=preload.'); 30 31 promise_test(async (t) => { 32 const url = `resources/dummy.xml?token=${token()}`; 33 const link = document.createElement('link'); 34 link.rel = 'preload'; 35 link.as = 'fetch'; 36 link.href = url; 37 link.crossOrigin = 'anonymous'; 38 39 await new Promise((resolve, reject) => { 40 link.addEventListener('load', resolve, {once: true}); 41 link.addEventListener('error', reject, {once: true}); 42 document.head.appendChild(link); 43 }); 44 45 const xhr = new XMLHttpRequest(); 46 await new Promise((resolve, reject) => { 47 xhr.onloadend = resolve; 48 xhr.onloaderror = reject; 49 xhr.open('GET', url); 50 xhr.send(); 51 }); 52 verifyNumberOfResourceTimingEntries(url, 1); 53 assert_equals(xhr.status, 200); 54 assert_equals(xhr.responseText, dummyContent); 55 }, 'Make an XHR request after loading link rel=preload.'); 56 57 </script>