Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- Manifest: dom/quota/test/xpcshell/xpcshell.toml
/**
* Any copyright is dedicated to the Public Domain.
*/
/**
* Verifies that the QuotaManager observer participates correctly in the
* clearPrivateBrowsingData() collector pattern:
* - The PBMCleanupCallback fires after storage is cleared.
* - The callback fires even when no private storage exists (no-op path).
* - onDataDeleted receives flags=0 on success.
*/
function clearPrivateBrowsingViaService() {
return new Promise((resolve, reject) => {
try {
Services.clearData.clearPrivateBrowsingData({
onDataDeleted(aFailedFlags) {
resolve(aFailedFlags);
},
});
} catch (e) {
reject(e);
}
});
}
async function testSteps() {
const packages = [
"clearStoragesForPrivateBrowsing_profile",
"defaultStorageDirectory_shared",
];
info("Test 1: Callback fires after storage is cleared");
info("Clearing existing storage");
let request = clear();
await requestFinished(request);
info("Verifying storage is empty before install");
verifyStorage(packages, "beforeInstall");
info("Installing private browsing storage package");
installPackages(packages);
info("Verifying storage is present after install");
verifyStorage(packages, "afterInstall");
info("Calling clearPrivateBrowsingData() and awaiting callback");
let flags = await clearPrivateBrowsingViaService();
Assert.equal(flags, 0, "onDataDeleted received flags=0 (success)");
info("Verifying storage is cleared after clearPrivateBrowsingData()");
verifyStorage(packages, "afterClearPrivateBrowsing");
info("Test 2: Callback fires when no private storage exists");
info("Clearing storage");
request = clear();
await requestFinished(request);
info("Calling clearPrivateBrowsingData() on empty profile");
flags = await clearPrivateBrowsingViaService();
Assert.equal(
flags,
0,
"onDataDeleted received flags=0 even with no private storage"
);
}