Bug 1252998 - StorageActivityService - part 8 - nsIStorageActivityService::moveOriginInTime() for testing, r=asuth
authorAndrea Marchesini <amarchesini@mozilla.com>
Wed, 18 Apr 2018 18:19:13 +0200
changeset 467879 428f49f692ce707cd7e492217f23cfc3a23915b2
parent 467878 830a2e991b0c1a3a9f9684b469172e28ec689383
child 467880 38653c75863b9727c86621523d92908aefe09c11
push id9165
push userasasaki@mozilla.com
push dateThu, 26 Apr 2018 21:04:54 +0000
treeherdermozilla-beta@064c3804de2e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersasuth
bugs1252998
milestone61.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1252998 - StorageActivityService - part 8 - nsIStorageActivityService::moveOriginInTime() for testing, r=asuth
dom/interfaces/storage/nsIStorageActivityService.idl
dom/storage/StorageActivityService.cpp
--- a/dom/interfaces/storage/nsIStorageActivityService.idl
+++ b/dom/interfaces/storage/nsIStorageActivityService.idl
@@ -1,16 +1,17 @@
 /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "domstubs.idl"
 
 interface nsIArray;
+interface nsIPrincipal;
 
 /**
  * nsIStorageActivityService is a service that can be used to know which
  * origins have been active in a time range. This information can be used to
  * implement "Clear Recent History" or similar features.
  *
  * If you are implementing a new Storage component, you should use
  * QuotaManager. But if you don't do it, remember to call
@@ -22,13 +23,17 @@ interface nsIStorageActivityService : ns
 {
   // This returns an array of nsIPrincipals, active between |from| and |to|
   // timestamps. Note activities older than 1 day are forgotten.
   // Activity details are not persisted, so this only covers activity since
   // Firefox was started.  All codebase principals are logged, which includes
   // non-system principals like "moz-extension://ID", "moz-safe-about:home",
   // "about:newtab", so principals may need to be filtered before being used.
   nsIArray getActiveOrigins(in PRTime from, in PRTime to);
+
+  // NOTE: This method is meant to be used for testing only.
+  // The activity of |origin| is moved to the specified timestamp |when|.
+  void moveOriginInTime(in nsIPrincipal origin, in PRTime when);
 };
 
 %{ C++
 #define STORAGE_ACTIVITY_SERVICE_CONTRACTID "@mozilla.org/storage/activity-service;1"
 %}
--- a/dom/storage/StorageActivityService.cpp
+++ b/dom/storage/StorageActivityService.cpp
@@ -273,16 +273,34 @@ StorageActivityService::GetActiveOrigins
       }
     }
   }
 
   devices.forget(aRetval);
   return NS_OK;
 }
 
+NS_IMETHODIMP
+StorageActivityService::MoveOriginInTime(nsIPrincipal* aPrincipal,
+                                         PRTime aWhen)
+{
+  if (!XRE_IsParentProcess()) {
+    return NS_ERROR_FAILURE;
+  }
+
+  nsAutoCString origin;
+  nsresult rv = aPrincipal->GetOrigin(origin);
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  mActivities.Put(origin, aWhen / PR_USEC_PER_SEC);
+  return NS_OK;
+}
+
 NS_INTERFACE_MAP_BEGIN(StorageActivityService)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIStorageActivityService)
   NS_INTERFACE_MAP_ENTRY(nsIStorageActivityService)
   NS_INTERFACE_MAP_ENTRY(nsIObserver)
   NS_INTERFACE_MAP_ENTRY(nsITimerCallback)
   NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
 NS_INTERFACE_MAP_END