Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
const {
profiles,
PROFILE_CONSTANTS,
} = require("resource://devtools/client/shared/components/throttling/profiles.js");
const offlineProfile = profiles.find(
profile => profile.id === PROFILE_CONSTANTS.OFFLINE
);
const CACHED_URL = STATUS_CODES_SJS + "?sts=ok&cached&test_cached";
add_task(async function () {
const { monitor } = await initNetMonitor(SIMPLE_URL, { requestCount: 1 });
const { connector } = monitor.panelWin;
const { updateNetworkThrottling } = connector;
// Throttle the network before entering the content process
await pushPref("devtools.cache.disabled", false);
await updateNetworkThrottling(true, offlineProfile);
// Clear the cache beforehand
Services.cache2.clear();
// The request is blocked since the profile is offline
await SpecialPowers.spawn(
gBrowser.selectedBrowser,
[CACHED_URL],
async url => {
try {
await content.fetch(url);
ok(false, "Should not load since profile is offline");
} catch (err) {
is(err.name, "TypeError", "Should fail since profile is offline");
}
}
);
// Disable throttling
await pushPref("devtools.cache.disabled", false);
await updateNetworkThrottling(false);
// Fetch to prime the cache
await SpecialPowers.spawn(
gBrowser.selectedBrowser,
[CACHED_URL],
async url => {
await content.fetch(url);
}
);
// Set profile to offline again
await pushPref("devtools.cache.disabled", false);
await updateNetworkThrottling(true, offlineProfile);
// Check that cached resource loaded
await SpecialPowers.spawn(
gBrowser.selectedBrowser,
[CACHED_URL],
async url => {
await content.fetch(url);
}
);
await teardown(monitor);
});