Index: webkit/browser/quota/storage_monitor.h |
diff --git a/webkit/browser/quota/storage_monitor.h b/webkit/browser/quota/storage_monitor.h |
index 66a7e8ae0ea8421653937cfc32b2d02ed2bfe83d..48992e48738a3fd2d7ea5975caf95333b2726fc6 100644 |
--- a/webkit/browser/quota/storage_monitor.h |
+++ b/webkit/browser/quota/storage_monitor.h |
@@ -2,179 +2,4 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef WEBKIT_BROWSER_QUOTA_STORAGE_MONITOR_H_ |
-#define WEBKIT_BROWSER_QUOTA_STORAGE_MONITOR_H_ |
- |
-#include <map> |
- |
-#include "base/memory/weak_ptr.h" |
-#include "base/time/time.h" |
-#include "base/timer/timer.h" |
-#include "webkit/browser/quota/storage_observer.h" |
- |
-namespace content { |
-class StorageMonitorTestBase; |
-} |
- |
-namespace storage { |
- |
-class QuotaManager; |
- |
-// This class dispatches storage events to observers of a common |
-// StorageObserver::Filter. |
-class STORAGE_EXPORT_PRIVATE StorageObserverList { |
- public: |
- StorageObserverList(); |
- virtual ~StorageObserverList(); |
- |
- // Adds/removes an observer. |
- void AddObserver(StorageObserver* observer, |
- const StorageObserver::MonitorParams& params); |
- void RemoveObserver(StorageObserver* observer); |
- |
- // Returns the number of observers. |
- int ObserverCount() const; |
- |
- // Forwards a storage change to observers. The event may be dispatched |
- // immediately to an observer or after a delay, depending on the desired event |
- // rate of the observer. |
- void OnStorageChange(const StorageObserver::Event& event); |
- |
- // Dispatch an event to observers that require it. |
- void MaybeDispatchEvent(const StorageObserver::Event& event); |
- |
- // Ensure the specified observer receives the next dispatched event. |
- void ScheduleUpdateForObserver(StorageObserver* observer); |
- |
- private: |
- struct STORAGE_EXPORT_PRIVATE ObserverState { |
- GURL origin; |
- base::TimeTicks last_notification_time; |
- base::TimeDelta rate; |
- bool requires_update; |
- |
- ObserverState(); |
- }; |
- typedef std::map<StorageObserver*, ObserverState> StorageObserverStateMap; |
- |
- void DispatchPendingEvent(); |
- |
- StorageObserverStateMap observers_; |
- base::OneShotTimer<StorageObserverList> notification_timer_; |
- StorageObserver::Event pending_event_; |
- |
- friend class content::StorageMonitorTestBase; |
- |
- DISALLOW_COPY_AND_ASSIGN(StorageObserverList); |
-}; |
- |
- |
-// Manages the storage observers of a common host. Caches the usage and quota of |
-// the host to avoid accumulating for every change. |
-class STORAGE_EXPORT_PRIVATE HostStorageObservers { |
- public: |
- explicit HostStorageObservers(QuotaManager* quota_manager); |
- virtual ~HostStorageObservers(); |
- |
- bool is_initialized() const { return initialized_; } |
- |
- // Adds/removes an observer. |
- void AddObserver( |
- StorageObserver* observer, |
- const StorageObserver::MonitorParams& params); |
- void RemoveObserver(StorageObserver* observer); |
- bool ContainsObservers() const; |
- |
- // Handles a usage change. |
- void NotifyUsageChange(const StorageObserver::Filter& filter, int64 delta); |
- |
- private: |
- void StartInitialization(const StorageObserver::Filter& filter); |
- void GotHostUsageAndQuota(const StorageObserver::Filter& filter, |
- QuotaStatusCode status, |
- int64 usage, |
- int64 quota); |
- void DispatchEvent(const StorageObserver::Filter& filter, bool is_update); |
- |
- QuotaManager* quota_manager_; |
- StorageObserverList observers_; |
- |
- // Flags used during initialization of the cached properties. |
- bool initialized_; |
- bool initializing_; |
- bool event_occurred_before_init_; |
- int64 usage_deltas_during_init_; |
- |
- // Cached accumulated usage and quota for the host. |
- int64 cached_usage_; |
- int64 cached_quota_; |
- |
- base::WeakPtrFactory<HostStorageObservers> weak_factory_; |
- |
- friend class content::StorageMonitorTestBase; |
- |
- DISALLOW_COPY_AND_ASSIGN(HostStorageObservers); |
-}; |
- |
- |
-// Manages the observers of a common storage type. |
-class STORAGE_EXPORT_PRIVATE StorageTypeObservers { |
- public: |
- explicit StorageTypeObservers(QuotaManager* quota_manager); |
- virtual ~StorageTypeObservers(); |
- |
- // Adds and removes an observer. |
- void AddObserver(StorageObserver* observer, |
- const StorageObserver::MonitorParams& params); |
- void RemoveObserver(StorageObserver* observer); |
- void RemoveObserverForFilter(StorageObserver* observer, |
- const StorageObserver::Filter& filter); |
- |
- // Returns the observers of a specific host. |
- const HostStorageObservers* GetHostObservers(const std::string& host) const; |
- |
- // Handles a usage change. |
- void NotifyUsageChange(const StorageObserver::Filter& filter, int64 delta); |
- |
- private: |
- typedef std::map<std::string, HostStorageObservers*> HostObserversMap; |
- |
- QuotaManager* quota_manager_; |
- HostObserversMap host_observers_map_; |
- |
- DISALLOW_COPY_AND_ASSIGN(StorageTypeObservers); |
-}; |
- |
- |
-// Storage monitor manages observers and dispatches storage events to them. |
-class STORAGE_EXPORT_PRIVATE StorageMonitor { |
- public: |
- explicit StorageMonitor(QuotaManager* quota_manager); |
- virtual ~StorageMonitor(); |
- |
- // Adds and removes an observer. |
- void AddObserver(StorageObserver* observer, |
- const StorageObserver::MonitorParams& params); |
- void RemoveObserver(StorageObserver* observer); |
- void RemoveObserverForFilter(StorageObserver* observer, |
- const StorageObserver::Filter& filter); |
- |
- // Returns the observers of a specific storage type. |
- const StorageTypeObservers* GetStorageTypeObservers( |
- StorageType storage_type) const; |
- |
- // Handles a usage change. |
- void NotifyUsageChange(const StorageObserver::Filter& filter, int64 delta); |
- |
- private: |
- typedef std::map<StorageType, StorageTypeObservers*> StorageTypeObserversMap; |
- |
- QuotaManager* quota_manager_; |
- StorageTypeObserversMap storage_type_observers_map_; |
- |
- DISALLOW_COPY_AND_ASSIGN(StorageMonitor); |
-}; |
- |
-} // namespace storage |
- |
-#endif // WEBKIT_BROWSER_QUOTA_STORAGE_MONITOR_H_ |
+#include "storage/browser/quota/storage_monitor.h" |