| <!DOCTYPE html> | |
| <meta charset=utf-8> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="early-hints-helpers.sub.js"></script> | |
| <body> | |
| <script> | |
| const SEARCH_PARAMS = new URLSearchParams(window.location.search); | |
| const EARLY_HINTS_POLICY = SEARCH_PARAMS.get("early-hints-policy"); | |
| const FINAL_POLICY = SEARCH_PARAMS.get("final-policy"); | |
| function isResourceAllowed() { | |
| return FINAL_POLICY === "absent" || FINAL_POLICY === "allowed"; | |
| } | |
| function shouldEarlyHintsPreloadResource() { | |
| return EARLY_HINTS_POLICY === "absent" || EARLY_HINTS_POLICY == "allowed"; | |
| } | |
| promise_test(async (t) => { | |
| const resource_url = SEARCH_PARAMS.get("resource-url"); | |
| if (isResourceAllowed()) { | |
| await fetchScript(resource_url); | |
| const early_hints_preloaded = isPreloadedByEarlyHints(resource_url); | |
| const should_early_hints_preload = shouldEarlyHintsPreloadResource(); | |
| const description = "Early Hints " + | |
| (early_hints_preloaded ? "preloaded" : "didn't preload") + | |
| " the resource, should " + | |
| (should_early_hints_preload ? "" : "not ") + "preload."; | |
| assert_equals(early_hints_preloaded, should_early_hints_preload, | |
| description); | |
| } else { | |
| await promise_rejects_js(t, Error, fetchScript(resource_url)); | |
| } | |
| }, `Early Hints CSP: Early Hints policy = ${EARLY_HINTS_POLICY}, final response policy = ${FINAL_POLICY}.`); | |
| </script> | |
| </body> |