Index: chrome/browser/local_data_container.cc |
diff --git a/chrome/browser/local_data_container.cc b/chrome/browser/local_data_container.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..25f41a43716e5818daa303dec9e827f86d2d40ab |
--- /dev/null |
+++ b/chrome/browser/local_data_container.cc |
@@ -0,0 +1,183 @@ |
+// 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. |
+ |
+#include "chrome/browser/local_data_container.h" |
+ |
+#include "base/bind.h" |
+#include "base/memory/linked_ptr.h" |
+#include "chrome/browser/browsing_data_cookie_helper.h" |
+#include "chrome/browser/browsing_data_server_bound_cert_helper.h" |
+#include "chrome/browser/content_settings/cookie_settings.h" |
+#include "chrome/browser/cookies_tree_model.h" |
+ |
+/////////////////////////////////////////////////////////////////////////////// |
+// LocalDataContainer, public: |
+ |
+LocalDataContainer::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) |
+ : app_name_(app_name), |
+ app_id_(app_id), |
+ appcache_helper_(appcache_helper), |
+ cookie_helper_(cookie_helper), |
+ database_helper_(database_helper), |
+ local_storage_helper_(local_storage_helper), |
+ session_storage_helper_(session_storage_helper), |
+ indexed_db_helper_(indexed_db_helper), |
+ file_system_helper_(file_system_helper), |
+ quota_helper_(quota_helper), |
+ server_bound_cert_helper_(server_bound_cert_helper), |
+ model_(NULL), |
+ ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {} |
+ |
+LocalDataContainer::~LocalDataContainer() {} |
+ |
+void LocalDataContainer::Init(CookiesTreeModel* model) { |
+ DCHECK(!model_); |
+ model_ = model; |
+ |
+ DCHECK(cookie_helper_); |
+ cookie_helper_->StartFetching( |
+ base::Bind(&LocalDataContainer::OnCookiesModelInfoLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ |
+ if (database_helper_) { |
+ database_helper_->StartFetching( |
+ base::Bind(&LocalDataContainer::OnDatabaseModelInfoLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ } |
+ |
+ if (local_storage_helper_) { |
+ local_storage_helper_->StartFetching( |
+ base::Bind(&LocalDataContainer::OnLocalStorageModelInfoLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ } |
+ |
+ if (session_storage_helper_) { |
+ session_storage_helper_->StartFetching( |
+ base::Bind(&LocalDataContainer::OnSessionStorageModelInfoLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ } |
+ |
+ // TODO(michaeln): When all of the UI implementations have been updated, make |
+ // this a required parameter. |
+ if (appcache_helper_) { |
+ appcache_helper_->StartFetching( |
+ base::Bind(&LocalDataContainer::OnAppCacheModelInfoLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ } |
+ |
+ if (indexed_db_helper_) { |
+ indexed_db_helper_->StartFetching( |
+ base::Bind(&LocalDataContainer::OnIndexedDBModelInfoLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ } |
+ |
+ if (file_system_helper_) { |
+ file_system_helper_->StartFetching( |
+ base::Bind(&LocalDataContainer::OnFileSystemModelInfoLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ } |
+ |
+ if (quota_helper_) { |
+ quota_helper_->StartFetching( |
+ base::Bind(&LocalDataContainer::OnQuotaModelInfoLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ } |
+ |
+ if (server_bound_cert_helper_) { |
+ server_bound_cert_helper_->StartFetching( |
+ base::Bind(&LocalDataContainer::OnServerBoundCertModelInfoLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ } |
+} |
+ |
+void LocalDataContainer::OnAppCacheModelInfoLoaded() { |
+ using appcache::AppCacheInfo; |
+ using appcache::AppCacheInfoCollection; |
+ using appcache::AppCacheInfoVector; |
+ typedef std::map<GURL, AppCacheInfoVector> InfoByOrigin; |
+ |
+ scoped_refptr<AppCacheInfoCollection> appcache_info = |
+ appcache_helper_->info_collection(); |
+ if (!appcache_info || appcache_info->infos_by_origin.empty()) |
+ return; |
+ |
+ for (InfoByOrigin::const_iterator origin = |
+ appcache_info->infos_by_origin.begin(); |
+ origin != appcache_info->infos_by_origin.end(); ++origin) { |
+ std::list<AppCacheInfo>& info_list = appcache_info_[origin->first]; |
+ info_list.insert( |
+ info_list.begin(), origin->second.begin(), origin->second.end()); |
+ } |
+ |
+ model_->PopulateAppCacheInfoWithFilter(&app_name_, string16()); |
+} |
+ |
+void LocalDataContainer::OnCookiesModelInfoLoaded( |
+ const net::CookieList& cookie_list) { |
+ cookie_list_.insert(cookie_list_.begin(), |
+ cookie_list.begin(), |
+ cookie_list.end()); |
+ DCHECK(model_); |
+ model_->PopulateCookieInfoWithFilter(&app_id_, string16()); |
+} |
+ |
+void LocalDataContainer::OnDatabaseModelInfoLoaded( |
+ const DatabaseInfoList& database_info) { |
+ database_info_list_ = database_info; |
+ DCHECK(model_); |
+ model_->PopulateDatabaseInfoWithFilter(&app_id_, string16()); |
+} |
+ |
+void LocalDataContainer::OnLocalStorageModelInfoLoaded( |
+ const LocalStorageInfoList& local_storage_info) { |
+ local_storage_info_list_ = local_storage_info; |
+ DCHECK(model_); |
+ model_->PopulateLocalStorageInfoWithFilter(&app_id_, string16()); |
+} |
+ |
+void LocalDataContainer::OnSessionStorageModelInfoLoaded( |
+ const LocalStorageInfoList& session_storage_info) { |
+ session_storage_info_list_ = session_storage_info; |
+ DCHECK(model_); |
+ model_->PopulateSessionStorageInfoWithFilter(&app_id_, string16()); |
+} |
+ |
+void LocalDataContainer::OnIndexedDBModelInfoLoaded( |
+ const IndexedDBInfoList& indexed_db_info) { |
+ indexed_db_info_list_ = indexed_db_info; |
+ DCHECK(model_); |
+ model_->PopulateIndexedDBInfoWithFilter(&app_id_, string16()); |
+} |
+ |
+void LocalDataContainer::OnFileSystemModelInfoLoaded( |
+ const FileSystemInfoList& file_system_info) { |
+ file_system_info_list_ = file_system_info; |
+ DCHECK(model_); |
+ model_->PopulateFileSystemInfoWithFilter(&app_id_, string16()); |
+} |
+ |
+void LocalDataContainer::OnQuotaModelInfoLoaded( |
+ const QuotaInfoList& quota_info) { |
+ quota_info_list_ = quota_info; |
+ DCHECK(model_); |
+ model_->PopulateQuotaInfoWithFilter(&app_id_, string16()); |
+} |
+ |
+void LocalDataContainer::OnServerBoundCertModelInfoLoaded( |
+ const ServerBoundCertList& cert_list) { |
+ server_bound_cert_list_ = cert_list; |
+ DCHECK(model_); |
+ model_->PopulateServerBoundCertInfoWithFilter(&app_id_, string16()); |
+} |