Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/**
* Any copyright is dedicated to the Public Domain.
*/
async function testSteps() {
const principal = getPrincipal("http://localhost");
const resultBeforeInstall = {
databaseUsage: 0,
fileUsage: 0,
usage: 0,
};
const resultAfterInstall = {
databaseUsage: 147456,
fileUsage: 0,
usage: 147456,
};
function verifyResult(result, expectedResult) {
ok(
result instanceof Ci.nsIQuotaOriginUsageResult,
"The result is nsIQuotaOriginUsageResult instance"
);
Assert.strictEqual(
result.databaseUsage,
expectedResult.databaseUsage,
"Database usage equals"
);
Assert.strictEqual(
result.fileUsage,
expectedResult.fileUsage,
"File usage equals"
);
Assert.strictEqual(
result.usage,
expectedResult.usage,
"Total usage equals"
);
}
info("Clearing");
let request = clear();
await requestFinished(request);
info("Getting origin usage");
request = getOriginUsage(principal);
let result = await requestFinished(request);
info("Verifying result");
verifyResult(result, resultBeforeInstall);
info("Clearing");
request = clear();
await requestFinished(request);
info("Installing package");
// The profile contains IndexedDB databases placed across the repositories.
// The file make_getUsageForPrincipal.js was run locally, specifically it was
// temporarily enabled in xpcshell.ini and then executed:
// mach test --interactive dom/quota/test/xpcshell/make_getUsageForPrincipal.js
installPackage("getUsageForPrincipal_profile");
info("Getting origin usage");
request = getOriginUsage(principal);
result = await requestFinished(request);
info("Verifying result");
verifyResult(result, resultAfterInstall);
info("Getting origin usage");
Services.prefs.setIntPref(
"dom.quotaManager.originOperations.pauseOnIOThreadMs",
1000
);
request = getOriginUsage(principal);
info("Cancelling request");
request.cancel();
try {
result = await requestFinished(request);
ok(false, "Should have thrown");
} catch (e) {
ok(true, "Should have thrown");
Assert.strictEqual(
e.resultCode,
NS_ERROR_FAILURE,
"Threw right result code"
);
}
Services.prefs.clearUserPref(
"dom.quotaManager.originOperations.pauseOnIOThreadMs"
);
}