Bug 1302350 - part5 : modify test to make sure blocked media won't dispatch 'play' event.
Add test case to make sure the blocked media won't dispatch 'play' event.
MozReview-Commit-ID: JXibqgVrKce
--- a/toolkit/content/tests/browser/browser_mediaPlayback_suspended.js
+++ b/toolkit/content/tests/browser/browser_mediaPlayback_suspended.js
@@ -9,16 +9,41 @@ var SuspendedType = {
function wait_for_event(browser, event) {
return BrowserTestUtils.waitForEvent(browser, event, false, (event) => {
is(event.originalTarget, browser, "Event must be dispatched to correct browser.");
return true;
});
}
+function check_audio_onplay() {
+ var list = content.document.getElementsByTagName('audio');
+ if (list.length != 1) {
+ ok(false, "There should be only one audio element in page!")
+ }
+
+ var audio = list[0];
+ return new Promise((resolve, reject) => {
+ audio.onplay = () => {
+ ok(needToReceiveOnPlay, "Should not receive play event!");
+ this.onplay = null;
+ reject();
+ };
+
+ audio.pause();
+ audio.play();
+
+ setTimeout(() => {
+ ok(true, "Doesn't receive play event when media was blocked.");
+ audio.onplay = null;
+ resolve();
+ }, 1000)
+ });
+}
+
function check_audio_suspended(suspendedType) {
var list = content.document.getElementsByTagName('audio');
if (list.length != 1) {
ok(false, "There should be only one audio element in page!")
}
var audio = list[0];
is(audio.computedSuspended, suspendedType,
@@ -115,16 +140,18 @@ function* suspended_block(url, browser)
info("- page should have playing audio -");
yield wait_for_event(browser, "DOMAudioPlaybackStarted");
info("- block playing audio -");
browser.blockMedia();
yield ContentTask.spawn(browser, SuspendedType.SUSPENDED_BLOCK,
check_audio_suspended);
+ yield ContentTask.spawn(browser, null,
+ check_audio_onplay);
info("- resume blocked audio -");
browser.resumeMedia();
yield ContentTask.spawn(browser, SuspendedType.NONE_SUSPENDED,
check_audio_suspended);
}
add_task(function* setup_test_preference() {