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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // A policy for storing activity log data to a database that performs 5 // A policy for storing activity log data to a database that performs
6 // aggregation to reduce the size of the database. The database layout is 6 // aggregation to reduce the size of the database. The database layout is
7 // nearly the same as FullStreamUIPolicy, which stores a complete log, with a 7 // nearly the same as FullStreamUIPolicy, which stores a complete log, with a
8 // few changes: 8 // few changes:
9 // - a "count" column is added to track how many log records were merged 9 // - a "count" column is added to track how many log records were merged
10 // together into this row 10 // together into this row
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 static_cast<base::DictionaryValue*>(parsed_value.release()))); 511 static_cast<base::DictionaryValue*>(parsed_value.release())));
512 } 512 }
513 } 513 }
514 action->set_count(query.ColumnInt(9)); 514 action->set_count(query.ColumnInt(9));
515 actions->push_back(action); 515 actions->push_back(action);
516 } 516 }
517 517
518 return actions.Pass(); 518 return actions.Pass();
519 } 519 }
520 520
521 void CountingPolicy::DoRemoveActions(const std::vector<int64>& action_ids) {
522 if (action_ids.empty())
523 return;
524
525 sql::Connection* db = GetDatabaseConnection();
526 if (!db) {
527 LOG(ERROR) << "Unable to connect to database";
528 return;
529 }
530
531 // Flush data first so the activity removal affects queued-up data as well.
532 activity_database()->AdviseFlush(ActivityDatabase::kFlushImmediately);
533
534 sql::Transaction transaction(db);
535 if (!transaction.Begin())
536 return;
537
538 std::string statement_str =
539 base::StringPrintf("DELETE FROM %s WHERE rowid = ?", kTableName);
540 sql::Statement statement(db->GetCachedStatement(
541 sql::StatementID(SQL_FROM_HERE), statement_str.c_str()));
542 for (size_t i = 0; i < action_ids.size(); i++) {
543 statement.Reset(true);
544 statement.BindInt64(0, action_ids[i]);
545 if (!statement.Run()) {
546 LOG(ERROR) << "Removing activities from database failed: "
547 << statement.GetSQLStatement();
548 break;
549 }
550 }
551
552 CleanStringTables(db);
553
554 if (!transaction.Commit()) {
555 LOG(ERROR) << "Removing activities from database failed";
556 }
557 }
558
521 void CountingPolicy::DoRemoveURLs(const std::vector<GURL>& restrict_urls) { 559 void CountingPolicy::DoRemoveURLs(const std::vector<GURL>& restrict_urls) {
522 sql::Connection* db = GetDatabaseConnection(); 560 sql::Connection* db = GetDatabaseConnection();
523 if (!db) { 561 if (!db) {
524 LOG(ERROR) << "Unable to connect to database"; 562 LOG(ERROR) << "Unable to connect to database";
525 return; 563 return;
526 } 564 }
527 565
528 // Flush data first so the URL clearing affects queued-up data as well. 566 // Flush data first so the URL clearing affects queued-up data as well.
529 activity_database()->AdviseFlush(ActivityDatabase::kFlushImmediately); 567 activity_database()->AdviseFlush(ActivityDatabase::kFlushImmediately);
530 568
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 base::Unretained(this), 725 base::Unretained(this),
688 extension_id, 726 extension_id,
689 type, 727 type,
690 api_name, 728 api_name,
691 page_url, 729 page_url,
692 arg_url, 730 arg_url,
693 days_ago), 731 days_ago),
694 callback); 732 callback);
695 } 733 }
696 734
735 void CountingPolicy::RemoveActions(const std::vector<int64>& action_ids) {
736 ScheduleAndForget(this, &CountingPolicy::DoRemoveActions, action_ids);
737 }
738
697 void CountingPolicy::RemoveURLs(const std::vector<GURL>& restrict_urls) { 739 void CountingPolicy::RemoveURLs(const std::vector<GURL>& restrict_urls) {
698 ScheduleAndForget(this, &CountingPolicy::DoRemoveURLs, restrict_urls); 740 ScheduleAndForget(this, &CountingPolicy::DoRemoveURLs, restrict_urls);
699 } 741 }
700 742
701 void CountingPolicy::RemoveExtensionData(const std::string& extension_id) { 743 void CountingPolicy::RemoveExtensionData(const std::string& extension_id) {
702 ScheduleAndForget(this, &CountingPolicy::DoRemoveExtensionData, extension_id); 744 ScheduleAndForget(this, &CountingPolicy::DoRemoveExtensionData, extension_id);
703 } 745 }
704 746
705 void CountingPolicy::DeleteDatabase() { 747 void CountingPolicy::DeleteDatabase() {
706 ScheduleAndForget(this, &CountingPolicy::DoDeleteDatabase); 748 ScheduleAndForget(this, &CountingPolicy::DoDeleteDatabase);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 return true; 789 return true;
748 } 790 }
749 791
750 void CountingPolicy::Close() { 792 void CountingPolicy::Close() {
751 // The policy object should have never been created if there's no DB thread. 793 // The policy object should have never been created if there's no DB thread.
752 DCHECK(BrowserThread::IsMessageLoopValid(BrowserThread::DB)); 794 DCHECK(BrowserThread::IsMessageLoopValid(BrowserThread::DB));
753 ScheduleAndForget(activity_database(), &ActivityDatabase::Close); 795 ScheduleAndForget(activity_database(), &ActivityDatabase::Close);
754 } 796 }
755 797
756 } // namespace extensions 798 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698