Index: chrome/browser/ui/cocoa/browser_window_controller_private.mm |
diff --git a/chrome/browser/ui/cocoa/browser_window_controller_private.mm b/chrome/browser/ui/cocoa/browser_window_controller_private.mm |
index 3874f2005a146a1393b43bd605710d18c9cbd265..018c33bd80e038b8fb2a080e25067e1d6f9cff09 100644 |
--- a/chrome/browser/ui/cocoa/browser_window_controller_private.mm |
+++ b/chrome/browser/ui/cocoa/browser_window_controller_private.mm |
@@ -53,69 +53,45 @@ using content::WebContents; |
namespace { |
-// Each time the user enters fullscreen, a single histogram enumeration is |
-// recorded. There are several relevant parameters, whose values are mapped |
-// directly into individual bits of the enumeration. |
-// |
-// + Fullscreen Mechanism: The mechanism by which the window's size is changed |
-// to encompass the entire screen. Bit 0. |
-// - AppKit (value of bit: 1) |
-// - Immersive (value of bit: 0) |
-// |
-// + Primary Screen: Whether the window is located on the screen at index 0. |
-// Depending on OSX version, this has different implications for menu bar |
-// visibility. Bit 1. |
-// - Primary (value of bit: 1) |
-// - Secondary (value of bit: 0) |
-// |
-// + Displays have separate spaces: An option available in Mission Control in |
-// OSX 10.9+. Bit 2. |
-// - On (value of bit: 1) |
-// - Off (value of bit: 0) |
-// |
-// + Multiple screens: Whether the user has multiple screens. If the window is |
-// located on a secondary screen, then there must be multiple screens. Bit 3. |
-// - Yes (value of bit: 1) |
-// - No (value of bit: 0) |
- |
-enum FullscreenMechanism { |
- IMMERSIVE_FULLSCREEN_MECHANISM, |
- APPKIT_FULLSCREEN_MECHANISM, |
+// The screen on which the window was fullscreened, and whether the device had |
+// multiple screens available. |
+enum WindowLocation { |
+ PRIMARY_SINGLE_SCREEN = 0, |
+ PRIMARY_MULTIPLE_SCREEN = 1, |
+ SECONDARY_MULTIPLE_SCREEN = 2, |
+ WINDOW_LOCATION_COUNT = 3 |
}; |
-enum { |
- FULLSCREEN_MECHANISM_BIT = 0, |
- PRIMARY_SCREEN_BIT = 1, |
- DISPLAYS_SEPARATE_SPACES_BIT = 2, |
- MULTIPLE_SCREENS_BIT = 3, |
- BIT_COUNT |
+// There are 2 mechanisms for invoking fullscreen: AppKit and Immersive. |
+// There are 2 types of AppKit Fullscreen: Presentation Mode and Canonical |
+// Fullscreen. |
+enum FullscreenStyle { |
+ IMMERSIVE_FULLSCREEN = 0, |
+ PRESENTATION_MODE = 1, |
+ CANONICAL_FULLSCREEN = 2, |
+ FULLSCREEN_STYLE_COUNT = 3 |
}; |
-// Emits a histogram entry indicating that |window| is being made fullscreen. |
-void RecordFullscreenHistogram(FullscreenMechanism mechanism, |
- NSWindow* window) { |
+// Emits a histogram entry indicating the Fullscreen window location. |
+void RecordFullscreenWindowLocation(NSWindow* window) { |
NSArray* screens = [NSScreen screens]; |
bool primary_screen = ([[window screen] isEqual:[screens objectAtIndex:0]]); |
- bool displays_have_separate_spaces = |
- [NSScreen respondsToSelector:@selector(screensHaveSeparateSpaces)] && |
- [NSScreen screensHaveSeparateSpaces]; |
bool multiple_screens = [screens count] > 1; |
- int output = 0; |
- if (mechanism == APPKIT_FULLSCREEN_MECHANISM) |
- output += 1 << FULLSCREEN_MECHANISM_BIT; |
- |
- if (primary_screen) |
- output += 1 << PRIMARY_SCREEN_BIT; |
- |
- if (displays_have_separate_spaces) |
- output += 1 << DISPLAYS_SEPARATE_SPACES_BIT; |
+ WindowLocation location = PRIMARY_SINGLE_SCREEN; |
+ if (multiple_screens) { |
+ location = |
+ primary_screen ? PRIMARY_MULTIPLE_SCREEN : SECONDARY_MULTIPLE_SCREEN; |
+ } |
- if (multiple_screens) |
- output += 1 << MULTIPLE_SCREENS_BIT; |
+ UMA_HISTOGRAM_ENUMERATION( |
+ "OSX.Fullscreen.Enter.WindowLocation", location, WINDOW_LOCATION_COUNT); |
+} |
- int max_output = 1 << BIT_COUNT; |
- UMA_HISTOGRAM_ENUMERATION("OSX.Fullscreen.Enter", output, max_output); |
+// Emits a histogram entry indicating the Fullscreen style. |
+void RecordFullscreenStyle(FullscreenStyle style) { |
+ UMA_HISTOGRAM_ENUMERATION( |
+ "OSX.Fullscreen.Enter.Style", style, FULLSCREEN_STYLE_COUNT); |
} |
} // namespace |
@@ -518,7 +494,8 @@ willPositionSheet:(NSWindow*)sheet |
} |
- (void)enterImmersiveFullscreen { |
- RecordFullscreenHistogram(IMMERSIVE_FULLSCREEN_MECHANISM, [self window]); |
+ RecordFullscreenWindowLocation([self window]); |
+ RecordFullscreenStyle(IMMERSIVE_FULLSCREEN); |
// Set to NO by |-windowDidEnterFullScreen:|. |
enteringImmersiveFullscreen_ = YES; |
@@ -672,7 +649,9 @@ willPositionSheet:(NSWindow*)sheet |
} |
- (void)windowWillEnterFullScreen:(NSNotification*)notification { |
- RecordFullscreenHistogram(APPKIT_FULLSCREEN_MECHANISM, [self window]); |
+ RecordFullscreenWindowLocation([self window]); |
+ RecordFullscreenStyle(enteringPresentationMode_ ? PRESENTATION_MODE |
+ : CANONICAL_FULLSCREEN); |
if (notification) // For System Fullscreen when non-nil. |
[self registerForContentViewResizeNotifications]; |