15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef WEBKIT_BROWSER_DATABASE_DATABASE_QUOTA_CLIENT_H_
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define WEBKIT_BROWSER_DATABASE_DATABASE_QUOTA_CLIENT_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <set>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h"
12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/message_loop/message_loop_proxy.h"
13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "webkit/browser/quota/quota_client.h"
147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "webkit/browser/webkit_storage_browser_export.h"
15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "webkit/common/quota/quota_types.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace webkit_database {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DatabaseTracker;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A QuotaClient implementation to integrate WebSQLDatabases
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// with the quota  management system. This interface is used
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// on the IO thread by the quota manager.
247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class WEBKIT_STORAGE_BROWSER_EXPORT_PRIVATE DatabaseQuotaClient
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : public quota::QuotaClient {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DatabaseQuotaClient(
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base::MessageLoopProxy* tracker_thread,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      DatabaseTracker* tracker);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~DatabaseQuotaClient();
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // QuotaClient method overrides
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ID id() const OVERRIDE;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnQuotaManagerDestroyed() OVERRIDE;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetOriginUsage(const GURL& origin_url,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              quota::StorageType type,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const GetUsageCallback& callback) OVERRIDE;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetOriginsForType(quota::StorageType type,
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 const GetOriginsCallback& callback) OVERRIDE;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetOriginsForHost(quota::StorageType type,
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 const std::string& host,
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                 const GetOriginsCallback& callback) OVERRIDE;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DeleteOriginData(const GURL& origin,
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                quota::StorageType type,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                const DeletionCallback& callback) OVERRIDE;
4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool DoesSupport(quota::StorageType type) const OVERRIDE;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_refptr<base::MessageLoopProxy> db_tracker_thread_;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_refptr<DatabaseTracker> db_tracker_;  // only used on its thread
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(DatabaseQuotaClient);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace webkit_database
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif  // WEBKIT_BROWSER_DATABASE_DATABASE_QUOTA_CLIENT_H_
57