mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 12:37:37 +00:00
f9752f535c
We need to rely on the audio channel service for all products now, so supporting running without it seems pointless at this point.
130 lines
2.9 KiB
HTML
130 lines
2.9 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Test for audio controller in windows</title>
|
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
</head>
|
|
<body>
|
|
<pre id="test">
|
|
</pre>
|
|
|
|
<script type="application/javascript">
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
var expectedNotification = null;
|
|
|
|
var observer = {
|
|
observe: function(subject, topic, data) {
|
|
if (expectedNotification !== null) {
|
|
is(topic, "audio-playback", "audio-playback received");
|
|
is(data, expectedNotification, "This is the right notification");
|
|
runTest();
|
|
} else {
|
|
ok(false, "should not receive audio-playback notification!");
|
|
}
|
|
}
|
|
};
|
|
|
|
var observerService = SpecialPowers.Cc["@mozilla.org/observer-service;1"]
|
|
.getService(SpecialPowers.Ci.nsIObserverService);
|
|
|
|
var audio = new Audio();
|
|
audio.loop = true;
|
|
|
|
var tests = [
|
|
function() {
|
|
observerService.addObserver(observer, "audio-playback", false);
|
|
ok(true, "Observer set");
|
|
|
|
audio.src = "audio.ogg";
|
|
// Wait for the audio metadata to become available so that we have an audio track.
|
|
audio.onloadedmetadata = runTest;
|
|
},
|
|
|
|
// Verify that muting and unmuting dispatches the events as expected.
|
|
function() {
|
|
expectedNotification = 'active';
|
|
audio.play();
|
|
},
|
|
|
|
function() {
|
|
expectedNotification = 'inactive';
|
|
audio.volume = 0;
|
|
},
|
|
|
|
function() {
|
|
expectedNotification = 'active';
|
|
audio.volume = 1;
|
|
},
|
|
|
|
function() {
|
|
expectedNotification = 'inactive';
|
|
audio.pause();
|
|
},
|
|
|
|
// Verify that no events are dispatched when volume is set to 0..
|
|
function() {
|
|
expectedNotification = 'active';
|
|
audio.play();
|
|
},
|
|
|
|
function() {
|
|
expectedNotification = 'inactive';
|
|
audio.volume = 0;
|
|
},
|
|
|
|
function() {
|
|
expectedNotification = null;
|
|
audio.onpause = function() {
|
|
// Yield to the event loop a few times to make sure that audio-playback is not dispatched.
|
|
SimpleTest.executeSoon(function() {
|
|
SimpleTest.executeSoon(function() {
|
|
SimpleTest.executeSoon(function() {
|
|
audio.onpause = null;
|
|
runTest();
|
|
});
|
|
});
|
|
});
|
|
};
|
|
audio.pause();
|
|
},
|
|
|
|
function() {
|
|
expectedNotification = null;
|
|
audio.volume = 1;
|
|
// Yield to the event loop a few times to make sure that audio-playback is not dispatched.
|
|
SimpleTest.executeSoon(function() {
|
|
SimpleTest.executeSoon(function() {
|
|
SimpleTest.executeSoon(function() {
|
|
runTest();
|
|
});
|
|
});
|
|
});
|
|
},
|
|
|
|
function() {
|
|
observerService.removeObserver(observer, "audio-playback");
|
|
ok(true, "Observer removed");
|
|
runTest();
|
|
}
|
|
];
|
|
|
|
function runTest() {
|
|
if (!tests.length) {
|
|
SimpleTest.finish();
|
|
return;
|
|
}
|
|
|
|
var test = tests.shift();
|
|
test();
|
|
}
|
|
|
|
runTest();
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|