Backed out changeset 120838b58449 (bug 1771867) Backed out changeset aea7ca0bbd17 (bug 1771867) Backed out changeset 2fe2afdee09d (bug 1771867) Backed out changeset 8bdb1f682d22 (bug 1771867) Backed out changeset a9f3158ed688 (bug 1771867) Backed out changeset 1177913e1edf (bug 1771867) Backed out changeset d33ccbbf407d (bug 1771867) Backed out changeset 110ac12e16f5 (bug 1771867) Backed out changeset 7f20525f5e94 (bug 1771867) Backed out changeset b3d65b1aa872 (bug 1771867) Backed out changeset 7cdf3cef2773 (bug 1771867) Backed out changeset 5090eae24a5c (bug 1771867) Backed out changeset f8a03d226c73 (bug 1771867)
140 lines
4.6 KiB
JavaScript
140 lines
4.6 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
Services.prefs.setBoolPref("network.early-hints.enabled", true);
|
|
|
|
const { lax_request_count_checking } = ChromeUtils.import(
|
|
"resource://testing-common/early_hint_preload_test_helper.jsm"
|
|
);
|
|
|
|
// - testName is just there to be printed during Asserts when failing
|
|
// - asset is the asset type, see early_hint_asset_html.sjs for possible values
|
|
// for the asset type fetch see test_hint_fetch due to timing issues
|
|
// - hinted: when true, the server reponds with "103 Early Hints"-header
|
|
async function test_hint_asset(testName, asset, hinted) {
|
|
// reset the count
|
|
let headers = new Headers();
|
|
headers.append("X-Early-Hint-Count-Start", "");
|
|
await fetch(
|
|
"http://example.com/browser/netwerk/test/browser/early_hint_pixel_count.sjs",
|
|
{ headers }
|
|
);
|
|
|
|
let requestUrl = `https://example.com/browser/netwerk/test/browser/early_hint_asset_html.sjs?as=${asset}&hinted=${
|
|
hinted ? "1" : "0"
|
|
}`;
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{
|
|
gBrowser,
|
|
url: requestUrl,
|
|
waitForLoad: true,
|
|
},
|
|
async function() {}
|
|
);
|
|
|
|
let gotRequestCount = await fetch(
|
|
"http://example.com/browser/netwerk/test/browser/early_hint_pixel_count.sjs"
|
|
).then(response => response.json());
|
|
|
|
// TODO: Switch to stricter counting method after fixing https://bugzilla.mozilla.org/show_bug.cgi?id=1753730#c11
|
|
await lax_request_count_checking(
|
|
`${testName} (${asset})`,
|
|
gotRequestCount,
|
|
hinted ? { hinted: 1, normal: 0 } : { hinted: 0, normal: 1 }
|
|
);
|
|
/*
|
|
await Assert.deepEqual(
|
|
gotRequestCount,
|
|
hinted ? { hinted: 1, normal: 0 } : { hinted: 0, normal: 1 },
|
|
`${testName} (${asset}): Unexpected amount of requests made`
|
|
);
|
|
*/
|
|
}
|
|
|
|
// preload image
|
|
add_task(async function test_103_asset_style() {
|
|
await test_hint_asset("test_103_asset_hinted", "image", true);
|
|
await test_hint_asset("test_103_asset_normal", "image", false);
|
|
});
|
|
|
|
// preload css
|
|
add_task(async function test_103_asset_style() {
|
|
await test_hint_asset("test_103_asset_hinted", "style", true);
|
|
await test_hint_asset("test_103_asset_normal", "style", false);
|
|
});
|
|
|
|
// preload javascript
|
|
add_task(async function test_103_asset_javascript() {
|
|
await test_hint_asset("test_103_asset_hinted", "script", true);
|
|
await test_hint_asset("test_103_asset_normal", "script", false);
|
|
});
|
|
|
|
// preload font
|
|
add_task(async function test_103_asset_font() {
|
|
await test_hint_asset("test_103_asset_hinted", "font", true);
|
|
await test_hint_asset("test_103_asset_normal", "font", false);
|
|
});
|
|
|
|
// - testName is just there to be printed during Asserts when failing
|
|
// - asset is the asset type, see early_hint_asset_html.sjs for possible values
|
|
// - hinted: when true, the server reponds with "103 Early Hints"-header
|
|
async function test_hint_fetch(testName, hinted) {
|
|
// reset the count
|
|
let headers = new Headers();
|
|
headers.append("X-Early-Hint-Count-Start", "");
|
|
await fetch(
|
|
"http://example.com/browser/netwerk/test/browser/early_hint_pixel_count.sjs",
|
|
{ headers }
|
|
);
|
|
|
|
let requestUrl = `https://example.com/browser/netwerk/test/browser/early_hint_asset_html.sjs?as=fetch&hinted=${
|
|
hinted ? "1" : "0"
|
|
}`;
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{
|
|
gBrowser,
|
|
url: requestUrl,
|
|
waitForLoad: true,
|
|
},
|
|
async function(browser) {
|
|
// wait until the fetch is complete
|
|
await TestUtils.waitForCondition(_ => {
|
|
return SpecialPowers.spawn(browser, [], _ => {
|
|
return (
|
|
content.document.getElementsByTagName("h2")[0] != undefined &&
|
|
content.document.getElementsByTagName("h2")[0].textContent !==
|
|
"Fetching..." // default text set by early_hint_asset_html.sjs
|
|
);
|
|
});
|
|
});
|
|
}
|
|
);
|
|
|
|
let gotRequestCount = await fetch(
|
|
"http://example.com/browser/netwerk/test/browser/early_hint_pixel_count.sjs"
|
|
).then(response => response.json());
|
|
|
|
// TODO: Switch to stricter counting method after fixing https://bugzilla.mozilla.org/show_bug.cgi?id=1753730#c11
|
|
await lax_request_count_checking(
|
|
`${testName} (fetch)`,
|
|
gotRequestCount,
|
|
hinted ? { hinted: 1, normal: 0 } : { hinted: 0, normal: 1 }
|
|
);
|
|
/*
|
|
await Assert.deepEqual(
|
|
gotRequestCount,
|
|
hinted ? { hinted: 1, normal: 0 } : { hinted: 0, normal: 1 },
|
|
`${testName} (fetch): Unexpected amount of requests made`
|
|
);
|
|
*/
|
|
}
|
|
|
|
// preload fetch
|
|
add_task(async function test_103_asset_fetch() {
|
|
await test_hint_fetch("test_103_asset_hinted", true);
|
|
await test_hint_fetch("test_103_asset_normal", false);
|
|
});
|