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;