Please sign in to comment.
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[iOS] Media controls are too cramped with small video
https://bugs.webkit.org/show_bug.cgi?id=158815 <rdar://problem/26824238> Patch by Antoine Quint <email@example.com> on 2016-06-27 Reviewed by Dean Jackson. Source/WebCore: In updateLayoutForDisplayedWidth(), we try to ensure a minimum width is guaranteed for the progress indicator. However, we were not accounting for the width used by the current and remaining time labels on either side of it, so we would incorrectly conclude that we were guaranteeing the minimum time and yield incorrect layouts since we were trying to fit more buttons than we had room for. In order to correctly compute the available width for the progress indicator, we now have clones of the current and remaining time labels, hidden from video and VoiceOver, that we update along with the originals. The same styles apply to both clones and originals, so we may measure the clones to determine the space used by the time labels. The reason we need to use clones is that if the time labels had previously been hidden from view, precisely because there was not enough space to display them along with the progress indicator, then trying to obtain metrics from them would yield 0 since they had "display: none" styles applied. In order to avoid extra layouts and possible flashing, we use the clones so that we never have to toggle the "display" property of the originals just to obtain their measurements. As a result of this change, we adjust the constant used to set the minimum required width available to display the progress indicator after all other essential controls and labels have been measured. That constant used to account for the width of the time labels, and this is no longer correct. Test: media/video-controls-drop-and-restore-timeline.html * Modules/mediacontrols/mediaControlsApple.css: (::-webkit-media-controls-time-remaining-display.clone): * Modules/mediacontrols/mediaControlsApple.js: (Controller): (Controller.prototype.createTimeClones): (Controller.prototype.removeTimeClass): (Controller.prototype.addTimeClass): (Controller.prototype.updateDuration): (Controller.prototype.updateLayoutForDisplayedWidth): (Controller.prototype.updateTime): (Controller.prototype.updateControlsWhileScrubbing): * Modules/mediacontrols/mediaControlsiOS.css: (::-webkit-media-controls-time-remaining-display.clone): * Modules/mediacontrols/mediaControlsiOS.js: LayoutTests: Adjust the output of this test to account for the time label clones and add a new test. * media/video-controls-drop-and-restore-timeline-expected.txt: Added. * media/video-controls-drop-and-restore-timeline.html: Added. * platform/mac-yosemite/http/tests/media/hls/video-controls-live-stream-expected.txt: * platform/mac/http/tests/media/hls/video-controls-live-stream-expected.txt: Canonical link: https://commits.webkit.org/177256@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202505 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- Loading branch information
Showing with 205 additions and 29 deletions.
- +15 −0 LayoutTests/ChangeLog
- +15 −0 LayoutTests/media/video-controls-drop-and-restore-timeline-expected.txt
- +56 −0 LayoutTests/media/video-controls-drop-and-restore-timeline.html
- +2 −0 LayoutTests/platform/mac-yosemite/http/tests/media/hls/video-controls-live-stream-expected.txt
- +2 −0 LayoutTests/platform/mac/http/tests/media/hls/video-controls-live-stream-expected.txt
- +47 −0 Source/WebCore/ChangeLog
- +9 −0 Source/WebCore/Modules/mediacontrols/mediaControlsApple.css
- +50 −28 Source/WebCore/Modules/mediacontrols/mediaControlsApple.js
- +8 −0 Source/WebCore/Modules/mediacontrols/mediaControlsiOS.css
- +1 −1 Source/WebCore/Modules/mediacontrols/mediaControlsiOS.js