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

Unified Diff: chrome/browser/extensions/activity_log/counting_policy.cc

Issue 154053004: Introducing the activityLogPrivate.deleteActivities() API call. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebasing Created 6 years, 10 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
Index: chrome/browser/extensions/activity_log/counting_policy.cc
diff --git a/chrome/browser/extensions/activity_log/counting_policy.cc b/chrome/browser/extensions/activity_log/counting_policy.cc
index 8c3fbf8158766e467ddde0c5e3f61fead2ada641..432a62704e098b6eae89bdc9594a7754aca796f7 100644
--- a/chrome/browser/extensions/activity_log/counting_policy.cc
+++ b/chrome/browser/extensions/activity_log/counting_policy.cc
@@ -518,6 +518,44 @@ scoped_ptr<Action::ActionVector> CountingPolicy::DoReadFilteredData(
return actions.Pass();
}
+void CountingPolicy::DoRemoveActions(const std::vector<int64>& action_ids) {
+ if (action_ids.empty())
+ return;
+
+ sql::Connection* db = GetDatabaseConnection();
+ if (!db) {
+ LOG(ERROR) << "Unable to connect to database";
+ return;
+ }
+
+ // Flush data first so the activity removal affects queued-up data as well.
+ activity_database()->AdviseFlush(ActivityDatabase::kFlushImmediately);
+
+ sql::Transaction transaction(db);
+ if (!transaction.Begin())
+ return;
+
+ std::string statement_str =
+ base::StringPrintf("DELETE FROM %s WHERE rowid = ?", kTableName);
+ sql::Statement statement(db->GetCachedStatement(
+ sql::StatementID(SQL_FROM_HERE), statement_str.c_str()));
+ for (size_t i = 0; i < action_ids.size(); i++) {
+ statement.Reset(true);
+ statement.BindInt64(0, action_ids[i]);
+ if (!statement.Run()) {
+ LOG(ERROR) << "Removing activities from database failed: "
+ << statement.GetSQLStatement();
+ break;
+ }
+ }
+
+ CleanStringTables(db);
+
+ if (!transaction.Commit()) {
+ LOG(ERROR) << "Removing activities from database failed";
+ }
+}
+
void CountingPolicy::DoRemoveURLs(const std::vector<GURL>& restrict_urls) {
sql::Connection* db = GetDatabaseConnection();
if (!db) {
@@ -694,6 +732,10 @@ void CountingPolicy::ReadFilteredData(
callback);
}
+void CountingPolicy::RemoveActions(const std::vector<int64>& action_ids) {
+ ScheduleAndForget(this, &CountingPolicy::DoRemoveActions, action_ids);
+}
+
void CountingPolicy::RemoveURLs(const std::vector<GURL>& restrict_urls) {
ScheduleAndForget(this, &CountingPolicy::DoRemoveURLs, restrict_urls);
}

Powered by Google App Engine
This is Rietveld 408576698