diff --git a/dom/cache/FileUtils.cpp b/dom/cache/FileUtils.cpp index c753047b09d280d5329c058dea1e2d1d192800a4..02f9d1a47069e4ec4c94564e2b92a9c742cc6cdc 100644 --- a/dom/cache/FileUtils.cpp +++ b/dom/cache/FileUtils.cpp @@ -533,8 +533,8 @@ void DecreaseUsageForQuotaInfo(const QuotaInfo& aQuotaInfo, QuotaManager* quotaManager = QuotaManager::Get(); MOZ_DIAGNOSTIC_ASSERT(quotaManager); - quotaManager->DecreaseUsageForOrigin(PERSISTENCE_TYPE_DEFAULT, aQuotaInfo, - Client::DOMCACHE, aUpdatingSize); + quotaManager->DecreaseUsageForClient( + quota::ClientMetadata{aQuotaInfo, Client::DOMCACHE}, aUpdatingSize); } bool DirectoryPaddingFileExists(nsIFile& aBaseDir, diff --git a/dom/cache/Types.h b/dom/cache/Types.h index 0572731da80fc84b749656cf86bdc8474fb6bbf8..b130edc1e2c3293cb1fd122d02d987b8f6d8b9fd 100644 --- a/dom/cache/Types.h +++ b/dom/cache/Types.h @@ -30,6 +30,7 @@ typedef int64_t CacheId; static const CacheId INVALID_CACHE_ID = -1; // XXX Rename to OriginMetadata. +// XXX Consider inheritance from ClientMetadata. struct QuotaInfo : quota::OriginMetadata { nsCOMPtr<nsIFile> mDir; int64_t mDirectoryLockId = -1; diff --git a/dom/indexedDB/ActorsParent.cpp b/dom/indexedDB/ActorsParent.cpp index 120b823d4e85b6bdd3091cdb4a05385ee7eb6a33..5afc08d7294b9a7ccb1a4268d1d0aa5b47f9ddb2 100644 --- a/dom/indexedDB/ActorsParent.cpp +++ b/dom/indexedDB/ActorsParent.cpp @@ -2195,6 +2195,7 @@ class Database final RefPtr<DatabaseConnection> mConnection; const PrincipalInfo mPrincipalInfo; const Maybe<ContentParentId> mOptionalContentParentId; + // XXX Consider changing this to ClientMetadata. const quota::OriginMetadata mOriginMetadata; const nsCString mId; const nsString mFilePath; @@ -5765,8 +5766,8 @@ nsresult DeleteFile(nsIFile& aFile, QuotaManager* const aQuotaManager, if (fileSize.value() > 0) { MOZ_ASSERT(aQuotaManager); - aQuotaManager->DecreaseUsageForOrigin(aPersistenceType, aOriginMetadata, - Client::IDB, fileSize.value()); + aQuotaManager->DecreaseUsageForClient( + ClientMetadata{aOriginMetadata, Client::IDB}, fileSize.value()); } return NS_OK; @@ -5878,8 +5879,8 @@ Result<Ok, nsresult> DeleteFileManagerDirectory( }); if (usageValue) { - aQuotaManager->DecreaseUsageForOrigin(aPersistenceType, aOriginMetadata, - Client::IDB, usageValue); + aQuotaManager->DecreaseUsageForClient( + ClientMetadata{aOriginMetadata, Client::IDB}, usageValue); } return res; diff --git a/dom/localstorage/ActorsParent.cpp b/dom/localstorage/ActorsParent.cpp index e790374ca348214209d3ec5d64f02d462c2ad987..44e8c6a8aa191b6a5c134157cecc7bb73e22ba68 100644 --- a/dom/localstorage/ActorsParent.cpp +++ b/dom/localstorage/ActorsParent.cpp @@ -1203,6 +1203,7 @@ class Connection final : public CachingDatabaseConnection { nsCOMPtr<nsITimer> mFlushTimer; UniquePtr<ArchivedOriginScope> mArchivedOriginScope; ConnectionWriteOptimizer mWriteOptimizer; + // XXX Consider changing this to ClientMetadata. const OriginMetadata mOriginMetadata; nsString mDirectoryPath; /** diff --git a/dom/quota/ActorsParent.cpp b/dom/quota/ActorsParent.cpp index 8a3cdc9aeb6add8ebfb01fb270040f4e78629727..90f34187865770cbf8e035cb1293c48b34a63ecc 100644 --- a/dom/quota/ActorsParent.cpp +++ b/dom/quota/ActorsParent.cpp @@ -3895,29 +3895,28 @@ int64_t QuotaManager::NoteOriginDirectoryCreated( return timestamp; } -void QuotaManager::DecreaseUsageForOrigin(PersistenceType aPersistenceType, - const OriginMetadata& aOriginMetadata, - Client::Type aClientType, +void QuotaManager::DecreaseUsageForClient(const ClientMetadata& aClientMetadata, int64_t aSize) { MOZ_ASSERT(!NS_IsMainThread()); - MOZ_ASSERT(aPersistenceType != PERSISTENCE_TYPE_PERSISTENT); + MOZ_ASSERT(IsBestEffortPersistenceType(aClientMetadata.mPersistenceType)); MutexAutoLock lock(mQuotaMutex); GroupInfoPair* pair; - if (!mGroupInfoPairs.Get(aOriginMetadata.mGroup, &pair)) { + if (!mGroupInfoPairs.Get(aClientMetadata.mGroup, &pair)) { return; } - RefPtr<GroupInfo> groupInfo = pair->LockedGetGroupInfo(aPersistenceType); + RefPtr<GroupInfo> groupInfo = + pair->LockedGetGroupInfo(aClientMetadata.mPersistenceType); if (!groupInfo) { return; } RefPtr<OriginInfo> originInfo = - groupInfo->LockedGetOriginInfo(aOriginMetadata.mOrigin); + groupInfo->LockedGetOriginInfo(aClientMetadata.mOrigin); if (originInfo) { - originInfo->LockedDecreaseUsage(aClientType, aSize); + originInfo->LockedDecreaseUsage(aClientMetadata.mClientType, aSize); } } diff --git a/dom/quota/CommonMetadata.h b/dom/quota/CommonMetadata.h index a3fbdfebab26628d2e8d06d53f9e08c4d3c34985..094c96519596460473ba3d1bd95f02f459cd5100 100644 --- a/dom/quota/CommonMetadata.h +++ b/dom/quota/CommonMetadata.h @@ -8,6 +8,7 @@ #define DOM_QUOTA_COMMONMETADATA_H_ #include <utility> +#include "mozilla/dom/quota/Client.h" #include "mozilla/dom/quota/PersistenceType.h" #include "nsString.h" @@ -59,6 +60,13 @@ struct FullOriginMetadata : OriginMetadata { mLastAccessTime(aLastAccessTime) {} }; +struct ClientMetadata : OriginMetadata { + const Client::Type mClientType; + + ClientMetadata(OriginMetadata aOriginMetadata, Client::Type aClientType) + : OriginMetadata(std::move(aOriginMetadata)), mClientType(aClientType) {} +}; + } // namespace mozilla::dom::quota #endif // DOM_QUOTA_COMMONMETADATA_H_ diff --git a/dom/quota/QuotaManager.h b/dom/quota/QuotaManager.h index 74cebcbddb087426d8e1c35a76e2096a4deaf9f3..29fcabdaec303ef93d5b1e6524aff9d54255c49c 100644 --- a/dom/quota/QuotaManager.h +++ b/dom/quota/QuotaManager.h @@ -168,9 +168,8 @@ class QuotaManager final : public BackgroundThreadObject { bool aPersisted); // XXX clients can use QuotaObject instead of calling this method directly. - void DecreaseUsageForOrigin(PersistenceType aPersistenceType, - const OriginMetadata& aOriginMetadata, - Client::Type aClientType, int64_t aSize); + void DecreaseUsageForClient(const ClientMetadata& aClientMetadata, + int64_t aSize); void ResetUsageForClient(PersistenceType aPersistenceType, const OriginMetadata& aOriginMetadata, diff --git a/dom/simpledb/ActorsParent.cpp b/dom/simpledb/ActorsParent.cpp index 83884eb0aec5471edab8497e6104c7b45101fe6e..e283c8ea203920abe0d64610ac4ef3608a09827a 100644 --- a/dom/simpledb/ActorsParent.cpp +++ b/dom/simpledb/ActorsParent.cpp @@ -346,6 +346,7 @@ class OpenOp final : public ConnectionOperationBase, const SDBRequestOpenParams mParams; RefPtr<DirectoryLock> mDirectoryLock; nsCOMPtr<nsIFileStream> mFileStream; + // XXX Consider changing this to ClientMetadata. quota::OriginMetadata mOriginMetadata; State mState; bool mFileStreamOpen;