test_getUsageForPrincipal.js (2422B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 async function testSteps() { 7 const principal = getPrincipal("http://localhost"); 8 9 const resultBeforeInstall = { 10 databaseUsage: 0, 11 fileUsage: 0, 12 usage: 0, 13 }; 14 15 const resultAfterInstall = { 16 databaseUsage: 147456, 17 fileUsage: 0, 18 usage: 147456, 19 }; 20 21 function verifyResult(result, expectedResult) { 22 ok( 23 result instanceof Ci.nsIQuotaOriginUsageResult, 24 "The result is nsIQuotaOriginUsageResult instance" 25 ); 26 27 Assert.strictEqual( 28 result.databaseUsage, 29 expectedResult.databaseUsage, 30 "Database usage equals" 31 ); 32 Assert.strictEqual( 33 result.fileUsage, 34 expectedResult.fileUsage, 35 "File usage equals" 36 ); 37 Assert.strictEqual( 38 result.usage, 39 expectedResult.usage, 40 "Total usage equals" 41 ); 42 } 43 44 info("Clearing"); 45 46 let request = clear(); 47 await requestFinished(request); 48 49 info("Getting origin usage"); 50 51 request = getOriginUsage(principal); 52 let result = await requestFinished(request); 53 54 info("Verifying result"); 55 56 verifyResult(result, resultBeforeInstall); 57 58 info("Clearing"); 59 60 request = clear(); 61 await requestFinished(request); 62 63 info("Installing package"); 64 65 // The profile contains IndexedDB databases placed across the repositories. 66 // The file make_getUsageForPrincipal.js was run locally, specifically it was 67 // temporarily enabled in xpcshell.toml and then executed: 68 // mach test --interactive dom/quota/test/xpcshell/make_getUsageForPrincipal.js 69 installPackage("getUsageForPrincipal_profile"); 70 71 info("Getting origin usage"); 72 73 request = getOriginUsage(principal); 74 result = await requestFinished(request); 75 76 info("Verifying result"); 77 78 verifyResult(result, resultAfterInstall); 79 80 info("Getting origin usage"); 81 82 Services.prefs.setIntPref( 83 "dom.quotaManager.originOperations.pauseOnIOThreadMs", 84 1000 85 ); 86 87 request = getOriginUsage(principal); 88 89 info("Cancelling request"); 90 91 request.cancel(); 92 93 try { 94 result = await requestFinished(request); 95 ok(false, "Should have thrown"); 96 } catch (e) { 97 ok(true, "Should have thrown"); 98 Assert.strictEqual( 99 e.resultCode, 100 NS_ERROR_FAILURE, 101 "Threw right result code" 102 ); 103 } 104 105 Services.prefs.clearUserPref( 106 "dom.quotaManager.originOperations.pauseOnIOThreadMs" 107 ); 108 }