Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Unified Diff: third_party/WebKit/LayoutTests/media/media-play-promise.html

Issue 1710933003: WIP convert media-play-promise.html to testharness.js Base URL: https://chromium.googlesource.com/chromium/src.git@play-promise
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/LayoutTests/media/media-play-promise.html
diff --git a/third_party/WebKit/LayoutTests/media/media-play-promise.html b/third_party/WebKit/LayoutTests/media/media-play-promise.html
index 2c18fbb70f37deaf5133d8b68c619af8e7f8004d..d16ae9ff6ff4290742c83c36d6b91352e4260a70 100644
--- a/third_party/WebKit/LayoutTests/media/media-play-promise.html
+++ b/third_party/WebKit/LayoutTests/media/media-play-promise.html
@@ -1,7 +1,8 @@
<html>
<head>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
<script src=media-file.js></script>
-<script src=video-test.js></script>
<script>
// This is testing the behavior of play() with regards to the returned
@@ -18,29 +19,41 @@
// Each test should start by prting its name in order to facilitate reading
// the output.
+ // This is initialized during the test setup.
+ var gMediaElement = null;
+
function runNextTestOrFinish()
{
- currentTest++;
- if (currentTest >= TESTS.length) {
- endTest();
+ currentTestIndex++;
+ if (currentTestIndex >= TESTS.length) {
+ currentTest.done();
return;
}
- consoleWrite("");
- TESTS[currentTest]();
+ var previousTest = currentTest;
+
+ var test = TESTS[currentTestIndex];
+ currentTest = async_test(test.description);
+ if (previousTest)
+ previousTest.done();
+ test.run(currentTest);
}
function play()
{
- return mediaElement.play().then(function() {
- consoleWrite("Promise Resolved");
- }, function(e) {
- consoleWrite("Promise Failed with " + e.name);
- }).then(runNextTestOrFinish);
+ // TODO: see if possible to do something like that in a clean fashion.
+
+ // return mediaElement.play().then(function() {
+ // consoleWrite("Promise Resolved");
+ // }, function(e) {
+ // consoleWrite("Promise Failed with " + e.name);
+ // }).then(runNextTestOrFinish);
}
function playWithUserGesture()
{
+ // TODO: convert to work as a manual test.
+
if (!window.eventSender) {
failTest("No window.eventSender");
return;
@@ -61,322 +74,363 @@
eventSender.mouseUp();
}
- var currentTest = -1;
+ var currentTestIndex = -1;
+ var currentTest = null;
var TESTS = [
- // Test that play() on an element that is currently loading returns a
- // promise which resolves successfuly.
- function playLoading()
- {
- consoleWrite("playLoading()");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/test");
- run("mediaElement.src = '" + mediaFile + "'");
-
- waitForEvent('playing');
- play();
- },
-
- // Test that play() on an element that is already loaded returns a
- // promise which which resolves successfuly.
- function playLoaded()
- {
- consoleWrite("playLoaded()");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/test");
- run("mediaElement.src = '" + mediaFile + "'");
-
- waitForEvent('playing');
-
- waitForEvent('canplaythrough', function() {
- testExpected(HTMLMediaElement.HAVE_ENOUGH_DATA, mediaElement.readyState);
- testExpected(true, mediaElement.paused)
-
- play();
- });
-
- mediaElement.load();
- },
-
- // Test that play() on an element when media playback requires a gesture
- // returns a rejected promise if there is no user gesture.
- function playRequiresUserGestureAndHasIt()
- {
- consoleWrite("playRequiresUserGestureAndHasIt()");
- internals.settings.setMediaPlaybackRequiresUserGesture(true);
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/test");
- run("mediaElement.src = '" + mediaFile + "'");
-
- waitForEvent('playing');
- playWithUserGesture();
- },
-
- // Test that play() on an element when media playback requires a gesture
- // returns a resolved promise if there is a user gesture.
- function playRequiresUserGestureAndDoesNotHaveIt()
- {
- consoleWrite("playRequiresUserGestureAndDoesNotHaveIt()");
- internals.settings.setMediaPlaybackRequiresUserGesture(true);
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/test");
- run("mediaElement.src = '" + mediaFile + "'");
-
- waitForEvent('playing');
- play();
- },
-
- // Test that play() on an element with an unsupported content will
- // return a rejected promise.
- function playNotSupportedContent()
- {
- consoleWrite("playNotSupportedContent()");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/garbage");
- run("mediaElement.src = '" + mediaFile + "'");
-
- waitForEvent('playing');
- waitForEvent('error', function() {
- testExpected("mediaElement.error", "[object MediaError]");
- testExpected("mediaElement.error.code", MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
- });
- play();
- },
-
- // Test that play() returns a resolved promise if called after the
- // element suffered from a decode error.
- function playDecodeError()
- {
- consoleWrite("playDecodeError()");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/test");
- run("mediaElement.src = '" + mediaFile + "'");
-
- waitForEvent('playing');
- waitForEvent('error', function() {
- testExpected("mediaElement.error", "[object MediaError]");
- testExpected("mediaElement.error.code", MediaError.MEDIA_ERR_DECODE);
- });
-
- // The setMediaElementNetworkState() method requires metadata to be
- // available.
- waitForEvent('loadedmetadata', function() {
- internals.setMediaElementNetworkState(mediaElement, 6 /* NetworkStateDecodeError */);
- play();
- });
- },
-
- // Test that play() returns a resolved promise if called after the
- // element suffered from a network error.
- function playNetworkError()
- {
- consoleWrite("playNetworkError()");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/test");
- run("mediaElement.src = '" + mediaFile + "'");
-
- waitForEvent('playing');
- waitForEvent('error', function() {
- testExpected("mediaElement.error", "[object MediaError]");
- testExpected("mediaElement.error.code", MediaError.MEDIA_ERR_NETWORK);
- });
-
- // The setMediaElementNetworkState() method requires metadata to be
- // available.
- waitForEvent('loadedmetadata', function() {
- internals.setMediaElementNetworkState(mediaElement, 5 /* NetworkStateNetworkError */);
- play();
- });
- },
-
- // Test that play() returns a rejected promise if the element is
- // suferring from a not supported error.
- function playWithErrorAlreadySet()
- {
- consoleWrite("playWithErrorAlreadySet()");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/garbage");
- run("mediaElement.src = '" + mediaFile + "'");
-
- run("mediaElement.load()");
-
- waitForEvent('playing');
- waitForEvent('error', function() {
- testExpected("mediaElement.error", "[object MediaError]");
- testExpected("mediaElement.error.code", MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
- play();
- });
- },
-
- // Test that play() returns a resolved promise if the element had its
- // source changed after suffering from an error.
- function playSrcChangedAfterError()
{
- consoleWrite("playSrcChangedAfterError()");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/garbage");
- run("mediaElement.src = '" + mediaFile + "'");
-
- run("mediaElement.load()");
-
- waitForEvent('error', function() {
- testExpected("mediaElement.error", "[object MediaError]");
- testExpected("mediaElement.error.code", MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
-
- mediaFile = findMediaFile("audio", "content/test");
- run("mediaElement.src = '" + mediaFile + "'");
-
- waitForEvent('playing');
- waitForEvent('loadedmetadata', function() {
- play();
- });
- });
+ description: "Test that play() on an element that is currently loading returns a promise which resolves successfuly.",
+ run:
+ function playLoading(t)
+ {
+ var mediaElement = document.createElement('audio');
+ mediaElement.src = findMediaFile("audio", "content/test");
+
+ // TODO: add test checking the order between playing and the promise.
+
+ mediaElement.play().then(function() {
+ }, function(e) {
+ assert_unreached("Promise should be successful.")
+ }).then(runNextTestOrFinish);
+ }
},
- // Test that play() returns a rejected promise if the element had an
- // error and just changed its source.
- function playRaceWithSrcChangeError()
{
- consoleWrite("playRaceWithSrcChangeError()");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/garbage");
- run("mediaElement.src = '" + mediaFile + "'");
-
- run("mediaElement.load()");
-
- waitForEvent('error', function() {
- testExpected("mediaElement.error", "[object MediaError]");
- testExpected("mediaElement.error.code", MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
-
- mediaFile = findMediaFile("audio", "content/test");
- run("mediaElement.src = '" + mediaFile + "'");
-
- // TODO(mlamouri): if we print the 'playing' event, it seems
- // that it actually happens later. It's unclear why.
- play();
- });
- },
-
- // Test that play() returns a resolved promise when calling play() then
- // pause() on an element that already has enough data to play. In other
- // words, pause() doesn't cancel play() because it was resolved
- // immediately.
- function playFollowedByPauseWhenLoaded()
- {
- consoleWrite("playFollowedByPauseWhenLoaded()");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/test");
- run("mediaElement.src = '" + mediaFile + "'");
-
- run("mediaElement.load()");
-
- waitForEvent('canplaythrough', function() {
- waitForEvent('playing');
- testExpected("mediaElement.readyState", HTMLMediaElement.HAVE_ENOUGH_DATA);
- play();
- testExpected("mediaElement.paused", false);
- mediaElement.pause();
- testExpected("mediaElement.paused", true);
- });
+ description: "Test that play() on an element that is already loaded returns a promise which which resolves successfuly.",
+ run:
+ function playLoaded(t)
+ {
+ var mediaElement = document.createElement('audio');
+ mediaElement.src = findMediaFile("audio", "content/test");
+
+ mediaElement.addEventListener('canplaythrough', t.step_func(function() {
+ assert_equals(mediaElement.readyState, HTMLMediaElement.HAVE_ENOUGH_DATA);
+ assert_true(mediaElement.paused);
+
+ // TODO: refactor
+ mediaElement.play().then(function() {
+ }, function(e) {
+ assert_unreached("Promise should be successful.")
+ }).then(runNextTestOrFinish);
+ }));
+
+ mediaElement.load();
+ },
},
- // Test that play() returns a rejected promise when calling play() then
- // pause() on an element that doesn't have enough data to play. In other
- // words, pause() cancels play() before it can be resolved.
- function playFollowedByPauseWhenLoading()
- {
- consoleWrite("playFollowedByPauseWhenLoaded()");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/test");
- run("mediaElement.src = '" + mediaFile + "'");
-
- waitForEvent('playing');
- testExpected("mediaElement.readyState", HTMLMediaElement.HAVE_NOTHING);
- play();
- testExpected("mediaElement.paused", false);
- mediaElement.pause();
- testExpected("mediaElement.paused", true);
- },
-
- // Test that load() rejects all the pending play() promises.
- function loadRejectPendingPromises()
- {
- consoleWrite("loadRejectPendingPromises()");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- run("mediaElement = document.createElement('audio')");
-
- play(); // the promise will be left pending.
-
- waitForEvent('playing');
- run("mediaElement.load()");
- },
-
- // Test that changing the src rejects the pending play() promises.
- function newSrcRejectPendingPromises()
- {
- consoleWrite("newSrcRejectPendingPromises()");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- run("mediaElement = document.createElement('audio')");
-
- play(); // the promise will be left pending.
-
- var mediaFile = findMediaFile("audio", "content/test");
- run("mediaElement.src = '" + mediaFile + "'");
- },
-
- // Test ordering of events and promises.
- // This is testing a bug in Blink, see https://crbug.com/587871
- function testEventAndPromiseOrdering()
- {
- consoleWrite("testEventAndPromiseOrdering");
- internals.settings.setMediaPlaybackRequiresUserGesture(false);
-
- var promiseResolver = null;
- var p = new Promise(function(resolve, reject) {
- promiseResolver = resolve;
- });
- p.then(function() {
- consoleWrite("Should be after the play() promise is resolved");
- });
-
- run("mediaElement = document.createElement('audio')");
- var mediaFile = findMediaFile("audio", "content/test");
- run("mediaElement.src = '" + mediaFile + "'");
-
- play();
- waitForEvent('playing', function() {
- promiseResolver();
- });
- }
+ // // Test that play() on an element that is already loaded returns a
+ // // promise which which resolves successfuly.
+ // function playLoaded()
+ // {
+ // consoleWrite("playLoaded()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ // var mediaFile = findMediaFile("audio", "content/test");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // waitForEvent('playing');
+ //
+ // waitForEvent('canplaythrough', function() {
+ // testExpected(HTMLMediaElement.HAVE_ENOUGH_DATA, mediaElement.readyState);
+ // testExpected(true, mediaElement.paused)
+ //
+ // play();
+ // });
+ //
+ // mediaElement.load();
+ // },
+ //
+ // // Test that play() on an element when media playback requires a gesture
+ // // returns a rejected promise if there is no user gesture.
+ // function playRequiresUserGestureAndHasIt()
+ // {
+ // consoleWrite("playRequiresUserGestureAndHasIt()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(true);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ // var mediaFile = findMediaFile("audio", "content/test");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // waitForEvent('playing');
+ // playWithUserGesture();
+ // },
+ //
+ // // Test that play() on an element when media playback requires a gesture
+ // // returns a resolved promise if there is a user gesture.
+ // function playRequiresUserGestureAndDoesNotHaveIt()
+ // {
+ // consoleWrite("playRequiresUserGestureAndDoesNotHaveIt()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(true);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ // var mediaFile = findMediaFile("audio", "content/test");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // waitForEvent('playing');
+ // play();
+ // },
+ //
+ // // Test that play() on an element with an unsupported content will
+ // // return a rejected promise.
+ // function playNotSupportedContent()
+ // {
+ // consoleWrite("playNotSupportedContent()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ // var mediaFile = findMediaFile("audio", "content/garbage");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // waitForEvent('playing');
+ // waitForEvent('error', function() {
+ // testExpected("mediaElement.error", "[object MediaError]");
+ // testExpected("mediaElement.error.code", MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
+ // });
+ // play();
+ // },
+ //
+ // // Test that play() returns a resolved promise if called after the
+ // // element suffered from a decode error.
+ // function playDecodeError()
+ // {
+ // consoleWrite("playDecodeError()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ // var mediaFile = findMediaFile("audio", "content/test");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // waitForEvent('playing');
+ // waitForEvent('error', function() {
+ // testExpected("mediaElement.error", "[object MediaError]");
+ // testExpected("mediaElement.error.code", MediaError.MEDIA_ERR_DECODE);
+ // });
+ //
+ // // The setMediaElementNetworkState() method requires metadata to be
+ // // available.
+ // waitForEvent('loadedmetadata', function() {
+ // internals.setMediaElementNetworkState(mediaElement, 6 /* NetworkStateDecodeError */);
+ // play();
+ // });
+ // },
+ //
+ // // Test that play() returns a resolved promise if called after the
+ // // element suffered from a network error.
+ // function playNetworkError()
+ // {
+ // consoleWrite("playNetworkError()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ // var mediaFile = findMediaFile("audio", "content/test");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // waitForEvent('playing');
+ // waitForEvent('error', function() {
+ // testExpected("mediaElement.error", "[object MediaError]");
+ // testExpected("mediaElement.error.code", MediaError.MEDIA_ERR_NETWORK);
+ // });
+ //
+ // // The setMediaElementNetworkState() method requires metadata to be
+ // // available.
+ // waitForEvent('loadedmetadata', function() {
+ // internals.setMediaElementNetworkState(mediaElement, 5 /* NetworkStateNetworkError */);
+ // play();
+ // });
+ // },
+ //
+ // // Test that play() returns a rejected promise if the element is
+ // // suferring from a not supported error.
+ // function playWithErrorAlreadySet()
+ // {
+ // consoleWrite("playWithErrorAlreadySet()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ // var mediaFile = findMediaFile("audio", "content/garbage");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // run("mediaElement.load()");
+ //
+ // waitForEvent('playing');
+ // waitForEvent('error', function() {
+ // testExpected("mediaElement.error", "[object MediaError]");
+ // testExpected("mediaElement.error.code", MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
+ // play();
+ // });
+ // },
+ //
+ // // Test that play() returns a resolved promise if the element had its
+ // // source changed after suffering from an error.
+ // function playSrcChangedAfterError()
+ // {
+ // consoleWrite("playSrcChangedAfterError()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ // var mediaFile = findMediaFile("audio", "content/garbage");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // run("mediaElement.load()");
+ //
+ // waitForEvent('error', function() {
+ // testExpected("mediaElement.error", "[object MediaError]");
+ // testExpected("mediaElement.error.code", MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
+ //
+ // mediaFile = findMediaFile("audio", "content/test");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // waitForEvent('playing');
+ // waitForEvent('loadedmetadata', function() {
+ // play();
+ // });
+ // });
+ // },
+ //
+ // // Test that play() returns a rejected promise if the element had an
+ // // error and just changed its source.
+ // function playRaceWithSrcChangeError()
+ // {
+ // consoleWrite("playRaceWithSrcChangeError()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ // var mediaFile = findMediaFile("audio", "content/garbage");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // run("mediaElement.load()");
+ //
+ // waitForEvent('error', function() {
+ // testExpected("mediaElement.error", "[object MediaError]");
+ // testExpected("mediaElement.error.code", MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
+ //
+ // mediaFile = findMediaFile("audio", "content/test");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // // TODO(mlamouri): if we print the 'playing' event, it seems
+ // // that it actually happens later. It's unclear why.
+ // play();
+ // });
+ // },
+ //
+ // // Test that play() returns a resolved promise when calling play() then
+ // // pause() on an element that already has enough data to play. In other
+ // // words, pause() doesn't cancel play() because it was resolved
+ // // immediately.
+ // function playFollowedByPauseWhenLoaded()
+ // {
+ // consoleWrite("playFollowedByPauseWhenLoaded()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ // var mediaFile = findMediaFile("audio", "content/test");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // run("mediaElement.load()");
+ //
+ // waitForEvent('canplaythrough', function() {
+ // waitForEvent('playing');
+ // testExpected("mediaElement.readyState", HTMLMediaElement.HAVE_ENOUGH_DATA);
+ // play();
+ // testExpected("mediaElement.paused", false);
+ // mediaElement.pause();
+ // testExpected("mediaElement.paused", true);
+ // });
+ // },
+ //
+ // // Test that play() returns a rejected promise when calling play() then
+ // // pause() on an element that doesn't have enough data to play. In other
+ // // words, pause() cancels play() before it can be resolved.
+ // function playFollowedByPauseWhenLoading()
+ // {
+ // consoleWrite("playFollowedByPauseWhenLoaded()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ // var mediaFile = findMediaFile("audio", "content/test");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // waitForEvent('playing');
+ // testExpected("mediaElement.readyState", HTMLMediaElement.HAVE_NOTHING);
+ // play();
+ // testExpected("mediaElement.paused", false);
+ // mediaElement.pause();
+ // testExpected("mediaElement.paused", true);
+ // },
+ //
+ // // Test that load() rejects all the pending play() promises.
+ // function loadRejectPendingPromises()
+ // {
+ // consoleWrite("loadRejectPendingPromises()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ //
+ // play(); // the promise will be left pending.
+ //
+ // waitForEvent('playing');
+ // run("mediaElement.load()");
+ // },
+ //
+ // // Test that changing the src rejects the pending play() promises.
+ // function newSrcRejectPendingPromises()
+ // {
+ // consoleWrite("newSrcRejectPendingPromises()");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ //
+ // run("mediaElement = document.createElement('audio')");
+ //
+ // play(); // the promise will be left pending.
+ //
+ // var mediaFile = findMediaFile("audio", "content/test");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ // },
+ //
+ // // Test ordering of events and promises.
+ // // This is testing a bug in Blink, see https://crbug.com/587871
+ // function testEventAndPromiseOrdering()
+ // {
+ // consoleWrite("testEventAndPromiseOrdering");
+ // internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ //
+ // var promiseResolver = null;
+ // var p = new Promise(function(resolve, reject) {
+ // promiseResolver = resolve;
+ // });
+ // p.then(function() {
+ // consoleWrite("Should be after the play() promise is resolved");
+ // });
+ //
+ // run("mediaElement = document.createElement('audio')");
+ // var mediaFile = findMediaFile("audio", "content/test");
+ // run("mediaElement.src = '" + mediaFile + "'");
+ //
+ // play();
+ // waitForEvent('playing', function() {
+ // promiseResolver();
+ // });
+ // }
];
+ function requestUserGesture()
+ {
+ // TODO: the goal here is to call load() on gMediaElement so it will be
+ // registered as getting user gesture and play() and load() will work.
+ }
+
function start()
{
- runNextTestOrFinish();
+ var gMediaElement = document.createElement('audio');
+ gMediaElement.src = findMediaFile("audio", "content/test");
+
+ gMediaElement.play().then(function() {
+ }, function() {
+ if ('internals' in window)
+ internals.settings.setMediaPlaybackRequiresUserGesture(false);
+ else
+ return requestUserGesture();
+ }).then(runNextTestOrFinish);
}
</script>
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698