| Index: components/password_manager/core/browser/login_database.cc
|
| diff --git a/components/password_manager/core/browser/login_database.cc b/components/password_manager/core/browser/login_database.cc
|
| index c4f55a0f26bd486e97c45788523bbb4bd784ff81..e1cf8a2f928901493ad163d1cf42c37bad08f5dd 100644
|
| --- a/components/password_manager/core/browser/login_database.cc
|
| +++ b/components/password_manager/core/browser/login_database.cc
|
| @@ -13,8 +13,10 @@
|
| #include "base/metrics/histogram.h"
|
| #include "base/pickle.h"
|
| #include "base/strings/string_util.h"
|
| +#include "base/strings/stringprintf.h"
|
| #include "base/time/time.h"
|
| #include "components/autofill/core/common/password_form.h"
|
| +#include "components/password_manager/core/browser/password_manager_client.h"
|
| #include "google_apis/gaia/gaia_auth_util.h"
|
| #include "google_apis/gaia/gaia_urls.h"
|
| #include "sql/connection.h"
|
| @@ -115,6 +117,30 @@ void AddCallback(int err, sql::Statement* /*stmt*/) {
|
| DLOG(WARNING) << "LoginDatabase::AddLogin updated an existing form";
|
| }
|
|
|
| +// UMA_* macros assume that the name never changes. This is a helper function
|
| +// where this assumption doesn't hold.
|
| +void LogDynamicUMAStat(const std::string& name,
|
| + int sample,
|
| + int min,
|
| + int max,
|
| + int bucket_size) {
|
| + base::HistogramBase* counter = base::Histogram::FactoryGet(
|
| + name,
|
| + min,
|
| + max,
|
| + bucket_size,
|
| + base::HistogramBase::kUmaTargetedHistogramFlag);
|
| + counter->Add(sample);
|
| +}
|
| +
|
| +void LogAccountStat(const std::string& name, int sample) {
|
| + LogDynamicUMAStat(name, sample, 0, 32, 6);
|
| +}
|
| +
|
| +void LogTimesUsedStat(const std::string& name, int sample) {
|
| + LogDynamicUMAStat(name, sample, 0, 100, 10);
|
| +}
|
| +
|
| } // namespace
|
|
|
| LoginDatabase::LoginDatabase() {
|
| @@ -281,7 +307,8 @@ bool LoginDatabase::InitLoginsTable() {
|
| return true;
|
| }
|
|
|
| -void LoginDatabase::ReportMetrics(const std::string& sync_username) {
|
| +void LoginDatabase::ReportMetrics(const std::string& sync_username,
|
| + bool custom_passphrase_sync_enabled) {
|
| sql::Statement s(db_.GetCachedStatement(
|
| SQL_FROM_HERE,
|
| "SELECT signon_realm, blacklisted_by_user, COUNT(username_value) "
|
| @@ -290,6 +317,11 @@ void LoginDatabase::ReportMetrics(const std::string& sync_username) {
|
| if (!s.is_valid())
|
| return;
|
|
|
| + std::string custom_passphrase = "WithoutCustomPassphrase";
|
| + if (custom_passphrase_sync_enabled) {
|
| + custom_passphrase = "WithCustomPassphrase";
|
| + }
|
| +
|
| int total_accounts = 0;
|
| int blacklisted_sites = 0;
|
| while (s.Step()) {
|
| @@ -299,14 +331,17 @@ void LoginDatabase::ReportMetrics(const std::string& sync_username) {
|
| ++blacklisted_sites;
|
| } else {
|
| total_accounts += accounts_per_site;
|
| - UMA_HISTOGRAM_CUSTOM_COUNTS("PasswordManager.AccountsPerSite",
|
| - accounts_per_site, 0, 32, 6);
|
| + LogAccountStat(base::StringPrintf("PasswordManager.AccountsPerSite.%s",
|
| + custom_passphrase.c_str()),
|
| + accounts_per_site);
|
| }
|
| }
|
| - UMA_HISTOGRAM_CUSTOM_COUNTS("PasswordManager.TotalAccounts",
|
| - total_accounts, 0, 32, 6);
|
| - UMA_HISTOGRAM_CUSTOM_COUNTS("PasswordManager.BlacklistedSites",
|
| - blacklisted_sites, 0, 32, 6);
|
| + LogAccountStat(base::StringPrintf("PasswordManager.TotalAccounts.%s",
|
| + custom_passphrase.c_str()),
|
| + total_accounts);
|
| + LogAccountStat(base::StringPrintf("PasswordManager.BlacklistedSites.%s",
|
| + custom_passphrase.c_str()),
|
| + blacklisted_sites);
|
|
|
| sql::Statement usage_statement(db_.GetCachedStatement(
|
| SQL_FROM_HERE,
|
| @@ -320,13 +355,15 @@ void LoginDatabase::ReportMetrics(const std::string& sync_username) {
|
| usage_statement.ColumnInt(0));
|
|
|
| if (type == PasswordForm::TYPE_GENERATED) {
|
| - UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| - "PasswordManager.TimesGeneratedPasswordUsed",
|
| - usage_statement.ColumnInt(1), 0, 100, 10);
|
| + LogTimesUsedStat(
|
| + base::StringPrintf("PasswordManager.TimesGeneratedPasswordUsed.%s",
|
| + custom_passphrase.c_str()),
|
| + usage_statement.ColumnInt(1));
|
| } else {
|
| - UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| - "PasswordManager.TimesPasswordUsed",
|
| - usage_statement.ColumnInt(1), 0, 100, 10);
|
| + LogTimesUsedStat(
|
| + base::StringPrintf("PasswordManager.TimesPasswordUsed.%s",
|
| + custom_passphrase.c_str()),
|
| + usage_statement.ColumnInt(1));
|
| }
|
| }
|
|
|
|
|