зеркало из https://github.com/mozilla/gecko-dev.git
76 строки
2.3 KiB
JavaScript
76 строки
2.3 KiB
JavaScript
/* Any copyright is dedicated to the public domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// Test the mozbrowseraudioplaybackchange event is fired correctly.
|
|
'use strict';
|
|
|
|
const { Services } = SpecialPowers.Cu.import('resource://gre/modules/Services.jsm');
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
browserElementTestHelpers.setEnabledPref(true);
|
|
|
|
/**
|
|
* Content script passed to the child iframe
|
|
*/
|
|
function playAudioScript() {
|
|
var audio = new content.Audio();
|
|
content.document.body.appendChild(audio);
|
|
audio.oncanplay = function() {
|
|
audio.play();
|
|
};
|
|
audio.src = 'audio.ogg';
|
|
}
|
|
|
|
/**
|
|
* Creates a simple mozbrowser frame
|
|
*/
|
|
function createFrame() {
|
|
let iframe = document.createElement('iframe');
|
|
iframe.setAttribute('mozbrowser', 'true');
|
|
document.body.appendChild(iframe);
|
|
return iframe;
|
|
}
|
|
|
|
function runTest() {
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
let iframe = createFrame();
|
|
let iframe2 = createFrame();
|
|
|
|
// When the first iframe is finished loading inject a script to create
|
|
// an audio element and play it.
|
|
iframe.addEventListener('mozbrowserloadend', () => {
|
|
let mm = SpecialPowers.getBrowserFrameMessageManager(iframe);
|
|
mm.loadFrameScript('data:,(' + playAudioScript.toString() + ')();', false);
|
|
});
|
|
|
|
// Two events should come in, when the audio starts, and stops playing.
|
|
// The first one should have a detail of 'active' and the second one
|
|
// should have a detail of 'inactive-pause'.
|
|
let expectedNextData = 'active';
|
|
iframe.addEventListener('mozbrowseraudioplaybackchange', (e) => {
|
|
is(e.detail, expectedNextData, 'Audio detail should be correct')
|
|
is(e.target, iframe, 'event target should be the first iframe')
|
|
if (e.detail === 'inactive-pause') {
|
|
SimpleTest.finish();
|
|
}
|
|
expectedNextData = 'inactive-pause';
|
|
});
|
|
|
|
// Make sure an event only goes to the first iframe.
|
|
iframe2.addEventListener('mozbrowseraudioplaybackchange', (e) => {
|
|
ok(false,
|
|
'mozbrowseraudioplaybackchange should dispatch to the correct browser');
|
|
});
|
|
|
|
// Load a simple page to get the process started.
|
|
iframe.src = browserElementTestHelpers.fileEmptyPage1;
|
|
}
|
|
|
|
addEventListener('testready', function() {
|
|
SpecialPowers.pushPrefEnv({'set': [["b2g.system_startup_url", window.location.href]]},
|
|
function() {
|
|
SimpleTest.executeSoon(runTest);
|
|
});
|
|
});
|