| 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());
|
| +}
|
|
|