Use the correct fallback referrer policy for the empty string case (#34201)

Signed-off-by: Shane Handley <shanehandley@fastmail.com>
This commit is contained in:
shanehandley 2024-11-10 14:26:19 +11:00 committed by GitHub
parent 4da378a987
commit 5e2c7908d0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 5 additions and 189 deletions

View file

@ -5631,7 +5631,7 @@ pub fn determine_policy_for_token(token: &str) -> Option<ReferrerPolicy> {
"default" | "strict-origin-when-cross-origin" => Some(ReferrerPolicy::StrictOriginWhenCrossOrigin), "default" | "strict-origin-when-cross-origin" => Some(ReferrerPolicy::StrictOriginWhenCrossOrigin),
"origin-when-cross-origin" => Some(ReferrerPolicy::OriginWhenCrossOrigin), "origin-when-cross-origin" => Some(ReferrerPolicy::OriginWhenCrossOrigin),
"always" | "unsafe-url" => Some(ReferrerPolicy::UnsafeUrl), "always" | "unsafe-url" => Some(ReferrerPolicy::UnsafeUrl),
"" => Some(ReferrerPolicy::NoReferrer), "" => Some(ReferrerPolicy::default()),
_ => None, _ => None,
} }
} }

View file

@ -1519,8 +1519,8 @@ pub fn parse_a_sizes_attribute(value: DOMString) -> SourceSizeList {
fn get_correct_referrerpolicy_from_raw_token(token: &DOMString) -> DOMString { fn get_correct_referrerpolicy_from_raw_token(token: &DOMString) -> DOMString {
if token == "" { if token == "" {
// Empty token is treated as no-referrer inside determine_policy_for_token, // Empty token is treated as the default referrer policy inside determine_policy_for_token,
// while here it should be treated as the default value, so it should remain unchanged. // so it should remain unchanged.
DOMString::new() DOMString::new()
} else { } else {
match determine_policy_for_token(token) { match determine_policy_for_token(token) {
@ -1532,6 +1532,7 @@ fn get_correct_referrerpolicy_from_raw_token(token: &DOMString) -> DOMString {
} }
} }
#[allow(non_snake_case)]
impl HTMLImageElementMethods for HTMLImageElement { impl HTMLImageElementMethods for HTMLImageElement {
// https://html.spec.whatwg.org/multipage/#dom-image // https://html.spec.whatwg.org/multipage/#dom-image
fn Image( fn Image(

View file

@ -805,7 +805,7 @@ impl From<NetTraitsRequestMode> for RequestMode {
impl From<ReferrerPolicy> for MsgReferrerPolicy { impl From<ReferrerPolicy> for MsgReferrerPolicy {
fn from(policy: ReferrerPolicy) -> Self { fn from(policy: ReferrerPolicy) -> Self {
match policy { match policy {
ReferrerPolicy::_empty => MsgReferrerPolicy::NoReferrer, ReferrerPolicy::_empty => MsgReferrerPolicy::default(),
ReferrerPolicy::No_referrer => MsgReferrerPolicy::NoReferrer, ReferrerPolicy::No_referrer => MsgReferrerPolicy::NoReferrer,
ReferrerPolicy::No_referrer_when_downgrade => { ReferrerPolicy::No_referrer_when_downgrade => {
MsgReferrerPolicy::NoReferrerWhenDowngrade MsgReferrerPolicy::NoReferrerWhenDowngrade

View file

@ -1,21 +1,8 @@
[cors-preflight-referrer.any.worker.html] [cors-preflight-referrer.any.worker.html]
type: testharness type: testharness
[Referrer policy: "" and referrer: default]
expected: FAIL
[Referrer policy: "" and referrer: 'myreferrer']
expected: FAIL
[cors-preflight-referrer] [cors-preflight-referrer]
expected: FAIL expected: FAIL
[cors-preflight-referrer.any.html] [cors-preflight-referrer.any.html]
type: testharness type: testharness
[Referrer policy: "" and referrer: default]
expected: FAIL
[Referrer policy: "" and referrer: 'myreferrer']
expected: FAIL

View file

@ -1,84 +1,6 @@
[redirect-referrer.any.worker.html] [redirect-referrer.any.worker.html]
[Same origin redirection, empty init, unsafe-url redirect header ]
expected: FAIL
[Same origin redirection, empty init, no-referrer-when-downgrade redirect header ]
expected: FAIL
[Same origin redirection, empty init, same-origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, origin-when-cross-origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, strict-origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, strict-origin-when-cross-origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, unsafe-url redirect header ]
expected: FAIL
[Cross origin redirection, empty init, no-referrer-when-downgrade redirect header ]
expected: FAIL
[Cross origin redirection, empty init, origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, origin-when-cross-origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, strict-origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, strict-origin-when-cross-origin redirect header ]
expected: FAIL
[redirect-referrer] [redirect-referrer]
expected: FAIL expected: FAIL
[redirect-referrer.any.html] [redirect-referrer.any.html]
[Same origin redirection, empty init, unsafe-url redirect header ]
expected: FAIL
[Same origin redirection, empty init, no-referrer-when-downgrade redirect header ]
expected: FAIL
[Same origin redirection, empty init, same-origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, origin-when-cross-origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, strict-origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, strict-origin-when-cross-origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, unsafe-url redirect header ]
expected: FAIL
[Cross origin redirection, empty init, no-referrer-when-downgrade redirect header ]
expected: FAIL
[Cross origin redirection, empty init, origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, origin-when-cross-origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, strict-origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, strict-origin-when-cross-origin redirect header ]
expected: FAIL

View file

@ -1,14 +0,0 @@
[cors-preflight-referrer.any.worker.html]
[Referrer policy: "" and referrer: default]
expected: FAIL
[Referrer policy: "" and referrer: 'myreferrer']
expected: FAIL
[cors-preflight-referrer.any.html]
[Referrer policy: "" and referrer: default]
expected: FAIL
[Referrer policy: "" and referrer: 'myreferrer']
expected: FAIL

View file

@ -1,80 +0,0 @@
[redirect-referrer.any.html]
[Same origin redirection, empty init, unsafe-url redirect header ]
expected: FAIL
[Same origin redirection, empty init, no-referrer-when-downgrade redirect header ]
expected: FAIL
[Same origin redirection, empty init, same-origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, origin-when-cross-origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, strict-origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, strict-origin-when-cross-origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, unsafe-url redirect header ]
expected: FAIL
[Cross origin redirection, empty init, no-referrer-when-downgrade redirect header ]
expected: FAIL
[Cross origin redirection, empty init, origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, origin-when-cross-origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, strict-origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, strict-origin-when-cross-origin redirect header ]
expected: FAIL
[redirect-referrer.any.worker.html]
[Same origin redirection, empty init, unsafe-url redirect header ]
expected: FAIL
[Same origin redirection, empty init, no-referrer-when-downgrade redirect header ]
expected: FAIL
[Same origin redirection, empty init, same-origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, origin-when-cross-origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, strict-origin redirect header ]
expected: FAIL
[Same origin redirection, empty init, strict-origin-when-cross-origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, unsafe-url redirect header ]
expected: FAIL
[Cross origin redirection, empty init, no-referrer-when-downgrade redirect header ]
expected: FAIL
[Cross origin redirection, empty init, origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, origin-when-cross-origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, strict-origin redirect header ]
expected: FAIL
[Cross origin redirection, empty init, strict-origin-when-cross-origin redirect header ]
expected: FAIL