| Index: components/password_manager/core/browser/statistics_table.cc
|
| diff --git a/components/password_manager/core/browser/statistics_table.cc b/components/password_manager/core/browser/statistics_table.cc
|
| index e03ba5bed9a2fef48ec54911f2951db68dac0243..c2709e7b47c33824907211efc760c62d1859ba5c 100644
|
| --- a/components/password_manager/core/browser/statistics_table.cc
|
| +++ b/components/password_manager/core/browser/statistics_table.cc
|
| @@ -25,6 +25,21 @@ enum LoginTableColumns {
|
| COLUMN_DATE,
|
| };
|
|
|
| +// Iterates through all rows of s constructing a stats vector.
|
| +std::vector<InteractionsStats> StatementToInteractionsStats(sql::Statement* s) {
|
| + std::vector<InteractionsStats> results;
|
| + while (s->Step()) {
|
| + results.push_back(InteractionsStats());
|
| + results.back().origin_domain = GURL(s->ColumnString(COLUMN_ORIGIN_DOMAIN));
|
| + results.back().username_value = s->ColumnString16(COLUMN_USERNAME);
|
| + results.back().dismissal_count = s->ColumnInt(COLUMN_DISMISSALS);
|
| + results.back().update_time =
|
| + base::Time::FromInternalValue(s->ColumnInt64(COLUMN_DATE));
|
| + }
|
| +
|
| + return results;
|
| +}
|
| +
|
| } // namespace
|
|
|
| InteractionsStats::InteractionsStats() = default;
|
| @@ -106,6 +121,14 @@ bool StatisticsTable::RemoveRow(const GURL& domain) {
|
| return s.Run();
|
| }
|
|
|
| +std::vector<InteractionsStats> StatisticsTable::GetAllRows() {
|
| + static constexpr char query[] =
|
| + "SELECT origin_domain, username_value, "
|
| + "dismissal_count, update_time FROM stats";
|
| + sql::Statement s(db_->GetCachedStatement(SQL_FROM_HERE, query));
|
| + return StatementToInteractionsStats(&s);
|
| +}
|
| +
|
| std::vector<InteractionsStats> StatisticsTable::GetRows(const GURL& domain) {
|
| if (!domain.is_valid())
|
| return std::vector<InteractionsStats>();
|
| @@ -114,16 +137,7 @@ std::vector<InteractionsStats> StatisticsTable::GetRows(const GURL& domain) {
|
| "dismissal_count, update_time FROM stats WHERE origin_domain == ?";
|
| sql::Statement s(db_->GetCachedStatement(SQL_FROM_HERE, query));
|
| s.BindString(0, domain.spec());
|
| - std::vector<InteractionsStats> result;
|
| - while (s.Step()) {
|
| - result.push_back(InteractionsStats());
|
| - result.back().origin_domain = GURL(s.ColumnString(COLUMN_ORIGIN_DOMAIN));
|
| - result.back().username_value = s.ColumnString16(COLUMN_USERNAME);
|
| - result.back().dismissal_count = s.ColumnInt(COLUMN_DISMISSALS);
|
| - result.back().update_time =
|
| - base::Time::FromInternalValue(s.ColumnInt64(COLUMN_DATE));
|
| - }
|
| - return result;
|
| + return StatementToInteractionsStats(&s);
|
| }
|
|
|
| bool StatisticsTable::RemoveStatsByOriginAndTime(
|
|
|