+2017-07-20 Matt Lewis <jlewis3@apple.com>
+
+ Unreviewed, rolling out r219700.
+
+ This revision caused consistent timouts on iOS.
+
+ Reverted changeset:
+
+ "Turn tests at media/modern-media-controls/start-support back
+ on"
+ https://bugs.webkit.org/show_bug.cgi?id=174683
+ http://trac.webkit.org/changeset/219700
+
2017-07-20 Chris Dumez <cdumez@apple.com>
Drop legacy XPathException type
PASS mediaController.controls.showsStartButton is true
Pressing on the start button
-PASS mediaController.controls.playPauseButton.element.getBoundingClientRect().width became different from 0
Media is playing
PASS mediaController.controls.showsStartButton is false
<script src="../resources/media-controls-loader.js" type="text/javascript"></script>
<script src="../resources/media-controls-utils.js" type="text/javascript"></script>
<body>
-<style type="text/css" media="screen">
-
- video, #host {
- position: absolute;
- top: 0;
- left: 0;
- width: 800px;
- height: 600px;
- }
-
-</style>
-<video src="../../content/test.mp4" controls></video>
-<div id="host"></div>
+<video src="../../content/test.mp4" style="width: 320px; height: 240px;" controls></video>
+<div id="shadow"></div>
<script type="text/javascript">
window.jsTestIsAsync = true;
description("Testing the <code>MediaController</code> click-to-start behavior.");
-const host = document.querySelector("div#host");
+const shadowRoot = document.querySelector("div#shadow").attachShadow({ mode: "open" });
const media = document.querySelector("video");
-const mediaController = createControls(host, media, null);
+const mediaController = createControls(shadowRoot, media, null);
media.addEventListener("loadedmetadata", function() {
shouldBeTrue("mediaController.controls.showsStartButton");
debug("");
debug("Pressing on the start button");
- shouldBecomeDifferent("mediaController.controls.playPauseButton.element.getBoundingClientRect().width", "0", () => {
- pressOnElement(mediaController.controls.playPauseButton.element)
- });
+ window.requestAnimationFrame(() => pressOnElement(mediaController.controls.startButton.element));
});
media.addEventListener("play", function() {
debug("Media is playing");
shouldBeFalse("mediaController.controls.showsStartButton");
debug("");
- host.remove();
+ shadowRoot.host.remove();
media.remove();
finishJSTest();
});
<script src="../../../resources/js-test-pre.js"></script>
<script src="../resources/media-controls-loader.js" type="text/javascript"></script>
-<script src="../resources/media-controls-utils.js" type="text/javascript"></script>
<body>
-<style type="text/css" media="screen">
-
- video, #host {
- position: absolute;
- top: 0;
- left: 0;
- width: 320px;
- height: 240px;
- }
-
-</style>
-<video src="../../content/test.mp4"></video>
-<div id="host"></div>
+<video src="../../content/test.mp4" style="width: 320px; height: 240px;"></video>
+<div id="shadow"></div>
<script type="text/javascript">
window.jsTestIsAsync = true;
description("Testing the <code>StartSupport</code> behavior with no source.");
-const host = document.querySelector("div#host");
+const shadowRoot = document.querySelector("div#shadow").attachShadow({ mode: "open" });
const media = document.querySelector("video");
-const mediaController = createControls(host, media, null);
+const mediaController = createControls(shadowRoot, media, null);
-const button = document.body.appendChild(document.createElement("div"));
-button.textContent = "Enter Fullscreen";
+const button = document.body.appendChild(document.createElement("button"));
button.addEventListener("click", event => {
try {
media.webkitEnterFullscreen();
debug("Media entered fullscreen");
shouldBeFalse("mediaController.controls.showsStartButton");
debug("");
- host.remove();
+ shadowRoot.host.remove();
media.remove();
button.remove();
finishJSTest();
});
-media.addEventListener("loadedmetadata", event => pressOnElement(button));
+media.addEventListener("loadedmetadata", event => {
+ if ("eventSender" in window) {
+ // Click the button so that we may enter fullscreen.
+ eventSender.mouseMoveTo(button.offsetLeft + 1, button.offsetTop + 1);
+ eventSender.mouseDown();
+ eventSender.mouseUp();
+ } else
+ debug("This test is designed to run in DRT");
+});
</script>
<script src="../../../resources/js-test-post.js"></script>
Received 'canplaythrough' event
-PASS !!internals.shadowRoot(media).querySelector('button.play-pause.center') became true
+PASS !!internals.shadowRoot(media).querySelector('button.start') became true
PASS media.controls is false
Pressing on the start button
Received 'play' event
PASS media.controls is false
-PASS internals.shadowRoot(media).querySelector('button.play-pause.center') became null
+PASS internals.shadowRoot(media).querySelector('button.start') became null
PASS successfullyParsed is true
TEST COMPLETE
media.addEventListener("canplaythrough", function() {
debug("Received 'canplaythrough' event");
// We should display the start button since we denied autoplay and the user needs a way to start playback.
- shouldBecomeEqual("!!internals.shadowRoot(media).querySelector('button.play-pause.center')", "true", function() {
+ shouldBecomeEqual("!!internals.shadowRoot(media).querySelector('button.start')", "true", function() {
shouldBeFalse("media.controls");
debug("Pressing on the start button");
hasUserGesture = true;
- pressOnElement(internals.shadowRoot(media).querySelector('button.play-pause.center'));
+ pressOnElement(internals.shadowRoot(media).querySelector('button.start'));
});
});
debug("Received 'play' event");
shouldBeFalse("media.controls");
if (hasUserGesture) {
- shouldBecomeEqual("internals.shadowRoot(media).querySelector('button.play-pause.center')", "null", endTest);
+ shouldBecomeEqual("internals.shadowRoot(media).querySelector('button.start')", "null", endTest);
} else {
testFailed("Media started playing without user interaction");
endTest();
media/modern-media-controls/skip-back-button [ Pass ]
media/modern-media-controls/skip-forward-button [ Pass ]
media/modern-media-controls/slider [ Pass ]
-media/modern-media-controls/start-support [ Pass ]
media/modern-media-controls/status-label [ Pass ]
media/modern-media-controls/time-control [ Pass ]
media/modern-media-controls/time-label [ Pass ]
media/modern-media-controls/pip-support/ipad/pip-support-tap.html [ Skip ]
media/modern-media-controls/placard-support/ipad [ Skip ]
media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag.html [ Skip ]
-media/modern-media-controls/start-support/start-support-click-to-start.html [ Skip ]
# These tests rely on fullscreen which do not use the WebKit media controls on iOS
media/modern-media-controls/controls-visibility-support/controls-visibility-support-fullscreen-on-parent-element.html [ Skip ]
media/modern-media-controls/controls-visibility-support/controls-visibility-support-fullscreen-on-video.html [ Skip ]
media/modern-media-controls/css/webkit-cursor-visibility-auto-hide.html [ Skip ]
media/modern-media-controls/placard-support/placard-support-airplay-fullscreen.html [ Skip ]
-media/modern-media-controls/start-support/start-support-fullscreen.html [ Skip ]
# These tests specifically test iOS-only media controls features
media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-button-padding.html [ Pass ]
media/modern-media-controls/skip-back-button [ Pass ]
media/modern-media-controls/skip-forward-button [ Pass ]
media/modern-media-controls/slider [ Pass ]
-media/modern-media-controls/start-support [ Pass ]
media/modern-media-controls/status-label [ Pass ]
media/modern-media-controls/time-control [ Pass ]
media/modern-media-controls/time-label [ Pass ]
+2017-07-20 Matt Lewis <jlewis3@apple.com>
+
+ Unreviewed, rolling out r219700.
+
+ This revision caused consistent timouts on iOS.
+
+ Reverted changeset:
+
+ "Turn tests at media/modern-media-controls/start-support back
+ on"
+ https://bugs.webkit.org/show_bug.cgi?id=174683
+ http://trac.webkit.org/changeset/219700
+
2017-07-20 David Quesada <david_quesada@apple.com>
Add SPI to notify WKNavigationDelegate about client redirects
return;
}
- if (!this.bottomControlsBar)
- return;
-
- this.leftContainer.buttons = this._leftContainerButtons();
- this.rightContainer.buttons = this._rightContainerButtons();
-
// If we should show the start button, then only show that button.
if (this._showsStartButton) {
this.playPauseButton.style = this.width <= MaximumSizeToShowSmallProminentControl || this.height <= MaximumSizeToShowSmallProminentControl ? Button.Styles.SmallCenter : Button.Styles.Center;
return;
}
+ if (!this.bottomControlsBar)
+ return;
+
// Update the top left controls bar.
this._topLeftControlsBarContainer.buttons = this._topLeftContainerButtons();
this._topLeftControlsBarContainer.layout();
// Iterate through controls to see if we need to drop any of them. Reset all default states before we proceed.
this.bottomControlsBar.visible = true;
this.playPauseButton.style = Button.Styles.Bar;
+ this.leftContainer.buttons = this._leftContainerButtons();
+ this.rightContainer.buttons = this._rightContainerButtons();
this.rightContainer.buttons.concat(this.leftContainer.buttons).forEach(button => delete button.dropped);
this.muteButton.style = this.preferredMuteButtonStyle;
this.muteButton.usesRTLIconVariant = false;
_leftContainerButtons()
{
- if (this._showsStartButton)
- return [this.skipBackButton, this.skipForwardButton];
return [this.skipBackButton, this.playPauseButton, this.skipForwardButton];
}