OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |