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

Side by Side Diff: chrome/browser/cookies_tree_model.cc

Issue 10709006: Show apps protecting local data in chrome://settings/cookies. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 8 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/cookies_tree_model.h" 5 #include "chrome/browser/cookies_tree_model.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/memory/linked_ptr.h" 12 #include "base/memory/linked_ptr.h"
13 #include "base/string_util.h" 13 #include "base/string_util.h"
14 #include "base/utf_string_conversions.h" 14 #include "base/utf_string_conversions.h"
15 #include "chrome/browser/browsing_data_cookie_helper.h" 15 #include "chrome/browser/browsing_data_cookie_helper.h"
16 #include "chrome/browser/browsing_data_server_bound_cert_helper.h" 16 #include "chrome/browser/browsing_data_server_bound_cert_helper.h"
17 #include "chrome/browser/content_settings/cookie_settings.h" 17 #include "chrome/browser/content_settings/cookie_settings.h"
18 #include "chrome/browser/extensions/extension_service.h" 18 #include "chrome/browser/extensions/extension_service.h"
19 #include "chrome/browser/extensions/extension_special_storage_policy.h"
19 #include "content/public/common/url_constants.h" 20 #include "content/public/common/url_constants.h"
20 #include "grit/generated_resources.h" 21 #include "grit/generated_resources.h"
21 #include "grit/theme_resources.h" 22 #include "grit/theme_resources.h"
22 #include "grit/theme_resources_standard.h" 23 #include "grit/theme_resources_standard.h"
23 #include "grit/ui_resources.h" 24 #include "grit/ui_resources.h"
24 #include "net/base/registry_controlled_domain.h" 25 #include "net/base/registry_controlled_domain.h"
25 #include "net/cookies/cookie_monster.h" 26 #include "net/cookies/cookie_monster.h"
26 #include "net/url_request/url_request_context.h" 27 #include "net/url_request/url_request_context.h"
27 #include "ui/base/l10n/l10n_util.h" 28 #include "ui/base/l10n/l10n_util.h"
28 #include "ui/base/resource/resource_bundle.h" 29 #include "ui/base/resource/resource_bundle.h"
29 #include "ui/gfx/image/image_skia.h" 30 #include "ui/gfx/image/image_skia.h"
30 31
31 namespace { 32 namespace {
32 33
33 struct NodeTitleComparator { 34 struct NodeTitleComparator {
34 bool operator()(const CookieTreeNode* lhs, const CookieTreeNode* rhs) { 35 bool operator()(const CookieTreeNode* lhs, const CookieTreeNode* rhs) {
35 return lhs->GetTitle() < rhs->GetTitle(); 36 return lhs->GetTitle() < rhs->GetTitle();
36 } 37 }
37 }; 38 };
38 39
39 // Comparison functor, for use in CookieTreeRootNode. 40 // Comparison functor, for use in CookieTreeRootNode.
40 struct OriginNodeComparator { 41 struct HostNodeComparator {
41 bool operator()(const CookieTreeNode* lhs, const CookieTreeNode* rhs) { 42 bool operator()(const CookieTreeNode* lhs, const CookieTreeNode* rhs) {
42 // We want to order by registry controlled domain, so we would get 43 // We want to order by registry controlled domain, so we would get
43 // google.com, ad.google.com, www.google.com, 44 // google.com, ad.google.com, www.google.com,
44 // microsoft.com, ad.microsoft.com. CanonicalizeHost transforms the origins 45 // microsoft.com, ad.microsoft.com. CanonicalizeHost transforms the origins
45 // into a form like google.com.www so that string comparisons work. 46 // into a form like google.com.www so that string comparisons work.
46 return (CanonicalizeHost(lhs->GetTitle()) < 47 return (CanonicalizeHost(lhs->GetTitle()) <
jochen (gone - plz use gerrit) 2012/07/09 15:24:30 now that the nodes are supposed to contain the act
Bernhard Bauer 2012/07/09 15:43:46 Hm. The problem is that I only have generic Cookie
jochen (gone - plz use gerrit) 2012/07/10 10:13:02 I would prefer static casting for the sake of read
47 CanonicalizeHost(rhs->GetTitle())); 48 CanonicalizeHost(rhs->GetTitle()));
48 } 49 }
49 50
50 static std::string CanonicalizeHost(const string16& host16) { 51 static std::string CanonicalizeHost(const string16& host16) {
51 // The canonicalized representation makes the registry controlled domain 52 // The canonicalized representation makes the registry controlled domain
52 // come first, and then adds subdomains in reverse order, e.g. 53 // come first, and then adds subdomains in reverse order, e.g.
53 // 1.mail.google.com would become google.com.mail.1, and then a standard 54 // 1.mail.google.com would become google.com.mail.1, and then a standard
54 // string comparison works to order hosts by registry controlled domain 55 // string comparison works to order hosts by registry controlled domain
55 // first. Leading dots are ignored, ".google.com" is the same as 56 // first. Leading dots are ignored, ".google.com" is the same as
56 // "google.com". 57 // "google.com".
(...skipping 25 matching lines...) Expand all
82 retval += host.substr(0, position); 83 retval += host.substr(0, position);
83 break; 84 break;
84 } 85 }
85 retval += host.substr(next_dot + 1, position - (next_dot + 1)); 86 retval += host.substr(next_dot + 1, position - (next_dot + 1));
86 position = next_dot; 87 position = next_dot;
87 } 88 }
88 return retval; 89 return retval;
89 } 90 }
90 }; 91 };
91 92
93 bool TypeIsProtected(CookieTreeNode::DetailedInfo::NodeType type) {
94 switch (type) {
95 case CookieTreeNode::DetailedInfo::TYPE_COOKIE:
96 return false;
97 case CookieTreeNode::DetailedInfo::TYPE_DATABASE:
98 return true;
99 case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE:
100 return true;
101 case CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE:
102 return true;
103 case CookieTreeNode::DetailedInfo::TYPE_APPCACHE:
104 return true;
105 case CookieTreeNode::DetailedInfo::TYPE_INDEXED_DB:
106 return true;
107 case CookieTreeNode::DetailedInfo::TYPE_FILE_SYSTEM:
108 return true;
109 case CookieTreeNode::DetailedInfo::TYPE_QUOTA:
110 return true;
111 case CookieTreeNode::DetailedInfo::TYPE_SERVER_BOUND_CERT:
112 return false;
113 default:
114 break;
115 }
116 return false;
117 }
118
92 } // namespace 119 } // namespace
93 120
121 CookieTreeNode::DetailedInfo::DetailedInfo()
122 : node_type(TYPE_NONE),
123 cookie(NULL),
124 database_info(NULL),
125 local_storage_info(NULL),
126 session_storage_info(NULL),
127 appcache_info(NULL),
128 indexed_db_info(NULL),
129 file_system_info(NULL),
130 quota_info(NULL),
131 server_bound_cert(NULL) {}
132
133 CookieTreeNode::DetailedInfo::~DetailedInfo() {}
134
135 CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::Init(
136 NodeType type) {
137 DCHECK_EQ(TYPE_NONE, node_type);
138 node_type = type;
139 return *this;
140 }
141
142 CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitCookie(
143 const net::CookieMonster::CanonicalCookie* cookie) {
144 Init(TYPE_COOKIE);
145 this->cookie = cookie;
146 return *this;
147 }
148
149 CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitDatabase(
150 const BrowsingDataDatabaseHelper::DatabaseInfo* database_info) {
151 Init(TYPE_DATABASE);
152 this->database_info = database_info;
153 origin = GURL(database_info->origin);
154 return *this;
155 }
156
157 CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitLocalStorage(
158 const BrowsingDataLocalStorageHelper::LocalStorageInfo*
159 local_storage_info) {
160 Init(TYPE_LOCAL_STORAGE);
161 this->local_storage_info = local_storage_info;
162 origin = local_storage_info->origin_url;
163 return *this;
164 }
165
166 CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitSessionStorage(
167 const BrowsingDataLocalStorageHelper::LocalStorageInfo*
168 session_storage_info) {
169 Init(TYPE_SESSION_STORAGE);
170 this->session_storage_info = session_storage_info;
171 origin = session_storage_info->origin_url;
172 return *this;
173 }
174
175 CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitAppCache(
176 const GURL& origin,
177 const appcache::AppCacheInfo* appcache_info) {
178 Init(TYPE_APPCACHE);
179 this->appcache_info = appcache_info;
180 this->origin = origin;
181 return *this;
182 }
183
184 CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitIndexedDB(
185 const BrowsingDataIndexedDBHelper::IndexedDBInfo* indexed_db_info) {
186 Init(TYPE_INDEXED_DB);
187 this->indexed_db_info = indexed_db_info;
188 this->origin = indexed_db_info->origin;
189 return *this;
190 }
191
192 CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitFileSystem(
193 const BrowsingDataFileSystemHelper::FileSystemInfo* file_system_info) {
194 Init(TYPE_FILE_SYSTEM);
195 this->file_system_info = file_system_info;
196 this->origin = file_system_info->origin;
197 return *this;
198 }
199
200 CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitQuota(
201 const BrowsingDataQuotaHelper::QuotaInfo* quota_info) {
202 Init(TYPE_QUOTA);
203 this->quota_info = quota_info;
204 return *this;
205 }
206
207 CookieTreeNode::DetailedInfo& CookieTreeNode::DetailedInfo::InitServerBoundCert(
208 const net::ServerBoundCertStore::ServerBoundCert* server_bound_cert) {
209 Init(TYPE_SERVER_BOUND_CERT);
210 this->server_bound_cert = server_bound_cert;
211 return *this;
212 }
213
94 /////////////////////////////////////////////////////////////////////////////// 214 ///////////////////////////////////////////////////////////////////////////////
95 // CookieTreeNode, public: 215 // CookieTreeNode, public:
96 216
97 void CookieTreeNode::DeleteStoredObjects() { 217 void CookieTreeNode::DeleteStoredObjects() {
98 std::for_each(children().begin(), 218 std::for_each(children().begin(),
99 children().end(), 219 children().end(),
100 std::mem_fun(&CookieTreeNode::DeleteStoredObjects)); 220 std::mem_fun(&CookieTreeNode::DeleteStoredObjects));
101 } 221 }
102 222
103 CookiesTreeModel* CookieTreeNode::GetModel() const { 223 CookiesTreeModel* CookieTreeNode::GetModel() const {
(...skipping 14 matching lines...) Expand all
118 238
119 CookieTreeCookieNode::~CookieTreeCookieNode() {} 239 CookieTreeCookieNode::~CookieTreeCookieNode() {}
120 240
121 void CookieTreeCookieNode::DeleteStoredObjects() { 241 void CookieTreeCookieNode::DeleteStoredObjects() {
122 // notify CookieMonster that we should delete this cookie 242 // notify CookieMonster that we should delete this cookie
123 GetModel()->cookie_helper_->DeleteCookie(*cookie_); 243 GetModel()->cookie_helper_->DeleteCookie(*cookie_);
124 GetModel()->cookie_list_.erase(cookie_); 244 GetModel()->cookie_list_.erase(cookie_);
125 } 245 }
126 246
127 CookieTreeNode::DetailedInfo CookieTreeCookieNode::GetDetailedInfo() const { 247 CookieTreeNode::DetailedInfo CookieTreeCookieNode::GetDetailedInfo() const {
128 return DetailedInfo(parent()->parent()->GetTitle()).InitCookie(&*cookie_); 248 return DetailedInfo().InitCookie(&*cookie_);
129 } 249 }
130 250
131 /////////////////////////////////////////////////////////////////////////////// 251 ///////////////////////////////////////////////////////////////////////////////
132 // CookieTreeAppCacheNode, public: 252 // CookieTreeAppCacheNode, public:
133 253
134 CookieTreeAppCacheNode::CookieTreeAppCacheNode( 254 CookieTreeAppCacheNode::CookieTreeAppCacheNode(
135 const GURL& origin_url, 255 const GURL& origin_url,
136 std::list<appcache::AppCacheInfo>::iterator appcache_info) 256 std::list<appcache::AppCacheInfo>::iterator appcache_info)
137 : CookieTreeNode(UTF8ToUTF16(appcache_info->manifest_url.spec())), 257 : CookieTreeNode(UTF8ToUTF16(appcache_info->manifest_url.spec())),
138 origin_url_(origin_url), 258 origin_url_(origin_url),
139 appcache_info_(appcache_info) { 259 appcache_info_(appcache_info) {
140 } 260 }
141 261
142 CookieTreeAppCacheNode::~CookieTreeAppCacheNode() { 262 CookieTreeAppCacheNode::~CookieTreeAppCacheNode() {
143 } 263 }
144 264
145 void CookieTreeAppCacheNode::DeleteStoredObjects() { 265 void CookieTreeAppCacheNode::DeleteStoredObjects() {
146 DCHECK(GetModel()->appcache_helper_); 266 DCHECK(GetModel()->appcache_helper_);
147 GetModel()->appcache_helper_->DeleteAppCacheGroup( 267 GetModel()->appcache_helper_->DeleteAppCacheGroup(
148 appcache_info_->manifest_url); 268 appcache_info_->manifest_url);
149 GetModel()->appcache_info_[origin_url_].erase(appcache_info_); 269 GetModel()->appcache_info_[origin_url_].erase(appcache_info_);
150 } 270 }
151 271
152 CookieTreeNode::DetailedInfo CookieTreeAppCacheNode::GetDetailedInfo() const { 272 CookieTreeNode::DetailedInfo CookieTreeAppCacheNode::GetDetailedInfo() const {
153 return DetailedInfo(parent()->parent()->GetTitle()).InitAppCache( 273 return DetailedInfo().InitAppCache(origin_url_, &*appcache_info_);
154 &*appcache_info_);
155 } 274 }
156 275
157 /////////////////////////////////////////////////////////////////////////////// 276 ///////////////////////////////////////////////////////////////////////////////
158 // CookieTreeDatabaseNode, public: 277 // CookieTreeDatabaseNode, public:
159 278
160 CookieTreeDatabaseNode::CookieTreeDatabaseNode( 279 CookieTreeDatabaseNode::CookieTreeDatabaseNode(
161 std::list<BrowsingDataDatabaseHelper::DatabaseInfo>::iterator database_info) 280 std::list<BrowsingDataDatabaseHelper::DatabaseInfo>::iterator database_info)
162 : CookieTreeNode(database_info->database_name.empty() ? 281 : CookieTreeNode(database_info->database_name.empty() ?
163 l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASE_UNNAMED_NAME) : 282 l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASE_UNNAMED_NAME) :
164 UTF8ToUTF16(database_info->database_name)), 283 UTF8ToUTF16(database_info->database_name)),
165 database_info_(database_info) { 284 database_info_(database_info) {
166 } 285 }
167 286
168 CookieTreeDatabaseNode::~CookieTreeDatabaseNode() {} 287 CookieTreeDatabaseNode::~CookieTreeDatabaseNode() {}
169 288
170 void CookieTreeDatabaseNode::DeleteStoredObjects() { 289 void CookieTreeDatabaseNode::DeleteStoredObjects() {
171 GetModel()->database_helper_->DeleteDatabase( 290 GetModel()->database_helper_->DeleteDatabase(
172 database_info_->origin_identifier, database_info_->database_name); 291 database_info_->origin_identifier, database_info_->database_name);
173 GetModel()->database_info_list_.erase(database_info_); 292 GetModel()->database_info_list_.erase(database_info_);
174 } 293 }
175 294
176 CookieTreeNode::DetailedInfo CookieTreeDatabaseNode::GetDetailedInfo() const { 295 CookieTreeNode::DetailedInfo CookieTreeDatabaseNode::GetDetailedInfo() const {
177 return DetailedInfo(parent()->parent()->GetTitle()).InitDatabase( 296 return DetailedInfo().InitDatabase(&*database_info_);
178 &*database_info_);
179 } 297 }
180 298
181 /////////////////////////////////////////////////////////////////////////////// 299 ///////////////////////////////////////////////////////////////////////////////
182 // CookieTreeLocalStorageNode, public: 300 // CookieTreeLocalStorageNode, public:
183 301
184 CookieTreeLocalStorageNode::CookieTreeLocalStorageNode( 302 CookieTreeLocalStorageNode::CookieTreeLocalStorageNode(
185 std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator 303 std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator
186 local_storage_info) 304 local_storage_info)
187 : CookieTreeNode(UTF8ToUTF16(local_storage_info->origin_url.spec())), 305 : CookieTreeNode(UTF8ToUTF16(local_storage_info->origin_url.spec())),
188 local_storage_info_(local_storage_info) { 306 local_storage_info_(local_storage_info) {
189 } 307 }
190 308
191 CookieTreeLocalStorageNode::~CookieTreeLocalStorageNode() {} 309 CookieTreeLocalStorageNode::~CookieTreeLocalStorageNode() {}
192 310
193 void CookieTreeLocalStorageNode::DeleteStoredObjects() { 311 void CookieTreeLocalStorageNode::DeleteStoredObjects() {
194 GetModel()->local_storage_helper_->DeleteOrigin( 312 GetModel()->local_storage_helper_->DeleteOrigin(
195 local_storage_info_->origin_url); 313 local_storage_info_->origin_url);
196 GetModel()->local_storage_info_list_.erase(local_storage_info_); 314 GetModel()->local_storage_info_list_.erase(local_storage_info_);
197 } 315 }
198 316
199 CookieTreeNode::DetailedInfo 317 CookieTreeNode::DetailedInfo
200 CookieTreeLocalStorageNode::GetDetailedInfo() const { 318 CookieTreeLocalStorageNode::GetDetailedInfo() const {
201 return DetailedInfo(parent()->parent()->GetTitle()).InitLocalStorage( 319 return DetailedInfo().InitLocalStorage(
202 &*local_storage_info_); 320 &*local_storage_info_);
203 } 321 }
204 322
205 /////////////////////////////////////////////////////////////////////////////// 323 ///////////////////////////////////////////////////////////////////////////////
206 // CookieTreeSessionStorageNode, public: 324 // CookieTreeSessionStorageNode, public:
207 325
208 CookieTreeSessionStorageNode::CookieTreeSessionStorageNode( 326 CookieTreeSessionStorageNode::CookieTreeSessionStorageNode(
209 std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator 327 std::list<BrowsingDataLocalStorageHelper::LocalStorageInfo>::iterator
210 session_storage_info) 328 session_storage_info)
211 : CookieTreeNode(UTF8ToUTF16(session_storage_info->origin_url.spec())), 329 : CookieTreeNode(UTF8ToUTF16(session_storage_info->origin_url.spec())),
212 session_storage_info_(session_storage_info) { 330 session_storage_info_(session_storage_info) {
213 } 331 }
214 332
215 CookieTreeSessionStorageNode::~CookieTreeSessionStorageNode() {} 333 CookieTreeSessionStorageNode::~CookieTreeSessionStorageNode() {}
216 334
217 void CookieTreeSessionStorageNode::DeleteStoredObjects() { 335 void CookieTreeSessionStorageNode::DeleteStoredObjects() {
218 GetModel()->session_storage_info_list_.erase(session_storage_info_); 336 GetModel()->session_storage_info_list_.erase(session_storage_info_);
219 } 337 }
220 338
221 CookieTreeNode::DetailedInfo 339 CookieTreeNode::DetailedInfo
222 CookieTreeSessionStorageNode::GetDetailedInfo() const { 340 CookieTreeSessionStorageNode::GetDetailedInfo() const {
223 return DetailedInfo(parent()->parent()->GetTitle()).InitSessionStorage( 341 return DetailedInfo().InitSessionStorage(&*session_storage_info_);
224 &*session_storage_info_);
225 } 342 }
226 343
227 /////////////////////////////////////////////////////////////////////////////// 344 ///////////////////////////////////////////////////////////////////////////////
228 // CookieTreeIndexedDBNode, public: 345 // CookieTreeIndexedDBNode, public:
229 346
230 CookieTreeIndexedDBNode::CookieTreeIndexedDBNode( 347 CookieTreeIndexedDBNode::CookieTreeIndexedDBNode(
231 std::list<BrowsingDataIndexedDBHelper::IndexedDBInfo>::iterator 348 std::list<BrowsingDataIndexedDBHelper::IndexedDBInfo>::iterator
232 indexed_db_info) 349 indexed_db_info)
233 : CookieTreeNode(UTF8ToUTF16( 350 : CookieTreeNode(UTF8ToUTF16(
234 indexed_db_info->origin.spec())), 351 indexed_db_info->origin.spec())),
235 indexed_db_info_(indexed_db_info) { 352 indexed_db_info_(indexed_db_info) {
236 } 353 }
237 354
238 CookieTreeIndexedDBNode::~CookieTreeIndexedDBNode() {} 355 CookieTreeIndexedDBNode::~CookieTreeIndexedDBNode() {}
239 356
240 void CookieTreeIndexedDBNode::DeleteStoredObjects() { 357 void CookieTreeIndexedDBNode::DeleteStoredObjects() {
241 GetModel()->indexed_db_helper_->DeleteIndexedDB( 358 GetModel()->indexed_db_helper_->DeleteIndexedDB(
242 indexed_db_info_->origin); 359 indexed_db_info_->origin);
243 GetModel()->indexed_db_info_list_.erase(indexed_db_info_); 360 GetModel()->indexed_db_info_list_.erase(indexed_db_info_);
244 } 361 }
245 362
246 CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const { 363 CookieTreeNode::DetailedInfo CookieTreeIndexedDBNode::GetDetailedInfo() const {
247 return DetailedInfo(parent()->parent()->GetTitle()).InitIndexedDB( 364 return DetailedInfo().InitIndexedDB(&*indexed_db_info_);
248 &*indexed_db_info_);
249 } 365 }
250 366
251 /////////////////////////////////////////////////////////////////////////////// 367 ///////////////////////////////////////////////////////////////////////////////
252 // CookieTreeFileSystemNode, public: 368 // CookieTreeFileSystemNode, public:
253 369
254 CookieTreeFileSystemNode::CookieTreeFileSystemNode( 370 CookieTreeFileSystemNode::CookieTreeFileSystemNode(
255 std::list<BrowsingDataFileSystemHelper::FileSystemInfo>::iterator 371 std::list<BrowsingDataFileSystemHelper::FileSystemInfo>::iterator
256 file_system_info) 372 file_system_info)
257 : CookieTreeNode(UTF8ToUTF16( 373 : CookieTreeNode(UTF8ToUTF16(
258 file_system_info->origin.spec())), 374 file_system_info->origin.spec())),
259 file_system_info_(file_system_info) { 375 file_system_info_(file_system_info) {
260 } 376 }
261 377
262 CookieTreeFileSystemNode::~CookieTreeFileSystemNode() {} 378 CookieTreeFileSystemNode::~CookieTreeFileSystemNode() {}
263 379
264 void CookieTreeFileSystemNode::DeleteStoredObjects() { 380 void CookieTreeFileSystemNode::DeleteStoredObjects() {
265 GetModel()->file_system_helper_->DeleteFileSystemOrigin( 381 GetModel()->file_system_helper_->DeleteFileSystemOrigin(
266 file_system_info_->origin); 382 file_system_info_->origin);
267 GetModel()->file_system_info_list_.erase(file_system_info_); 383 GetModel()->file_system_info_list_.erase(file_system_info_);
268 } 384 }
269 385
270 CookieTreeNode::DetailedInfo CookieTreeFileSystemNode::GetDetailedInfo() const { 386 CookieTreeNode::DetailedInfo CookieTreeFileSystemNode::GetDetailedInfo() const {
271 return DetailedInfo(parent()->parent()->GetTitle()).InitFileSystem( 387 return DetailedInfo().InitFileSystem(&*file_system_info_);
272 &*file_system_info_);
273 } 388 }
274 389
275 /////////////////////////////////////////////////////////////////////////////// 390 ///////////////////////////////////////////////////////////////////////////////
276 // CookieTreeQuotaNode, public: 391 // CookieTreeQuotaNode, public:
277 392
278 CookieTreeQuotaNode::CookieTreeQuotaNode( 393 CookieTreeQuotaNode::CookieTreeQuotaNode(
279 std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info) 394 std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info)
280 : CookieTreeNode(UTF8ToUTF16(quota_info->host)), 395 : CookieTreeNode(UTF8ToUTF16(quota_info->host)),
281 quota_info_(quota_info) { 396 quota_info_(quota_info) {
282 } 397 }
283 398
284 CookieTreeQuotaNode::~CookieTreeQuotaNode() {} 399 CookieTreeQuotaNode::~CookieTreeQuotaNode() {}
285 400
286 void CookieTreeQuotaNode::DeleteStoredObjects() { 401 void CookieTreeQuotaNode::DeleteStoredObjects() {
287 // Calling this function may cause unexpected over-quota state of origin. 402 // Calling this function may cause unexpected over-quota state of origin.
288 // However, it'll caused no problem, just prevent usage growth of the origin. 403 // However, it'll caused no problem, just prevent usage growth of the origin.
289 GetModel()->quota_helper_->RevokeHostQuota(quota_info_->host); 404 GetModel()->quota_helper_->RevokeHostQuota(quota_info_->host);
290 GetModel()->quota_info_list_.erase(quota_info_); 405 GetModel()->quota_info_list_.erase(quota_info_);
291 } 406 }
292 407
293 CookieTreeNode::DetailedInfo CookieTreeQuotaNode::GetDetailedInfo() const { 408 CookieTreeNode::DetailedInfo CookieTreeQuotaNode::GetDetailedInfo() const {
294 return DetailedInfo(parent()->parent()->GetTitle()).InitQuota( 409 return DetailedInfo().InitQuota(&*quota_info_);
295 &*quota_info_);
296 } 410 }
297 411
298 /////////////////////////////////////////////////////////////////////////////// 412 ///////////////////////////////////////////////////////////////////////////////
299 // CookieTreeServerBoundCertNode, public: 413 // CookieTreeServerBoundCertNode, public:
300 414
301 CookieTreeServerBoundCertNode::CookieTreeServerBoundCertNode( 415 CookieTreeServerBoundCertNode::CookieTreeServerBoundCertNode(
302 net::ServerBoundCertStore::ServerBoundCertList::iterator cert) 416 net::ServerBoundCertStore::ServerBoundCertList::iterator cert)
303 : CookieTreeNode(ASCIIToUTF16(cert->server_identifier())), 417 : CookieTreeNode(ASCIIToUTF16(cert->server_identifier())),
304 server_bound_cert_(cert) { 418 server_bound_cert_(cert) {
305 } 419 }
306 420
307 CookieTreeServerBoundCertNode::~CookieTreeServerBoundCertNode() {} 421 CookieTreeServerBoundCertNode::~CookieTreeServerBoundCertNode() {}
308 422
309 void CookieTreeServerBoundCertNode::DeleteStoredObjects() { 423 void CookieTreeServerBoundCertNode::DeleteStoredObjects() {
310 GetModel()->server_bound_cert_helper_->DeleteServerBoundCert( 424 GetModel()->server_bound_cert_helper_->DeleteServerBoundCert(
311 server_bound_cert_->server_identifier()); 425 server_bound_cert_->server_identifier());
312 GetModel()->server_bound_cert_list_.erase(server_bound_cert_); 426 GetModel()->server_bound_cert_list_.erase(server_bound_cert_);
313 } 427 }
314 428
315 CookieTreeNode::DetailedInfo 429 CookieTreeNode::DetailedInfo
316 CookieTreeServerBoundCertNode::GetDetailedInfo() const { 430 CookieTreeServerBoundCertNode::GetDetailedInfo() const {
317 return DetailedInfo(parent()->parent()->GetTitle()).InitServerBoundCert( 431 return DetailedInfo().InitServerBoundCert(&*server_bound_cert_);
318 &*server_bound_cert_);
319 } 432 }
320 433
321 /////////////////////////////////////////////////////////////////////////////// 434 ///////////////////////////////////////////////////////////////////////////////
322 // CookieTreeRootNode, public: 435 // CookieTreeRootNode, public:
323 436
324 CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model) 437 CookieTreeRootNode::CookieTreeRootNode(CookiesTreeModel* model)
325 : model_(model) { 438 : model_(model) {
326 } 439 }
327 440
328 CookieTreeRootNode::~CookieTreeRootNode() {} 441 CookieTreeRootNode::~CookieTreeRootNode() {}
329 442
330 CookieTreeOriginNode* CookieTreeRootNode::GetOrCreateOriginNode( 443 CookieTreeHostNode* CookieTreeRootNode::GetOrCreateHostNode(
331 const GURL& url) { 444 const GURL& url) {
332 CookieTreeOriginNode origin_node(url); 445 scoped_ptr<CookieTreeHostNode> host_node(new CookieTreeHostNode(url));
333 446
334 // First see if there is an existing match. 447 // First see if there is an existing match.
335 std::vector<CookieTreeNode*>::iterator origin_node_iterator = 448 std::vector<CookieTreeNode*>::iterator host_node_iterator =
336 std::lower_bound(children().begin(), children().end(), &origin_node, 449 std::lower_bound(children().begin(), children().end(), host_node.get(),
337 OriginNodeComparator()); 450 HostNodeComparator());
338 451
339 if (origin_node_iterator != children().end() && 452 if (host_node_iterator != children().end() &&
340 WideToUTF16Hack(CookieTreeOriginNode::TitleForUrl(url)) == 453 host_node->GetTitle() == (*host_node_iterator)->GetTitle()) {
341 (*origin_node_iterator)->GetTitle()) 454 return static_cast<CookieTreeHostNode*>(*host_node_iterator);
342 return static_cast<CookieTreeOriginNode*>(*origin_node_iterator); 455 }
343 // Node doesn't exist, create a new one and insert it into the (ordered) 456 // Node doesn't exist, create a new one and insert it into the (ordered)
344 // children. 457 // children.
345 CookieTreeOriginNode* retval = new CookieTreeOriginNode(url);
346 DCHECK(model_); 458 DCHECK(model_);
347 model_->Add(this, retval, (origin_node_iterator - children().begin())); 459 model_->Add(this, host_node.get(),
348 return retval; 460 (host_node_iterator - children().begin()));
461 return host_node.release();
349 } 462 }
350 463
351 CookiesTreeModel* CookieTreeRootNode::GetModel() const { 464 CookiesTreeModel* CookieTreeRootNode::GetModel() const {
352 return model_; 465 return model_;
353 } 466 }
354 467
355 CookieTreeNode::DetailedInfo CookieTreeRootNode::GetDetailedInfo() const { 468 CookieTreeNode::DetailedInfo CookieTreeRootNode::GetDetailedInfo() const {
356 return DetailedInfo(string16()).Init(DetailedInfo::TYPE_ROOT); 469 return DetailedInfo().Init(DetailedInfo::TYPE_ROOT);
357 } 470 }
358 471
359 /////////////////////////////////////////////////////////////////////////////// 472 ///////////////////////////////////////////////////////////////////////////////
360 // CookieTreeOriginNode, public: 473 // CookieTreeHostNode, public:
361 474
362 // static 475 // static
363 std::wstring CookieTreeOriginNode::TitleForUrl(const GURL& url) { 476 string16 CookieTreeHostNode::TitleForUrl(
477 const GURL& url) {
364 const std::string file_origin_node_name( 478 const std::string file_origin_node_name(
365 std::string(chrome::kFileScheme) + content::kStandardSchemeSeparator); 479 std::string(chrome::kFileScheme) + content::kStandardSchemeSeparator);
366 return UTF8ToWide(url.SchemeIsFile() ? file_origin_node_name : url.host()); 480 return UTF8ToUTF16(url.SchemeIsFile() ? file_origin_node_name : url.host());
367 } 481 }
368 482
369 CookieTreeOriginNode::CookieTreeOriginNode(const GURL& url) 483 CookieTreeHostNode::CookieTreeHostNode(const GURL& url)
370 : CookieTreeNode(WideToUTF16Hack(TitleForUrl(url))), 484 : CookieTreeNode(TitleForUrl(url)),
371 cookies_child_(NULL), 485 cookies_child_(NULL),
372 databases_child_(NULL), 486 databases_child_(NULL),
373 local_storages_child_(NULL), 487 local_storages_child_(NULL),
374 session_storages_child_(NULL), 488 session_storages_child_(NULL),
375 appcaches_child_(NULL), 489 appcaches_child_(NULL),
376 indexed_dbs_child_(NULL), 490 indexed_dbs_child_(NULL),
377 file_systems_child_(NULL), 491 file_systems_child_(NULL),
378 quota_child_(NULL), 492 quota_child_(NULL),
379 server_bound_certs_child_(NULL), 493 server_bound_certs_child_(NULL),
380 url_(url) {} 494 url_(url) {}
381 495
382 CookieTreeOriginNode::~CookieTreeOriginNode() {} 496 CookieTreeHostNode::~CookieTreeHostNode() {}
383 497
384 CookieTreeNode::DetailedInfo CookieTreeOriginNode::GetDetailedInfo() const { 498 CookieTreeNode::DetailedInfo CookieTreeHostNode::GetDetailedInfo() const {
385 return DetailedInfo(GetTitle()).Init(DetailedInfo::TYPE_ORIGIN); 499 return DetailedInfo().Init(DetailedInfo::TYPE_HOST);
386 } 500 }
387 501
388 CookieTreeCookiesNode* CookieTreeOriginNode::GetOrCreateCookiesNode() { 502 CookieTreeCookiesNode* CookieTreeHostNode::GetOrCreateCookiesNode() {
389 if (cookies_child_) 503 if (cookies_child_)
390 return cookies_child_; 504 return cookies_child_;
391 cookies_child_ = new CookieTreeCookiesNode; 505 cookies_child_ = new CookieTreeCookiesNode;
392 AddChildSortedByTitle(cookies_child_); 506 AddChildSortedByTitle(cookies_child_);
393 return cookies_child_; 507 return cookies_child_;
394 } 508 }
395 509
396 CookieTreeDatabasesNode* CookieTreeOriginNode::GetOrCreateDatabasesNode() { 510 CookieTreeDatabasesNode* CookieTreeHostNode::GetOrCreateDatabasesNode() {
397 if (databases_child_) 511 if (databases_child_)
398 return databases_child_; 512 return databases_child_;
399 databases_child_ = new CookieTreeDatabasesNode; 513 databases_child_ = new CookieTreeDatabasesNode;
400 AddChildSortedByTitle(databases_child_); 514 AddChildSortedByTitle(databases_child_);
401 return databases_child_; 515 return databases_child_;
402 } 516 }
403 517
404 CookieTreeLocalStoragesNode* 518 CookieTreeLocalStoragesNode*
405 CookieTreeOriginNode::GetOrCreateLocalStoragesNode() { 519 CookieTreeHostNode::GetOrCreateLocalStoragesNode() {
406 if (local_storages_child_) 520 if (local_storages_child_)
407 return local_storages_child_; 521 return local_storages_child_;
408 local_storages_child_ = new CookieTreeLocalStoragesNode; 522 local_storages_child_ = new CookieTreeLocalStoragesNode;
409 AddChildSortedByTitle(local_storages_child_); 523 AddChildSortedByTitle(local_storages_child_);
410 return local_storages_child_; 524 return local_storages_child_;
411 } 525 }
412 526
413 CookieTreeSessionStoragesNode* 527 CookieTreeSessionStoragesNode*
414 CookieTreeOriginNode::GetOrCreateSessionStoragesNode() { 528 CookieTreeHostNode::GetOrCreateSessionStoragesNode() {
415 if (session_storages_child_) 529 if (session_storages_child_)
416 return session_storages_child_; 530 return session_storages_child_;
417 session_storages_child_ = new CookieTreeSessionStoragesNode; 531 session_storages_child_ = new CookieTreeSessionStoragesNode;
418 AddChildSortedByTitle(session_storages_child_); 532 AddChildSortedByTitle(session_storages_child_);
419 return session_storages_child_; 533 return session_storages_child_;
420 } 534 }
421 535
422 CookieTreeAppCachesNode* CookieTreeOriginNode::GetOrCreateAppCachesNode() { 536 CookieTreeAppCachesNode* CookieTreeHostNode::GetOrCreateAppCachesNode() {
423 if (appcaches_child_) 537 if (appcaches_child_)
424 return appcaches_child_; 538 return appcaches_child_;
425 appcaches_child_ = new CookieTreeAppCachesNode; 539 appcaches_child_ = new CookieTreeAppCachesNode;
426 AddChildSortedByTitle(appcaches_child_); 540 AddChildSortedByTitle(appcaches_child_);
427 return appcaches_child_; 541 return appcaches_child_;
428 } 542 }
429 543
430 CookieTreeIndexedDBsNode* CookieTreeOriginNode::GetOrCreateIndexedDBsNode() { 544 CookieTreeIndexedDBsNode* CookieTreeHostNode::GetOrCreateIndexedDBsNode() {
431 if (indexed_dbs_child_) 545 if (indexed_dbs_child_)
432 return indexed_dbs_child_; 546 return indexed_dbs_child_;
433 indexed_dbs_child_ = new CookieTreeIndexedDBsNode; 547 indexed_dbs_child_ = new CookieTreeIndexedDBsNode;
434 AddChildSortedByTitle(indexed_dbs_child_); 548 AddChildSortedByTitle(indexed_dbs_child_);
435 return indexed_dbs_child_; 549 return indexed_dbs_child_;
436 } 550 }
437 551
438 CookieTreeFileSystemsNode* CookieTreeOriginNode::GetOrCreateFileSystemsNode() { 552 CookieTreeFileSystemsNode* CookieTreeHostNode::GetOrCreateFileSystemsNode() {
439 if (file_systems_child_) 553 if (file_systems_child_)
440 return file_systems_child_; 554 return file_systems_child_;
441 file_systems_child_ = new CookieTreeFileSystemsNode; 555 file_systems_child_ = new CookieTreeFileSystemsNode;
442 AddChildSortedByTitle(file_systems_child_); 556 AddChildSortedByTitle(file_systems_child_);
443 return file_systems_child_; 557 return file_systems_child_;
444 } 558 }
445 559
446 CookieTreeQuotaNode* CookieTreeOriginNode::UpdateOrCreateQuotaNode( 560 CookieTreeQuotaNode* CookieTreeHostNode::UpdateOrCreateQuotaNode(
447 std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info) { 561 std::list<BrowsingDataQuotaHelper::QuotaInfo>::iterator quota_info) {
448 if (quota_child_) 562 if (quota_child_)
449 return quota_child_; 563 return quota_child_;
450 quota_child_ = new CookieTreeQuotaNode(quota_info); 564 quota_child_ = new CookieTreeQuotaNode(quota_info);
451 AddChildSortedByTitle(quota_child_); 565 AddChildSortedByTitle(quota_child_);
452 return quota_child_; 566 return quota_child_;
453 } 567 }
454 568
455 CookieTreeServerBoundCertsNode* 569 CookieTreeServerBoundCertsNode*
456 CookieTreeOriginNode::GetOrCreateServerBoundCertsNode() { 570 CookieTreeHostNode::GetOrCreateServerBoundCertsNode() {
457 if (server_bound_certs_child_) 571 if (server_bound_certs_child_)
458 return server_bound_certs_child_; 572 return server_bound_certs_child_;
459 server_bound_certs_child_ = new CookieTreeServerBoundCertsNode; 573 server_bound_certs_child_ = new CookieTreeServerBoundCertsNode;
460 AddChildSortedByTitle(server_bound_certs_child_); 574 AddChildSortedByTitle(server_bound_certs_child_);
461 return server_bound_certs_child_; 575 return server_bound_certs_child_;
462 } 576 }
463 577
464 void CookieTreeOriginNode::CreateContentException( 578 void CookieTreeHostNode::CreateContentException(
465 CookieSettings* cookie_settings, ContentSetting setting) const { 579 CookieSettings* cookie_settings, ContentSetting setting) const {
466 DCHECK(setting == CONTENT_SETTING_ALLOW || 580 DCHECK(setting == CONTENT_SETTING_ALLOW ||
467 setting == CONTENT_SETTING_BLOCK || 581 setting == CONTENT_SETTING_BLOCK ||
468 setting == CONTENT_SETTING_SESSION_ONLY); 582 setting == CONTENT_SETTING_SESSION_ONLY);
469 if (CanCreateContentException()) { 583 if (CanCreateContentException()) {
470 cookie_settings->ResetCookieSetting( 584 cookie_settings->ResetCookieSetting(
471 ContentSettingsPattern::FromURLNoWildcard(url_), 585 ContentSettingsPattern::FromURLNoWildcard(url_),
472 ContentSettingsPattern::Wildcard()); 586 ContentSettingsPattern::Wildcard());
473 cookie_settings->SetCookieSetting( 587 cookie_settings->SetCookieSetting(
474 ContentSettingsPattern::FromURL(url_), 588 ContentSettingsPattern::FromURL(url_),
475 ContentSettingsPattern::Wildcard(), setting); 589 ContentSettingsPattern::Wildcard(), setting);
476 } 590 }
477 } 591 }
478 592
479 bool CookieTreeOriginNode::CanCreateContentException() const { 593 bool CookieTreeHostNode::CanCreateContentException() const {
480 return !url_.SchemeIsFile(); 594 return !url_.SchemeIsFile();
481 } 595 }
482 596
483 /////////////////////////////////////////////////////////////////////////////// 597 ///////////////////////////////////////////////////////////////////////////////
484 // CookieTreeCookiesNode, public: 598 // CookieTreeCookiesNode, public:
485 599
486 CookieTreeCookiesNode::CookieTreeCookiesNode() 600 CookieTreeCookiesNode::CookieTreeCookiesNode()
487 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIES)) { 601 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_COOKIES)) {
488 } 602 }
489 603
490 CookieTreeCookiesNode::~CookieTreeCookiesNode() { 604 CookieTreeCookiesNode::~CookieTreeCookiesNode() {
491 } 605 }
492 606
493 CookieTreeNode::DetailedInfo CookieTreeCookiesNode::GetDetailedInfo() const { 607 CookieTreeNode::DetailedInfo CookieTreeCookiesNode::GetDetailedInfo() const {
494 return DetailedInfo(parent()->GetTitle()).Init(DetailedInfo::TYPE_COOKIES); 608 return DetailedInfo().Init(DetailedInfo::TYPE_COOKIES);
495 } 609 }
496 610
497 /////////////////////////////////////////////////////////////////////////////// 611 ///////////////////////////////////////////////////////////////////////////////
498 // CookieTreeAppCachesNode, public: 612 // CookieTreeAppCachesNode, public:
499 613
500 CookieTreeAppCachesNode::CookieTreeAppCachesNode() 614 CookieTreeAppCachesNode::CookieTreeAppCachesNode()
501 : CookieTreeNode(l10n_util::GetStringUTF16( 615 : CookieTreeNode(l10n_util::GetStringUTF16(
502 IDS_COOKIES_APPLICATION_CACHES)) { 616 IDS_COOKIES_APPLICATION_CACHES)) {
503 } 617 }
504 618
505 CookieTreeAppCachesNode::~CookieTreeAppCachesNode() {} 619 CookieTreeAppCachesNode::~CookieTreeAppCachesNode() {}
506 620
507 CookieTreeNode::DetailedInfo CookieTreeAppCachesNode::GetDetailedInfo() const { 621 CookieTreeNode::DetailedInfo CookieTreeAppCachesNode::GetDetailedInfo() const {
508 return DetailedInfo(parent()->GetTitle()).Init(DetailedInfo::TYPE_APPCACHES); 622 return DetailedInfo().Init(DetailedInfo::TYPE_APPCACHES);
509 } 623 }
510 624
511 /////////////////////////////////////////////////////////////////////////////// 625 ///////////////////////////////////////////////////////////////////////////////
512 // CookieTreeDatabasesNode, public: 626 // CookieTreeDatabasesNode, public:
513 627
514 CookieTreeDatabasesNode::CookieTreeDatabasesNode() 628 CookieTreeDatabasesNode::CookieTreeDatabasesNode()
515 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASES)) { 629 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_WEB_DATABASES)) {
516 } 630 }
517 631
518 CookieTreeDatabasesNode::~CookieTreeDatabasesNode() {} 632 CookieTreeDatabasesNode::~CookieTreeDatabasesNode() {}
519 633
520 CookieTreeNode::DetailedInfo CookieTreeDatabasesNode::GetDetailedInfo() const { 634 CookieTreeNode::DetailedInfo CookieTreeDatabasesNode::GetDetailedInfo() const {
521 return DetailedInfo(parent()->GetTitle()).Init(DetailedInfo::TYPE_DATABASES); 635 return DetailedInfo().Init(DetailedInfo::TYPE_DATABASES);
522 } 636 }
523 637
524 /////////////////////////////////////////////////////////////////////////////// 638 ///////////////////////////////////////////////////////////////////////////////
525 // CookieTreeLocalStoragesNode, public: 639 // CookieTreeLocalStoragesNode, public:
526 640
527 CookieTreeLocalStoragesNode::CookieTreeLocalStoragesNode() 641 CookieTreeLocalStoragesNode::CookieTreeLocalStoragesNode()
528 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_LOCAL_STORAGE)) { 642 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_LOCAL_STORAGE)) {
529 } 643 }
530 644
531 CookieTreeLocalStoragesNode::~CookieTreeLocalStoragesNode() {} 645 CookieTreeLocalStoragesNode::~CookieTreeLocalStoragesNode() {}
532 646
533 CookieTreeNode::DetailedInfo 647 CookieTreeNode::DetailedInfo
534 CookieTreeLocalStoragesNode::GetDetailedInfo() const { 648 CookieTreeLocalStoragesNode::GetDetailedInfo() const {
535 return DetailedInfo(parent()->GetTitle()).Init( 649 return DetailedInfo().Init(DetailedInfo::TYPE_LOCAL_STORAGES);
536 DetailedInfo::TYPE_LOCAL_STORAGES);
537 } 650 }
538 651
539 /////////////////////////////////////////////////////////////////////////////// 652 ///////////////////////////////////////////////////////////////////////////////
540 // CookieTreeSessionStoragesNode, public: 653 // CookieTreeSessionStoragesNode, public:
541 654
542 CookieTreeSessionStoragesNode::CookieTreeSessionStoragesNode() 655 CookieTreeSessionStoragesNode::CookieTreeSessionStoragesNode()
543 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_SESSION_STORAGE)) { 656 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_SESSION_STORAGE)) {
544 } 657 }
545 658
546 CookieTreeSessionStoragesNode::~CookieTreeSessionStoragesNode() {} 659 CookieTreeSessionStoragesNode::~CookieTreeSessionStoragesNode() {}
547 660
548 CookieTreeNode::DetailedInfo 661 CookieTreeNode::DetailedInfo
549 CookieTreeSessionStoragesNode::GetDetailedInfo() const { 662 CookieTreeSessionStoragesNode::GetDetailedInfo() const {
550 return DetailedInfo(parent()->GetTitle()).Init( 663 return DetailedInfo().Init(DetailedInfo::TYPE_SESSION_STORAGES);
551 DetailedInfo::TYPE_SESSION_STORAGES);
552 } 664 }
553 665
554 /////////////////////////////////////////////////////////////////////////////// 666 ///////////////////////////////////////////////////////////////////////////////
555 // CookieTreeIndexedDBsNode, public: 667 // CookieTreeIndexedDBsNode, public:
556 668
557 CookieTreeIndexedDBsNode::CookieTreeIndexedDBsNode() 669 CookieTreeIndexedDBsNode::CookieTreeIndexedDBsNode()
558 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_INDEXED_DBS)) { 670 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_INDEXED_DBS)) {
559 } 671 }
560 672
561 CookieTreeIndexedDBsNode::~CookieTreeIndexedDBsNode() {} 673 CookieTreeIndexedDBsNode::~CookieTreeIndexedDBsNode() {}
562 674
563 CookieTreeNode::DetailedInfo 675 CookieTreeNode::DetailedInfo
564 CookieTreeIndexedDBsNode::GetDetailedInfo() const { 676 CookieTreeIndexedDBsNode::GetDetailedInfo() const {
565 return DetailedInfo(parent()->GetTitle()).Init( 677 return DetailedInfo().Init(DetailedInfo::TYPE_INDEXED_DBS);
566 DetailedInfo::TYPE_INDEXED_DBS);
567 } 678 }
568 679
569 /////////////////////////////////////////////////////////////////////////////// 680 ///////////////////////////////////////////////////////////////////////////////
570 // CookieTreeFileSystemsNode, public: 681 // CookieTreeFileSystemsNode, public:
571 682
572 CookieTreeFileSystemsNode::CookieTreeFileSystemsNode() 683 CookieTreeFileSystemsNode::CookieTreeFileSystemsNode()
573 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_FILE_SYSTEMS)) { 684 : CookieTreeNode(l10n_util::GetStringUTF16(IDS_COOKIES_FILE_SYSTEMS)) {
574 } 685 }
575 686
576 CookieTreeFileSystemsNode::~CookieTreeFileSystemsNode() {} 687 CookieTreeFileSystemsNode::~CookieTreeFileSystemsNode() {}
577 688
578 CookieTreeNode::DetailedInfo 689 CookieTreeNode::DetailedInfo
579 CookieTreeFileSystemsNode::GetDetailedInfo() const { 690 CookieTreeFileSystemsNode::GetDetailedInfo() const {
580 return DetailedInfo(parent()->GetTitle()).Init( 691 return DetailedInfo().Init(DetailedInfo::TYPE_FILE_SYSTEMS);
581 DetailedInfo::TYPE_FILE_SYSTEMS);
582 } 692 }
583 693
584 /////////////////////////////////////////////////////////////////////////////// 694 ///////////////////////////////////////////////////////////////////////////////
585 // CookieTreeServerBoundCertsNode, public: 695 // CookieTreeServerBoundCertsNode, public:
586 696
587 CookieTreeServerBoundCertsNode::CookieTreeServerBoundCertsNode() 697 CookieTreeServerBoundCertsNode::CookieTreeServerBoundCertsNode()
588 : CookieTreeNode( 698 : CookieTreeNode(
589 l10n_util::GetStringUTF16(IDS_COOKIES_SERVER_BOUND_CERTS)) { 699 l10n_util::GetStringUTF16(IDS_COOKIES_SERVER_BOUND_CERTS)) {
590 } 700 }
591 701
592 CookieTreeServerBoundCertsNode::~CookieTreeServerBoundCertsNode() {} 702 CookieTreeServerBoundCertsNode::~CookieTreeServerBoundCertsNode() {}
593 703
594 CookieTreeNode::DetailedInfo 704 CookieTreeNode::DetailedInfo
595 CookieTreeServerBoundCertsNode::GetDetailedInfo() const { 705 CookieTreeServerBoundCertsNode::GetDetailedInfo() const {
596 return DetailedInfo(parent()->GetTitle()).Init( 706 return DetailedInfo().Init(DetailedInfo::TYPE_SERVER_BOUND_CERTS);
597 DetailedInfo::TYPE_SERVER_BOUND_CERTS);
598 } 707 }
599 708
600 void CookieTreeNode::AddChildSortedByTitle(CookieTreeNode* new_child) { 709 void CookieTreeNode::AddChildSortedByTitle(CookieTreeNode* new_child) {
601 DCHECK(new_child); 710 DCHECK(new_child);
602 std::vector<CookieTreeNode*>::iterator iter = 711 std::vector<CookieTreeNode*>::iterator iter =
603 std::lower_bound(children().begin(), children().end(), new_child, 712 std::lower_bound(children().begin(), children().end(), new_child,
604 NodeTitleComparator()); 713 NodeTitleComparator());
605 GetModel()->Add(this, new_child, iter - children().begin()); 714 GetModel()->Add(this, new_child, iter - children().begin());
606 } 715 }
607 716
608 /////////////////////////////////////////////////////////////////////////////// 717 ///////////////////////////////////////////////////////////////////////////////
609 // CookiesTreeModel, public: 718 // CookiesTreeModel, public:
610 719
611 CookiesTreeModel::CookiesTreeModel( 720 CookiesTreeModel::CookiesTreeModel(
612 BrowsingDataCookieHelper* cookie_helper, 721 BrowsingDataCookieHelper* cookie_helper,
613 BrowsingDataDatabaseHelper* database_helper, 722 BrowsingDataDatabaseHelper* database_helper,
614 BrowsingDataLocalStorageHelper* local_storage_helper, 723 BrowsingDataLocalStorageHelper* local_storage_helper,
615 BrowsingDataLocalStorageHelper* session_storage_helper, 724 BrowsingDataLocalStorageHelper* session_storage_helper,
616 BrowsingDataAppCacheHelper* appcache_helper, 725 BrowsingDataAppCacheHelper* appcache_helper,
617 BrowsingDataIndexedDBHelper* indexed_db_helper, 726 BrowsingDataIndexedDBHelper* indexed_db_helper,
618 BrowsingDataFileSystemHelper* file_system_helper, 727 BrowsingDataFileSystemHelper* file_system_helper,
619 BrowsingDataQuotaHelper* quota_helper, 728 BrowsingDataQuotaHelper* quota_helper,
620 BrowsingDataServerBoundCertHelper* server_bound_cert_helper, 729 BrowsingDataServerBoundCertHelper* server_bound_cert_helper,
730 ExtensionSpecialStoragePolicy* special_storage_policy,
621 bool use_cookie_source) 731 bool use_cookie_source)
622 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::TreeNodeModel<CookieTreeNode>( 732 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::TreeNodeModel<CookieTreeNode>(
623 new CookieTreeRootNode(this))), 733 new CookieTreeRootNode(this))),
624 appcache_helper_(appcache_helper), 734 appcache_helper_(appcache_helper),
625 cookie_helper_(cookie_helper), 735 cookie_helper_(cookie_helper),
626 database_helper_(database_helper), 736 database_helper_(database_helper),
627 local_storage_helper_(local_storage_helper), 737 local_storage_helper_(local_storage_helper),
628 session_storage_helper_(session_storage_helper), 738 session_storage_helper_(session_storage_helper),
629 indexed_db_helper_(indexed_db_helper), 739 indexed_db_helper_(indexed_db_helper),
630 file_system_helper_(file_system_helper), 740 file_system_helper_(file_system_helper),
631 quota_helper_(quota_helper), 741 quota_helper_(quota_helper),
632 server_bound_cert_helper_(server_bound_cert_helper), 742 server_bound_cert_helper_(server_bound_cert_helper),
743 special_storage_policy_(special_storage_policy),
633 batch_update_(0), 744 batch_update_(0),
634 use_cookie_source_(use_cookie_source), 745 use_cookie_source_(use_cookie_source),
635 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { 746 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
636 DCHECK(cookie_helper_); 747 DCHECK(cookie_helper_);
637 cookie_helper_->StartFetching( 748 cookie_helper_->StartFetching(
638 base::Bind(&CookiesTreeModel::OnCookiesModelInfoLoaded, 749 base::Bind(&CookiesTreeModel::OnCookiesModelInfoLoaded,
639 weak_ptr_factory_.GetWeakPtr())); 750 weak_ptr_factory_.GetWeakPtr()));
640 DCHECK(database_helper_); 751 DCHECK(database_helper_);
641 database_helper_->StartFetching( 752 database_helper_->StartFetching(
642 base::Bind(&CookiesTreeModel::OnDatabaseModelInfoLoaded, 753 base::Bind(&CookiesTreeModel::OnDatabaseModelInfoLoaded,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 icons->push_back(*ResourceBundle::GetSharedInstance().GetImageSkiaNamed( 811 icons->push_back(*ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
701 IDR_COOKIE_STORAGE_ICON)); 812 IDR_COOKIE_STORAGE_ICON));
702 } 813 }
703 814
704 // Returns the index of the icon to use for |node|. Return -1 to use the 815 // Returns the index of the icon to use for |node|. Return -1 to use the
705 // default icon. The index is relative to the list of icons returned from 816 // default icon. The index is relative to the list of icons returned from
706 // GetIcons. 817 // GetIcons.
707 int CookiesTreeModel::GetIconIndex(ui::TreeModelNode* node) { 818 int CookiesTreeModel::GetIconIndex(ui::TreeModelNode* node) {
708 CookieTreeNode* ct_node = static_cast<CookieTreeNode*>(node); 819 CookieTreeNode* ct_node = static_cast<CookieTreeNode*>(node);
709 switch (ct_node->GetDetailedInfo().node_type) { 820 switch (ct_node->GetDetailedInfo().node_type) {
710 case CookieTreeNode::DetailedInfo::TYPE_ORIGIN: 821 case CookieTreeNode::DetailedInfo::TYPE_HOST:
711 return ORIGIN; 822 return ORIGIN;
712 case CookieTreeNode::DetailedInfo::TYPE_COOKIE: 823 case CookieTreeNode::DetailedInfo::TYPE_COOKIE:
713 return COOKIE; 824 return COOKIE;
714 case CookieTreeNode::DetailedInfo::TYPE_DATABASE: 825 case CookieTreeNode::DetailedInfo::TYPE_DATABASE:
715 return DATABASE; 826 return DATABASE;
716 case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE: 827 case CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE:
717 return DATABASE; // close enough 828 return DATABASE; // close enough
718 case CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE: 829 case CookieTreeNode::DetailedInfo::TYPE_SESSION_STORAGE:
719 return DATABASE; // ditto 830 return DATABASE; // ditto
720 case CookieTreeNode::DetailedInfo::TYPE_APPCACHE: 831 case CookieTreeNode::DetailedInfo::TYPE_APPCACHE:
(...skipping 26 matching lines...) Expand all
747 void CookiesTreeModel::DeleteCookieNode(CookieTreeNode* cookie_node) { 858 void CookiesTreeModel::DeleteCookieNode(CookieTreeNode* cookie_node) {
748 if (cookie_node == GetRoot()) 859 if (cookie_node == GetRoot())
749 return; 860 return;
750 cookie_node->DeleteStoredObjects(); 861 cookie_node->DeleteStoredObjects();
751 CookieTreeNode* parent_node = cookie_node->parent(); 862 CookieTreeNode* parent_node = cookie_node->parent();
752 delete Remove(parent_node, cookie_node); 863 delete Remove(parent_node, cookie_node);
753 if (parent_node->empty()) 864 if (parent_node->empty())
754 DeleteCookieNode(parent_node); 865 DeleteCookieNode(parent_node);
755 } 866 }
756 867
757 void CookiesTreeModel::UpdateSearchResults(const std::wstring& filter) { 868 void CookiesTreeModel::UpdateSearchResults(const string16& filter) {
758 CookieTreeNode* root = GetRoot(); 869 CookieTreeNode* root = GetRoot();
759 int num_children = root->child_count(); 870 int num_children = root->child_count();
760 NotifyObserverBeginBatch(); 871 NotifyObserverBeginBatch();
761 for (int i = num_children - 1; i >= 0; --i) 872 for (int i = num_children - 1; i >= 0; --i)
762 delete Remove(root, root->GetChild(i)); 873 delete Remove(root, root->GetChild(i));
763 PopulateCookieInfoWithFilter(filter); 874 PopulateCookieInfoWithFilter(filter);
764 PopulateDatabaseInfoWithFilter(filter); 875 PopulateDatabaseInfoWithFilter(filter);
765 PopulateLocalStorageInfoWithFilter(filter); 876 PopulateLocalStorageInfoWithFilter(filter);
766 PopulateSessionStorageInfoWithFilter(filter); 877 PopulateSessionStorageInfoWithFilter(filter);
767 PopulateAppCacheInfoWithFilter(filter); 878 PopulateAppCacheInfoWithFilter(filter);
768 PopulateIndexedDBInfoWithFilter(filter); 879 PopulateIndexedDBInfoWithFilter(filter);
769 PopulateFileSystemInfoWithFilter(filter); 880 PopulateFileSystemInfoWithFilter(filter);
770 PopulateQuotaInfoWithFilter(filter); 881 PopulateQuotaInfoWithFilter(filter);
771 PopulateServerBoundCertInfoWithFilter(filter); 882 PopulateServerBoundCertInfoWithFilter(filter);
772 NotifyObserverTreeNodeChanged(root); 883 NotifyObserverTreeNodeChanged(root);
773 NotifyObserverEndBatch(); 884 NotifyObserverEndBatch();
774 } 885 }
775 886
887 const ExtensionSet* CookiesTreeModel::ExtensionsProtectingNode(
888 const CookieTreeNode& cookie_node) {
889 if (!special_storage_policy_)
890 return NULL;
891
892 CookieTreeNode::DetailedInfo info = cookie_node.GetDetailedInfo();
893
894 if (!TypeIsProtected(info.node_type))
895 return NULL;
896
897 DCHECK(!info.origin.is_empty());
898 return special_storage_policy_->ExtensionsProtectingOrigin(info.origin);
899 }
900
776 void CookiesTreeModel::AddCookiesTreeObserver(Observer* observer) { 901 void CookiesTreeModel::AddCookiesTreeObserver(Observer* observer) {
777 cookies_observer_list_.AddObserver(observer); 902 cookies_observer_list_.AddObserver(observer);
778 // Call super so that TreeNodeModel can notify, too. 903 // Call super so that TreeNodeModel can notify, too.
779 ui::TreeNodeModel<CookieTreeNode>::AddObserver(observer); 904 ui::TreeNodeModel<CookieTreeNode>::AddObserver(observer);
780 } 905 }
781 906
782 void CookiesTreeModel::RemoveCookiesTreeObserver(Observer* observer) { 907 void CookiesTreeModel::RemoveCookiesTreeObserver(Observer* observer) {
783 cookies_observer_list_.RemoveObserver(observer); 908 cookies_observer_list_.RemoveObserver(observer);
784 // Call super so that TreeNodeModel doesn't have dead pointers. 909 // Call super so that TreeNodeModel doesn't have dead pointers.
785 ui::TreeNodeModel<CookieTreeNode>::RemoveObserver(observer); 910 ui::TreeNodeModel<CookieTreeNode>::RemoveObserver(observer);
(...skipping 11 matching lines...) Expand all
797 return; 922 return;
798 923
799 for (InfoByOrigin::const_iterator origin = 924 for (InfoByOrigin::const_iterator origin =
800 appcache_info->infos_by_origin.begin(); 925 appcache_info->infos_by_origin.begin();
801 origin != appcache_info->infos_by_origin.end(); ++origin) { 926 origin != appcache_info->infos_by_origin.end(); ++origin) {
802 std::list<AppCacheInfo>& info_list = appcache_info_[origin->first]; 927 std::list<AppCacheInfo>& info_list = appcache_info_[origin->first];
803 info_list.insert( 928 info_list.insert(
804 info_list.begin(), origin->second.begin(), origin->second.end()); 929 info_list.begin(), origin->second.begin(), origin->second.end());
805 } 930 }
806 931
807 PopulateAppCacheInfoWithFilter(std::wstring()); 932 PopulateAppCacheInfoWithFilter(string16());
808 } 933 }
809 934
810 void CookiesTreeModel::PopulateAppCacheInfoWithFilter( 935 void CookiesTreeModel::PopulateAppCacheInfoWithFilter(
811 const std::wstring& filter) { 936 const string16& filter) {
812 using appcache::AppCacheInfo; 937 using appcache::AppCacheInfo;
813 typedef std::map<GURL, std::list<AppCacheInfo> > InfoByOrigin; 938 typedef std::map<GURL, std::list<AppCacheInfo> > InfoByOrigin;
814 939
815 if (appcache_info_.empty()) 940 if (appcache_info_.empty())
816 return; 941 return;
817 942
818 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); 943 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
819 NotifyObserverBeginBatch(); 944 NotifyObserverBeginBatch();
820 for (InfoByOrigin::iterator origin = appcache_info_.begin(); 945 for (InfoByOrigin::iterator origin = appcache_info_.begin();
821 origin != appcache_info_.end(); ++origin) { 946 origin != appcache_info_.end(); ++origin) {
822 std::wstring origin_node_name = UTF8ToWide(origin->first.host()); 947 string16 host_node_name = UTF8ToUTF16(origin->first.host());
823 if (filter.empty() || 948 if (filter.empty() ||
824 (origin_node_name.find(filter) != std::wstring::npos)) { 949 (host_node_name.find(filter) != std::string::npos)) {
825 CookieTreeOriginNode* origin_node = 950 CookieTreeHostNode* host_node =
826 root->GetOrCreateOriginNode(origin->first); 951 root->GetOrCreateHostNode(origin->first);
827 CookieTreeAppCachesNode* appcaches_node = 952 CookieTreeAppCachesNode* appcaches_node =
828 origin_node->GetOrCreateAppCachesNode(); 953 host_node->GetOrCreateAppCachesNode();
829 954
830 for (std::list<AppCacheInfo>::iterator info = origin->second.begin(); 955 for (std::list<AppCacheInfo>::iterator info = origin->second.begin();
831 info != origin->second.end(); ++info) { 956 info != origin->second.end(); ++info) {
832 appcaches_node->AddAppCacheNode( 957 appcaches_node->AddAppCacheNode(
833 new CookieTreeAppCacheNode(origin->first, info)); 958 new CookieTreeAppCacheNode(origin->first, info));
834 } 959 }
835 } 960 }
836 } 961 }
837 NotifyObserverTreeNodeChanged(root); 962 NotifyObserverTreeNodeChanged(root);
838 NotifyObserverEndBatch(); 963 NotifyObserverEndBatch();
839 } 964 }
840 965
841 void CookiesTreeModel::OnCookiesModelInfoLoaded( 966 void CookiesTreeModel::OnCookiesModelInfoLoaded(
842 const net::CookieList& cookie_list) { 967 const net::CookieList& cookie_list) {
843 cookie_list_.insert(cookie_list_.begin(), 968 cookie_list_.insert(cookie_list_.begin(),
844 cookie_list.begin(), 969 cookie_list.begin(),
845 cookie_list.end()); 970 cookie_list.end());
846 PopulateCookieInfoWithFilter(std::wstring()); 971 PopulateCookieInfoWithFilter(string16());
847 } 972 }
848 973
849 void CookiesTreeModel::PopulateCookieInfoWithFilter( 974 void CookiesTreeModel::PopulateCookieInfoWithFilter(
850 const std::wstring& filter) { 975 const string16& filter) {
851 // mmargh mmargh mmargh! delicious! 976 // mmargh mmargh mmargh! delicious!
852 977
853 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); 978 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
854 NotifyObserverBeginBatch(); 979 NotifyObserverBeginBatch();
855 for (CookieList::iterator it = cookie_list_.begin(); 980 for (CookieList::iterator it = cookie_list_.begin();
856 it != cookie_list_.end(); ++it) { 981 it != cookie_list_.end(); ++it) {
857 std::string source_string = it->Source(); 982 std::string source_string = it->Source();
858 if (source_string.empty() || !use_cookie_source_) { 983 if (source_string.empty() || !use_cookie_source_) {
859 std::string domain = it->Domain(); 984 std::string domain = it->Domain();
860 if (domain.length() > 1 && domain[0] == '.') 985 if (domain.length() > 1 && domain[0] == '.')
861 domain = domain.substr(1); 986 domain = domain.substr(1);
862 987
863 // We treat secure cookies just the same as normal ones. 988 // We treat secure cookies just the same as normal ones.
864 source_string = std::string(chrome::kHttpScheme) + 989 source_string = std::string(chrome::kHttpScheme) +
865 content::kStandardSchemeSeparator + domain + "/"; 990 content::kStandardSchemeSeparator + domain + "/";
866 } 991 }
867 992
868 GURL source(source_string); 993 GURL source(source_string);
869 if (!filter.size() || 994 if (!filter.size() ||
870 (CookieTreeOriginNode::TitleForUrl(source).find(filter) != 995 (CookieTreeHostNode::TitleForUrl(source).find(filter) !=
871 std::string::npos)) { 996 std::string::npos)) {
872 CookieTreeOriginNode* origin_node = 997 CookieTreeHostNode* host_node =
873 root->GetOrCreateOriginNode(source); 998 root->GetOrCreateHostNode(source);
874 CookieTreeCookiesNode* cookies_node = 999 CookieTreeCookiesNode* cookies_node =
875 origin_node->GetOrCreateCookiesNode(); 1000 host_node->GetOrCreateCookiesNode();
876 CookieTreeCookieNode* new_cookie = new CookieTreeCookieNode(it); 1001 CookieTreeCookieNode* new_cookie = new CookieTreeCookieNode(it);
877 cookies_node->AddCookieNode(new_cookie); 1002 cookies_node->AddCookieNode(new_cookie);
878 } 1003 }
879 } 1004 }
880 NotifyObserverTreeNodeChanged(root); 1005 NotifyObserverTreeNodeChanged(root);
881 NotifyObserverEndBatch(); 1006 NotifyObserverEndBatch();
882 } 1007 }
883 1008
884 void CookiesTreeModel::OnDatabaseModelInfoLoaded( 1009 void CookiesTreeModel::OnDatabaseModelInfoLoaded(
885 const DatabaseInfoList& database_info) { 1010 const DatabaseInfoList& database_info) {
886 database_info_list_ = database_info; 1011 database_info_list_ = database_info;
887 PopulateDatabaseInfoWithFilter(std::wstring()); 1012 PopulateDatabaseInfoWithFilter(string16());
888 } 1013 }
889 1014
890 void CookiesTreeModel::PopulateDatabaseInfoWithFilter( 1015 void CookiesTreeModel::PopulateDatabaseInfoWithFilter(
891 const std::wstring& filter) { 1016 const string16& filter) {
892 if (database_info_list_.empty()) 1017 if (database_info_list_.empty())
893 return; 1018 return;
894 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); 1019 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
895 NotifyObserverBeginBatch(); 1020 NotifyObserverBeginBatch();
896 for (DatabaseInfoList::iterator database_info = database_info_list_.begin(); 1021 for (DatabaseInfoList::iterator database_info = database_info_list_.begin();
897 database_info != database_info_list_.end(); 1022 database_info != database_info_list_.end();
898 ++database_info) { 1023 ++database_info) {
899 GURL origin(database_info->origin); 1024 GURL origin(database_info->origin);
900 1025
901 if (!filter.size() || 1026 if (!filter.size() ||
902 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != 1027 (CookieTreeHostNode::TitleForUrl(origin).find(filter) !=
903 std::wstring::npos)) { 1028 std::string::npos)) {
904 CookieTreeOriginNode* origin_node = 1029 CookieTreeHostNode* host_node =
905 root->GetOrCreateOriginNode(origin); 1030 root->GetOrCreateHostNode(origin);
906 CookieTreeDatabasesNode* databases_node = 1031 CookieTreeDatabasesNode* databases_node =
907 origin_node->GetOrCreateDatabasesNode(); 1032 host_node->GetOrCreateDatabasesNode();
908 databases_node->AddDatabaseNode( 1033 databases_node->AddDatabaseNode(
909 new CookieTreeDatabaseNode(database_info)); 1034 new CookieTreeDatabaseNode(database_info));
910 } 1035 }
911 } 1036 }
912 NotifyObserverTreeNodeChanged(root); 1037 NotifyObserverTreeNodeChanged(root);
913 NotifyObserverEndBatch(); 1038 NotifyObserverEndBatch();
914 } 1039 }
915 1040
916 void CookiesTreeModel::OnLocalStorageModelInfoLoaded( 1041 void CookiesTreeModel::OnLocalStorageModelInfoLoaded(
917 const LocalStorageInfoList& local_storage_info) { 1042 const LocalStorageInfoList& local_storage_info) {
918 local_storage_info_list_ = local_storage_info; 1043 local_storage_info_list_ = local_storage_info;
919 PopulateLocalStorageInfoWithFilter(std::wstring()); 1044 PopulateLocalStorageInfoWithFilter(string16());
920 } 1045 }
921 1046
922 void CookiesTreeModel::PopulateLocalStorageInfoWithFilter( 1047 void CookiesTreeModel::PopulateLocalStorageInfoWithFilter(
923 const std::wstring& filter) { 1048 const string16& filter) {
924 if (local_storage_info_list_.empty()) 1049 if (local_storage_info_list_.empty())
925 return; 1050 return;
926 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); 1051 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
927 NotifyObserverBeginBatch(); 1052 NotifyObserverBeginBatch();
928 for (LocalStorageInfoList::iterator local_storage_info = 1053 for (LocalStorageInfoList::iterator local_storage_info =
929 local_storage_info_list_.begin(); 1054 local_storage_info_list_.begin();
930 local_storage_info != local_storage_info_list_.end(); 1055 local_storage_info != local_storage_info_list_.end();
931 ++local_storage_info) { 1056 ++local_storage_info) {
932 const GURL& origin(local_storage_info->origin_url); 1057 const GURL& origin(local_storage_info->origin_url);
933 1058
934 if (!filter.size() || 1059 if (!filter.size() ||
935 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != 1060 (CookieTreeHostNode::TitleForUrl(origin).find(filter) !=
936 std::wstring::npos)) { 1061 std::string::npos)) {
937 CookieTreeOriginNode* origin_node = 1062 CookieTreeHostNode* host_node =
938 root->GetOrCreateOriginNode(origin); 1063 root->GetOrCreateHostNode(origin);
939 CookieTreeLocalStoragesNode* local_storages_node = 1064 CookieTreeLocalStoragesNode* local_storages_node =
940 origin_node->GetOrCreateLocalStoragesNode(); 1065 host_node->GetOrCreateLocalStoragesNode();
941 local_storages_node->AddLocalStorageNode( 1066 local_storages_node->AddLocalStorageNode(
942 new CookieTreeLocalStorageNode(local_storage_info)); 1067 new CookieTreeLocalStorageNode(local_storage_info));
943 } 1068 }
944 } 1069 }
945 NotifyObserverTreeNodeChanged(root); 1070 NotifyObserverTreeNodeChanged(root);
946 NotifyObserverEndBatch(); 1071 NotifyObserverEndBatch();
947 } 1072 }
948 1073
949 void CookiesTreeModel::OnSessionStorageModelInfoLoaded( 1074 void CookiesTreeModel::OnSessionStorageModelInfoLoaded(
950 const LocalStorageInfoList& session_storage_info) { 1075 const LocalStorageInfoList& session_storage_info) {
951 session_storage_info_list_ = session_storage_info; 1076 session_storage_info_list_ = session_storage_info;
952 PopulateSessionStorageInfoWithFilter(std::wstring()); 1077 PopulateSessionStorageInfoWithFilter(string16());
953 } 1078 }
954 1079
955 void CookiesTreeModel::PopulateSessionStorageInfoWithFilter( 1080 void CookiesTreeModel::PopulateSessionStorageInfoWithFilter(
956 const std::wstring& filter) { 1081 const string16& filter) {
957 if (session_storage_info_list_.empty()) 1082 if (session_storage_info_list_.empty())
958 return; 1083 return;
959 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); 1084 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
960 NotifyObserverBeginBatch(); 1085 NotifyObserverBeginBatch();
961 for (LocalStorageInfoList::iterator session_storage_info = 1086 for (LocalStorageInfoList::iterator session_storage_info =
962 session_storage_info_list_.begin(); 1087 session_storage_info_list_.begin();
963 session_storage_info != session_storage_info_list_.end(); 1088 session_storage_info != session_storage_info_list_.end();
964 ++session_storage_info) { 1089 ++session_storage_info) {
965 const GURL& origin = session_storage_info->origin_url; 1090 const GURL& origin = session_storage_info->origin_url;
966 if (!filter.size() || 1091 if (!filter.size() ||
967 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != 1092 (CookieTreeHostNode::TitleForUrl(origin).find(filter) !=
968 std::wstring::npos)) { 1093 std::string::npos)) {
969 CookieTreeOriginNode* origin_node = 1094 CookieTreeHostNode* host_node =
970 root->GetOrCreateOriginNode(origin); 1095 root->GetOrCreateHostNode(origin);
971 CookieTreeSessionStoragesNode* session_storages_node = 1096 CookieTreeSessionStoragesNode* session_storages_node =
972 origin_node->GetOrCreateSessionStoragesNode(); 1097 host_node->GetOrCreateSessionStoragesNode();
973 session_storages_node->AddSessionStorageNode( 1098 session_storages_node->AddSessionStorageNode(
974 new CookieTreeSessionStorageNode(session_storage_info)); 1099 new CookieTreeSessionStorageNode(session_storage_info));
975 } 1100 }
976 } 1101 }
977 NotifyObserverTreeNodeChanged(root); 1102 NotifyObserverTreeNodeChanged(root);
978 NotifyObserverEndBatch(); 1103 NotifyObserverEndBatch();
979 } 1104 }
980 1105
981 void CookiesTreeModel::OnIndexedDBModelInfoLoaded( 1106 void CookiesTreeModel::OnIndexedDBModelInfoLoaded(
982 const IndexedDBInfoList& indexed_db_info) { 1107 const IndexedDBInfoList& indexed_db_info) {
983 indexed_db_info_list_ = indexed_db_info; 1108 indexed_db_info_list_ = indexed_db_info;
984 PopulateIndexedDBInfoWithFilter(std::wstring()); 1109 PopulateIndexedDBInfoWithFilter(string16());
985 } 1110 }
986 1111
987 void CookiesTreeModel::PopulateIndexedDBInfoWithFilter( 1112 void CookiesTreeModel::PopulateIndexedDBInfoWithFilter(
988 const std::wstring& filter) { 1113 const string16& filter) {
989 if (indexed_db_info_list_.empty()) 1114 if (indexed_db_info_list_.empty())
990 return; 1115 return;
991 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); 1116 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
992 NotifyObserverBeginBatch(); 1117 NotifyObserverBeginBatch();
993 for (IndexedDBInfoList::iterator indexed_db_info = 1118 for (IndexedDBInfoList::iterator indexed_db_info =
994 indexed_db_info_list_.begin(); 1119 indexed_db_info_list_.begin();
995 indexed_db_info != indexed_db_info_list_.end(); 1120 indexed_db_info != indexed_db_info_list_.end();
996 ++indexed_db_info) { 1121 ++indexed_db_info) {
997 const GURL& origin = indexed_db_info->origin; 1122 const GURL& origin = indexed_db_info->origin;
998 1123
999 if (!filter.size() || 1124 if (!filter.size() ||
1000 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != 1125 (CookieTreeHostNode::TitleForUrl(origin).find(filter) !=
1001 std::wstring::npos)) { 1126 std::string::npos)) {
1002 CookieTreeOriginNode* origin_node = 1127 CookieTreeHostNode* host_node =
1003 root->GetOrCreateOriginNode(origin); 1128 root->GetOrCreateHostNode(origin);
1004 CookieTreeIndexedDBsNode* indexed_dbs_node = 1129 CookieTreeIndexedDBsNode* indexed_dbs_node =
1005 origin_node->GetOrCreateIndexedDBsNode(); 1130 host_node->GetOrCreateIndexedDBsNode();
1006 indexed_dbs_node->AddIndexedDBNode( 1131 indexed_dbs_node->AddIndexedDBNode(
1007 new CookieTreeIndexedDBNode(indexed_db_info)); 1132 new CookieTreeIndexedDBNode(indexed_db_info));
1008 } 1133 }
1009 } 1134 }
1010 NotifyObserverTreeNodeChanged(root); 1135 NotifyObserverTreeNodeChanged(root);
1011 NotifyObserverEndBatch(); 1136 NotifyObserverEndBatch();
1012 } 1137 }
1013 1138
1014 void CookiesTreeModel::OnFileSystemModelInfoLoaded( 1139 void CookiesTreeModel::OnFileSystemModelInfoLoaded(
1015 const FileSystemInfoList& file_system_info) { 1140 const FileSystemInfoList& file_system_info) {
1016 file_system_info_list_ = file_system_info; 1141 file_system_info_list_ = file_system_info;
1017 PopulateFileSystemInfoWithFilter(std::wstring()); 1142 PopulateFileSystemInfoWithFilter(string16());
1018 } 1143 }
1019 1144
1020 void CookiesTreeModel::PopulateFileSystemInfoWithFilter( 1145 void CookiesTreeModel::PopulateFileSystemInfoWithFilter(
1021 const std::wstring& filter) { 1146 const string16& filter) {
1022 if (file_system_info_list_.empty()) 1147 if (file_system_info_list_.empty())
1023 return; 1148 return;
1024 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); 1149 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
1025 NotifyObserverBeginBatch(); 1150 NotifyObserverBeginBatch();
1026 for (FileSystemInfoList::iterator file_system_info = 1151 for (FileSystemInfoList::iterator file_system_info =
1027 file_system_info_list_.begin(); 1152 file_system_info_list_.begin();
1028 file_system_info != file_system_info_list_.end(); 1153 file_system_info != file_system_info_list_.end();
1029 ++file_system_info) { 1154 ++file_system_info) {
1030 GURL origin(file_system_info->origin); 1155 GURL origin(file_system_info->origin);
1031 1156
1032 if (!filter.size() || 1157 if (!filter.size() ||
1033 (CookieTreeOriginNode::TitleForUrl(origin).find(filter) != 1158 (CookieTreeHostNode::TitleForUrl(origin).find(filter) !=
1034 std::wstring::npos)) { 1159 std::string::npos)) {
1035 CookieTreeOriginNode* origin_node = 1160 CookieTreeHostNode* host_node =
1036 root->GetOrCreateOriginNode(origin); 1161 root->GetOrCreateHostNode(origin);
1037 CookieTreeFileSystemsNode* file_systems_node = 1162 CookieTreeFileSystemsNode* file_systems_node =
1038 origin_node->GetOrCreateFileSystemsNode(); 1163 host_node->GetOrCreateFileSystemsNode();
1039 file_systems_node->AddFileSystemNode( 1164 file_systems_node->AddFileSystemNode(
1040 new CookieTreeFileSystemNode(file_system_info)); 1165 new CookieTreeFileSystemNode(file_system_info));
1041 } 1166 }
1042 } 1167 }
1043 NotifyObserverTreeNodeChanged(root); 1168 NotifyObserverTreeNodeChanged(root);
1044 NotifyObserverEndBatch(); 1169 NotifyObserverEndBatch();
1045 } 1170 }
1046 1171
1047 void CookiesTreeModel::OnQuotaModelInfoLoaded( 1172 void CookiesTreeModel::OnQuotaModelInfoLoaded(
1048 const QuotaInfoArray& quota_info) { 1173 const QuotaInfoArray& quota_info) {
1049 quota_info_list_ = quota_info; 1174 quota_info_list_ = quota_info;
1050 PopulateQuotaInfoWithFilter(std::wstring()); 1175 PopulateQuotaInfoWithFilter(string16());
1051 } 1176 }
1052 1177
1053 void CookiesTreeModel::PopulateQuotaInfoWithFilter( 1178 void CookiesTreeModel::PopulateQuotaInfoWithFilter(
1054 const std::wstring& filter) { 1179 const string16& filter) {
1055 if (quota_info_list_.empty()) 1180 if (quota_info_list_.empty())
1056 return; 1181 return;
1057 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); 1182 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
1058 NotifyObserverBeginBatch(); 1183 NotifyObserverBeginBatch();
1059 for (QuotaInfoArray::iterator quota_info = quota_info_list_.begin(); 1184 for (QuotaInfoArray::iterator quota_info = quota_info_list_.begin();
1060 quota_info != quota_info_list_.end(); 1185 quota_info != quota_info_list_.end();
1061 ++quota_info) { 1186 ++quota_info) {
1062 if (!filter.size() || 1187 if (!filter.size() ||
1063 (UTF8ToWide(quota_info->host).find(filter) != std::wstring::npos)) { 1188 (UTF8ToUTF16(quota_info->host).find(filter) != std::string::npos)) {
1064 CookieTreeOriginNode* origin_node = 1189 CookieTreeHostNode* host_node =
1065 root->GetOrCreateOriginNode(GURL("http://" + quota_info->host)); 1190 root->GetOrCreateHostNode(GURL("http://" + quota_info->host));
1066 origin_node->UpdateOrCreateQuotaNode(quota_info); 1191 host_node->UpdateOrCreateQuotaNode(quota_info);
1067 } 1192 }
1068 } 1193 }
1069 NotifyObserverTreeNodeChanged(root); 1194 NotifyObserverTreeNodeChanged(root);
1070 NotifyObserverEndBatch(); 1195 NotifyObserverEndBatch();
1071 } 1196 }
1072 1197
1073 void CookiesTreeModel::OnServerBoundCertModelInfoLoaded( 1198 void CookiesTreeModel::OnServerBoundCertModelInfoLoaded(
1074 const ServerBoundCertList& cert_list) { 1199 const ServerBoundCertList& cert_list) {
1075 server_bound_cert_list_ = cert_list; 1200 server_bound_cert_list_ = cert_list;
1076 PopulateServerBoundCertInfoWithFilter(std::wstring()); 1201 PopulateServerBoundCertInfoWithFilter(string16());
1077 } 1202 }
1078 1203
1079 void CookiesTreeModel::PopulateServerBoundCertInfoWithFilter( 1204 void CookiesTreeModel::PopulateServerBoundCertInfoWithFilter(
1080 const std::wstring& filter) { 1205 const string16& filter) {
1081 if (server_bound_cert_list_.empty()) 1206 if (server_bound_cert_list_.empty())
1082 return; 1207 return;
1083 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot()); 1208 CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
1084 NotifyObserverBeginBatch(); 1209 NotifyObserverBeginBatch();
1085 for (ServerBoundCertList::iterator cert_info = 1210 for (ServerBoundCertList::iterator cert_info =
1086 server_bound_cert_list_.begin(); 1211 server_bound_cert_list_.begin();
1087 cert_info != server_bound_cert_list_.end(); 1212 cert_info != server_bound_cert_list_.end();
1088 ++cert_info) { 1213 ++cert_info) {
1089 GURL origin(cert_info->server_identifier()); 1214 GURL origin(cert_info->server_identifier());
1090 if (!origin.is_valid()) { 1215 if (!origin.is_valid()) {
1091 // Domain Bound Cert. Make a valid URL to satisfy the 1216 // Domain Bound Cert. Make a valid URL to satisfy the
1092 // CookieTreeRootNode::GetOrCreateOriginNode interface. 1217 // CookieTreeRootNode::GetOrCreateHostNode interface.
1093 origin = GURL(std::string(chrome::kHttpsScheme) + 1218 origin = GURL(std::string(chrome::kHttpsScheme) +
1094 content::kStandardSchemeSeparator + 1219 content::kStandardSchemeSeparator +
1095 cert_info->server_identifier() + "/"); 1220 cert_info->server_identifier() + "/");
1096 } 1221 }
1097 std::wstring title = CookieTreeOriginNode::TitleForUrl(origin); 1222 string16 title = CookieTreeHostNode::TitleForUrl(origin);
1098 1223
1099 if (!filter.size() || title.find(filter) != std::wstring::npos) { 1224 if (!filter.size() || title.find(filter) != std::string::npos) {
1100 CookieTreeOriginNode* origin_node = 1225 CookieTreeHostNode* host_node =
1101 root->GetOrCreateOriginNode(origin); 1226 root->GetOrCreateHostNode(origin);
1102 CookieTreeServerBoundCertsNode* server_bound_certs_node = 1227 CookieTreeServerBoundCertsNode* server_bound_certs_node =
1103 origin_node->GetOrCreateServerBoundCertsNode(); 1228 host_node->GetOrCreateServerBoundCertsNode();
1104 server_bound_certs_node->AddServerBoundCertNode( 1229 server_bound_certs_node->AddServerBoundCertNode(
1105 new CookieTreeServerBoundCertNode(cert_info)); 1230 new CookieTreeServerBoundCertNode(cert_info));
1106 } 1231 }
1107 } 1232 }
1108 NotifyObserverTreeNodeChanged(root); 1233 NotifyObserverTreeNodeChanged(root);
1109 NotifyObserverEndBatch(); 1234 NotifyObserverEndBatch();
1110 } 1235 }
1111 1236
1112 void CookiesTreeModel::NotifyObserverBeginBatch() { 1237 void CookiesTreeModel::NotifyObserverBeginBatch() {
1113 // Only notify the model once if we're batching in a nested manner. 1238 // Only notify the model once if we're batching in a nested manner.
1114 if (batch_update_++ == 0) { 1239 if (batch_update_++ == 0) {
1115 FOR_EACH_OBSERVER(Observer, 1240 FOR_EACH_OBSERVER(Observer,
1116 cookies_observer_list_, 1241 cookies_observer_list_,
1117 TreeModelBeginBatch(this)); 1242 TreeModelBeginBatch(this));
1118 } 1243 }
1119 } 1244 }
1120 1245
1121 void CookiesTreeModel::NotifyObserverEndBatch() { 1246 void CookiesTreeModel::NotifyObserverEndBatch() {
1122 // Only notify the observers if this is the outermost call to EndBatch() if 1247 // Only notify the observers if this is the outermost call to EndBatch() if
1123 // called in a nested manner. 1248 // called in a nested manner.
1124 if (--batch_update_ == 0) { 1249 if (--batch_update_ == 0) {
1125 FOR_EACH_OBSERVER(Observer, 1250 FOR_EACH_OBSERVER(Observer,
1126 cookies_observer_list_, 1251 cookies_observer_list_,
1127 TreeModelEndBatch(this)); 1252 TreeModelEndBatch(this));
1128 } 1253 }
1129 } 1254 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698