Index: webkit/database/database_connections.cc |
=================================================================== |
--- webkit/database/database_connections.cc (revision 0) |
+++ webkit/database/database_connections.cc (revision 0) |
@@ -0,0 +1,78 @@ |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "webkit/database/database_connections.h" |
+ |
+#include "base/logging.h" |
+ |
+namespace webkit_database { |
+ |
+DatabaseConnections::DatabaseConnections() { |
+} |
+ |
+DatabaseConnections::~DatabaseConnections() { |
+ DCHECK(connections_.empty()); |
+} |
+ |
+bool DatabaseConnections::IsDatabaseOpened(const string16& origin_identifier, |
+ const string16& database_name) { |
+ OriginConnections::const_iterator origin_it = |
+ connections_.find(origin_identifier); |
+ if (origin_it == connections_.end()) |
+ return false; |
+ const DBConnections& origin_connections = origin_it->second; |
+ return (origin_connections.find(database_name) != origin_connections.end()); |
+} |
+ |
+bool DatabaseConnections::IsOriginUsed(const string16& origin_identifier) { |
+ return (connections_.find(origin_identifier) != connections_.end()); |
+} |
+ |
+void DatabaseConnections::AddConnection(const string16& origin_identifier, |
+ const string16& database_name) { |
+ connections_[origin_identifier][database_name]++; |
+} |
+ |
+void DatabaseConnections::RemoveConnection(const string16& origin_identifier, |
+ const string16& database_name) { |
+ RemoveConnectionsHelper(origin_identifier, database_name, 1); |
+} |
+ |
+void DatabaseConnections::RemoveAllConnections() { |
+ connections_.clear(); |
+} |
+ |
+void DatabaseConnections::RemoveConnections( |
+ const DatabaseConnections& connections) { |
+ for (OriginConnections::const_iterator origin_it = |
+ connections.connections_.begin(); |
+ origin_it != connections.connections_.end(); |
+ origin_it++) { |
+ const DBConnections& db_connections = origin_it->second; |
+ for (DBConnections::const_iterator db_it = db_connections.begin(); |
+ db_it != db_connections.end(); db_it++) { |
+ RemoveConnectionsHelper(origin_it->first, db_it->first, db_it->second); |
+ } |
+ } |
+} |
+ |
+void DatabaseConnections::RemoveConnectionsHelper( |
+ const string16& origin_identifier, |
+ const string16& database_name, |
+ int num_connections) { |
+ OriginConnections::iterator origin_iterator = |
+ connections_.find(origin_identifier); |
+ DCHECK(origin_iterator != connections_.end()); |
+ DBConnections& db_connections = origin_iterator->second; |
+ int& count = db_connections[database_name]; |
+ DCHECK(count >= num_connections); |
+ count -= num_connections; |
+ if (!count) { |
+ db_connections.erase(database_name); |
+ if (db_connections.empty()) |
+ connections_.erase(origin_iterator); |
+ } |
+} |
+ |
+} // namespace webkit_database |
Property changes on: webkit\database\database_connections.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |