Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4798)

Unified Diff: chrome/browser/local_data_container.h

Issue 10536017: Refactoring CookiesTreeModel to support multiple data sources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixes for commes by James and Evan. Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/cookies_tree_model_unittest.cc ('k') | chrome/browser/local_data_container.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/local_data_container.h
diff --git a/chrome/browser/local_data_container.h b/chrome/browser/local_data_container.h
new file mode 100644
index 0000000000000000000000000000000000000000..9374f60963fbe552ddadb517df01bf1aec300753
--- /dev/null
+++ b/chrome/browser/local_data_container.h
@@ -0,0 +1,139 @@
+// Copyright (c) 2012 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_LOCAL_DATA_CONTAINER_H_
+#define CHROME_BROWSER_LOCAL_DATA_CONTAINER_H_
+#pragma once
+
+#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
+#include "base/string16.h"
+#include "chrome/browser/browsing_data_appcache_helper.h"
+#include "chrome/browser/browsing_data_cookie_helper.h"
+#include "chrome/browser/browsing_data_database_helper.h"
+#include "chrome/browser/browsing_data_file_system_helper.h"
+#include "chrome/browser/browsing_data_indexed_db_helper.h"
+#include "chrome/browser/browsing_data_local_storage_helper.h"
+#include "chrome/browser/browsing_data_quota_helper.h"
+#include "chrome/browser/browsing_data_server_bound_cert_helper.h"
+#include "net/base/server_bound_cert_store.h"
+#include "net/cookies/cookie_monster.h"
+
+class LocalDataContainer;
+class CookiesTreeModelDelegate;
+
+// Friendly typedefs for the multiple types of lists used in the model.
+namespace {
+
+typedef std::map<std::string, LocalDataContainer*> ContainerMap;
+typedef std::list<net::CookieMonster::CanonicalCookie> CookieList;
+typedef std::list<BrowsingDataDatabaseHelper::DatabaseInfo> DatabaseInfoList;
+typedef std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>
+ LocalStorageInfoList;
+typedef std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>
+ SessionStorageInfoList;
+typedef std::list<BrowsingDataIndexedDBHelper::IndexedDBInfo>
+ IndexedDBInfoList;
+typedef std::list<BrowsingDataFileSystemHelper::FileSystemInfo>
+ FileSystemInfoList;
+typedef std::list<BrowsingDataQuotaHelper::QuotaInfo> QuotaInfoList;
+typedef net::ServerBoundCertStore::ServerBoundCertList ServerBoundCertList;
+typedef std::map<GURL, std::list<appcache::AppCacheInfo> > AppCacheInfoMap;
+
+} // namespace
+
+// LocalDataContainer ---------------------------------------------------------
+// This class is a wrapper around all the BrowsingData*Helper classes. Because
+// isolated applications have separate storage, we need different helper
+// instances. As such, this class contains the app name and id, along with the
+// helpers for all of the data types we need. The browser-wide "app id" will be
+// the empty string, as no app can have empty id.
+class LocalDataContainer {
+ public:
+ LocalDataContainer(
+ const std::string& app_name,
+ const std::string& app_id,
+ BrowsingDataCookieHelper* cookie_helper,
+ BrowsingDataDatabaseHelper* database_helper,
+ BrowsingDataLocalStorageHelper* local_storage_helper,
+ BrowsingDataLocalStorageHelper* session_storage_helper,
+ BrowsingDataAppCacheHelper* appcache_helper,
+ BrowsingDataIndexedDBHelper* indexed_db_helper,
+ BrowsingDataFileSystemHelper* file_system_helper,
+ BrowsingDataQuotaHelper* quota_helper,
+ BrowsingDataServerBoundCertHelper* server_bound_cert_helper);
+ virtual ~LocalDataContainer();
+
+ // This method must be called to start the process of fetching the resources.
+ // The delegate passed in is called back to deliver the updates.
+ void Init(CookiesTreeModelDelegate* delegate);
+
+ const std::string& app_name() { return app_name_; }
+ const std::string& app_id() { return app_id_; }
+
+ private:
+ friend class CookiesTreeModel;
+ friend class CookieTreeAppCacheNode;
+ friend class CookieTreeCookieNode;
+ friend class CookieTreeDatabaseNode;
+ friend class CookieTreeLocalStorageNode;
+ friend class CookieTreeSessionStorageNode;
+ friend class CookieTreeIndexedDBNode;
+ friend class CookieTreeFileSystemNode;
+ friend class CookieTreeQuotaNode;
+ friend class CookieTreeServerBoundCertNode;
+
+ // Callback methods to be invoked when fetching the data is complete.
+ void OnAppCacheModelInfoLoaded();
+ void OnCookiesModelInfoLoaded(const net::CookieList& cookie_list);
+ void OnDatabaseModelInfoLoaded(const DatabaseInfoList& database_info);
+ void OnLocalStorageModelInfoLoaded(
+ const LocalStorageInfoList& local_storage_info);
+ void OnSessionStorageModelInfoLoaded(
+ const LocalStorageInfoList& local_storage_info);
+ void OnIndexedDBModelInfoLoaded(
+ const IndexedDBInfoList& indexed_db_info);
+ void OnFileSystemModelInfoLoaded(
+ const FileSystemInfoList& file_system_info);
+ void OnQuotaModelInfoLoaded(const QuotaInfoList& quota_info);
+ void OnServerBoundCertModelInfoLoaded(const ServerBoundCertList& cert_list);
+
+ // The app name and id, to which this container object is for.
+ std::string app_name_;
+ std::string app_id_;
+
+ // Pointers to the helper objects, needed to retreive all the types of locally
+ // stored data.
+ scoped_refptr<BrowsingDataAppCacheHelper> appcache_helper_;
+ scoped_refptr<BrowsingDataCookieHelper> cookie_helper_;
+ scoped_refptr<BrowsingDataDatabaseHelper> database_helper_;
+ scoped_refptr<BrowsingDataLocalStorageHelper> local_storage_helper_;
+ scoped_refptr<BrowsingDataLocalStorageHelper> session_storage_helper_;
+ scoped_refptr<BrowsingDataIndexedDBHelper> indexed_db_helper_;
+ scoped_refptr<BrowsingDataFileSystemHelper> file_system_helper_;
+ scoped_refptr<BrowsingDataQuotaHelper> quota_helper_;
+ scoped_refptr<BrowsingDataServerBoundCertHelper> server_bound_cert_helper_;
+
+ // Storage for all the data that was retrieved through the helper objects.
+ // The collected data is used for (re)creating the CookiesTreeModel.
+ AppCacheInfoMap appcache_info_;
+ CookieList cookie_list_;
+ DatabaseInfoList database_info_list_;
+ LocalStorageInfoList local_storage_info_list_;
+ LocalStorageInfoList session_storage_info_list_;
+ IndexedDBInfoList indexed_db_info_list_;
+ FileSystemInfoList file_system_info_list_;
+ QuotaInfoList quota_info_list_;
+ ServerBoundCertList server_bound_cert_list_;
+
+ // A delegate, which must outlive this object. The update callbacks use the
+ // delegate to deliver the updated data to the CookieTreeModel.
+ CookiesTreeModelDelegate* delegate_;
+
+ base::WeakPtrFactory<LocalDataContainer> weak_ptr_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(LocalDataContainer);
+};
+
+#endif // CHROME_BROWSER_LOCAL_DATA_CONTAINER_H_
« no previous file with comments | « chrome/browser/cookies_tree_model_unittest.cc ('k') | chrome/browser/local_data_container.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698