| importScripts("/resources/testharness.js"); |
| |
| function check(initiatorType, protocol) { |
| let entries = performance.getEntries(); |
| assert_equals(entries.length, 1); |
| |
| assert_true(entries[0] instanceof PerformanceEntry); |
| assert_equals(entries[0].entryType, "resource"); |
| assert_true(entries[0].startTime > 0); |
| assert_true(entries[0].duration > 0); |
| |
| assert_true(entries[0] instanceof PerformanceResourceTiming); |
| assert_equals(entries[0].initiatorType, initiatorType); |
| assert_equals(entries[0].nextHopProtocol, protocol); |
| } |
| |
| async_test(t => { |
| performance.clearResourceTimings(); |
| |
| // Fetch |
| fetch("resources/empty.js") |
| .then(r => r.blob()) |
| .then(blob => { |
| check("fetch", "http/1.1"); |
| }) |
| |
| // XMLHttpRequest |
| .then(() => { |
| return new Promise(resolve => { |
| performance.clearResourceTimings(); |
| let xhr = new XMLHttpRequest(); |
| xhr.onload = () => { |
| check("xmlhttprequest", "http/1.1"); |
| resolve(); |
| }; |
| xhr.open("GET", "resources/empty.js"); |
| xhr.send(); |
| }); |
| }) |
| |
| // Sync XMLHttpREquest |
| .then(() => { |
| performance.clearResourceTimings(); |
| let xhr = new XMLHttpRequest(); |
| xhr.open("GET", "resources/empty.js", false); |
| xhr.send(); |
| |
| check("xmlhttprequest", "http/1.1"); |
| }) |
| |
| // ImportScripts |
| .then(() => { |
| performance.clearResourceTimings(); |
| importScripts(["resources/empty.js"]); |
| check("other", "http/1.1"); |
| }) |
| |
| // All done. |
| .then(() => { |
| t.done(); |
| }); |
| }, "Performance Resource Entries in workers"); |
| |
| done(); |