summaryrefslogtreecommitdiffstats
path: root/chrome/browser/browsing_data_appcache_helper.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/browsing_data_appcache_helper.h')
-rw-r--r--chrome/browser/browsing_data_appcache_helper.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/chrome/browser/browsing_data_appcache_helper.h b/chrome/browser/browsing_data_appcache_helper.h
new file mode 100644
index 0000000..8c28d40
--- /dev/null
+++ b/chrome/browser/browsing_data_appcache_helper.h
@@ -0,0 +1,72 @@
+// Copyright (c) 2010 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_APPCACHE_HELPER_H_
+#define CHROME_BROWSER_BROWSING_DATA_APPCACHE_HELPER_H_
+
+#include <string>
+#include <vector>
+
+#include "base/scoped_ptr.h"
+#include "base/task.h"
+#include "chrome/common/appcache/chrome_appcache_service.h"
+
+class Profile;
+
+// This class fetches appcache information on behalf of a caller
+// on the UI thread.
+class BrowsingDataAppCacheHelper
+ : public base::RefCountedThreadSafe<BrowsingDataAppCacheHelper> {
+ public:
+ // Contains detailed information about an appcache.
+ struct AppCacheInfo {
+ AppCacheInfo() {}
+ AppCacheInfo(const GURL& manifest_url,
+ int64 size,
+ base::Time creation_time,
+ base::Time last_access_time,
+ int64 group_id)
+ : manifest_url(manifest_url),
+ size(size),
+ creation_time(creation_time),
+ last_access_time(last_access_time),
+ group_id(group_id) {
+ }
+
+ GURL manifest_url;
+ int64 size;
+ base::Time creation_time;
+ base::Time last_access_time;
+ int64 group_id;
+ };
+
+ explicit BrowsingDataAppCacheHelper(Profile* profile);
+
+ virtual void StartFetching(Callback0::Type* completion_callback);
+ virtual void CancelNotification();
+ virtual void DeleteAppCache(int64 group_id);
+
+ const std::vector<AppCacheInfo>& info_list() const {
+ DCHECK(!is_fetching_);
+ return info_list_;
+ }
+
+ private:
+ friend class base::RefCountedThreadSafe<BrowsingDataAppCacheHelper>;
+ friend class MockBrowsingDataAppCacheHelper;
+
+ virtual ~BrowsingDataAppCacheHelper() {}
+
+ void StartFetchingInIOThread();
+ void OnFetchComplete();
+ void DeleteAppCacheInIOThread(int64 group_id);
+
+ bool is_fetching_;
+ std::vector<AppCacheInfo> info_list_;
+ scoped_ptr<Callback0::Type> completion_callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(BrowsingDataAppCacheHelper);
+};
+
+#endif // CHROME_BROWSER_BROWSING_DATA_APPCACHE_HELPER_H_