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

Unified Diff: webkit/database/databases_table.cc

Issue 334039: Adding Chromium's database tracker. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Final version? Created 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/database/databases_table.h ('k') | webkit/database/databases_table_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/database/databases_table.cc
===================================================================
--- webkit/database/databases_table.cc (revision 0)
+++ webkit/database/databases_table.cc (revision 0)
@@ -0,0 +1,122 @@
+// 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/databases_table.h"
+
+#include "app/sql/connection.h"
+#include "app/sql/statement.h"
+#include "base/string_util.h"
+
+namespace webkit_database {
+
+bool DatabasesTable::Init() {
+ // 'Databases' schema:
+ // id A unique ID assigned to each database
+ // origin The originto which the database belongs. This is a
+ // string that can be used as part of a file name
+ // (http_webkit.org_0, for example).
+ // name The database name.
+ // description A short description of the database.
+ // estimated_size The estimated size of the database.
+ return db_->DoesTableExist("Databases") ||
+ (db_->Execute(
+ "CREATE TABLE Databases ("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "origin TEXT NOT NULL, "
+ "name TEXT NOT NULL, "
+ "description TEXT NOT NULL, "
+ "estimated_size INTEGER NOT NULL)") &&
+ db_->Execute(
+ "CREATE INDEX origin_index ON Databases (origin)") &&
+ db_->Execute(
+ "CREATE UNIQUE INDEX unique_index ON Databases (origin, name)"));
+}
+
+bool DatabasesTable::GetDatabaseDetails(const string16& origin_identifier,
+ const string16& database_name,
+ DatabaseDetails* details) {
+ DCHECK(details);
+ sql::Statement select_statement(db_->GetCachedStatement(
+ SQL_FROM_HERE, "SELECT description, estimated_size FROM Databases "
+ "WHERE origin = ? AND name = ?"));
+ if (select_statement.is_valid() &&
+ select_statement.BindString(0, UTF16ToUTF8(origin_identifier)) &&
+ select_statement.BindString(1, UTF16ToUTF8(database_name)) &&
+ select_statement.Step()) {
+ details->origin_identifier = origin_identifier;
+ details->database_name = database_name;
+ details->description = UTF8ToUTF16(select_statement.ColumnString(0));
+ details->estimated_size = select_statement.ColumnInt64(1);
+ return true;
+ }
+
+ return false;
+}
+
+bool DatabasesTable::InsertDatabaseDetails(const DatabaseDetails& details) {
+ sql::Statement insert_statement(db_->GetCachedStatement(
+ SQL_FROM_HERE, "INSERT INTO Databases (origin, name, description, "
+ "estimated_size) VALUES (?, ?, ?, ?)"));
+ if (insert_statement.is_valid() &&
+ insert_statement.BindString(0, UTF16ToUTF8(details.origin_identifier)) &&
+ insert_statement.BindString(1, UTF16ToUTF8(details.database_name)) &&
+ insert_statement.BindString(2, UTF16ToUTF8(details.description)) &&
+ insert_statement.BindInt64(3, details.estimated_size)) {
+ return insert_statement.Run();
+ }
+
+ return false;
+}
+
+bool DatabasesTable::UpdateDatabaseDetails(const DatabaseDetails& details) {
+ sql::Statement update_statement(db_->GetCachedStatement(
+ SQL_FROM_HERE, "UPDATE Databases SET description = ?, "
+ "estimated_size = ? WHERE origin = ? AND name = ?"));
+ if (update_statement.is_valid() &&
+ update_statement.BindString(0, UTF16ToUTF8(details.description)) &&
+ update_statement.BindInt64(1, details.estimated_size) &&
+ update_statement.BindString(2, UTF16ToUTF8(details.origin_identifier)) &&
+ update_statement.BindString(3, UTF16ToUTF8(details.database_name))) {
+ return (update_statement.Run() && db_->GetLastChangeCount());
+ }
+
+ return false;
+}
+
+bool DatabasesTable::DeleteDatabaseDetails(const string16& origin_identifier,
+ const string16& database_name) {
+ sql::Statement delete_statement(db_->GetCachedStatement(
+ SQL_FROM_HERE, "DELETE FROM Databases WHERE origin = ? AND name = ?"));
+ if (delete_statement.is_valid() &&
+ delete_statement.BindString(0, UTF16ToUTF8(origin_identifier)) &&
+ delete_statement.BindString(1, UTF16ToUTF8(database_name))) {
+ return (delete_statement.Run() && db_->GetLastChangeCount());
+ }
+
+ return false;
+}
+
+bool DatabasesTable::GetAllDatabaseDetailsForOrigin(
+ const string16& origin_identifier,
+ std::vector<DatabaseDetails>* details_vector) {
+ sql::Statement statement(db_->GetCachedStatement(
+ SQL_FROM_HERE, "SELECT name, description, estimated_size "
+ "FROM Databases WHERE origin = ? ORDER BY origin, name"));
+ if (statement.is_valid() &&
+ statement.BindString(0, UTF16ToUTF8(origin_identifier))) {
+ while (statement.Step()) {
+ DatabaseDetails details;
+ details.origin_identifier = origin_identifier;
+ details.database_name = UTF8ToUTF16(statement.ColumnString(0));
+ details.description = UTF8ToUTF16(statement.ColumnString(1));
+ details.estimated_size = statement.ColumnInt64(2);
+ details_vector->push_back(details);
+ }
+ return statement.Succeeded();
+ }
+
+ return false;
+}
+
+} // namespace webkit_database
Property changes on: webkit\database\databases_table.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « webkit/database/databases_table.h ('k') | webkit/database/databases_table_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698