Home | History | Annotate | Download | only in quota
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef STORAGE_BROWSER_QUOTA_STORAGE_OBSERVER_H_
      6 #define STORAGE_BROWSER_QUOTA_STORAGE_OBSERVER_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/time/time.h"
     10 #include "storage/browser/quota/quota_client.h"
     11 #include "storage/common/quota/quota_types.h"
     12 #include "url/gurl.h"
     13 
     14 namespace storage {
     15 
     16 // This interface is implemented by observers that wish to monitor storage
     17 // events, such as changes in quota or usage.
     18 class STORAGE_EXPORT StorageObserver {
     19  public:
     20   struct STORAGE_EXPORT Filter {
     21     // The storage type to monitor. This must not be kStorageTypeUnknown or
     22     // kStorageTypeQuotaNotManaged.
     23     StorageType storage_type;
     24 
     25     // The origin to monitor usage for. Must be specified.
     26     GURL origin;
     27 
     28     Filter();
     29     Filter(StorageType storage_type, const GURL& origin);
     30     bool operator==(const Filter& other) const;
     31   };
     32 
     33   struct STORAGE_EXPORT MonitorParams {
     34     // Storage type and origin to monitor.
     35     Filter filter;
     36 
     37     // The rate at which storage events will be fired. Events will be fired at
     38     // approximately this rate, or when a storage status change has been
     39     // detected, whichever is the least frequent.
     40     base::TimeDelta rate;
     41 
     42     // If set to true, the observer will be dispatched an event when added.
     43     bool dispatch_initial_state;
     44 
     45     MonitorParams();
     46     MonitorParams(StorageType storage_type,
     47                   const GURL& origin,
     48                   const base::TimeDelta& rate,
     49                   bool get_initial_state);
     50     MonitorParams(const Filter& filter,
     51                   const base::TimeDelta& rate,
     52                   bool get_initial_state);
     53   };
     54 
     55   struct STORAGE_EXPORT Event {
     56     // The storage type and origin monitored.
     57     Filter filter;
     58 
     59     // The current usage corresponding to the filter.
     60     int64 usage;
     61 
     62     // The quota corresponding to the filter.
     63     int64 quota;
     64 
     65     Event();
     66     Event(const Filter& filter, int64 usage, int64 quota);
     67     bool operator==(const Event& other) const;
     68   };
     69 
     70   // Will be called on the IO thread when a storage event occurs.
     71   virtual void OnStorageEvent(const Event& event) = 0;
     72 
     73  protected:
     74   virtual ~StorageObserver() {}
     75 };
     76 
     77 }  // namespace storage
     78 
     79 #endif  // STORAGE_BROWSER_QUOTA_STORAGE_OBSERVER_H_
     80