Bug 1694202 - Avoid link preload header and the parser creating two preload requests for the same script. r=smaug

Differential Revision: https://phabricator.services.mozilla.com/D106022
This commit is contained in:
Emilio Cobos Álvarez 2021-02-23 00:43:37 +00:00
parent 8f71d41341
commit e7806ac06c
3 changed files with 11 additions and 3 deletions

View File

@ -1122,6 +1122,10 @@ void nsHtml5TreeOpExecutor::PreloadScript(
if (!uri) {
return;
}
auto key = PreloadHashKey::CreateAsScript(uri, aCrossOrigin, aType);
if (mDocument->Preloads().PreloadExists(key)) {
return;
}
mDocument->ScriptLoader()->PreloadURI(
uri, aCharset, aType, aCrossOrigin, aIntegrity, aScriptFromHead, aAsync,
aDefer, aNoModule, aLinkPreload,

View File

@ -7,6 +7,7 @@
-->
<link rel="preload" as="style" crossorigin href="resources/dummy.css?link-header-crossorigin-preload2">
<link rel="stylesheet" crossorigin href="resources/dummy.css?link-header-crossorigin-preload2">
<script src="resources/dummy.js?link-header-preload2"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/preload/resources/preload_helper.js"></script>
@ -18,7 +19,8 @@
function check_finished() {
if (numberOfResourceTimingEntries("resources/square.png?link-header-preload") == 1 &&
numberOfResourceTimingEntries("resources/dummy.js?link-header-preload") == 1 &&
numberOfResourceTimingEntries("resources/dummy.js?link-header-preload1") == 1 &&
numberOfResourceTimingEntries("resources/dummy.js?link-header-preload2") == 1 &&
numberOfResourceTimingEntries("resources/dummy.css?link-header-preload") == 1 &&
numberOfResourceTimingEntries("resources/dummy.css?link-header-crossorigin-preload1") == 1 &&
numberOfResourceTimingEntries("resources/dummy.css?link-header-crossorigin-preload2") == 1) {
@ -28,7 +30,8 @@
if (iterations == 10) {
// At least one is expected to fail, but this should give details to the exact failure(s).
verifyNumberOfResourceTimingEntries("resources/square.png?link-header-preload", 1);
verifyNumberOfResourceTimingEntries("resources/dummy.js?link-header-preload", 1);
verifyNumberOfResourceTimingEntries("resources/dummy.js?link-header-preload1", 1);
verifyNumberOfResourceTimingEntries("resources/dummy.js?link-header-preload2", 1);
verifyNumberOfResourceTimingEntries("resources/dummy.css?link-header-preload", 1);
verifyNumberOfResourceTimingEntries("resources/dummy.css?link-header-crossorigin-preload1", 1);
verifyNumberOfResourceTimingEntries("resources/dummy.css?link-header-crossorigin-preload2", 1);

View File

@ -1,4 +1,5 @@
Link: </preload/resources/dummy.js?link-header-preload>;rel=preload;as=script
Link: </preload/resources/dummy.js?link-header-preload1>;rel=preload;as=script
Link: </preload/resources/dummy.js?link-header-preload2>;rel=preload;as=script
Link: </preload/resources/dummy.css?link-header-preload>;rel=preload;as=style
Link: </preload/resources/square.png?link-header-preload>;rel=preload;as=image
Link: </preload/resources/dummy.css?link-header-crossorigin-preload1>;rel=preload;as=style;crossorigin