Index: chrome/browser/metrics/chrome_browser_main_extra_parts_metrics_mac.mm |
diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics_mac.mm b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics_mac.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b0cef69ec7d710066798588f916efa8446272b5e |
--- /dev/null |
+++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics_mac.mm |
@@ -0,0 +1,53 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/metrics/chrome_browser_main_extra_parts_metrics_mac.h" |
+ |
+#include "base/metrics/histogram.h" |
+#include "ui/gfx/screen.h" |
+ |
+namespace { |
+ |
+// The maximum number of screens to record in UMA. |
+int kMaxDisplays = 10; |
+ |
+} // namespace |
+ |
+ChromeBrowserMainExtraPartsMetricsMac::ChromeBrowserMainExtraPartsMetricsMac() { |
+ displayCount_ = gfx::Screen::GetNativeScreen()->GetNumDisplays(); |
+ UMA_HISTOGRAM_ENUMERATION("OSX.DisplayCount.StartUp", |
+ std::min(kMaxDisplays, displayCount_), |
+ kMaxDisplays + 1); |
+ gfx::Screen::GetNativeScreen()->AddObserver(this); |
+} |
+ |
+ChromeBrowserMainExtraPartsMetricsMac:: |
+ ~ChromeBrowserMainExtraPartsMetricsMac() { |
+ gfx::Screen::GetNativeScreen()->RemoveObserver(this); |
+} |
+ |
+void ChromeBrowserMainExtraPartsMetricsMac::OnDisplayAdded( |
+ const gfx::Display& new_display) { |
+ EmitDisplaysChangedMetric(); |
+} |
+ |
+void ChromeBrowserMainExtraPartsMetricsMac::OnDisplayRemoved( |
+ const gfx::Display& old_display) { |
+ EmitDisplaysChangedMetric(); |
+} |
+ |
+void ChromeBrowserMainExtraPartsMetricsMac::OnDisplayMetricsChanged( |
+ const gfx::Display& display, |
+ uint32_t changed_metrics) { |
+} |
+ |
+void ChromeBrowserMainExtraPartsMetricsMac::EmitDisplaysChangedMetric() { |
+ int displayCount = gfx::Screen::GetNativeScreen()->GetNumDisplays(); |
+ if (displayCount != displayCount_) { |
+ displayCount_ = displayCount; |
+ UMA_HISTOGRAM_ENUMERATION("OSX.DisplayCount.Changed", |
+ std::min(kMaxDisplays, displayCount_), |
+ kMaxDisplays + 1); |
+ } |
+} |