Title: [247018] trunk
- Revision
- 247018
- Author
- [email protected]
- Date
- 2019-07-01 13:52:58 -0700 (Mon, 01 Jul 2019)
Log Message
[iOS] Exiting from fullscreen scrolls to top of page
https://bugs.webkit.org/show_bug.cgi?id=199338
<rdar://problem/51273017>
Reviewed by Jer Noble.
Source/WebKit:
* UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController _completedExitFullScreen]): Restore scroll position.
Hide window after restoring scroll position.
(-[WKFullScreenWindowController _exitFullscreenImmediately]): Drive-by fix: remove code
already also done in _completedExitFullScreen.
LayoutTests:
* fullscreen/fullscreen-restore-scroll-position-expected.txt: Added.
* fullscreen/fullscreen-restore-scroll-position.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (247017 => 247018)
--- trunk/LayoutTests/ChangeLog 2019-07-01 20:29:20 UTC (rev 247017)
+++ trunk/LayoutTests/ChangeLog 2019-07-01 20:52:58 UTC (rev 247018)
@@ -1,3 +1,14 @@
+2019-07-01 Eric Carlson <[email protected]>
+
+ [iOS] Exiting from fullscreen scrolls to top of page
+ https://bugs.webkit.org/show_bug.cgi?id=199338
+ <rdar://problem/51273017>
+
+ Reviewed by Jer Noble.
+
+ * fullscreen/fullscreen-restore-scroll-position-expected.txt: Added.
+ * fullscreen/fullscreen-restore-scroll-position.html: Added.
+
2019-07-01 Russell Epstein <[email protected]>
Layout Test imported/mozilla/svg/text/selectSubString.svg is flaky.
Added: trunk/LayoutTests/fullscreen/fullscreen-restore-scroll-position-expected.txt (0 => 247018)
--- trunk/LayoutTests/fullscreen/fullscreen-restore-scroll-position-expected.txt (rev 0)
+++ trunk/LayoutTests/fullscreen/fullscreen-restore-scroll-position-expected.txt 2019-07-01 20:52:58 UTC (rev 247018)
@@ -0,0 +1,6 @@
+This tests that page scroll is restored after fullscreen. Press any key to start the test.
+
+
+EVENT(load)
+EXPECTED ((document.scrollingElement.scrollTop === originalScroll) == 'true') OK
+
Added: trunk/LayoutTests/fullscreen/fullscreen-restore-scroll-position.html (0 => 247018)
--- trunk/LayoutTests/fullscreen/fullscreen-restore-scroll-position.html (rev 0)
+++ trunk/LayoutTests/fullscreen/fullscreen-restore-scroll-position.html 2019-07-01 20:52:58 UTC (rev 247018)
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>fullscreen-restore-scroll-position</title>
+ <script src=""
+ <script src=""
+ <style>
+ html, body, #spacer {
+ height: 100%;
+ }
+ video {
+ width: 600px;
+ height: 400px;
+ }
+ </style>
+ <script>
+
+ let originalScroll = 0;
+
+ waitFor(window, 'load').then(async event => {
+
+ if (Element.prototype.webkitRequestFullScreen == undefined) {
+ logResult(false, "Element.prototype.webkitRequestFullScreen == undefined");
+ endTest();
+ returh;
+ }
+
+ video = document.getElementsByTagName('video')[0];
+ video.src = "" '../media/content/test');
+ waitFor(video, 'canplaythrough', true);
+
+ originalScroll = document.body.clientHeight;
+ document.scrollingElement.scrollTop = originalScroll;
+ originalScroll = document.scrollingElement.scrollTop;
+
+ document._onwebkitfullscreenchange_ = async (event) => {
+
+ if (document.webkitIsFullScreen) {
+ await sleepFor(100);
+ document.webkitCancelFullScreen();
+ return;
+ }
+
+ await testExpectedEventually("(document.scrollingElement.scrollTop === originalScroll)", true);
+ if (window.testRunner)
+ testRunner.notifyDone();
+ };
+
+ runWithKeyDown(() => document.getElementById('parent').webkitRequestFullScreen());
+ });
+
+ </script>
+ </head>
+ <body>
+ <p>This tests that page scroll is restored after fullscreen. Press any key to start the test.</p>
+ <div id="spacer"></div>
+ <div id="parent">
+ <video id="video" controls><video>
+ </div>
+ </body>
+</html>
Modified: trunk/Source/WebKit/ChangeLog (247017 => 247018)
--- trunk/Source/WebKit/ChangeLog 2019-07-01 20:29:20 UTC (rev 247017)
+++ trunk/Source/WebKit/ChangeLog 2019-07-01 20:52:58 UTC (rev 247018)
@@ -1,3 +1,17 @@
+2019-07-01 Eric Carlson <[email protected]>
+
+ [iOS] Exiting from fullscreen scrolls to top of page
+ https://bugs.webkit.org/show_bug.cgi?id=199338
+ <rdar://problem/51273017>
+
+ Reviewed by Jer Noble.
+
+ * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
+ (-[WKFullScreenWindowController _completedExitFullScreen]): Restore scroll position.
+ Hide window after restoring scroll position.
+ (-[WKFullScreenWindowController _exitFullscreenImmediately]): Drive-by fix: remove code
+ already also done in _completedExitFullScreen.
+
2019-07-01 Zalan Bujtas <[email protected]>
Tapping on the bottom part of youtube video behaves as if controls were visible
Modified: trunk/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm (247017 => 247018)
--- trunk/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm 2019-07-01 20:29:20 UTC (rev 247017)
+++ trunk/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm 2019-07-01 20:52:58 UTC (rev 247018)
@@ -735,14 +735,15 @@
[CATransaction commit];
- [_window setHidden:YES];
- _window = nil;
-
if (auto* manager = self._manager) {
+ manager->restoreScrollPosition();
manager->setAnimatingFullScreen(false);
manager->didExitFullScreen();
}
+ [_window setHidden:YES];
+ _window = nil;
+
if (_repaintCallback) {
_repaintCallback->invalidate(WebKit::CallbackBase::Error::OwnerWasInvalidated);
ASSERT(!_repaintCallback);
@@ -873,10 +874,6 @@
WebKit::replaceViewWithView(_webViewPlaceholder.get(), webView.get());
if (auto* page = [webView _page])
page->setSuppressVisibilityUpdates(false);
- if (manager) {
- manager->didExitFullScreen();
- manager->setAnimatingFullScreen(false);
- }
_webViewPlaceholder = nil;
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes