-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 1797937 [wpt PR 36709] - Test that javascript: URL-created docume…
…nts use the initiator as referrer, a=testonly Automatic update from web-platform-tests Test that javascript: URL-created documents carry over referrer Follows whatwg/html#6315. -- wpt-commits: 5ad834e4a682b4b4acd5428be83254318b81ad0f wpt-pr: 36709
- Loading branch information
1 parent
68157df
commit 2c599da
Showing
1 changed file
with
38 additions
and
0 deletions.
There are no files selected for viewing
38 changes: 38 additions & 0 deletions
38
...l/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
// META: script=../resources/helpers.js | ||
// META: title=javascript: URL navigation to a string must create a document whose referrer is the navigation initiator | ||
|
||
const originalURL = location.href; | ||
|
||
const testCases = [ | ||
["unsafe-url", location.href], | ||
["origin", self.origin + "/"], | ||
["no-referrer", ""] | ||
]; | ||
|
||
for (const [referrerPolicyForStartingWindowCreation, expectedReferrer] of testCases) { | ||
promise_test(async (t) => { | ||
const meta = document.createElement("meta"); | ||
meta.name = "referrer"; | ||
meta.content = referrerPolicyForStartingWindowCreation; | ||
t.add_cleanup(() => meta.remove()); | ||
document.head.append(meta); | ||
|
||
const w = await openWindow("/common/blank.html", t); | ||
const originalReferrer = w.document.referrer; | ||
assert_equals(originalReferrer, expectedReferrer, | ||
"Sanity check: opened window's referrer is set correctly"); | ||
|
||
// Mess with the current document's URL so that the initiator URL is different. Then, if that | ||
// shows up as the javascript: URL document's referrer, we know the navigation initiator's URL is | ||
// being used as the referrer, which is incorrect. | ||
history.replaceState(undefined, "", "/incorrect-referrer.html"); | ||
t.add_cleanup(() => history.replaceState(undefined, "", originalURL)); | ||
|
||
w.location.href = `javascript:'a string<script>opener.postMessage(document.referrer, "*");</script>'`; | ||
|
||
const referrer = await waitForMessage(w); | ||
|
||
assert_equals(referrer, originalReferrer, | ||
"javascript: URL-created document's referrer equals the previous document's referrer"); | ||
}, `${referrerPolicyForStartingWindowCreation} referrer policy used to create the starting page`); | ||
} |