Title: [280500] trunk
- Revision
- 280500
- Author
- j...@apple.com
- Date
- 2021-07-30 15:38:29 -0700 (Fri, 30 Jul 2021)
Log Message
REGRESSION (r274460?): Infinite recursion on fullscreen/full-screen-remove-ancestor.html in WTR::InjectedBundlePage::closeFullScreen
https://bugs.webkit.org/show_bug.cgi?id=224085
rdar://75576840
Reviewed by Eric Carlson.
Source/WebKit:
WebFullScreenManager::close() is used to cleanup a transient error when exiting or
attempting to exit fullscreen; it then calls InjectedBundleXXX::closeFullScreen().
It is possible for the injected bundle's closeFullScreen() to attempt to exit full
screen mode again.
Rather than making the bundle responsible for doing the right thing, we add a
workaround in the fullscreen manager to ensure no recursion is happening.
Covered by existing test.
* WebProcess/FullScreen/WebFullScreenManager.cpp:
(WebKit::WebFullScreenManager::close):
* WebProcess/FullScreen/WebFullScreenManager.h: Make close() method private
LayoutTests:
* platform/mac-wk2/TestExpectations: re-enable test.
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (280499 => 280500)
--- trunk/LayoutTests/ChangeLog 2021-07-30 22:29:52 UTC (rev 280499)
+++ trunk/LayoutTests/ChangeLog 2021-07-30 22:38:29 UTC (rev 280500)
@@ -1,3 +1,13 @@
+2021-07-30 Jean-Yves Avenard <j...@apple.com>
+
+ REGRESSION (r274460?): Infinite recursion on fullscreen/full-screen-remove-ancestor.html in WTR::InjectedBundlePage::closeFullScreen
+ https://bugs.webkit.org/show_bug.cgi?id=224085
+ rdar://75576840
+
+ Reviewed by Eric Carlson.
+
+ * platform/mac-wk2/TestExpectations: re-enable test.
+
2021-07-30 Ayumi Kojima <ayumi_koj...@apple.com>
[ iPad ] fast/canvas/canvas-color-space-display-p3.html is failing.
Modified: trunk/LayoutTests/platform/mac-wk2/TestExpectations (280499 => 280500)
--- trunk/LayoutTests/platform/mac-wk2/TestExpectations 2021-07-30 22:29:52 UTC (rev 280499)
+++ trunk/LayoutTests/platform/mac-wk2/TestExpectations 2021-07-30 22:38:29 UTC (rev 280500)
@@ -1500,8 +1500,6 @@
# rdar://80335452 ([ Monterey wk2 Release ] fast/scrolling/iframe-scrollable-after-back.html is a flaky timeout)
[ Monterey ] fast/scrolling/iframe-scrollable-after-back.html [ Pass Timeout ]
-webkit.org/b/224085 fullscreen/full-screen-remove-ancestor.html [ Skip ]
-
webkit.org/b/227776 [ BigSur Release arm64 ] scrollbars/corner-resizer-window-inactive.html [ Pass ImageOnlyFailure ]
webkit.org/b/227776 [ Catalina Release ] scrollbars/corner-resizer-window-inactive.html [ Pass ImageOnlyFailure ]
Modified: trunk/Source/WebKit/ChangeLog (280499 => 280500)
--- trunk/Source/WebKit/ChangeLog 2021-07-30 22:29:52 UTC (rev 280499)
+++ trunk/Source/WebKit/ChangeLog 2021-07-30 22:38:29 UTC (rev 280500)
@@ -1,3 +1,24 @@
+2021-07-30 Jean-Yves Avenard <j...@apple.com>
+
+ REGRESSION (r274460?): Infinite recursion on fullscreen/full-screen-remove-ancestor.html in WTR::InjectedBundlePage::closeFullScreen
+ https://bugs.webkit.org/show_bug.cgi?id=224085
+ rdar://75576840
+
+ Reviewed by Eric Carlson.
+
+ WebFullScreenManager::close() is used to cleanup a transient error when exiting or
+ attempting to exit fullscreen; it then calls InjectedBundleXXX::closeFullScreen().
+ It is possible for the injected bundle's closeFullScreen() to attempt to exit full
+ screen mode again.
+ Rather than making the bundle responsible for doing the right thing, we add a
+ workaround in the fullscreen manager to ensure no recursion is happening.
+
+ Covered by existing test.
+
+ * WebProcess/FullScreen/WebFullScreenManager.cpp:
+ (WebKit::WebFullScreenManager::close):
+ * WebProcess/FullScreen/WebFullScreenManager.h: Make close() method private
+
2021-07-30 Tim Horton <timothy_hor...@apple.com>
Accessibility code logs to stderr in many layout test runs
Modified: trunk/Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp (280499 => 280500)
--- trunk/Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp 2021-07-30 22:29:52 UTC (rev 280499)
+++ trunk/Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp 2021-07-30 22:38:29 UTC (rev 280500)
@@ -263,8 +263,12 @@
void WebFullScreenManager::close()
{
+ if (m_closing)
+ return;
+ m_closing = true;
LOG(Fullscreen, "WebFullScreenManager %p close()", this);
m_page->injectedBundleFullScreenClient().closeFullScreen(m_page.get());
+ m_closing = false;
}
void WebFullScreenManager::saveScrollPosition()
Modified: trunk/Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.h (280499 => 280500)
--- trunk/Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.h 2021-07-30 22:29:52 UTC (rev 280499)
+++ trunk/Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.h 2021-07-30 22:38:29 UTC (rev 280500)
@@ -69,8 +69,6 @@
void videoControlsManagerDidChange();
- void close();
-
protected:
WebFullScreenManager(WebPage*);
@@ -96,6 +94,10 @@
#if ENABLE(VIDEO)
RefPtr<WebCore::HTMLVideoElement> m_pipStandbyElement;
#endif
+
+private:
+ void close();
+ bool m_closing { false };
};
} // namespace WebKit
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes