15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef WEBKIT_BROWSER_QUOTA_QUOTA_MANAGER_PROXY_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define WEBKIT_BROWSER_QUOTA_QUOTA_MANAGER_PROXY_H_ 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/basictypes.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/callback.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/files/file_path.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/memory/ref_counted.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/memory/weak_ptr.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/sequenced_task_runner_helpers.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "webkit/browser/quota/quota_callbacks.h" 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "webkit/browser/quota/quota_client.h" 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "webkit/browser/quota/quota_database.h" 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "webkit/browser/quota/quota_manager.h" 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "webkit/browser/quota/quota_task.h" 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "webkit/browser/quota/special_storage_policy.h" 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "webkit/browser/webkit_storage_browser_export.h" 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace base { 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class SequencedTaskRunner; 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class SingleThreadTaskRunner; 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace quota { 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// The proxy may be called and finally released on any thread. 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class WEBKIT_STORAGE_BROWSER_EXPORT QuotaManagerProxy 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : public base::RefCountedThreadSafe<QuotaManagerProxy> { 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) typedef QuotaManager::GetUsageAndQuotaCallback 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetUsageAndQuotaCallback; 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void RegisterClient(QuotaClient* client); 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void NotifyStorageAccessed(QuotaClient::ID client_id, 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL& origin, 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) StorageType type); 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void NotifyStorageModified(QuotaClient::ID client_id, 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL& origin, 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) StorageType type, 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int64 delta); 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void NotifyOriginInUse(const GURL& origin); 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void NotifyOriginNoLongerInUse(const GURL& origin); 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void SetUsageCacheEnabled(QuotaClient::ID client_id, 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL& origin, 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) StorageType type, 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool enabled); 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void GetUsageAndQuota( 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::SequencedTaskRunner* original_task_runner, 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL& origin, 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) StorageType type, 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GetUsageAndQuotaCallback& callback); 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // This method may only be called on the IO thread. 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // It may return NULL if the manager has already been deleted. 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) QuotaManager* quota_manager() const; 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) protected: 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) friend class QuotaManager; 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) friend class base::RefCountedThreadSafe<QuotaManagerProxy>; 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) QuotaManagerProxy(QuotaManager* manager, 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::SingleThreadTaskRunner* io_thread); 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ~QuotaManagerProxy(); 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) QuotaManager* manager_; // only accessed on the io thread 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_refptr<base::SingleThreadTaskRunner> io_thread_; 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(QuotaManagerProxy); 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace quota 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // WEBKIT_BROWSER_QUOTA_QUOTA_MANAGER_PROXY_H_ 79