| Index: chrome/browser/browsing_data_quota_helper.h | 
| diff --git a/chrome/browser/browsing_data_quota_helper.h b/chrome/browser/browsing_data_quota_helper.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..2ed0c1b71517dd3430c1c2fbf25a8f001f38996d | 
| --- /dev/null | 
| +++ b/chrome/browser/browsing_data_quota_helper.h | 
| @@ -0,0 +1,88 @@ | 
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#ifndef CHROME_BROWSER_BROWSING_DATA_QUOTA_HELPER_H_ | 
| +#define CHROME_BROWSER_BROWSING_DATA_QUOTA_HELPER_H_ | 
| +#pragma once | 
| + | 
| +#include <string> | 
| +#include <vector> | 
| + | 
| +#include "base/callback_old.h" | 
| +#include "base/memory/ref_counted.h" | 
| +#include "base/message_loop_proxy.h" | 
| +#include "base/time.h" | 
| +#include "content/browser/browser_thread.h" | 
| +#include "webkit/quota/quota_types.h" | 
| + | 
| +class Profile; | 
| + | 
| +namespace quota { | 
| +class QuotaManager; | 
| +} | 
| + | 
| +class BrowsingDataQuotaHelper; | 
| + | 
| +struct BrowsingDataQuotaHelperDeleter { | 
| +  static void Destruct(const BrowsingDataQuotaHelper* helper); | 
| +}; | 
| + | 
| +// This class is an interface class to bridge between Cookies Tree and Unified | 
| +// Quota System.  This class provides a way to get usage and quota information | 
| +// through the instance. | 
| +// | 
| +// Call Create to create an instance for a profile and call StartFetching with | 
| +// a callback to fetch information asynchronously. If result is no longer needed | 
| +// after StartFetching, call CancelNotification to prevent callback. | 
| +// | 
| +// Parallel fetching is not allowed, a fetching task should start after end of | 
| +// previous task.  All method of this class should called from UI thread. | 
| +class BrowsingDataQuotaHelper | 
| +    : public base::RefCountedThreadSafe<BrowsingDataQuotaHelper, | 
| +                                        BrowsingDataQuotaHelperDeleter> { | 
| + public: | 
| +  // QuotaInfo contains host-based quota and usage information for persistent | 
| +  // and temporary storage. | 
| +  struct QuotaInfo { | 
| +    QuotaInfo(); | 
| +    explicit QuotaInfo(const std::string& host); | 
| +    QuotaInfo(const std::string& host, | 
| +              int64 temporary_usage, | 
| +              int64 persistent_usage); | 
| +    ~QuotaInfo(); | 
| + | 
| +    std::string host; | 
| +    int64 temporary_usage; | 
| +    int64 persistent_usage; | 
| +  }; | 
| + | 
| +  typedef std::vector<QuotaInfo> QuotaInfoArray; | 
| +  typedef Callback1<const QuotaInfoArray&>::Type FetchResultCallback; | 
| + | 
| +  static BrowsingDataQuotaHelper* Create(Profile* profile); | 
| + | 
| +  virtual void StartFetching(FetchResultCallback* callback) = 0; | 
| +  virtual void CancelNotification() = 0; | 
| + | 
| +  // We don't support deletion now. | 
| +  virtual void DeleteQuotaHost(const std::string& host) {} | 
| + | 
| + protected: | 
| +  explicit BrowsingDataQuotaHelper(base::MessageLoopProxy* io_thread_); | 
| +  virtual ~BrowsingDataQuotaHelper(); | 
| + | 
| + private: | 
| +  friend class DeleteTask<const BrowsingDataQuotaHelper>; | 
| +  friend struct BrowsingDataQuotaHelperDeleter; | 
| +  scoped_refptr<base::MessageLoopProxy> io_thread_; | 
| + | 
| +  DISALLOW_COPY_AND_ASSIGN(BrowsingDataQuotaHelper); | 
| +}; | 
| + | 
| +bool operator <(const BrowsingDataQuotaHelper::QuotaInfo& lhs, | 
| +                const BrowsingDataQuotaHelper::QuotaInfo& rhs); | 
| +bool operator ==(const BrowsingDataQuotaHelper::QuotaInfo& lhs, | 
| +                 const BrowsingDataQuotaHelper::QuotaInfo& rhs); | 
| + | 
| +#endif  // CHROME_BROWSER_BROWSING_DATA_QUOTA_HELPER_H_ | 
|  |