Changeset 231950 in webkit
- Timestamp:
- May 18, 2018 7:08:45 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r231948 r231950 1 2018-05-18 Antoine Quint <graouts@apple.com> 2 3 [modern-media-controls] AirPlaySupport should be disabled by default 4 https://bugs.webkit.org/show_bug.cgi?id=185658 5 <rdar://problem/40272213> 6 7 Reviewed by Simon Fraser. 8 9 Add a new test that checks that we create an AirplaySupport object only after media has started playing. 10 We also modify a couple of existing tests so they are no longer flaky, as a first pass of this patch 11 revealed some flakiness. 12 13 * media/modern-media-controls/airplay-support/airplay-support-disable-event-listeners-until-play-expected.txt: Added. 14 * media/modern-media-controls/airplay-support/airplay-support-disable-event-listeners-until-play.html: Added. 15 * media/modern-media-controls/scrubber-support/scrubber-support-drag-expected.txt: 16 * media/modern-media-controls/scrubber-support/scrubber-support-drag.html: 17 * media/modern-media-controls/volume-support/volume-support-click-expected.txt: 18 * media/modern-media-controls/volume-support/volume-support-click.html: 19 1 20 2018-05-18 Antoine Quint <graouts@apple.com> 2 21 -
trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-drag-expected.txt
r210959 r231950 5 5 6 6 PASS media.currentTime is within 0.2 of 3.0136 7 PASS media.currentTime is07 PASS media.currentTime became 0 8 8 PASS successfullyParsed is true 9 9 -
trunk/LayoutTests/media/modern-media-controls/scrubber-support/scrubber-support-drag.html
r228097 r231950 25 25 const mediaController = createControls(container, media, null); 26 26 27 let numberOfEvents = 0;28 27 scheduler.frameDidFire = function() { 29 28 if (media.paused) … … 43 42 44 43 media.addEventListener("timeupdate", () => { 45 numberOfEvents++; 44 shouldBeCloseTo("media.currentTime", media.duration / 2, 0.2); 45 const delta = dragEndX - dragStartX; 46 const iterations = Math.abs(delta); 46 47 47 if (numberOfEvents == 1) { 48 shouldBeCloseTo("media.currentTime", media.duration / 2, 0.2); 49 const delta = dragEndX - dragStartX; 50 const iterations = Math.abs(delta); 51 for (let i = 1; i <= iterations; ++i) 52 eventSender.mouseMoveTo(dragStartX + i * Math.sign(delta), centerY); 48 for (let i = 1; i <= iterations; ++i) 49 eventSender.mouseMoveTo(dragStartX + i * Math.sign(delta), centerY); 53 50 54 55 } else { 56 shouldBe("media.currentTime", "0");51 eventSender.mouseUp(); 52 53 shouldBecomeEqual("media.currentTime", "0", () => { 57 54 container.remove(); 58 55 media.remove(); 59 56 finishJSTest(); 60 } 61 62 }); 57 }); 58 }, { once: true }); 63 59 64 60 // Start dragging. -
trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-click-expected.txt
r228017 r231950 4 4 5 5 6 PASS media.paused became false 7 PASS !!muteButtonElement.getBoundingClientRect().width became true 8 PASS !!volumeSliderElement.getBoundingClientRect().width became true 6 9 PASS mediaController.controls.volumeSlider.parent.visible is true 7 PASS media.volume is0.5110 PASS media.volume became 0.51 8 11 PASS successfullyParsed is true 9 12 -
trunk/LayoutTests/media/modern-media-controls/volume-support/volume-support-click.html
r228017 r231950 25 25 const mediaController = createControls(container, media, null); 26 26 27 let numberOfFrames = 0; 28 scheduler.frameDidFire = function() { 29 const muteButtonElement = mediaController.controls.muteButton.element; 30 const muteButtonBounds = muteButtonElement.getBoundingClientRect(); 27 const muteButtonElement = mediaController.controls.muteButton.element; 28 const volumeSliderElement = mediaController.controls.volumeSlider.element; 31 29 32 if (media.paused || muteButtonBounds.width === 0) 33 return; 30 shouldBecomeEqual("media.paused", "false", () => { 31 shouldBecomeEqual("!!muteButtonElement.getBoundingClientRect().width", "true", () => { 32 // Controls are now visible, let's hover over the mute button to make the volume control visible. 33 const muteButtonBounds = muteButtonElement.getBoundingClientRect(); 34 eventSender.mouseMoveTo(muteButtonBounds.left + muteButtonBounds.width / 2, muteButtonBounds.top + muteButtonBounds.height / 2); 34 35 35 numberOfFrames++; 36 shouldBecomeEqual("!!volumeSliderElement.getBoundingClientRect().width", "true", () => { 37 // Volume slider is visible, let's click in the middle of it. 38 const volumeSliderBounds = volumeSliderElement.getBoundingClientRect(); 39 eventSender.mouseMoveTo(volumeSliderBounds.left + volumeSliderBounds.width / 2, volumeSliderBounds.top + volumeSliderBounds.height / 2); 40 eventSender.mouseDown(); 41 eventSender.mouseUp(); 36 42 37 if (numberOfFrames == 1) { 38 // Controls are now visible, let's hover over the mute button to make the volume control visible. 39 eventSender.mouseMoveTo(muteButtonBounds.left + muteButtonBounds.width / 2, muteButtonBounds.top + muteButtonBounds.height / 2); 40 } else if (numberOfFrames == 2) { 41 // Volume slider is visible, let's click in the middle of it. 42 const volumeSliderBounds = mediaController.controls.volumeSlider.element.getBoundingClientRect(); 43 eventSender.mouseMoveTo(volumeSliderBounds.left + volumeSliderBounds.width / 2, volumeSliderBounds.top + volumeSliderBounds.height / 2); 44 eventSender.mouseDown(); 45 eventSender.mouseUp(); 43 // Ensure the volume slider remains visible. 44 shouldBeTrue("mediaController.controls.volumeSlider.parent.visible"); 46 45 47 // Ensure the volume slider remains visible. 48 shouldBeTrue("mediaController.controls.volumeSlider.parent.visible"); 49 50 scheduler.frameDidFire = null; 51 } 52 }; 53 54 // First, ensure controls are shown. 55 mediaController.controls.showsStartButton = false; 56 57 media.addEventListener("volumechange", () => { 58 // Because the slider has a 9pt-wide knob and tests are ran at 1x, we can't get 0.5 here, and instead get 0.51 since 59 // the slider will only increment on whole pixels. 60 shouldBe("media.volume", "0.51"); 61 container.remove(); 62 media.remove(); 63 finishJSTest(); 46 shouldBecomeEqual("media.volume", "0.51", () => { 47 container.remove(); 48 media.remove(); 49 finishJSTest(); 50 }); 51 }); 52 }); 64 53 }); 65 54 -
trunk/Source/WebCore/ChangeLog
r231949 r231950 1 2018-05-18 Antoine Quint <graouts@apple.com> 2 3 [modern-media-controls] AirPlaySupport should be disabled by default 4 https://bugs.webkit.org/show_bug.cgi?id=185658 5 <rdar://problem/40272213> 6 7 Reviewed by Simon Fraser. 8 9 We now only enable AirplaySupport if the controls are visible to the user _and_ media has played. 10 11 Test: media/modern-media-controls/airplay-support/airplay-support-disable-event-listeners-until-play.html 12 13 * Modules/modern-media-controls/media/airplay-support.js: 14 (AirplaySupport.prototype.enable): 15 (AirplaySupport.prototype.controlsUserVisibilityDidChange): 16 (AirplaySupport.prototype._shouldBeEnabled): 17 (AirplaySupport): 18 1 19 2018-05-18 Tim Horton <timothy_horton@apple.com> 2 20 -
trunk/Source/WebCore/Modules/modern-media-controls/media/airplay-support.js
r231923 r231950 39 39 } 40 40 41 enable() 42 { 43 if (this._shouldBeEnabled()) 44 super.enable(); 45 } 46 41 47 buttonWasPressed(control) 42 48 { … … 46 52 controlsUserVisibilityDidChange() 47 53 { 48 const controls = this.mediaController.controls; 49 if (controls.visible && !controls.faded) 54 if (this._shouldBeEnabled()) 50 55 this.enable(); 51 56 else … … 68 73 } 69 74 75 // Private 76 77 _shouldBeEnabled() 78 { 79 if (!this.mediaController.hasPlayed) 80 return false; 81 82 const controls = this.mediaController.controls; 83 return controls.visible && !controls.faded; 84 } 85 70 86 }
Note: See TracChangeset
for help on using the changeset viewer.