Bug 1950564 - QM: Add a new testing only notification for group initialization; r=dom-storage-reviewers,jstutte
Differential Revision: https://phabricator.services.mozilla.com/D240603
This commit is contained in:
@@ -5850,6 +5850,8 @@ Result<Ok, nsresult> QuotaManager::EnsureTemporaryGroupIsInitializedInternal(
|
|||||||
|
|
||||||
const auto innerFunc = [&aPrincipalMetadata,
|
const auto innerFunc = [&aPrincipalMetadata,
|
||||||
this](const auto&) -> mozilla::Result<Ok, nsresult> {
|
this](const auto&) -> mozilla::Result<Ok, nsresult> {
|
||||||
|
NotifyGroupInitializationStarted(*this);
|
||||||
|
|
||||||
const auto& array =
|
const auto& array =
|
||||||
mIOThreadAccessible.Access()->mAllTemporaryOrigins.Lookup(
|
mIOThreadAccessible.Access()->mAllTemporaryOrigins.Lookup(
|
||||||
aPrincipalMetadata.mGroup);
|
aPrincipalMetadata.mGroup);
|
||||||
|
|||||||
@@ -50,6 +50,14 @@ void NotifyClientDirectoryOpeningStarted(QuotaManager& aQuotaManager) {
|
|||||||
NotifyObserversOnMainThread("QuotaManager::ClientDirectoryOpeningStarted");
|
NotifyObserversOnMainThread("QuotaManager::ClientDirectoryOpeningStarted");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NotifyGroupInitializationStarted(QuotaManager& aQuotaManager) {
|
||||||
|
if (!StaticPrefs::dom_quotaManager_testing()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
NotifyObserversOnMainThread("QuotaManager::GroupInitializationStarted");
|
||||||
|
}
|
||||||
|
|
||||||
void NotifyOriginInitializationStarted(QuotaManager& aQuotaManager) {
|
void NotifyOriginInitializationStarted(QuotaManager& aQuotaManager) {
|
||||||
if (!StaticPrefs::dom_quotaManager_testing()) {
|
if (!StaticPrefs::dom_quotaManager_testing()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ void NotifyMaintenanceStarted(QuotaManager& aQuotaManager);
|
|||||||
|
|
||||||
void NotifyClientDirectoryOpeningStarted(QuotaManager& aQuotaManager);
|
void NotifyClientDirectoryOpeningStarted(QuotaManager& aQuotaManager);
|
||||||
|
|
||||||
|
void NotifyGroupInitializationStarted(QuotaManager& aQuotaManager);
|
||||||
|
|
||||||
void NotifyOriginInitializationStarted(QuotaManager& aQuotaManager);
|
void NotifyOriginInitializationStarted(QuotaManager& aQuotaManager);
|
||||||
|
|
||||||
} // namespace mozilla::dom::quota
|
} // namespace mozilla::dom::quota
|
||||||
|
|||||||
49
dom/quota/test/xpcshell/test_groupInitializationStarted.js
Normal file
49
dom/quota/test/xpcshell/test_groupInitializationStarted.js
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
/**
|
||||||
|
* Any copyright is dedicated to the Public Domain.
|
||||||
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
|
*/
|
||||||
|
|
||||||
|
const { PrincipalUtils } = ChromeUtils.importESModule(
|
||||||
|
"resource://testing-common/dom/quota/test/modules/PrincipalUtils.sys.mjs"
|
||||||
|
);
|
||||||
|
const { QuotaUtils } = ChromeUtils.importESModule(
|
||||||
|
"resource://testing-common/dom/quota/test/modules/QuotaUtils.sys.mjs"
|
||||||
|
);
|
||||||
|
const { TestUtils } = ChromeUtils.importESModule(
|
||||||
|
"resource://testing-common/TestUtils.sys.mjs"
|
||||||
|
);
|
||||||
|
|
||||||
|
/* exported testSteps */
|
||||||
|
async function testSteps() {
|
||||||
|
const principal = PrincipalUtils.createPrincipal("https://example.com");
|
||||||
|
|
||||||
|
info("Initializing storage");
|
||||||
|
|
||||||
|
{
|
||||||
|
const request = Services.qms.init();
|
||||||
|
await QuotaUtils.requestFinished(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
info("Initializing temporary storage");
|
||||||
|
|
||||||
|
{
|
||||||
|
const request = Services.qms.initTemporaryStorage();
|
||||||
|
await QuotaUtils.requestFinished(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
info("Starting temporary group initialization");
|
||||||
|
|
||||||
|
const initPromise = (async function () {
|
||||||
|
const request = Services.qms.initializeTemporaryGroup(principal);
|
||||||
|
const promise = QuotaUtils.requestFinished(request);
|
||||||
|
return promise;
|
||||||
|
})();
|
||||||
|
|
||||||
|
info("Waiting for group initialization to start");
|
||||||
|
|
||||||
|
await TestUtils.topicObserved("QuotaManager::GroupInitializationStarted");
|
||||||
|
|
||||||
|
info("Waiting for group initialization to finish");
|
||||||
|
|
||||||
|
await initPromise;
|
||||||
|
}
|
||||||
@@ -71,6 +71,8 @@ skip-if = ["true"] # Only used for recreating unsetLastAccessTime_profile.zip
|
|||||||
|
|
||||||
["test_getUsageForPrincipal.js"]
|
["test_getUsageForPrincipal.js"]
|
||||||
|
|
||||||
|
["test_groupInitializationStarted.js"]
|
||||||
|
|
||||||
["test_groupMismatch.js"]
|
["test_groupMismatch.js"]
|
||||||
skip-if = ["true"] # The group is now always empty, so metadata can't differ anymore.
|
skip-if = ["true"] # The group is now always empty, so metadata can't differ anymore.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user