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

Unified Diff: chrome/browser/webdata/web_intents_table.cc

Issue 7461089: First implementation of web intents table. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Final nit fixes Created 9 years, 5 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 | « chrome/browser/webdata/web_intents_table.h ('k') | chrome/browser/webdata/web_intents_table_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/webdata/web_intents_table.cc
diff --git a/chrome/browser/webdata/web_intents_table.cc b/chrome/browser/webdata/web_intents_table.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e3b7bbfd9d1fc061f0918161a8fd05fbdfce8e10
--- /dev/null
+++ b/chrome/browser/webdata/web_intents_table.cc
@@ -0,0 +1,104 @@
+// Copyright (c) 2011 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 "chrome/browser/webdata/web_intents_table.h"
+
+#include "base/logging.h"
+#include "googleurl/src/gurl.h"
+#include "sql/statement.h"
+
+WebIntentsTable::WebIntentsTable(sql::Connection* db,
+ sql::MetaTable* meta_table)
+ : WebDatabaseTable(db, meta_table) {
+}
+
+WebIntentsTable::~WebIntentsTable() {
+}
+
+bool WebIntentsTable::Init() {
+ if (db_->DoesTableExist("web_intents"))
+ return true;
+
+ if (!db_->Execute("CREATE TABLE web_intents ("
+ "service_url LONGVARCHAR,"
+ "action VARCHAR,"
+ "type VARCHAR,"
+ "UNIQUE (service_url, action, type))")) {
+ NOTREACHED();
+ return false;
+ }
+
+ if (!db_->Execute("CREATE INDEX web_intents_index "
+ "ON web_intents (action)")) {
+ NOTREACHED();
+ return false;
+ }
+
+ return true;
+}
+
+// TODO(jhawkins): Figure out Sync story.
+bool WebIntentsTable::IsSyncable() {
+ return false;
+}
+
+bool WebIntentsTable::GetWebIntents(const string16& action,
+ std::vector<WebIntentData>* intents) {
+ DCHECK(intents);
+ sql::Statement s(db_->GetUniqueStatement(
+ "SELECT service_url, action, type FROM web_intents "
+ "WHERE action=?"));
+ if (!s) {
+ NOTREACHED() << "Statement prepare failed";
+ return false;
+ }
+
+ s.BindString16(0, action);
+ while (s.Step()) {
+ WebIntentData intent;
+ string16 tmp = s.ColumnString16(0);
+ intent.service_url = GURL(tmp);
+
+ intent.action = s.ColumnString16(1);
+ intent.type = s.ColumnString16(2);
+
+ intents->push_back(intent);
+ }
+ return true;
+}
+
+bool WebIntentsTable::SetWebIntent(const string16& action,
+ const string16& type,
+ const GURL& service_url) {
+ sql::Statement s(db_->GetUniqueStatement(
+ "INSERT OR REPLACE INTO web_intents (service_url, type, action) "
+ "VALUES (?, ?, ?)"));
+ if (!s) {
+ NOTREACHED() << "Statement prepare failed";
+ return false;
+ }
+
+ s.BindString(0, service_url.spec());
+ s.BindString16(1, type);
+ s.BindString16(2, action);
+ return s.Run();
+}
+
+bool WebIntentsTable::RemoveWebIntent(const string16& action,
+ const string16& type,
+ const GURL& service_url) {
+ sql::Statement delete_s(db_->GetUniqueStatement(
+ "DELETE FROM web_intents "
+ "WHERE service_url = ? AND action = ? AND type = ?"));
+ if (!delete_s) {
+ NOTREACHED() << "Statement prepare failed";
+ return false;
+ }
+
+ delete_s.BindString(0, service_url.spec());
+ delete_s.BindString16(1, action);
+ delete_s.BindString16(2, type);
+ return delete_s.Run();
+}
+
« no previous file with comments | « chrome/browser/webdata/web_intents_table.h ('k') | chrome/browser/webdata/web_intents_table_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698