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

Side by Side Diff: storage/browser/quota/storage_monitor.cc

Issue 2389583002: Remove stl_util's deletion functions from storage/. (Closed)
Patch Set: Created 4 years, 2 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "storage/browser/quota/storage_monitor.h" 5 #include "storage/browser/quota/storage_monitor.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
11 #include "base/stl_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/trace_event/trace_event.h" 12 #include "base/trace_event/trace_event.h"
13 #include "net/base/url_util.h" 13 #include "net/base/url_util.h"
14 #include "storage/browser/quota/quota_manager.h" 14 #include "storage/browser/quota/quota_manager.h"
15 #include "storage/common/quota/quota_status_code.h" 15 #include "storage/common/quota/quota_status_code.h"
16 16
17 namespace storage { 17 namespace storage {
18 18
19 // StorageObserverList: 19 // StorageObserverList:
20 20
21 StorageObserverList::ObserverState::ObserverState() 21 StorageObserverList::ObserverState::ObserverState()
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 } 240 }
241 241
242 242
243 // StorageTypeObservers: 243 // StorageTypeObservers:
244 244
245 StorageTypeObservers::StorageTypeObservers(QuotaManager* quota_manager) 245 StorageTypeObservers::StorageTypeObservers(QuotaManager* quota_manager)
246 : quota_manager_(quota_manager) { 246 : quota_manager_(quota_manager) {
247 } 247 }
248 248
249 StorageTypeObservers::~StorageTypeObservers() { 249 StorageTypeObservers::~StorageTypeObservers() {
250 base::STLDeleteValues(&host_observers_map_);
251 } 250 }
252 251
253 void StorageTypeObservers::AddObserver( 252 void StorageTypeObservers::AddObserver(
254 StorageObserver* observer, const StorageObserver::MonitorParams& params) { 253 StorageObserver* observer, const StorageObserver::MonitorParams& params) {
255 std::string host = net::GetHostOrSpecFromURL(params.filter.origin); 254 std::string host = net::GetHostOrSpecFromURL(params.filter.origin);
256 if (host.empty()) 255 if (host.empty())
257 return; 256 return;
258 257
259 HostStorageObservers* host_observers = NULL; 258 auto& host_observers = host_observers_map_[host];
260 HostObserversMap::iterator it = host_observers_map_.find(host); 259 if (!host_observers)
danakj 2016/10/03 22:51:49 Ditto can you comment that there's never a null va
Avi (use Gerrit) 2016/10/04 15:56:22 Again, I don't get it. When we have a key->value m
261 if (it == host_observers_map_.end()) { 260 host_observers = base::MakeUnique<HostStorageObservers>(quota_manager_);
262 host_observers = new HostStorageObservers(quota_manager_);
263 host_observers_map_[host] = host_observers;
264 } else {
265 host_observers = it->second;
266 }
267 261
268 host_observers->AddObserver(observer, params); 262 host_observers->AddObserver(observer, params);
269 } 263 }
270 264
271 void StorageTypeObservers::RemoveObserver(StorageObserver* observer) { 265 void StorageTypeObservers::RemoveObserver(StorageObserver* observer) {
272 for (HostObserversMap::iterator it = host_observers_map_.begin(); 266 for (auto it = host_observers_map_.begin();
273 it != host_observers_map_.end(); ) { 267 it != host_observers_map_.end();) {
274 it->second->RemoveObserver(observer); 268 it->second->RemoveObserver(observer);
275 if (!it->second->ContainsObservers()) { 269 if (!it->second->ContainsObservers()) {
276 delete it->second; 270 it = host_observers_map_.erase(it);
277 host_observers_map_.erase(it++);
278 } else { 271 } else {
279 ++it; 272 ++it;
280 } 273 }
281 } 274 }
282 } 275 }
283 276
284 void StorageTypeObservers::RemoveObserverForFilter( 277 void StorageTypeObservers::RemoveObserverForFilter(
285 StorageObserver* observer, const StorageObserver::Filter& filter) { 278 StorageObserver* observer, const StorageObserver::Filter& filter) {
286 std::string host = net::GetHostOrSpecFromURL(filter.origin); 279 std::string host = net::GetHostOrSpecFromURL(filter.origin);
287 HostObserversMap::iterator it = host_observers_map_.find(host); 280 auto it = host_observers_map_.find(host);
288 if (it == host_observers_map_.end()) 281 if (it == host_observers_map_.end())
289 return; 282 return;
290 283
291 it->second->RemoveObserver(observer); 284 it->second->RemoveObserver(observer);
292 if (!it->second->ContainsObservers()) { 285 if (!it->second->ContainsObservers())
293 delete it->second;
294 host_observers_map_.erase(it); 286 host_observers_map_.erase(it);
295 }
296 } 287 }
297 288
298 const HostStorageObservers* StorageTypeObservers::GetHostObservers( 289 const HostStorageObservers* StorageTypeObservers::GetHostObservers(
299 const std::string& host) const { 290 const std::string& host) const {
300 HostObserversMap::const_iterator it = host_observers_map_.find(host); 291 auto it = host_observers_map_.find(host);
301 if (it != host_observers_map_.end()) 292 if (it != host_observers_map_.end())
302 return it->second; 293 return it->second.get();
303 294
304 return NULL; 295 return NULL;
305 } 296 }
306 297
307 void StorageTypeObservers::NotifyUsageChange( 298 void StorageTypeObservers::NotifyUsageChange(
308 const StorageObserver::Filter& filter, 299 const StorageObserver::Filter& filter,
309 int64_t delta) { 300 int64_t delta) {
310 std::string host = net::GetHostOrSpecFromURL(filter.origin); 301 std::string host = net::GetHostOrSpecFromURL(filter.origin);
311 HostObserversMap::iterator it = host_observers_map_.find(host); 302 auto it = host_observers_map_.find(host);
312 if (it == host_observers_map_.end()) 303 if (it == host_observers_map_.end())
313 return; 304 return;
314 305
315 it->second->NotifyUsageChange(filter, delta); 306 it->second->NotifyUsageChange(filter, delta);
316 } 307 }
317 308
318 309
319 // StorageMonitor: 310 // StorageMonitor:
320 311
321 StorageMonitor::StorageMonitor(QuotaManager* quota_manager) 312 StorageMonitor::StorageMonitor(QuotaManager* quota_manager)
322 : quota_manager_(quota_manager) { 313 : quota_manager_(quota_manager) {
323 } 314 }
324 315
325 StorageMonitor::~StorageMonitor() { 316 StorageMonitor::~StorageMonitor() {
326 base::STLDeleteValues(&storage_type_observers_map_);
327 } 317 }
328 318
329 void StorageMonitor::AddObserver( 319 void StorageMonitor::AddObserver(
330 StorageObserver* observer, const StorageObserver::MonitorParams& params) { 320 StorageObserver* observer, const StorageObserver::MonitorParams& params) {
331 DCHECK(observer); 321 DCHECK(observer);
332 322
333 // Check preconditions. 323 // Check preconditions.
334 if (params.filter.storage_type == kStorageTypeUnknown || 324 if (params.filter.storage_type == kStorageTypeUnknown ||
335 params.filter.storage_type == kStorageTypeQuotaNotManaged || 325 params.filter.storage_type == kStorageTypeQuotaNotManaged ||
336 params.filter.origin.is_empty()) { 326 params.filter.origin.is_empty()) {
337 NOTREACHED(); 327 NOTREACHED();
338 return; 328 return;
339 } 329 }
340 330
341 StorageTypeObservers* type_observers = NULL; 331 auto& type_observers =
342 StorageTypeObserversMap::iterator it = 332 storage_type_observers_map_[params.filter.storage_type];
343 storage_type_observers_map_.find(params.filter.storage_type); 333 if (!type_observers)
danakj 2016/10/03 22:51:49 dittos
Avi (use Gerrit) 2016/10/04 15:56:22 dittos
344 if (it == storage_type_observers_map_.end()) { 334 type_observers = base::MakeUnique<StorageTypeObservers>(quota_manager_);
345 type_observers = new StorageTypeObservers(quota_manager_);
346 storage_type_observers_map_[params.filter.storage_type] = type_observers;
347 } else {
348 type_observers = it->second;
349 }
350 335
351 type_observers->AddObserver(observer, params); 336 type_observers->AddObserver(observer, params);
352 } 337 }
353 338
354 void StorageMonitor::RemoveObserver(StorageObserver* observer) { 339 void StorageMonitor::RemoveObserver(StorageObserver* observer) {
355 for (StorageTypeObserversMap::iterator it = 340 for (auto it = storage_type_observers_map_.begin();
356 storage_type_observers_map_.begin();
357 it != storage_type_observers_map_.end(); ++it) { 341 it != storage_type_observers_map_.end(); ++it) {
358 it->second->RemoveObserver(observer); 342 it->second->RemoveObserver(observer);
359 } 343 }
360 } 344 }
361 345
362 void StorageMonitor::RemoveObserverForFilter( 346 void StorageMonitor::RemoveObserverForFilter(
363 StorageObserver* observer, const StorageObserver::Filter& filter) { 347 StorageObserver* observer, const StorageObserver::Filter& filter) {
364 StorageTypeObserversMap::iterator it = 348 auto it = storage_type_observers_map_.find(filter.storage_type);
365 storage_type_observers_map_.find(filter.storage_type);
366 if (it == storage_type_observers_map_.end()) 349 if (it == storage_type_observers_map_.end())
367 return; 350 return;
368 351
369 it->second->RemoveObserverForFilter(observer, filter); 352 it->second->RemoveObserverForFilter(observer, filter);
370 } 353 }
371 354
372 const StorageTypeObservers* StorageMonitor::GetStorageTypeObservers( 355 const StorageTypeObservers* StorageMonitor::GetStorageTypeObservers(
373 StorageType storage_type) const { 356 StorageType storage_type) const {
374 StorageTypeObserversMap::const_iterator it = 357 auto it = storage_type_observers_map_.find(storage_type);
375 storage_type_observers_map_.find(storage_type);
376 if (it != storage_type_observers_map_.end()) 358 if (it != storage_type_observers_map_.end())
377 return it->second; 359 return it->second.get();
378 360
379 return NULL; 361 return NULL;
danakj 2016/10/03 22:51:49 nullptr while you're here?
Avi (use Gerrit) 2016/10/04 15:56:22 Done.
380 } 362 }
381 363
382 void StorageMonitor::NotifyUsageChange(const StorageObserver::Filter& filter, 364 void StorageMonitor::NotifyUsageChange(const StorageObserver::Filter& filter,
383 int64_t delta) { 365 int64_t delta) {
384 // Check preconditions. 366 // Check preconditions.
385 if (filter.storage_type == kStorageTypeUnknown || 367 if (filter.storage_type == kStorageTypeUnknown ||
386 filter.storage_type == kStorageTypeQuotaNotManaged || 368 filter.storage_type == kStorageTypeQuotaNotManaged ||
387 filter.origin.is_empty()) { 369 filter.origin.is_empty()) {
388 NOTREACHED(); 370 NOTREACHED();
389 return; 371 return;
390 } 372 }
391 373
392 StorageTypeObserversMap::iterator it = 374 auto it = storage_type_observers_map_.find(filter.storage_type);
393 storage_type_observers_map_.find(filter.storage_type);
394 if (it == storage_type_observers_map_.end()) 375 if (it == storage_type_observers_map_.end())
395 return; 376 return;
396 377
397 it->second->NotifyUsageChange(filter, delta); 378 it->second->NotifyUsageChange(filter, delta);
398 } 379 }
399 380
400 } // namespace storage 381 } // namespace storage
OLDNEW
« storage/browser/fileapi/file_system_usage_cache.cc ('K') | « storage/browser/quota/storage_monitor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698