Changeset 294835 in webkit
- Timestamp:
-
May 25, 2022, 4:42:36 PM
(4 years ago)
- Author:
- Wenson Hsieh
- Message:
-
Avoid extracting the main video in element fullscreen when fullscreen mode isn't active
https://bugs.webkit.org/show_bug.cgi?id=240910
rdar://93906888
Reviewed by Eric Carlson.
Add a check that we're actually still in element fullscreen before extracting the main video. Since
WebFullScreenManager and its m_element both persist after exiting fullscreen mode, there's
currently nothing preventing us from re-triggering video extraction when a video is paused once
again outside of fullscreen mode.
Covered by a new API test (more details in the bug).
- Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp:
(WebKit::WebFullScreenManager::handleEvent):
(WebKit::WebFullScreenManager::mainVideoElementExtractionTimerFired):
Deal with another corner case, wherein the main video element we previously detected may no longer
be in the fullscreen element's subtree by the time that the extraction timer fires. To avoid this,
always update the main video element again when the extraction timer is fired (as long as we're
still in fullscreen mode), before proceeding with extraction.
Canonical link: https://commits.webkit.org/250985@main
-
File:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r293086
|
r294835
|
|
| 375 | 375 | #if ENABLE(VIDEO) |
| 376 | 376 | RefPtr targetElement = dynamicDowncast<WebCore::Element>(event.currentTarget()); |
| 377 | | if (!m_element || &context != &m_element->document() || !targetElement) |
| | 377 | if (!m_element || !targetElement) |
| | 378 | return; |
| | 379 | |
| | 380 | Ref document = m_element->document(); |
| | 381 | if (&context != document.ptr() || !document->fullscreenManager().isFullscreen()) |
| 378 | 382 | return; |
| 379 | 383 | |
| … |
… |
|
| 399 | 403 | void WebFullScreenManager::mainVideoElementExtractionTimerFired() |
| 400 | 404 | { |
| | 405 | if (!m_element || !m_element->document().fullscreenManager().isFullscreen()) |
| | 406 | return; |
| | 407 | |
| | 408 | updateMainVideoElement(); |
| | 409 | |
| 401 | 410 | if (!m_mainVideoElement) |
| 402 | 411 | return; |