Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(844)

Unified Diff: chrome/browser/metrics/chrome_browser_main_extra_parts_metrics_mac.mm

Issue 641453003: Add metrics for the number of attached displays. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..aaf91d664aeaa68d52bb3cc2dc21c182ee14a874
--- /dev/null
+++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics_mac.mm
@@ -0,0 +1,65 @@
+// 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 <Cocoa/Cocoa.h>
+
+#include "base/metrics/histogram.h"
+
+namespace {
+
+// The maximum number of screens to record in UMA.
+NSUInteger kMaxScreens = 10;
+
+} // namespace
+
+@interface MetricsBridge : NSObject {
+ NSUInteger screenCount_;
+}
+@end
+
+@implementation MetricsBridge
Robert Sesek 2014/10/08 19:25:20 Could you instead use gfx::Screen::AddObserver(gfx
erikchen 2014/10/08 22:49:19 I went with your suggestion and also switched to G
+- (instancetype)init {
+ self = [super init];
+ if (self) {
+ screenCount_ = [[NSScreen screens] count];
+ [[NSNotificationCenter defaultCenter]
+ addObserver:self
+ selector:@selector(didChangeScreenParameters:)
+ name:NSApplicationDidChangeScreenParametersNotification
+ object:nil];
+
+ UMA_HISTOGRAM_ENUMERATION("OSX.DisplayCount.StartUp",
+ std::min(kMaxScreens, screenCount_),
+ kMaxScreens + 1);
+ }
+ return self;
+}
+
+- (void)dealloc {
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
+ [super dealloc];
+}
+
+- (void)didChangeScreenParameters:(NSNotification*)notification {
+ NSUInteger screenCount = [[NSScreen screens] count];
+ if (screenCount != screenCount_) {
+ screenCount_ = screenCount;
+ UMA_HISTOGRAM_ENUMERATION("OSX.DisplayCount.Changed",
Robert Sesek 2014/10/08 19:25:20 This seems like a _COUNTS instead of an _ENUMERATI
erikchen 2014/10/08 22:49:19 _COUNTS uses an exponential histogram (even _COUNT
+ std::min(kMaxScreens, screenCount_),
+ kMaxScreens + 1);
+ }
+}
+
+@end
+
+ChromeBrowserMainExtraPartsMetricsMac::ChromeBrowserMainExtraPartsMetricsMac() {
+ metrics_bridge_ = static_cast<void*>([[MetricsBridge alloc] init]);
+}
+
+ChromeBrowserMainExtraPartsMetricsMac::
+ ~ChromeBrowserMainExtraPartsMetricsMac() {
+ [static_cast<NSObject*>(metrics_bridge_) release];
+}

Powered by Google App Engine
This is Rietveld 408576698