|  | // Copyright 2014 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef STORAGE_BROWSER_TEST_MOCK_SPECIAL_STORAGE_POLICY_H_ | 
|  | #define STORAGE_BROWSER_TEST_MOCK_SPECIAL_STORAGE_POLICY_H_ | 
|  |  | 
|  | #include <set> | 
|  | #include <string> | 
|  |  | 
|  | #include "storage/browser/quota/special_storage_policy.h" | 
|  | #include "url/gurl.h" | 
|  |  | 
|  | namespace storage { | 
|  |  | 
|  | class MockSpecialStoragePolicy : public SpecialStoragePolicy { | 
|  | public: | 
|  | MockSpecialStoragePolicy(); | 
|  |  | 
|  | bool IsStorageProtected(const GURL& origin) override; | 
|  | bool IsStorageUnlimited(const GURL& origin) override; | 
|  | bool IsStorageSessionOnly(const GURL& origin) override; | 
|  | bool HasIsolatedStorage(const GURL& origin) override; | 
|  | bool HasSessionOnlyOrigins() override; | 
|  | bool IsStorageDurable(const GURL& origin) override; | 
|  |  | 
|  | void AddProtected(const GURL& origin) { protected_.insert(origin); } | 
|  |  | 
|  | void AddUnlimited(const GURL& origin) { unlimited_.insert(origin); } | 
|  |  | 
|  | void RemoveUnlimited(const GURL& origin) { unlimited_.erase(origin); } | 
|  |  | 
|  | void AddSessionOnly(const GURL& origin) { session_only_.insert(origin); } | 
|  | void RemoveSessionOnly(const GURL& origin) { session_only_.erase(origin); } | 
|  |  | 
|  | void AddIsolated(const GURL& origin) { isolated_.insert(origin); } | 
|  |  | 
|  | void RemoveIsolated(const GURL& origin) { isolated_.erase(origin); } | 
|  |  | 
|  | void SetAllUnlimited(bool all_unlimited) { all_unlimited_ = all_unlimited; } | 
|  |  | 
|  | void AddDurable(const GURL& origin) { durable_.insert(origin); } | 
|  |  | 
|  | void Reset() { | 
|  | protected_.clear(); | 
|  | unlimited_.clear(); | 
|  | session_only_.clear(); | 
|  | file_handlers_.clear(); | 
|  | isolated_.clear(); | 
|  | all_unlimited_ = false; | 
|  | } | 
|  |  | 
|  | void NotifyGranted(const url::Origin& origin, int change_flags) { | 
|  | SpecialStoragePolicy::NotifyGranted(origin, change_flags); | 
|  | } | 
|  |  | 
|  | void NotifyRevoked(const url::Origin& origin, int change_flags) { | 
|  | SpecialStoragePolicy::NotifyRevoked(origin, change_flags); | 
|  | } | 
|  |  | 
|  | void NotifyCleared() { SpecialStoragePolicy::NotifyCleared(); } | 
|  |  | 
|  | void NotifyPolicyChanged() { SpecialStoragePolicy::NotifyPolicyChanged(); } | 
|  |  | 
|  | protected: | 
|  | ~MockSpecialStoragePolicy() override; | 
|  |  | 
|  | private: | 
|  | std::set<GURL> protected_; | 
|  | std::set<GURL> unlimited_; | 
|  | std::set<GURL> session_only_; | 
|  | std::set<GURL> isolated_; | 
|  | std::set<GURL> durable_; | 
|  | std::set<std::string> file_handlers_; | 
|  |  | 
|  | bool all_unlimited_; | 
|  | }; | 
|  |  | 
|  | }  // namespace storage | 
|  |  | 
|  | #endif  // STORAGE_BROWSER_TEST_MOCK_SPECIAL_STORAGE_POLICY_H_ |