Bug 1867997 - Maintain a list of all available temporary origins; r=dom-storage-reviewers,jari

The list will be initially only used for starting asynchronous initialization
of origins in the background, but it can be later also used for optimizing more
complex clearing operations to avoid traversing all origin directories on disk.

Differential Revision: https://phabricator.services.mozilla.com/D198990
This commit is contained in:
Jan Varga
2024-10-18 13:14:04 +00:00
parent 992c168307
commit 1020110797
3 changed files with 148 additions and 10 deletions

View File

@@ -3477,6 +3477,11 @@ nsresult PersistOp::DoDirectoryWork(QuotaManager& aQuotaManager) {
// Update or create OriginInfo too if temporary storage was already
// initialized.
if (aQuotaManager.IsTemporaryStorageInitializedInternal()) {
FullOriginMetadata fullOriginMetadata =
FullOriginMetadata{originMetadata, /* aPersisted */ true, timestamp};
aQuotaManager.AddTemporaryOrigin(fullOriginMetadata);
if (aQuotaManager.IsTemporaryOriginInitializedInternal(originMetadata)) {
// In this case, we have a temporary origin which has been initialized
// without ensuring respective origin directory. So OriginInfo already
@@ -3489,10 +3494,8 @@ nsresult PersistOp::DoDirectoryWork(QuotaManager& aQuotaManager) {
// initialized yet. So OriginInfo needs to be created because the
// origin directory has been just created.
aQuotaManager.InitQuotaForOrigin(
FullOriginMetadata{originMetadata, /* aPersisted */ true,
timestamp},
ClientUsageArray(), /* aUsageBytes */ 0);
aQuotaManager.InitQuotaForOrigin(fullOriginMetadata, ClientUsageArray(),
/* aUsageBytes */ 0);
}
}
} else {