test_initializeAllTemporaryOrigins.js (3209B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 const { PrincipalUtils } = ChromeUtils.importESModule( 7 "resource://testing-common/dom/quota/test/modules/PrincipalUtils.sys.mjs" 8 ); 9 const { QuotaUtils } = ChromeUtils.importESModule( 10 "resource://testing-common/dom/quota/test/modules/QuotaUtils.sys.mjs" 11 ); 12 13 async function testInitializeAllTemporaryOrigins() { 14 const principal = PrincipalUtils.createPrincipal("https://example.com"); 15 16 // Preparation phase: simulating an existing profile with pre-existing 17 // storage. At least one temporary origin must already exist. 18 info("Initializing storage"); 19 20 { 21 const request = Services.qms.init(); 22 await QuotaUtils.requestFinished(request); 23 } 24 25 info("Initializing temporary storage"); 26 27 { 28 const request = Services.qms.initTemporaryStorage(); 29 await QuotaUtils.requestFinished(request); 30 } 31 32 info("Initializing temporary origin"); 33 34 { 35 const request = Services.qms.initializeTemporaryOrigin( 36 "default", 37 principal, 38 /* aCreateIfNonExistent */ true 39 ); 40 await QuotaUtils.requestFinished(request); 41 } 42 43 // Restore the original uninitialized state to force reinitialization of both 44 // storage and temporary storage. 45 info("Shutting down storage"); 46 47 { 48 const request = Services.qms.reset(); 49 await QuotaUtils.requestFinished(request); 50 } 51 52 // Reinitialize storage and temporary storage. 53 info("Initializing storage"); 54 55 { 56 const request = Services.qms.init(); 57 await QuotaUtils.requestFinished(request); 58 } 59 60 info("Initializing temporary storage"); 61 62 { 63 const request = Services.qms.initTemporaryStorage(); 64 await QuotaUtils.requestFinished(request); 65 } 66 67 // Temporary storage initialization shouldn't initialize origins when lazy 68 // origin initialization is enabled. 69 info("Verifying temporary origin"); 70 71 { 72 const request = Services.qms.temporaryOriginInitialized( 73 "default", 74 principal 75 ); 76 const initialized = await QuotaUtils.requestFinished(request); 77 Assert.ok(!initialized, "Temporary origin is not initialized"); 78 } 79 80 // Now trigger the initialization of all temporary origins, which normally 81 // happens automatically when incremental origin initialization is enabled 82 // and temporary storage initialization is complete. 83 info("Initializing all temporary origins"); 84 85 { 86 const request = Services.qms.initializeAllTemporaryOrigins(); 87 await QuotaUtils.requestFinished(request); 88 } 89 90 // The temporary origin should be now initialized. 91 info("Verifying temporary origin"); 92 93 { 94 const request = Services.qms.temporaryOriginInitialized( 95 "default", 96 principal 97 ); 98 const initialized = await QuotaUtils.requestFinished(request); 99 Assert.ok(initialized, "Temporary origin is initialized"); 100 } 101 } 102 103 /* exported testSteps */ 104 async function testSteps() { 105 add_task( 106 { 107 pref_set: [ 108 ["dom.quotaManager.temporaryStorage.lazyOriginInitialization", true], 109 ["dom.quotaManager.loadQuotaFromCache", false], 110 ["dom.quotaManager.loadQuotaFromSecondaryCache", false], 111 ], 112 }, 113 testInitializeAllTemporaryOrigins 114 ); 115 }