| Index: webkit/quota/special_storage_policy.h
|
| ===================================================================
|
| --- webkit/quota/special_storage_policy.h (revision 96595)
|
| +++ webkit/quota/special_storage_policy.h (working copy)
|
| @@ -8,6 +8,7 @@
|
| #include <string>
|
|
|
| #include "base/memory/ref_counted.h"
|
| +#include "base/observer_list.h"
|
|
|
| class GURL;
|
|
|
| @@ -17,10 +18,18 @@
|
| // storage subsystems query this interface to determine which origins
|
| // have these rights. Chrome provides an impl that is cognizant of what
|
| // is currently installed in the extensions system.
|
| -// An implementation must be thread-safe.
|
| +// The IsSomething() methods must be thread-safe, however Observers should
|
| +// only be notified, added, and removed on the IO thead.
|
| class SpecialStoragePolicy
|
| : public base::RefCountedThreadSafe<SpecialStoragePolicy> {
|
| public:
|
| + class Observer {
|
| + public:
|
| + virtual void OnSpecialStoragePolicyChanged() = 0;
|
| + protected:
|
| + virtual ~Observer();
|
| + };
|
| +
|
| SpecialStoragePolicy();
|
|
|
| // Protected storage is not subject to removal by the browsing data remover.
|
| @@ -33,9 +42,17 @@
|
| // file handler.
|
| virtual bool IsFileHandler(const std::string& extension_id) = 0;
|
|
|
| + // Adds/removes an observer, the policy does not take
|
| + // ownership of the observer. Should only be called on the IO thread.
|
| + void AddObserver(Observer* observer);
|
| + void RemoveObserver(Observer* observer);
|
| +
|
| protected:
|
| friend class base::RefCountedThreadSafe<SpecialStoragePolicy>;
|
| virtual ~SpecialStoragePolicy();
|
| + void NotifyObservers();
|
| +
|
| + ObserverList<Observer> observers_;
|
| };
|
|
|
| } // namespace quota
|
|
|