From 82bbff45b30a567d779296f5611fd3ef65f6f16a Mon Sep 17 00:00:00 2001 From: shanehandley <1322294+shanehandley@users.noreply.github.com> Date: Sat, 30 Nov 2024 17:15:36 +1100 Subject: [PATCH] Retain the referrer policy when loading an about:blank iframe. (#34432) This allows the referrer policy to be inherited correctly by the iframe. Signed-off-by: Shane Handley --- components/script/script_thread.rs | 11 ++++------- .../iframe-inheritance-about-blank.html.ini | 4 ---- .../iframe-inheritance-javascript-child.html.ini | 6 ------ .../iframe-inheritance-javascript.html.ini | 3 --- .../popup-inheritance-about-blank.html.ini | 4 ---- .../iframe-inheritance-about-blank.html.ini | 4 ---- .../iframe-inheritance-javascript-child.html.ini | 6 ------ .../iframe-inheritance-javascript.html.ini | 3 --- .../popup-inheritance-about-blank.html.ini | 4 ---- 9 files changed, 4 insertions(+), 41 deletions(-) delete mode 100644 tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html.ini delete mode 100644 tests/wpt/meta/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html.ini diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index 55bd003915f..3565f646c7c 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -2985,7 +2985,7 @@ impl ScriptThread { load_data.inherited_secure_context, ); if load_data.url.as_str() == "about:blank" { - self.start_page_load_about_blank(new_load, load_data.js_eval_result); + self.start_page_load_about_blank(new_load, load_data); } else if load_data.url.as_str() == "about:srcdoc" { self.page_load_about_srcdoc(new_load, load_data); } else { @@ -4207,11 +4207,7 @@ impl ScriptThread { /// Synchronously fetch `about:blank`. Stores the `InProgressLoad` /// argument until a notification is received that the fetch is complete. - fn start_page_load_about_blank( - &self, - incomplete: InProgressLoad, - js_eval_result: Option, - ) { + fn start_page_load_about_blank(&self, incomplete: InProgressLoad, load_data: LoadData) { let id = incomplete.pipeline_id; self.incomplete_loads.borrow_mut().push(incomplete); @@ -4221,10 +4217,11 @@ impl ScriptThread { let mut meta = Metadata::default(url); meta.set_content_type(Some(&mime::TEXT_HTML)); + meta.set_referrer_policy(load_data.referrer_policy); // If this page load is the result of a javascript scheme url, map // the evaluation result into a response. - let chunk = match js_eval_result { + let chunk = match load_data.js_eval_result { Some(JsEvalResult::Ok(content)) => content, Some(JsEvalResult::NoContent) => { meta.status = http::StatusCode::NO_CONTENT.into(); diff --git a/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/iframe-inheritance-about-blank.html.ini b/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/iframe-inheritance-about-blank.html.ini index e677ad7aa84..bcc3d36e880 100644 --- a/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/iframe-inheritance-about-blank.html.ini +++ b/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/iframe-inheritance-about-blank.html.ini @@ -1,7 +1,3 @@ [iframe-inheritance-about-blank.html] [The value of document.referrer in an about:blank iframe is the outer document's full URL, regardless of referrer policy] expected: FAIL - - [The fetch() API in an about:blank iframe with a custom URL referrer is fetched with a 'Referer` header that uses the outer document's URL along with its referrer policy] - expected: FAIL - diff --git a/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html.ini b/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html.ini index 9f66c01f84c..ba62a9cfa9e 100644 --- a/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html.ini +++ b/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html.ini @@ -1,9 +1,3 @@ [iframe-inheritance-javascript-child.html] - [Referrer Policy: iframes with javascript url reuse referrer policy 1] - expected: FAIL - [Referrer Policy: iframes with javascript url reuse referrer policy 2] expected: FAIL - - [Referrer Policy: iframes with javascript url reuse referrer policy] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html.ini b/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html.ini deleted file mode 100644 index 9fd9b80a88a..00000000000 --- a/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[iframe-inheritance-javascript.html] - [Referrer Policy: iframes with javascript url reuse referrer policy 1] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/popup-inheritance-about-blank.html.ini b/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/popup-inheritance-about-blank.html.ini index f36329c8cda..436dd87b9df 100644 --- a/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/popup-inheritance-about-blank.html.ini +++ b/tests/wpt/meta-legacy-layout/referrer-policy/generic/inheritance/popup-inheritance-about-blank.html.ini @@ -1,7 +1,3 @@ [popup-inheritance-about-blank.html] - [The fetch() API in an about:blank popup with a custom URL referrer is fetched with a 'Referer` header that uses the outer document's URL along with its referrer policy] - expected: FAIL - [The value of document.referrer in an about:blank popup is the outer document's full URL, regardless of referrer policy] expected: FAIL - diff --git a/tests/wpt/meta/referrer-policy/generic/inheritance/iframe-inheritance-about-blank.html.ini b/tests/wpt/meta/referrer-policy/generic/inheritance/iframe-inheritance-about-blank.html.ini index e677ad7aa84..bcc3d36e880 100644 --- a/tests/wpt/meta/referrer-policy/generic/inheritance/iframe-inheritance-about-blank.html.ini +++ b/tests/wpt/meta/referrer-policy/generic/inheritance/iframe-inheritance-about-blank.html.ini @@ -1,7 +1,3 @@ [iframe-inheritance-about-blank.html] [The value of document.referrer in an about:blank iframe is the outer document's full URL, regardless of referrer policy] expected: FAIL - - [The fetch() API in an about:blank iframe with a custom URL referrer is fetched with a 'Referer` header that uses the outer document's URL along with its referrer policy] - expected: FAIL - diff --git a/tests/wpt/meta/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html.ini b/tests/wpt/meta/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html.ini index 9f66c01f84c..ba62a9cfa9e 100644 --- a/tests/wpt/meta/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html.ini +++ b/tests/wpt/meta/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html.ini @@ -1,9 +1,3 @@ [iframe-inheritance-javascript-child.html] - [Referrer Policy: iframes with javascript url reuse referrer policy 1] - expected: FAIL - [Referrer Policy: iframes with javascript url reuse referrer policy 2] expected: FAIL - - [Referrer Policy: iframes with javascript url reuse referrer policy] - expected: FAIL diff --git a/tests/wpt/meta/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html.ini b/tests/wpt/meta/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html.ini deleted file mode 100644 index 9fd9b80a88a..00000000000 --- a/tests/wpt/meta/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[iframe-inheritance-javascript.html] - [Referrer Policy: iframes with javascript url reuse referrer policy 1] - expected: FAIL diff --git a/tests/wpt/meta/referrer-policy/generic/inheritance/popup-inheritance-about-blank.html.ini b/tests/wpt/meta/referrer-policy/generic/inheritance/popup-inheritance-about-blank.html.ini index f36329c8cda..436dd87b9df 100644 --- a/tests/wpt/meta/referrer-policy/generic/inheritance/popup-inheritance-about-blank.html.ini +++ b/tests/wpt/meta/referrer-policy/generic/inheritance/popup-inheritance-about-blank.html.ini @@ -1,7 +1,3 @@ [popup-inheritance-about-blank.html] - [The fetch() API in an about:blank popup with a custom URL referrer is fetched with a 'Referer` header that uses the outer document's URL along with its referrer policy] - expected: FAIL - [The value of document.referrer in an about:blank popup is the outer document's full URL, regardless of referrer policy] expected: FAIL -