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_QUOTA_MANAGER_PROXY_H_ 6#define STORAGE_BROWSER_QUOTA_QUOTA_MANAGER_PROXY_H_ 7 8#include "base/basictypes.h" 9#include "base/callback.h" 10#include "base/files/file_path.h" 11#include "base/memory/ref_counted.h" 12#include "base/memory/scoped_ptr.h" 13#include "base/memory/weak_ptr.h" 14#include "base/sequenced_task_runner_helpers.h" 15#include "storage/browser/quota/quota_callbacks.h" 16#include "storage/browser/quota/quota_client.h" 17#include "storage/browser/quota/quota_database.h" 18#include "storage/browser/quota/quota_manager.h" 19#include "storage/browser/quota/quota_task.h" 20#include "storage/browser/quota/special_storage_policy.h" 21#include "storage/browser/storage_browser_export.h" 22 23namespace base { 24class SequencedTaskRunner; 25class SingleThreadTaskRunner; 26} 27 28namespace storage { 29 30// The proxy may be called and finally released on any thread. 31class STORAGE_EXPORT QuotaManagerProxy 32 : public base::RefCountedThreadSafe<QuotaManagerProxy> { 33 public: 34 typedef QuotaManager::GetUsageAndQuotaCallback 35 GetUsageAndQuotaCallback; 36 37 virtual void RegisterClient(QuotaClient* client); 38 virtual void NotifyStorageAccessed(QuotaClient::ID client_id, 39 const GURL& origin, 40 StorageType type); 41 virtual void NotifyStorageModified(QuotaClient::ID client_id, 42 const GURL& origin, 43 StorageType type, 44 int64 delta); 45 virtual void NotifyOriginInUse(const GURL& origin); 46 virtual void NotifyOriginNoLongerInUse(const GURL& origin); 47 48 virtual void SetUsageCacheEnabled(QuotaClient::ID client_id, 49 const GURL& origin, 50 StorageType type, 51 bool enabled); 52 virtual void GetUsageAndQuota( 53 base::SequencedTaskRunner* original_task_runner, 54 const GURL& origin, 55 StorageType type, 56 const GetUsageAndQuotaCallback& callback); 57 58 // This method may only be called on the IO thread. 59 // It may return NULL if the manager has already been deleted. 60 QuotaManager* quota_manager() const; 61 62 protected: 63 friend class QuotaManager; 64 friend class base::RefCountedThreadSafe<QuotaManagerProxy>; 65 66 QuotaManagerProxy( 67 QuotaManager* manager, 68 const scoped_refptr<base::SingleThreadTaskRunner>& io_thread); 69 virtual ~QuotaManagerProxy(); 70 71 QuotaManager* manager_; // only accessed on the io thread 72 scoped_refptr<base::SingleThreadTaskRunner> io_thread_; 73 74 DISALLOW_COPY_AND_ASSIGN(QuotaManagerProxy); 75}; 76 77} // namespace storage 78 79#endif // STORAGE_BROWSER_QUOTA_QUOTA_MANAGER_PROXY_H_ 80