mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 02:14:43 +00:00
Bug 1704473 - Remove <head> requirement for <meta name=referrer>. r=ckerschb
Differential Revision: https://phabricator.services.mozilla.com/D116618
This commit is contained in:
parent
dd69afcc43
commit
75b4aba015
@ -41,13 +41,9 @@ void HTMLMetaElement::SetMetaReferrer(Document* aDocument) {
|
||||
}
|
||||
nsAutoString content;
|
||||
GetContent(content);
|
||||
|
||||
Element* headElt = aDocument->GetHeadElement();
|
||||
if (headElt && IsInclusiveDescendantOf(headElt)) {
|
||||
content = nsContentUtils::TrimWhitespace<nsContentUtils::IsHTMLWhitespace>(
|
||||
content);
|
||||
aDocument->UpdateReferrerInfoFromMeta(content, false);
|
||||
}
|
||||
content =
|
||||
nsContentUtils::TrimWhitespace<nsContentUtils::IsHTMLWhitespace>(content);
|
||||
aDocument->UpdateReferrerInfoFromMeta(content, false);
|
||||
}
|
||||
|
||||
nsresult HTMLMetaElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
@ -135,8 +131,6 @@ nsresult HTMLMetaElement::BindToTree(BindContext& aContext, nsINode& aParent) {
|
||||
}
|
||||
}
|
||||
|
||||
// Referrer Policy spec requires a <meta name="referrer" tag to be in the
|
||||
// <head> element.
|
||||
SetMetaReferrer(&doc);
|
||||
CreateAndDispatchEvent(&doc, u"DOMMetaAdded"_ns);
|
||||
return rv;
|
||||
|
13
dom/security/test/general/file_meta_referrer_in_head.html
Normal file
13
dom/security/test/general/file_meta_referrer_in_head.html
Normal file
@ -0,0 +1,13 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="referrer" content="no-referrer" />
|
||||
<title>Bug 1704473 - Remove head requirement for meta name=referrer</title>
|
||||
<script type="application/javascript">
|
||||
fetch("https://example.com");
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
14
dom/security/test/general/file_meta_referrer_notin_head.html
Normal file
14
dom/security/test/general/file_meta_referrer_notin_head.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Bug 1704473 - Remove head requirement for meta name=referrer</title>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<meta name="referrer" content="no-referrer" />
|
||||
<script type="application/javascript">
|
||||
fetch("https://example.com");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -60,3 +60,7 @@ support-files = closeWindow.sjs
|
||||
[test_xfo_error_page.html]
|
||||
support-files = file_xfo_error_page.sjs
|
||||
[test_bug1450853.html]
|
||||
[test_meta_referrer.html]
|
||||
support-files =
|
||||
file_meta_referrer_in_head.html
|
||||
file_meta_referrer_notin_head.html
|
||||
|
55
dom/security/test/general/test_meta_referrer.html
Normal file
55
dom/security/test/general/test_meta_referrer.html
Normal file
@ -0,0 +1,55 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Bug 1704473 - Remove head requirement for meta name=referrer</title>
|
||||
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<iframe id="frame_meta_in_head"></iframe>
|
||||
<iframe id="frame_meta_notin_head"></iframe>
|
||||
|
||||
<script type="application/javascript">
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
let testCounter = 0;
|
||||
function checkTestsDone() {
|
||||
testCounter++;
|
||||
if(testCounter == 2) {
|
||||
SimpleTest.finish();
|
||||
}
|
||||
}
|
||||
/* eslint-env mozilla/frame-script */
|
||||
var script = SpecialPowers.loadChromeScript(() => {
|
||||
const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
Services.obs.addObserver(function onExamResp(subject, topic, data) {
|
||||
let channel = subject.QueryInterface(Ci.nsIHttpChannel);
|
||||
if (!channel.URI.spec.startsWith("https://example.com")) {
|
||||
return;
|
||||
}
|
||||
|
||||
let refererHeaderSet = false;
|
||||
try {
|
||||
channel.getRequestHeader("referer");
|
||||
refererHeaderSet = true;
|
||||
} catch (e) {
|
||||
refererHeaderSet = false;
|
||||
}
|
||||
ok(!refererHeaderSet, "the referer header should not be set");
|
||||
sendAsyncMessage("checked-referer-header");
|
||||
}, "http-on-stop-request");
|
||||
});
|
||||
|
||||
script.addMessageListener("checked-referer-header", checkTestsDone);
|
||||
|
||||
let frame1 = document.getElementById("frame_meta_in_head");
|
||||
frame1.src = "/tests/dom/security/test/general/file_meta_referrer_in_head.html";
|
||||
let frame2 = document.getElementById("frame_meta_notin_head");
|
||||
frame2.src = "/tests/dom/security/test/general/file_meta_referrer_notin_head.html";
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user