blob: 433bb3f01560032809eb86f680ccb5f681c138d4 [file] [log] [blame]
// 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.
#ifndef WEBKIT_DATABASE_DATABASE_CONNECTIONS_H_
#define WEBKIT_DATABASE_DATABASE_CONNECTIONS_H_
#include <map>
#include <vector>
#include "base/string16.h"
namespace webkit_database {
class DatabaseConnections {
public:
DatabaseConnections();
~DatabaseConnections();
bool IsEmpty() const;
bool IsDatabaseOpened(const string16& origin_identifier,
const string16& database_name) const;
bool IsOriginUsed(const string16& origin_identifier) const;
void AddConnection(const string16& origin_identifier,
const string16& database_name);
void RemoveConnection(const string16& origin_identifier,
const string16& database_name);
void RemoveAllConnections();
void RemoveConnections(
const DatabaseConnections& connections,
std::vector<std::pair<string16, string16> >* closed_dbs);
private:
typedef std::map<string16, int> DBConnections;
typedef std::map<string16, DBConnections> OriginConnections;
OriginConnections connections_;
void RemoveConnectionsHelper(const string16& origin_identifier,
const string16& database_name,
int num_connections);
};
} // namespace webkit_database
#endif // WEBKIT_DATABASE_DATABASE_CONNECTIONS_H_