blob: 9ee1fbca56f3aa6b10cc0f43bcda31d15dcf8670 [file] [log] [blame]
/**
* These values map to some of the the current
* priority enum members in blink::ResourceLoadPriority.
* The values are exposed through window.internals
* and in these tests, we use the below variables to represent
* the exposed values in a readable way.
*/
const kVeryLow = 0,
kLow = 1,
kMedium = 2,
kHigh = 3,
kVeryHigh = 4;
function openWindow(url) {
const win = window.open(url, '_blank');
add_result_callback(() => win.close());
}
function resource_load_priority_test(windowURL, expected_priority,
description) {
promise_test(async () => {
openWindow('resources/' + windowURL);
// The order in which these two events are sent can't be relied upon.
const priority_event_promise =
new Promise(resolve => window.onRequestPriorityUpdated = resolve);
const subresource_finished_loading_event_promise =
new Promise(resolve => window.onRequestStatusChanged = resolve);
const priority_event = await priority_event_promise;
assert_equals(priority_event, expected_priority);
const subresource_finished_loading_event =
await subresource_finished_loading_event_promise;
assert_equals(subresource_finished_loading_event, 'LOADED',
'The resource loaded successfully');
}, description);
}
function observeAndReportResourceLoadPriority(url, optionalDoc, message) {
const documentToUse = optionalDoc ? optionalDoc : document;
return internals.getResourcePriority(url, documentToUse)
.then(reportPriority)
}
function reportPriority(priority) {
window.opener.postMessage({'Priority': priority}, '*');
}
function reportLoaded() {
window.opener.postMessage({'Status': 'LOADED'}, '*');
}
function reportFailure() {
window.opener.postMessage({'Status': 'FAILED'}, '*');
}