Commit b31efc78 authored by jiangj's avatar jiangj Committed by Commit bot

Correct NSScreen comparison on PPAPI fullscreen switching

From OS X 10.10, NSApplicationDidChangeScreenParametersNotification
will be sent when window enters fullscreen, and [NSScreen screens]
will be updated with new NSScreen instances equal to the previous
ones but with different pointer values. As a result, using == to
compare pointers of desiredScreen and current menu bar/dock screen
will break as the containsObject: check in -update does isEqual:
comparison.

This doesn't affect Chrome as Chrome is using EmbedsFullscreenWidget().

Review URL: https://codereview.chromium.org/635363002

Cr-Commit-Position: refs/heads/master@{#298989}
parent a160746d
...@@ -85,15 +85,18 @@ NSScreen* GetDockScreen() { ...@@ -85,15 +85,18 @@ NSScreen* GetDockScreen() {
} }
- (void)update { - (void)update {
// From OS X 10.10, NSApplicationDidChangeScreenParametersNotification is sent
// when displaying a fullscreen window, which should normally only be sent if
// the monitor resolution has changed or new display is detected.
if (![[NSScreen screens] containsObject:desiredScreen_]) if (![[NSScreen screens] containsObject:desiredScreen_])
desiredScreen_.reset([[window_ screen] retain]); desiredScreen_.reset([[window_ screen] retain]);
base::mac::FullScreenMode newMode; base::mac::FullScreenMode newMode;
if (!fullscreenActive_) if (!fullscreenActive_)
newMode = base::mac::kFullScreenModeNormal; newMode = base::mac::kFullScreenModeNormal;
else if (desiredScreen_ == GetMenuBarScreen()) else if ([desiredScreen_ isEqual:GetMenuBarScreen()])
newMode = base::mac::kFullScreenModeHideAll; newMode = base::mac::kFullScreenModeHideAll;
else if (desiredScreen_ == GetDockScreen()) else if ([desiredScreen_ isEqual:GetDockScreen()])
newMode = base::mac::kFullScreenModeHideDock; newMode = base::mac::kFullScreenModeHideDock;
else else
newMode = base::mac::kFullScreenModeNormal; newMode = base::mac::kFullScreenModeNormal;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment