summaryrefslogtreecommitdiffstats
path: root/dom/browser-element/mochitest/browserElement_ActiveStateChange.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/browser-element/mochitest/browserElement_ActiveStateChange.js')
-rw-r--r--dom/browser-element/mochitest/browserElement_ActiveStateChange.js108
1 files changed, 108 insertions, 0 deletions
diff --git a/dom/browser-element/mochitest/browserElement_ActiveStateChange.js b/dom/browser-element/mochitest/browserElement_ActiveStateChange.js
new file mode 100644
index 000000000..cfbc1cb1e
--- /dev/null
+++ b/dom/browser-element/mochitest/browserElement_ActiveStateChange.js
@@ -0,0 +1,108 @@
+"use strict";
+
+SimpleTest.waitForExplicitFinish();
+browserElementTestHelpers.setEnabledPref(true);
+
+var fileURL = 'chrome://mochitests/content/chrome/dom/browser-element/mochitest/file_browserElement_ActiveStateChange.html';
+var generator = runTests();
+var testFrame;
+var ac;
+
+function assert(aVal, aMessage) {
+ return (!aVal) ? error(aMessage) : 0;
+}
+
+function error(aMessage) {
+ ok(false, "Error : " + aMessage);
+ finish();
+}
+
+function continueTest() {
+ try {
+ generator.next();
+ } catch (e if e instanceof StopIteration) {
+ error("Stop test because of exception!");
+ }
+}
+
+function finish() {
+ document.body.removeChild(testFrame);
+ SimpleTest.finish();
+}
+
+function setCommand(aArg) {
+ assert(!!ac, "Audio channel doesn't exist!");
+ info("# Command = " + aArg);
+
+ testFrame.src = fileURL + '#' + aArg;
+ var expectedActive = false;
+ switch (aArg) {
+ case 'play':
+ expectedActive = true;
+ break;
+ case 'pause':
+ expectedActive = false;
+ break;
+ default :
+ error("Undefined command!");
+ }
+
+ ac.onactivestatechanged = () => {
+ ac.onactivestatechanged = null;
+ ac.isActive().onsuccess = (e) => {
+ is(expectedActive, e.target.result,
+ "Correct active state = " + expectedActive);
+ continueTest();
+ }
+ };
+}
+
+function runTests() {
+ setCommand('play');
+ yield undefined;
+
+ setCommand('pause');
+ yield undefined;
+
+ finish();
+ yield undefined;
+}
+
+function setupTestFrame() {
+ testFrame = document.createElement('iframe');
+ testFrame.setAttribute('mozbrowser', 'true');
+ testFrame.src = fileURL;
+
+ function loadend() {
+ testFrame.removeEventListener('mozbrowserloadend', loadend);
+ ok("allowedAudioChannels" in testFrame, "allowedAudioChannels exist");
+ var channels = testFrame.allowedAudioChannels;
+ is(channels.length, 9, "9 audio channel by default");
+
+ ac = channels[0];
+
+ ok(ac instanceof BrowserElementAudioChannel, "Correct class");
+ ok("isActive" in ac, "isActive exists");
+ ok("onactivestatechanged" in ac, "onactivestatechanged exists");
+
+ generator.next();
+ }
+
+ function alertError(e) {
+ testFrame.removeEventListener('mozbrowsershowmodalprompt', alertError);
+ var message = e.detail.message
+ error(message);
+ }
+
+ testFrame.addEventListener('mozbrowserloadend', loadend);
+ testFrame.addEventListener('mozbrowsershowmodalprompt', alertError);
+ document.body.appendChild(testFrame);
+}
+
+addEventListener('testready', function() {
+ SpecialPowers.pushPrefEnv({'set': [["b2g.system_startup_url", window.location.href]]},
+ function() {
+ SimpleTest.executeSoon(setupTestFrame);
+ });
+});
+