Changeset 209182 in webkit
- Timestamp:
- Dec 1, 2016 8:16:38 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 19 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r209172 r209182 1 2016-12-01 Antoine Quint <graouts@apple.com> 2 3 [Modern Media Controls] Provide a UI object to show a list of tracks 4 https://bugs.webkit.org/show_bug.cgi?id=165239 5 6 Reviewed by Dean Jackson. 7 8 Adding new tests to cover new TracksPanel functionality. 9 10 * media/modern-media-controls/resources/media-controls-loader.js: 11 * media/modern-media-controls/tracks-panel/tracks-panel-expected.txt: Added. 12 * media/modern-media-controls/tracks-panel/tracks-panel-hide-click-outside-expected.txt: Added. 13 * media/modern-media-controls/tracks-panel/tracks-panel-hide-click-outside.html: Added. 14 * media/modern-media-controls/tracks-panel/tracks-panel-hide-esc-key-expected.txt: Added. 15 * media/modern-media-controls/tracks-panel/tracks-panel-hide-esc-key.html: Added. 16 * media/modern-media-controls/tracks-panel/tracks-panel-hide-expected.txt: Added. 17 * media/modern-media-controls/tracks-panel/tracks-panel-hide.html: Added. 18 * media/modern-media-controls/tracks-panel/tracks-panel-population-expected.txt: Added. 19 * media/modern-media-controls/tracks-panel/tracks-panel-population.html: Added. 20 * media/modern-media-controls/tracks-panel/tracks-panel-right-x-expected.txt: Added. 21 * media/modern-media-controls/tracks-panel/tracks-panel-right-x.html: Added. 22 * media/modern-media-controls/tracks-panel/tracks-panel-select-track-with-keyboard-expected.txt: Added. 23 * media/modern-media-controls/tracks-panel/tracks-panel-select-track-with-keyboard.html: Added. 24 * media/modern-media-controls/tracks-panel/tracks-panel-select-track-with-mouse-expected.txt: Added. 25 * media/modern-media-controls/tracks-panel/tracks-panel-select-track-with-mouse.html: Added. 26 * media/modern-media-controls/tracks-panel/tracks-panel.html: Added. 27 * platform/ios-simulator/TestExpectations: 28 * platform/mac/TestExpectations: 29 1 30 2016-11-30 Yusuke Suzuki <utatane.tea@gmail.com> 2 31 -
trunk/LayoutTests/media/modern-media-controls/resources/media-controls-loader.js
r208456 r209182 4 4 const modulePath = layoutTestsPath ? layoutTestsPath + "/Source/WebCore/Modules/modern-media-controls" : "/modern-media-controls"; 5 5 6 ["media-controls", "scrubber", "volume-slider", "slider", "button", "start-button", "icon-button", "airplay-button", "time-label", "status-label", "macos-inline-media-controls", "macos-fullscreen-media-controls", "ios-inline-media-controls", "buttons-container", "placard" ].forEach(cssFile => {6 ["media-controls", "scrubber", "volume-slider", "slider", "button", "start-button", "icon-button", "airplay-button", "time-label", "status-label", "macos-inline-media-controls", "macos-fullscreen-media-controls", "ios-inline-media-controls", "buttons-container", "placard", "tracks-panel"].forEach(cssFile => { 7 7 document.write(`<link rel="stylesheet" type="text/css" href="${modulePath}/controls/${cssFile}.css">`); 8 8 }); -
trunk/LayoutTests/platform/ios-simulator/TestExpectations
r209170 r209182 2752 2752 media/modern-media-controls/media-controller/media-controller-fullscreen-ltr.html [ Skip ] 2753 2753 2754 # These tests are all Mac-specific, we never show the tracks menu on iOS 2755 media/modern-media-controls/tracks-panel 2756 2754 2757 webkit.org/b/164594 http/tests/cache/disk-cache/disk-cache-request-headers.html [ Pass Timeout ] 2755 2758 -
trunk/LayoutTests/platform/mac/TestExpectations
r209170 r209182 1453 1453 [ Yosemite ] media/modern-media-controls/audio [ Skip ] 1454 1454 [ Yosemite ] media/modern-media-controls/media-controller/media-controller-fullscreen-ltr.html [ Skip ] 1455 [ Yosemite ] media/modern-media-controls/tracks-panel/tracks-panel-select-track-with-keyboard.html [ Skip ] 1455 1456 1456 1457 webkit.org/b/164616 http/tests/media/modern-media-controls/skip-back-support/skip-back-support-button-click.html [ Pass Failure ] -
trunk/Source/WebCore/ChangeLog
r209181 r209182 1 2016-12-01 Antoine Quint <graouts@apple.com> 2 3 [Modern Media Controls] Provide a UI object to show a list of tracks 4 https://bugs.webkit.org/show_bug.cgi?id=165239 5 6 Reviewed by Dean Jackson. 7 8 We add a new TracksPanel object which we will be using to display a list of 9 audio and text tracks. The tracks panel can be shown by calling showTracksPanel() 10 on a MacOSMediaControls object and will be dismissed by hitting the Escape key 11 or mousing down outside of the panel's bounds. While the tracks panel is up, 12 arrows can be used to focus individual tracks which can be activated by either 13 pressing the Space bar or Enter key. 14 15 Activating a track will briefly animate its background to indicate selection and 16 dismissing the tracks panel is also animated with a quick fade-out animation. 17 18 Data for the tracks panel is provided by specifying a dataSource property and 19 implementing the required methods to provide the number of sections in the panel, 20 the number of tracks in each section, etc. 21 22 Tests: media/modern-media-controls/tracks-panel/tracks-panel-hide-click-outside.html 23 media/modern-media-controls/tracks-panel/tracks-panel-hide-esc-key.html 24 media/modern-media-controls/tracks-panel/tracks-panel-hide.html 25 media/modern-media-controls/tracks-panel/tracks-panel-population.html 26 media/modern-media-controls/tracks-panel/tracks-panel-right-x.html 27 media/modern-media-controls/tracks-panel/tracks-panel-select-track-with-keyboard.html 28 media/modern-media-controls/tracks-panel/tracks-panel-select-track-with-mouse.html 29 media/modern-media-controls/tracks-panel/tracks-panel.html 30 31 * Modules/modern-media-controls/controls/macos-fullscreen-media-controls.css: 32 (.media-controls.mac.fullscreen): 33 (.media-controls.mac.fullscreen > .controls-bar): 34 (.media-controls.mac.fullscreen .tracks-panel): 35 * Modules/modern-media-controls/controls/macos-inline-media-controls.css: 36 (.media-controls.mac.inline .tracks-panel): 37 * Modules/modern-media-controls/controls/macos-media-controls.js: 38 (MacOSMediaControls.prototype.showTracksPanel): 39 (MacOSMediaControls.prototype.hideTracksPanel): 40 (MacOSMediaControls): 41 * Modules/modern-media-controls/controls/media-controls.css: 42 (.media-controls): 43 * Modules/modern-media-controls/controls/placard.css: 44 (.placard): 45 * Modules/modern-media-controls/controls/status-label.css: 46 (.status-label): 47 * Modules/modern-media-controls/controls/tracks-panel.css: Added. 48 (.tracks-panel): 49 (.tracks-panel *): 50 (.tracks-panel.fade-out): 51 (.tracks-panel-section): 52 (.tracks-panel-section:first-of-type): 53 (.tracks-panel-section > h3): 54 (.tracks-panel-section > ul): 55 (.tracks-panel-section > ul > li): 56 (.tracks-panel-section > ul > li:focus): 57 (.tracks-panel-section > ul > li.selected:before): 58 (.tracks-panel-section > ul > li.animated): 59 (@keyframes tracks-panel-item-selection): 60 (22.22%): 61 * Modules/modern-media-controls/controls/tracks-panel.js: Added. 62 (TracksPanel.prototype.get presented): 63 (TracksPanel.prototype.presentInParent): 64 (TracksPanel.prototype.hide): 65 (TracksPanel.prototype.get rightX): 66 (TracksPanel.prototype.set rightX): 67 (TracksPanel.prototype.trackNodeSelectionAnimationDidEnd): 68 (TracksPanel.prototype.mouseMovedOverTrackNode): 69 (TracksPanel.prototype.mouseExitedTrackNode): 70 (TracksPanel.prototype.commitProperty): 71 (TracksPanel.prototype.handleEvent): 72 (TracksPanel.prototype._childrenFromDataSource.): 73 (TracksPanel.prototype._childrenFromDataSource): 74 (TracksPanel.prototype._handleMousedown): 75 (TracksPanel.prototype._handleKeydown): 76 (TracksPanel.prototype._dismiss): 77 (TracksPanel.prototype._focusTrackNode): 78 (TracksPanel.prototype._focusPreviousTrackNode): 79 (TracksPanel.prototype._focusNextTrackNode): 80 (TracksPanel.prototype._focusFirstTrackNode): 81 (TracksPanel.prototype._focusLastTrackNode): 82 (TrackNode): 83 (TrackNode.prototype.activate): 84 (TrackNode.prototype.handleEvent): 85 (TrackNode.prototype._animationDidEnd): 86 * Modules/modern-media-controls/js-files: 87 * WebCore.xcodeproj/project.pbxproj: 88 1 89 2016-12-01 Andreas Kling <akling@apple.com> 2 90 -
trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-fullscreen-media-controls.css
r209170 r209182 26 26 /* Controls bar */ 27 27 28 .media-controls.mac.fullscreen { 29 --controls-bar-width: 468px; 30 --tracks-panel-right-margin: 40px; 31 } 32 28 33 .media-controls.mac.fullscreen > .controls-bar { 29 34 left: 50%; 30 35 bottom: 25px; 31 width: 468px;36 width: var(--controls-bar-width); 32 37 height: 75px; 33 38 transform: translateX(-50%); … … 126 131 top: 7px; 127 132 } 133 134 /* Tracks Panel */ 135 136 .media-controls.mac.fullscreen .tracks-panel { 137 /* Half of the screen width minus half of the controls bar width minus the distance to the right edge of the tracks button */ 138 right: calc(50% - var(--controls-bar-width) / 2 + var(--tracks-panel-right-margin)); 139 bottom: 234px; 140 } -
trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-inline-media-controls.css
r208456 r209182 127 127 top: 40px; 128 128 } 129 130 /* Tracks Panel */ 131 132 .media-controls.mac.inline .tracks-panel { 133 bottom: 51px; 134 } -
trunk/Source/WebCore/Modules/modern-media-controls/controls/macos-media-controls.js
r208448 r209182 35 35 this.muteButton = new MuteButton(this); 36 36 this.tracksButton = new TracksButton(this); 37 this.tracksPanel = new TracksPanel; 37 38 this.volumeSlider = new VolumeSlider; 38 39 } 39 40 41 // Public 42 43 showTracksPanel() 44 { 45 this.tracksButton.on = true; 46 this.tracksButton.element.blur(); 47 this.controlsBar.userInteractionEnabled = false; 48 this.tracksPanel.presentInParent(this); 49 } 50 51 hideTracksPanel() 52 { 53 this.tracksButton.on = false; 54 this.tracksButton.element.focus(); 55 this.controlsBar.userInteractionEnabled = true; 56 this.tracksPanel.hide(); 57 } 58 40 59 } -
trunk/Source/WebCore/Modules/modern-media-controls/controls/media-controls.css
r209163 r209182 32 32 .media-controls { 33 33 position: relative; 34 font-family: -apple-system; 34 35 } 35 36 -
trunk/Source/WebCore/Modules/modern-media-controls/controls/placard.css
r209111 r209182 33 33 background-color: black; 34 34 color: rgb(164, 164, 164); 35 36 font-family: -apple-system;37 35 } 38 36 -
trunk/Source/WebCore/Modules/modern-media-controls/controls/status-label.css
r208456 r209182 31 31 overflow: hidden; 32 32 33 font-family: -apple-system;34 33 font-size: 14px; 35 34 -
trunk/Source/WebCore/Modules/modern-media-controls/js-files
r209111 r209182 24 24 controls/status-label.js 25 25 controls/controls-bar.js 26 controls/tracks-panel.js 26 27 controls/media-controls.js 27 28 controls/ios-inline-media-controls.js -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r209181 r209182 10039 10039 714131471DC9D6AF00336107 /* fullscreen-support.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "fullscreen-support.js"; sourceTree = "<group>"; }; 10040 10040 714131481DC9D6EF00336107 /* js-files */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "js-files"; sourceTree = "<group>"; }; 10041 7146DF8B1DEFC2ED0046F98B /* tracks-panel.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = "tracks-panel.css"; sourceTree = "<group>"; }; 10042 7146DF8C1DEFC2ED0046F98B /* tracks-panel.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "tracks-panel.js"; sourceTree = "<group>"; }; 10041 10043 714F5B051DEE5F740075BD17 /* invalid-placard.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "invalid-placard.js"; sourceTree = "<group>"; }; 10042 10044 714F5B061DEE5F8A0075BD17 /* invalid-placard@1x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "invalid-placard@1x.png"; sourceTree = "<group>"; }; … … 18066 18068 isa = PBXGroup; 18067 18069 children = ( 18070 7146DF8B1DEFC2ED0046F98B /* tracks-panel.css */, 18071 7146DF8C1DEFC2ED0046F98B /* tracks-panel.js */, 18068 18072 716FA0D81DB26591007323CC /* airplay-button.css */, 18069 18073 716FA0D91DB26591007323CC /* airplay-button.js */,
Note: See TracChangeset
for help on using the changeset viewer.