Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

// META: script=/common/get-host-info.sub.js
// META: script=/common/utils.js
// META: script=/fetch/fetch-later/resources/fetch-later-helper.js
// META: script=/fetch/fetch-later/quota/resources/helper.js
'use strict';
const {HTTPS_ORIGIN, HTTPS_NOTSAMESITE_ORIGIN} = get_host_info();
for (const dataType in BeaconDataType) {
// Tests multiple request reporting origins within same document.
test(
() => {
const controller = new AbortController();
// Makes the 1st call (POST) that sends max/2+1 quota to `HTTPS_ORIGIN`.
fetchLater(`${HTTPS_ORIGIN}/`, {
method: 'POST',
signal: controller.signal,
body: makeBeaconData(
generatePayload(QUOTA_PER_REPORTING_ORIGIN / 2 + 1), dataType)
});
// Makes the 2nd call (POST) that sends max/2+1 of allowed quota, but to
// a different reporting origin `HTTPS_NOTSAMESITE_ORIGIN`.
fetchLater(`${HTTPS_NOTSAMESITE_ORIGIN}/`, {
method: 'POST',
signal: controller.signal,
body: makeBeaconData(
generatePayload(QUOTA_PER_REPORTING_ORIGIN / 2 + 1), dataType)
});
// Makes the 3rd call (GET) to `HTTPS_NOTSAMESITE_ORIGIN`.
fetchLater(`${HTTPS_NOTSAMESITE_ORIGIN}/`, {
method: 'GET',
signal: controller.signal,
});
// Release quota taken by the pending requests for subsequent tests.
controller.abort();
},
`fetchLater() has per-request-origin quota for its POST body of ${
dataType}.`);
}