| <!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> |