/** * Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ 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" ); }