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

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

Powered by Google App Engine
This is Rietveld 408576698