Bug 1431029 - Expose timestamp for quota managed storage. r=asuth draft
authorJohann Hofmann <jhofmann@mozilla.com>
Tue, 20 Feb 2018 14:54:17 +0100
changeset 757887 4a17e0b6b38073fea7b4b3d3b4483d4c495b3950
parent 757856 dd6caba141428343fb26f3ec23a3ee1844a4b241
child 757888 d26f75b949112ca19c689986fe3f142bb3007d16
push id99865
push userjhofmann@mozilla.com
push dateWed, 21 Feb 2018 12:58:36 +0000
reviewersasuth
bugs1431029
milestone60.0a1
Bug 1431029 - Expose timestamp for quota managed storage. r=asuth MozReview-Commit-ID: 7MNd2m2Jp46
dom/quota/ActorsChild.cpp
dom/quota/ActorsParent.cpp
dom/quota/PQuotaUsageRequest.ipdl
dom/quota/QuotaResults.cpp
dom/quota/QuotaResults.h
dom/quota/nsIQuotaResults.idl
--- a/dom/quota/ActorsChild.cpp
+++ b/dom/quota/ActorsChild.cpp
@@ -158,17 +158,18 @@ QuotaUsageRequestChild::HandleResponse(c
 
     usageResults.SetCapacity(count);
 
     for (uint32_t index = 0; index < count; index++) {
       auto& originUsage = aResponse[index];
 
       RefPtr<UsageResult> usageResult = new UsageResult(originUsage.origin(),
                                                         originUsage.persisted(),
-                                                        originUsage.usage());
+                                                        originUsage.usage(),
+                                                        originUsage.lastAccessed());
 
       usageResults.AppendElement(usageResult.forget());
     }
 
     variant->SetAsArray(nsIDataType::VTYPE_INTERFACE_IS,
                         &NS_GET_IID(nsIQuotaUsageResult),
                         usageResults.Length(),
                         static_cast<void*>(usageResults.Elements()));
--- a/dom/quota/ActorsParent.cpp
+++ b/dom/quota/ActorsParent.cpp
@@ -6974,16 +6974,18 @@ GetUsageOp::TraverseRepository(QuotaMana
 
       mOriginUsagesIndex.Put(origin, index);
     }
 
     if (aPersistenceType == PERSISTENCE_TYPE_DEFAULT) {
       originUsage->persisted() = persisted;
     }
 
+    originUsage->lastAccessed() = timestamp;
+
     UsageInfo usageInfo;
     rv = GetUsageForOrigin(aQuotaManager,
                            aPersistenceType,
                            group,
                            origin,
                            &usageInfo);
     if (NS_WARN_IF(NS_FAILED(rv))) {
       return rv;
--- a/dom/quota/PQuotaUsageRequest.ipdl
+++ b/dom/quota/PQuotaUsageRequest.ipdl
@@ -8,16 +8,17 @@ namespace mozilla {
 namespace dom {
 namespace quota {
 
 struct OriginUsage
 {
   nsCString origin;
   bool persisted;
   uint64_t usage;
+  uint64_t lastAccessed;
 };
 
 struct AllUsageResponse
 {
   OriginUsage[] originUsages;
 };
 
 struct OriginUsageResponse
--- a/dom/quota/QuotaResults.cpp
+++ b/dom/quota/QuotaResults.cpp
@@ -7,20 +7,22 @@
 #include "QuotaResults.h"
 
 namespace mozilla {
 namespace dom {
 namespace quota {
 
 UsageResult::UsageResult(const nsACString& aOrigin,
                          bool aPersisted,
-                         uint64_t aUsage)
+                         uint64_t aUsage,
+                         uint64_t aLastAccessed)
   : mOrigin(aOrigin)
   , mUsage(aUsage)
   , mPersisted(aPersisted)
+  , mLastAccessed(aLastAccessed)
 {
 }
 
 NS_IMPL_ISUPPORTS(UsageResult,
                   nsIQuotaUsageResult)
 
 NS_IMETHODIMP
 UsageResult::GetOrigin(nsACString& aOrigin)
@@ -42,16 +44,25 @@ NS_IMETHODIMP
 UsageResult::GetUsage(uint64_t* aUsage)
 {
   MOZ_ASSERT(aUsage);
 
   *aUsage = mUsage;
   return NS_OK;
 }
 
+NS_IMETHODIMP
+UsageResult::GetLastAccessed(uint64_t* aLastAccessed)
+{
+  MOZ_ASSERT(aLastAccessed);
+
+  *aLastAccessed = mLastAccessed;
+  return NS_OK;
+}
+
 OriginUsageResult::OriginUsageResult(uint64_t aUsage,
                                      uint64_t aFileUsage,
                                      uint64_t aLimit)
   : mUsage(aUsage)
   , mFileUsage(aFileUsage)
   , mLimit(aLimit)
 {
 }
--- a/dom/quota/QuotaResults.h
+++ b/dom/quota/QuotaResults.h
@@ -14,21 +14,23 @@ namespace dom {
 namespace quota {
 
 class UsageResult
   : public nsIQuotaUsageResult
 {
   nsCString mOrigin;
   uint64_t mUsage;
   bool mPersisted;
+  uint64_t mLastAccessed;
 
 public:
   UsageResult(const nsACString& aOrigin,
               bool aPersisted,
-              uint64_t aUsage);
+              uint64_t aUsage,
+              uint64_t aLastAccessed);
 
 private:
   virtual ~UsageResult()
   { }
 
   NS_DECL_ISUPPORTS
   NS_DECL_NSIQUOTAUSAGERESULT
 };
--- a/dom/quota/nsIQuotaResults.idl
+++ b/dom/quota/nsIQuotaResults.idl
@@ -9,16 +9,18 @@
 [scriptable, function, uuid(d8c9328b-9aa8-4f5d-90e6-482de4a6d5b8)]
 interface nsIQuotaUsageResult : nsISupports
 {
   readonly attribute ACString origin;
 
   readonly attribute boolean persisted;
 
   readonly attribute unsigned long long usage;
+
+  readonly attribute unsigned long long lastAccessed;
 };
 
 [scriptable, function, uuid(96df03d2-116a-493f-bb0b-118c212a6b32)]
 interface nsIQuotaOriginUsageResult : nsISupports
 {
   readonly attribute unsigned long long usage;
 
   readonly attribute unsigned long long fileUsage;