OLD | NEW |
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 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 const std::string& page_url, | 428 const std::string& page_url, |
429 const std::string& arg_url, | 429 const std::string& arg_url, |
430 const int days_ago) { | 430 const int days_ago) { |
431 // Ensure data is flushed to the database first so that we query over all | 431 // Ensure data is flushed to the database first so that we query over all |
432 // data. | 432 // data. |
433 activity_database()->AdviseFlush(ActivityDatabase::kFlushImmediately); | 433 activity_database()->AdviseFlush(ActivityDatabase::kFlushImmediately); |
434 scoped_ptr<Action::ActionVector> actions(new Action::ActionVector()); | 434 scoped_ptr<Action::ActionVector> actions(new Action::ActionVector()); |
435 | 435 |
436 sql::Connection* db = GetDatabaseConnection(); | 436 sql::Connection* db = GetDatabaseConnection(); |
437 if (!db) | 437 if (!db) |
438 return actions.Pass(); | 438 return actions; |
439 | 439 |
440 // Build up the query based on which parameters were specified. | 440 // Build up the query based on which parameters were specified. |
441 std::string where_str = ""; | 441 std::string where_str = ""; |
442 std::string where_next = ""; | 442 std::string where_next = ""; |
443 if (!extension_id.empty()) { | 443 if (!extension_id.empty()) { |
444 where_str += "extension_id=?"; | 444 where_str += "extension_id=?"; |
445 where_next = " AND "; | 445 where_next = " AND "; |
446 } | 446 } |
447 if (!api_name.empty()) { | 447 if (!api_name.empty()) { |
448 where_str += where_next + "api_name=?"; | 448 where_str += where_next + "api_name=?"; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
516 base::JSONReader::Read(query.ColumnString(8)); | 516 base::JSONReader::Read(query.ColumnString(8)); |
517 if (parsed_value && parsed_value->IsType(base::Value::TYPE_DICTIONARY)) { | 517 if (parsed_value && parsed_value->IsType(base::Value::TYPE_DICTIONARY)) { |
518 action->set_other(make_scoped_ptr( | 518 action->set_other(make_scoped_ptr( |
519 static_cast<base::DictionaryValue*>(parsed_value.release()))); | 519 static_cast<base::DictionaryValue*>(parsed_value.release()))); |
520 } | 520 } |
521 } | 521 } |
522 action->set_count(query.ColumnInt(9)); | 522 action->set_count(query.ColumnInt(9)); |
523 actions->push_back(action); | 523 actions->push_back(action); |
524 } | 524 } |
525 | 525 |
526 return actions.Pass(); | 526 return actions; |
527 } | 527 } |
528 | 528 |
529 void CountingPolicy::DoRemoveActions(const std::vector<int64_t>& action_ids) { | 529 void CountingPolicy::DoRemoveActions(const std::vector<int64_t>& action_ids) { |
530 if (action_ids.empty()) | 530 if (action_ids.empty()) |
531 return; | 531 return; |
532 | 532 |
533 sql::Connection* db = GetDatabaseConnection(); | 533 sql::Connection* db = GetDatabaseConnection(); |
534 if (!db) { | 534 if (!db) { |
535 LOG(ERROR) << "Unable to connect to database"; | 535 LOG(ERROR) << "Unable to connect to database"; |
536 return; | 536 return; |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
797 return true; | 797 return true; |
798 } | 798 } |
799 | 799 |
800 void CountingPolicy::Close() { | 800 void CountingPolicy::Close() { |
801 // The policy object should have never been created if there's no DB thread. | 801 // The policy object should have never been created if there's no DB thread. |
802 DCHECK(BrowserThread::IsMessageLoopValid(BrowserThread::DB)); | 802 DCHECK(BrowserThread::IsMessageLoopValid(BrowserThread::DB)); |
803 ScheduleAndForget(activity_database(), &ActivityDatabase::Close); | 803 ScheduleAndForget(activity_database(), &ActivityDatabase::Close); |
804 } | 804 } |
805 | 805 |
806 } // namespace extensions | 806 } // namespace extensions |
OLD | NEW |