Chromium Code Reviews| Index: chrome/browser/metrics/extensions_metrics_provider.cc |
| diff --git a/chrome/browser/metrics/extension_metrics.cc b/chrome/browser/metrics/extensions_metrics_provider.cc |
| similarity index 73% |
| rename from chrome/browser/metrics/extension_metrics.cc |
| rename to chrome/browser/metrics/extensions_metrics_provider.cc |
| index 46d3084a4fe11b7512a8fecda5a126514c72f4c3..195a96bdf37647f9278d5cdfbfc010d679de8e22 100644 |
| --- a/chrome/browser/metrics/extension_metrics.cc |
| +++ b/chrome/browser/metrics/extensions_metrics_provider.cc |
| @@ -2,7 +2,7 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#include "chrome/browser/metrics/extension_metrics.h" |
| +#include "chrome/browser/metrics/extensions_metrics_provider.h" |
| #include <set> |
| @@ -10,7 +10,9 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "base/strings/stringprintf.h" |
| #include "chrome/browser/browser_process.h" |
| +#include "chrome/browser/metrics/metrics_state_manager.h" |
| #include "chrome/browser/profiles/profile_manager.h" |
| +#include "components/metrics/metrics_log_base.h" |
| #include "components/metrics/proto/system_profile.pb.h" |
| #include "extensions/browser/extension_registry.h" |
| #include "extensions/common/extension_set.h" |
| @@ -29,14 +31,17 @@ const size_t kExtensionListBuckets = 1024; |
| } // namespace |
| -HashedExtensionMetrics::HashedExtensionMetrics(uint64 client_id) |
| - : client_key_(client_id % kExtensionListClientKeys), |
| - cached_profile_(NULL) {} |
| -HashedExtensionMetrics::~HashedExtensionMetrics() {} |
| +ExtensionsMetricsProvider::ExtensionsMetricsProvider( |
| + metrics::MetricsStateManager* metrics_state_manager) |
| + : metrics_state_manager_(metrics_state_manager), cached_profile_(NULL) { |
| +} |
|
Alexei Svitkine (slow)
2014/05/21 12:23:22
Nit: Add DCHECK(metrics_state_manager_);
blundell
2014/05/21 13:03:29
Done.
|
| + |
| +ExtensionsMetricsProvider::~ExtensionsMetricsProvider() { |
| +} |
| // static |
| -int HashedExtensionMetrics::HashExtension(const std::string& extension_id, |
| - uint32 client_key) { |
| +int ExtensionsMetricsProvider::HashExtension(const std::string& extension_id, |
| + uint32 client_key) { |
| DCHECK_LE(client_key, kExtensionListClientKeys); |
| std::string message = |
| base::StringPrintf("%u:%s", client_key, extension_id.c_str()); |
| @@ -44,7 +49,7 @@ int HashedExtensionMetrics::HashExtension(const std::string& extension_id, |
| return output % kExtensionListBuckets; |
| } |
| -Profile* HashedExtensionMetrics::GetMetricsProfile() { |
| +Profile* ExtensionsMetricsProvider::GetMetricsProfile() { |
| ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| if (!profile_manager) |
| return NULL; |
| @@ -68,7 +73,7 @@ Profile* HashedExtensionMetrics::GetMetricsProfile() { |
| } |
| scoped_ptr<extensions::ExtensionSet> |
| -HashedExtensionMetrics::GetInstalledExtensions() { |
| +ExtensionsMetricsProvider::GetInstalledExtensions() { |
| #if defined(ENABLE_EXTENSIONS) |
| // UMA reports do not support multiple profiles, but extensions are installed |
| // per-profile. We return the extensions installed in the primary profile. |
| @@ -83,20 +88,27 @@ HashedExtensionMetrics::GetInstalledExtensions() { |
| return scoped_ptr<extensions::ExtensionSet>(); |
| } |
| -void HashedExtensionMetrics::WriteExtensionList( |
| +uint64 ExtensionsMetricsProvider::GetClientID() { |
| + return metrics::MetricsLogBase::Hash(metrics_state_manager_->client_id()); |
| +} |
| + |
| +void ExtensionsMetricsProvider::ProvideSystemProfileMetrics( |
| metrics::SystemProfileProto* system_profile) { |
| scoped_ptr<extensions::ExtensionSet> extensions(GetInstalledExtensions()); |
| if (!extensions) |
| return; |
| + const int kClientKey = GetClientID() % kExtensionListClientKeys; |
| + |
| std::set<int> buckets; |
| for (extensions::ExtensionSet::const_iterator it = extensions->begin(); |
| - it != extensions->end(); ++it) { |
| - buckets.insert(HashExtension((*it)->id(), client_key_)); |
| + it != extensions->end(); |
| + ++it) { |
| + buckets.insert(HashExtension((*it)->id(), kClientKey)); |
| } |
| - for (std::set<int>::const_iterator it = buckets.begin(); |
| - it != buckets.end(); ++it) { |
| + for (std::set<int>::const_iterator it = buckets.begin(); it != buckets.end(); |
| + ++it) { |
| system_profile->add_occupied_extension_bucket(*it); |
| } |
| } |