Bug 1302350 - part5 : modify test to make sure blocked media won't dispatch 'play' event. draft
authorAlastor Wu <alwu@mozilla.com>
Wed, 02 Nov 2016 14:22:33 +0800
changeset 432491 a635e5212548e657cc7f9b1e577f0d81c16d373b
parent 432490 1c7768bf57da1468dfd69e391aaff5d10ef8bd69
child 432492 6f9d37bc5130f4858d52b550d71996c422555ce2
push id34328
push useralwu@mozilla.com
push dateWed, 02 Nov 2016 06:23:00 +0000
bugs1302350
milestone52.0a1
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
toolkit/content/tests/browser/browser_mediaPlayback_suspended.js
--- 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() {