Title: [153402] trunk/Source/WebKit2
- Revision
- 153402
- Author
- [email protected]
- Date
- 2013-07-27 16:14:07 -0700 (Sat, 27 Jul 2013)
Log Message
If entering fullscreen for a window fails, don't leave things in a bad state
https://bugs.webkit.org/show_bug.cgi?id=119179
<rdar://problem/14517068>
Reviewed by Sam Weinig.
On Lion, attempting to take a video fullscreen when the Safari window is already
fullscreen can sometimes fail, and AppKit informs us via windowDidFailToEnterFullScreen:
When this happens we have to undo the work done when entering fullscreen, to
avoid leaving things in a bad state.
* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (153401 => 153402)
--- trunk/Source/WebKit2/ChangeLog 2013-07-27 22:23:38 UTC (rev 153401)
+++ trunk/Source/WebKit2/ChangeLog 2013-07-27 23:14:07 UTC (rev 153402)
@@ -1,3 +1,19 @@
+2013-07-27 Simon Fraser <[email protected]>
+
+ If entering fullscreen for a window fails, don't leave things in a bad state
+ https://bugs.webkit.org/show_bug.cgi?id=119179
+
+ Reviewed by Sam Weinig.
+
+ On Lion, attempting to take a video fullscreen when the Safari window is already
+ fullscreen can sometimes fail, and AppKit informs us via windowDidFailToEnterFullScreen:
+
+ When this happens we have to undo the work done when entering fullscreen, to
+ avoid leaving things in a bad state.
+
+ * UIProcess/mac/WKFullScreenWindowController.mm:
+ (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
+
2013-07-26 Tim Horton <[email protected]>
Add a mode where autosizing fixes the FrameView height to at least the WKView height
Modified: trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm (153401 => 153402)
--- trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm 2013-07-27 22:23:38 UTC (rev 153401)
+++ trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm 2013-07-27 23:14:07 UTC (rev 153402)
@@ -278,9 +278,10 @@
{
if (_fullScreenState != EnteringFullScreen)
return;
- _fullScreenState = InFullScreen;
+
+ if (completed) {
+ _fullScreenState = InFullScreen;
- if (completed) {
// Screen updates to be re-enabled ta the end of the current block.
NSDisableScreenUpdates();
[self _manager]->didEnterFullScreen();
@@ -299,9 +300,30 @@
[_webViewPlaceholder.get() setExitWarningVisible:YES];
[_webViewPlaceholder.get() setTarget:self];
- NSEnableScreenUpdates();
- } else
+ } else {
+ // Transition to fullscreen failed. Clean up.
+ _fullScreenState = NotInFullScreen;
+
[_scaleAnimation.get() stopAnimation];
+
+ [_backgroundWindow.get() orderOut:self];
+ [_backgroundWindow.get() setFrame:NSZeroRect display:YES];
+
+ [[self window] setAutodisplay:YES];
+ [_webView _setSuppressVisibilityUpdates:NO];
+
+ NSResponder *firstResponder = [[self window] firstResponder];
+ [self _replaceView:_webViewPlaceholder.get() with:_webView];
+ [[_webView window] makeResponder:firstResponder firstResponderIfDescendantOfView:_webView];
+ [[_webView window] makeKeyAndOrderFront:self];
+
+ [self _manager]->didExitFullScreen();
+ [self _manager]->setAnimatingFullScreen(false);
+ [self _page]->scalePage(_savedScale, IntPoint());
+ [self _manager]->restoreScrollPosition();
+ }
+
+ NSEnableScreenUpdates();
}
- (void)exitFullScreen
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes