| 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 "content/browser/indexed_db/indexed_db_context_impl.h" | 5 #include "content/browser/indexed_db/indexed_db_context_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 328 origin_size_map_.erase(origin_url); | 328 origin_size_map_.erase(origin_url); |
| 329 space_available_map_.erase(origin_url); | 329 space_available_map_.erase(origin_url); |
| 330 } | 330 } |
| 331 } | 331 } |
| 332 | 332 |
| 333 void IndexedDBContextImpl::ForceClose(const GURL origin_url) { | 333 void IndexedDBContextImpl::ForceClose(const GURL origin_url) { |
| 334 DCHECK(TaskRunner()->RunsTasksOnCurrentThread()); | 334 DCHECK(TaskRunner()->RunsTasksOnCurrentThread()); |
| 335 if (data_path_.empty() || !IsInOriginSet(origin_url)) | 335 if (data_path_.empty() || !IsInOriginSet(origin_url)) |
| 336 return; | 336 return; |
| 337 | 337 |
| 338 if (connections_.find(origin_url) != connections_.end()) { | |
| 339 ConnectionSet& connections = connections_[origin_url]; | |
| 340 ConnectionSet::iterator it = connections.begin(); | |
| 341 while (it != connections.end()) { | |
| 342 // Remove before closing so callbacks don't double-erase | |
| 343 IndexedDBConnection* connection = *it; | |
| 344 DCHECK(connection->IsConnected()); | |
| 345 connections.erase(it++); | |
| 346 connection->ForceClose(); | |
| 347 } | |
| 348 DCHECK_EQ(connections_[origin_url].size(), 0UL); | |
| 349 connections_.erase(origin_url); | |
| 350 } | |
| 351 if (factory_) | 338 if (factory_) |
| 352 factory_->ForceClose(origin_url); | 339 factory_->ForceClose(origin_url); |
| 353 } | 340 } |
| 354 | 341 |
| 355 size_t IndexedDBContextImpl::GetConnectionCount(const GURL& origin_url) { | 342 size_t IndexedDBContextImpl::GetConnectionCount(const GURL& origin_url) { |
| 356 DCHECK(TaskRunner()->RunsTasksOnCurrentThread()); | 343 DCHECK(TaskRunner()->RunsTasksOnCurrentThread()); |
| 357 if (data_path_.empty() || !IsInOriginSet(origin_url)) | 344 if (data_path_.empty() || !IsInOriginSet(origin_url)) |
| 358 return 0; | 345 return 0; |
| 359 | 346 |
| 360 if (connections_.find(origin_url) == connections_.end()) | 347 if (connections_.find(origin_url) == connections_.end()) |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 origin_set_.reset(); | 568 origin_set_.reset(); |
| 582 origin_size_map_.clear(); | 569 origin_size_map_.clear(); |
| 583 space_available_map_.clear(); | 570 space_available_map_.clear(); |
| 584 } | 571 } |
| 585 | 572 |
| 586 base::TaskRunner* IndexedDBContextImpl::TaskRunner() const { | 573 base::TaskRunner* IndexedDBContextImpl::TaskRunner() const { |
| 587 return task_runner_; | 574 return task_runner_; |
| 588 } | 575 } |
| 589 | 576 |
| 590 } // namespace content | 577 } // namespace content |
| OLD | NEW |