blob: 464a4494892894848f4cfdd4f48ef6b5d9ffed3a [file] [log] [blame]
<!DOCTYPE html>
<meta charset="utf-8">
<!-- This test requires internals because it tests Chromium's
internal UseCounter. -->
<title>Navigation Preload use counter</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../resources/test-helpers.js"></script>
<script>
function is_navigation_preload_counted(frame) {
// From UseCounter.h
const ServiceWorkerNavigationPreload = 1803;
return frame.contentWindow.internals.isUseCounted(
frame.contentDocument, ServiceWorkerNavigationPreload);
}
promise_test(t => {
var script = 'resources/worker.js?no-preload';
var scope = 'resources/dummy?no-preload-passthrough';
return service_worker_unregister_and_register(t, script, scope)
.then(registration => {
add_completion_callback(_ => registration.unregister());
var worker = registration.installing;
return wait_for_state(t, worker, 'activated');
})
.then(() => {
return with_iframe(scope);
})
.then(frame => {
assert_false(is_navigation_preload_counted(frame));
});
}, 'Navigation Preload is not counted if not enabled.');
promise_test(t => {
var script = 'resources/worker.js';
var scope = 'resources/dummy?respondWith';
return service_worker_unregister_and_register(t, script, scope)
.then(registration => {
add_completion_callback(_ => registration.unregister());
var worker = registration.installing;
return wait_for_state(t, worker, 'activated');
})
.then(() => with_iframe(scope))
.then(frame => {
assert_true(is_navigation_preload_counted(frame));
});
}, 'Navigation Preload is use counted.');
promise_test(t => {
var script = 'resources/worker.js';
var scope = 'resources/dummy?passthrough';
return service_worker_unregister_and_register(t, script, scope)
.then(registration => {
add_completion_callback(_ => registration.unregister());
var worker = registration.installing;
return wait_for_state(t, worker, 'activated');
})
.then(() => with_iframe(scope))
.then(frame => {
assert_true(is_navigation_preload_counted(frame));
});
}, 'Navigation Preload is use counted even if preloadResponse is not used.');
</script>