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

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

Issue 154053004: Introducing the activityLogPrivate.deleteActivities() API call. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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/fullstream_ui_policy.cc
diff --git a/chrome/browser/extensions/activity_log/fullstream_ui_policy.cc b/chrome/browser/extensions/activity_log/fullstream_ui_policy.cc
index b2a6737a2bb9d72ac120413209bc5e6d2d30a3ef..d44f62646039908c90f79a0f12c9ad680ab9f5d0 100644
--- a/chrome/browser/extensions/activity_log/fullstream_ui_policy.cc
+++ b/chrome/browser/extensions/activity_log/fullstream_ui_policy.cc
@@ -220,6 +220,63 @@ scoped_ptr<Action::ActionVector> FullStreamUIPolicy::DoReadFilteredData(
return actions.Pass();
}
+void FullStreamUIPolicy::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);
+
+ int batch_size = 50;
+ int iter = action_ids.size() / batch_size;
+ for (int i = 0; i < iter; i++) {
+ int start = i * batch_size;
+ int end = start + batch_size;
+ std::string rowid_set;
+ for (int j = start; j < end; j++) {
+ rowid_set += "?,";
+ }
+ // Delete the last comma from the set.
+ rowid_set = rowid_set.substr(0, rowid_set.length() - 1);
+ std::string query_str = base::StringPrintf(
+ "DELETE FROM %s WHERE rowid in (%s)", kTableName, rowid_set.c_str());
+ sql::Statement query(db->GetUniqueStatement(query_str.c_str()));
+ for (int j = start; j < end; j++) {
+ query.BindInt64(j - start, action_ids[j]);
+ }
+ if (!query.Run()) {
+ LOG(ERROR) << "Removing activities from database failed: "
+ << query.GetSQLStatement();
+ return;
+ }
+ }
+ int start = iter * batch_size;
+ int end = action_ids.size();
+ std::string rowid_set;
+ for (int i = start; i < end; i++) {
+ rowid_set += "?,";
+ }
+ // Delete the last comma from the set.
+ rowid_set = rowid_set.substr(0, rowid_set.length() - 1);
+ std::string query_str = base::StringPrintf(
+ "DELETE FROM %s WHERE rowid in (%s)", kTableName, rowid_set.c_str());
+ sql::Statement query(db->GetUniqueStatement(query_str.c_str()));
+ for (int i = start; i < end; i++) {
+ query.BindInt64(i - start, action_ids[i]);
+ }
+ if (!query.Run()) {
+ LOG(ERROR) << "Removing activities from database failed: "
+ << query.GetSQLStatement();
+ return;
+ }
+}
+
void FullStreamUIPolicy::DoRemoveURLs(const std::vector<GURL>& restrict_urls) {
sql::Connection* db = GetDatabaseConnection();
if (!db) {
@@ -374,6 +431,10 @@ void FullStreamUIPolicy::ReadFilteredData(
callback);
}
+void FullStreamUIPolicy::RemoveActions(const std::vector<int64>& action_ids) {
+ ScheduleAndForget(this, &FullStreamUIPolicy::DoRemoveActions, action_ids);
+}
+
void FullStreamUIPolicy::RemoveURLs(const std::vector<GURL>& restrict_urls) {
ScheduleAndForget(this, &FullStreamUIPolicy::DoRemoveURLs, restrict_urls);
}

Powered by Google App Engine
This is Rietveld 408576698