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); |
} |
} |