/* 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 );
async
function test_referrer_policy(input, expected_results) {
// reset the count
let headers =
new Headers();
headers.append(
"X-Early-Hint-Count-Start" ,
"" );
await fetch(
"https://example.com/browser/netwerk/test/browser/early_hint_pixel_count.sjs ",
{ headers }
);
await fetch(
"https://example.com/browser/netwerk/test/browser/early_hint_referrer_policy_html.sjs?action=reset_referrer_results "
);
let requestUrl = `https:
//example.com/browser/netwerk/test/browser/early_hint_referrer_policy_html.sjs?as=${
input.resource_type
}&hinted=${input.hinted ?
"1" :
"0" }${
input.header_referrer_policy
?
"&header_referrer_policy=" + input.header_referrer_policy
:
""
}
${
input.link_referrer_policy
?
"&link_referrer_policy=" + input.link_referrer_policy
:
""
}`;
await BrowserTestUtils.withNewTab(
{
gBrowser,
url: requestUrl,
waitForLoad:
true ,
},
async
function () {}
);
let gotRequestCount = await fetch(
"https://example.com/browser/netwerk/test/browser/early_hint_pixel_count.sjs "
).then(response => response.json());
// Retrieve the request referrer from the server
let referrer_response = await fetch(
"https://example.com/browser/netwerk/test/browser/early_hint_referrer_policy_html.sjs?action=get_request_referrer_results "
).then(response => response.text());
Assert .ok(
referrer_response === expected_results.referrer,
"Request referrer matches expected - " + input.test_name
);
await
Assert .deepEqual(
gotRequestCount,
{ hinted: expected_results.hinted, normal: expected_results.normal },
`${input.testName} (${input.resource_type}): Unexpected amount of requests made`
);
}
add_task(async
function test_103_referrer_policies() {
let tests = [
{
input: {
test_name:
"image - no policies" ,
resource_type:
"image" ,
header_referrer_policy:
"" ,
link_referrer_policy:
"" ,
hinted:
true ,
},
expected: {
hinted: 1,
normal: 0,
referrer:
"https://example.com/browser/netwerk/test/browser/early_hint_referrer_policy_html.sjs?as=image &hinted=1",
},
},
{
input: {
test_name:
"image - origin on header" ,
resource_type:
"image" ,
header_referrer_policy:
"origin" ,
link_referrer_policy:
"" ,
hinted:
true ,
},
expected: { hinted: 1, normal: 0, referrer:
"https://example.com/ " },
},
{
input: {
test_name:
"image - origin on link" ,
resource_type:
"image" ,
header_referrer_policy:
"" ,
link_referrer_policy:
"origin" ,
hinted:
true ,
},
expected: { hinted: 1, normal: 0, referrer:
"https://example.com/ " },
},
{
input: {
test_name:
"image - origin on both" ,
resource_type:
"image" ,
header_referrer_policy:
"origin" ,
link_referrer_policy:
"origin" ,
hinted:
true ,
},
expected: { hinted: 1, normal: 0, referrer:
"https://example.com/ " },
},
{
input: {
test_name:
"image - no-referrer on header" ,
resource_type:
"image" ,
header_referrer_policy:
"no-referrer" ,
link_referrer_policy:
"" ,
hinted:
true ,
},
expected: { hinted: 1, normal: 0, referrer:
"" },
},
{
input: {
test_name:
"image - no-referrer on link" ,
resource_type:
"image" ,
header_referrer_policy:
"" ,
link_referrer_policy:
"no-referrer" ,
hinted:
true ,
},
expected: { hinted: 1, normal: 0, referrer:
"" },
},
{
input: {
test_name:
"image - no-referrer on both" ,
resource_type:
"image" ,
header_referrer_policy:
"no-referrer" ,
link_referrer_policy:
"no-referrer" ,
hinted:
true ,
},
expected: { hinted: 1, normal: 0, referrer:
"" },
},
{
// link referrer policy takes precedence
input: {
test_name:
"image - origin on header, no-referrer on link" ,
resource_type:
"image" ,
header_referrer_policy:
"origin" ,
link_referrer_policy:
"no-referrer" ,
hinted:
true ,
},
expected: { hinted: 1, normal: 0, referrer:
"" },
},
{
// link referrer policy takes precedence
input: {
test_name:
"image - no-referrer on header, origin on link" ,
resource_type:
"image" ,
header_referrer_policy:
"no-referrer" ,
link_referrer_policy:
"origin" ,
hinted:
true ,
},
expected: { hinted: 1, normal: 0, referrer:
"https://example.com/ " },
},
];
for (let test of tests) {
await test_referrer_policy(test.input, test.expected);
}
});
Messung V0.5 C=92 H=89 G=90
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland