Disable view source for Developer Tools.
[chromium-blink-merge.git] / chrome / browser / browsing_data / local_data_container.cc
blobf0512960796776ca54fb06635989b5cbeb477332
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/browsing_data/local_data_container.h"
7 #include "base/bind.h"
8 #include "base/memory/linked_ptr.h"
9 #include "chrome/browser/browsing_data/browsing_data_flash_lso_helper.h"
10 #include "chrome/browser/browsing_data/browsing_data_server_bound_cert_helper.h"
11 #include "chrome/browser/browsing_data/cookies_tree_model.h"
12 #include "chrome/browser/content_settings/cookie_settings.h"
13 #include "net/cookies/canonical_cookie.h"
15 ///////////////////////////////////////////////////////////////////////////////
16 // LocalDataContainer, public:
18 LocalDataContainer::LocalDataContainer(
19 BrowsingDataCookieHelper* cookie_helper,
20 BrowsingDataDatabaseHelper* database_helper,
21 BrowsingDataLocalStorageHelper* local_storage_helper,
22 BrowsingDataLocalStorageHelper* session_storage_helper,
23 BrowsingDataAppCacheHelper* appcache_helper,
24 BrowsingDataIndexedDBHelper* indexed_db_helper,
25 BrowsingDataFileSystemHelper* file_system_helper,
26 BrowsingDataQuotaHelper* quota_helper,
27 BrowsingDataServerBoundCertHelper* server_bound_cert_helper,
28 BrowsingDataFlashLSOHelper* flash_lso_helper)
29 : appcache_helper_(appcache_helper),
30 cookie_helper_(cookie_helper),
31 database_helper_(database_helper),
32 local_storage_helper_(local_storage_helper),
33 session_storage_helper_(session_storage_helper),
34 indexed_db_helper_(indexed_db_helper),
35 file_system_helper_(file_system_helper),
36 quota_helper_(quota_helper),
37 server_bound_cert_helper_(server_bound_cert_helper),
38 flash_lso_helper_(flash_lso_helper),
39 model_(NULL),
40 weak_ptr_factory_(this) {}
42 LocalDataContainer::~LocalDataContainer() {}
44 void LocalDataContainer::Init(CookiesTreeModel* model) {
45 DCHECK(!model_);
46 model_ = model;
48 DCHECK(cookie_helper_.get());
49 cookie_helper_->StartFetching(
50 base::Bind(&LocalDataContainer::OnCookiesModelInfoLoaded,
51 weak_ptr_factory_.GetWeakPtr()));
53 if (database_helper_.get()) {
54 database_helper_->StartFetching(
55 base::Bind(&LocalDataContainer::OnDatabaseModelInfoLoaded,
56 weak_ptr_factory_.GetWeakPtr()));
59 if (local_storage_helper_.get()) {
60 local_storage_helper_->StartFetching(
61 base::Bind(&LocalDataContainer::OnLocalStorageModelInfoLoaded,
62 weak_ptr_factory_.GetWeakPtr()));
65 if (session_storage_helper_.get()) {
66 session_storage_helper_->StartFetching(
67 base::Bind(&LocalDataContainer::OnSessionStorageModelInfoLoaded,
68 weak_ptr_factory_.GetWeakPtr()));
71 // TODO(michaeln): When all of the UI implementations have been updated, make
72 // this a required parameter.
73 if (appcache_helper_.get()) {
74 appcache_helper_->StartFetching(
75 base::Bind(&LocalDataContainer::OnAppCacheModelInfoLoaded,
76 weak_ptr_factory_.GetWeakPtr()));
79 if (indexed_db_helper_.get()) {
80 indexed_db_helper_->StartFetching(
81 base::Bind(&LocalDataContainer::OnIndexedDBModelInfoLoaded,
82 weak_ptr_factory_.GetWeakPtr()));
85 if (file_system_helper_.get()) {
86 file_system_helper_->StartFetching(
87 base::Bind(&LocalDataContainer::OnFileSystemModelInfoLoaded,
88 weak_ptr_factory_.GetWeakPtr()));
91 if (quota_helper_.get()) {
92 quota_helper_->StartFetching(
93 base::Bind(&LocalDataContainer::OnQuotaModelInfoLoaded,
94 weak_ptr_factory_.GetWeakPtr()));
97 if (server_bound_cert_helper_.get()) {
98 server_bound_cert_helper_->StartFetching(
99 base::Bind(&LocalDataContainer::OnServerBoundCertModelInfoLoaded,
100 weak_ptr_factory_.GetWeakPtr()));
103 if (flash_lso_helper_.get()) {
104 flash_lso_helper_->StartFetching(
105 base::Bind(&LocalDataContainer::OnFlashLSOInfoLoaded,
106 weak_ptr_factory_.GetWeakPtr()));
110 void LocalDataContainer::OnAppCacheModelInfoLoaded() {
111 using appcache::AppCacheInfo;
112 using appcache::AppCacheInfoCollection;
113 using appcache::AppCacheInfoVector;
114 typedef std::map<GURL, AppCacheInfoVector> InfoByOrigin;
116 scoped_refptr<AppCacheInfoCollection> appcache_info =
117 appcache_helper_->info_collection();
118 if (!appcache_info.get() || appcache_info->infos_by_origin.empty())
119 return;
121 for (InfoByOrigin::const_iterator origin =
122 appcache_info->infos_by_origin.begin();
123 origin != appcache_info->infos_by_origin.end(); ++origin) {
124 std::list<AppCacheInfo>& info_list = appcache_info_[origin->first];
125 info_list.insert(
126 info_list.begin(), origin->second.begin(), origin->second.end());
129 model_->PopulateAppCacheInfo(this);
132 void LocalDataContainer::OnCookiesModelInfoLoaded(
133 const net::CookieList& cookie_list) {
134 cookie_list_.insert(cookie_list_.begin(),
135 cookie_list.begin(),
136 cookie_list.end());
137 DCHECK(model_);
138 model_->PopulateCookieInfo(this);
141 void LocalDataContainer::OnDatabaseModelInfoLoaded(
142 const DatabaseInfoList& database_info) {
143 database_info_list_ = database_info;
144 DCHECK(model_);
145 model_->PopulateDatabaseInfo(this);
148 void LocalDataContainer::OnLocalStorageModelInfoLoaded(
149 const LocalStorageInfoList& local_storage_info) {
150 local_storage_info_list_ = local_storage_info;
151 DCHECK(model_);
152 model_->PopulateLocalStorageInfo(this);
155 void LocalDataContainer::OnSessionStorageModelInfoLoaded(
156 const LocalStorageInfoList& session_storage_info) {
157 session_storage_info_list_ = session_storage_info;
158 DCHECK(model_);
159 model_->PopulateSessionStorageInfo(this);
162 void LocalDataContainer::OnIndexedDBModelInfoLoaded(
163 const IndexedDBInfoList& indexed_db_info) {
164 indexed_db_info_list_ = indexed_db_info;
165 DCHECK(model_);
166 model_->PopulateIndexedDBInfo(this);
169 void LocalDataContainer::OnFileSystemModelInfoLoaded(
170 const FileSystemInfoList& file_system_info) {
171 file_system_info_list_ = file_system_info;
172 DCHECK(model_);
173 model_->PopulateFileSystemInfo(this);
176 void LocalDataContainer::OnQuotaModelInfoLoaded(
177 const QuotaInfoList& quota_info) {
178 quota_info_list_ = quota_info;
179 DCHECK(model_);
180 model_->PopulateQuotaInfo(this);
183 void LocalDataContainer::OnServerBoundCertModelInfoLoaded(
184 const ServerBoundCertList& cert_list) {
185 server_bound_cert_list_ = cert_list;
186 DCHECK(model_);
187 model_->PopulateServerBoundCertInfo(this);
190 void LocalDataContainer::OnFlashLSOInfoLoaded(
191 const FlashLSODomainList& domains) {
192 flash_lso_domain_list_ = domains;
193 DCHECK(model_);
194 model_->PopulateFlashLSOInfo(this);