summaryrefslogtreecommitdiffstats
path: root/dom/media/test/test_background_video_cancel_suspend_visible.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/test/test_background_video_cancel_suspend_visible.html')
-rw-r--r--dom/media/test/test_background_video_cancel_suspend_visible.html69
1 files changed, 69 insertions, 0 deletions
diff --git a/dom/media/test/test_background_video_cancel_suspend_visible.html b/dom/media/test/test_background_video_cancel_suspend_visible.html
new file mode 100644
index 0000000000..e947b27734
--- /dev/null
+++ b/dom/media/test/test_background_video_cancel_suspend_visible.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test Background Video Suspend Cancels (Visibility)</title>
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script src="manifest.js"></script>
+<script src="background_video.js"></script>
+<link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
+<script type="text/javascript">
+"use strict";
+
+var manager = new MediaTestManager;
+
+/**
+ * Check that making the element visible before suspend timer delay causes the
+ * the suspend timer to be canceled.
+ * @param {HTMLMediaElement} video Video element under test.
+ * @returns {Promise} Promise that is resolved when video decode resumes.
+ */
+function testSuspendTimerCanceledWhenShown(video) {
+ function ended() {
+ video.removeEventListener("mozcancelvideosuspendtimer", canceled);
+ ok(false, `${video.token} ended before suspend cancels`);
+ this.ended_resolve();
+ }
+
+ function canceled() {
+ video.removeEventListener("ended", ended);
+ ok(true, `${video.token} suspend cancels`);
+ this.canceled_resolve();
+ }
+
+ let p = Promise.race([
+ new Promise((resolve) => {
+ video.ended_resolve = resolve;
+ video.addEventListener('ended', ended, { 'once': true });
+ }),
+ new Promise((resolve) => {
+ video.canceled_resolve = resolve;
+ video.addEventListener('mozcancelvideosuspendtimer', canceled, { 'once': true });
+ })
+ ]);
+
+ Log(video.token, "Set visible");
+ video.setVisible(true);
+
+ return p;
+}
+
+startTest({
+ desc: 'Test Background Video Suspend Cancels (Visibility)',
+ prefs: [
+ [ "media.test.video-suspend", true ],
+ [ "media.suspend-bkgnd-video.enabled", true ],
+ [ "media.suspend-bkgnd-video.delay-ms", 10000 ]
+ ],
+ tests: gDecodeSuspendTests,
+ runTest: (test, token) => {
+ let v = appendVideoToDoc(test.name, token);
+ manager.started(token);
+
+ waitUntilPlaying(v)
+ .then(() => testSuspendTimerStartedWhenHidden(v))
+ .then(() => testSuspendTimerCanceledWhenShown(v))
+ .then(() => {
+ ok(true, `${v.token} finished`);
+ manager.finished(token);
+ });
+ }
+});