Home | History | Annotate | Download | only in test
      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 CONTENT_PUBLIC_TEST_MOCK_STORAGE_CLIENT_H_
      6 #define CONTENT_PUBLIC_TEST_MOCK_STORAGE_CLIENT_H_
      7 
      8 #include <map>
      9 #include <set>
     10 #include <string>
     11 #include <utility>
     12 
     13 #include "base/compiler_specific.h"
     14 #include "base/memory/weak_ptr.h"
     15 #include "base/time/time.h"
     16 #include "storage/browser/quota/quota_client.h"
     17 #include "url/gurl.h"
     18 
     19 namespace storage {
     20 class QuotaManagerProxy;
     21 }
     22 
     23 using storage::QuotaClient;
     24 using storage::QuotaManagerProxy;
     25 using storage::StorageType;
     26 
     27 namespace content {
     28 
     29 struct MockOriginData {
     30   const char* origin;
     31   StorageType type;
     32   int64 usage;
     33 };
     34 
     35 // Mock storage class for testing.
     36 class MockStorageClient : public QuotaClient {
     37  public:
     38   MockStorageClient(QuotaManagerProxy* quota_manager_proxy,
     39                     const MockOriginData* mock_data,
     40                     QuotaClient::ID id,
     41                     size_t mock_data_size);
     42   virtual ~MockStorageClient();
     43 
     44   // To add or modify mock data in this client.
     45   void AddOriginAndNotify(
     46       const GURL& origin_url, StorageType type, int64 size);
     47   void ModifyOriginAndNotify(
     48       const GURL& origin_url, StorageType type, int64 delta);
     49   void TouchAllOriginsAndNotify();
     50 
     51   void AddOriginToErrorSet(const GURL& origin_url, StorageType type);
     52 
     53   base::Time IncrementMockTime();
     54 
     55   // QuotaClient methods.
     56   virtual QuotaClient::ID id() const OVERRIDE;
     57   virtual void OnQuotaManagerDestroyed() OVERRIDE;
     58   virtual void GetOriginUsage(const GURL& origin_url,
     59                               StorageType type,
     60                               const GetUsageCallback& callback) OVERRIDE;
     61   virtual void GetOriginsForType(StorageType type,
     62                                  const GetOriginsCallback& callback) OVERRIDE;
     63   virtual void GetOriginsForHost(StorageType type, const std::string& host,
     64                                  const GetOriginsCallback& callback) OVERRIDE;
     65   virtual void DeleteOriginData(const GURL& origin,
     66                                 StorageType type,
     67                                 const DeletionCallback& callback) OVERRIDE;
     68   virtual bool DoesSupport(storage::StorageType type) const OVERRIDE;
     69 
     70  private:
     71   void RunGetOriginUsage(const GURL& origin_url,
     72                          StorageType type,
     73                          const GetUsageCallback& callback);
     74   void RunGetOriginsForType(StorageType type,
     75                             const GetOriginsCallback& callback);
     76   void RunGetOriginsForHost(StorageType type,
     77                             const std::string& host,
     78                             const GetOriginsCallback& callback);
     79   void RunDeleteOriginData(const GURL& origin_url,
     80                            StorageType type,
     81                            const DeletionCallback& callback);
     82 
     83   void Populate(const MockOriginData* mock_data, size_t mock_data_size);
     84 
     85   scoped_refptr<QuotaManagerProxy> quota_manager_proxy_;
     86   const ID id_;
     87 
     88   typedef std::map<std::pair<GURL, StorageType>, int64> OriginDataMap;
     89   OriginDataMap origin_data_;
     90   typedef std::set<std::pair<GURL, StorageType> > ErrorOriginSet;
     91   ErrorOriginSet error_origins_;
     92 
     93   int mock_time_counter_;
     94 
     95   base::WeakPtrFactory<MockStorageClient> weak_factory_;
     96 
     97   DISALLOW_COPY_AND_ASSIGN(MockStorageClient);
     98 };
     99 
    100 }  // namespace content
    101 
    102 #endif  // CONTENT_PUBLIC_TEST_MOCK_STORAGE_CLIENT_H_
    103