Bug 454683 - Media element setVolume should fail on invalid values; r+sr=roc

This commit is contained in:
Chris Pearce 2008-09-29 00:28:26 +02:00
parent 9a7f95dc0b
commit 88294184fe
3 changed files with 44 additions and 0 deletions

View File

@ -350,6 +350,9 @@ NS_IMETHODIMP nsHTMLMediaElement::GetVolume(float *aVolume)
NS_IMETHODIMP nsHTMLMediaElement::SetVolume(float aVolume)
{
if (aVolume < 0.0f || aVolume > 1.0f)
return NS_ERROR_DOM_INDEX_SIZE_ERR;
if (mMuted)
mMutedVolume = aVolume;
else {

View File

@ -53,6 +53,7 @@ _TEST_FILES = test_autoplay.html \
test_playbackRate.html \
test_readyState.html \
test_start.html \
test_volume.html \
# test_bug448534.html \
320x240.ogg \
$(NULL)

View File

@ -0,0 +1,40 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Media test: volume attribute set</title>
<script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<video id='v1'></video><audio id='a1'></audio>
<pre id="test">
<script class="testbody" type="text/javascript">
function test(element, value, shouldThrow) {
var threw = false;
try {
element.volume = value;
} catch (err if err == "NS_ERROR_DOM_INDEX_SIZE_ERR") {
threw = true;
}
is(shouldThrow, threw, "Case: " +element.id+ " setVolume=" + value);
}
var ids = new Array(document.getElementById('v1'), document.getElementById('a1'));
for (i=0; i<ids.length; i++) {
var element = ids[i];
test(element, 0.0,false);
test(element, 1.0, false);
test(element, -0.1, true);
test(element, 1.1, true);
}
</script>
</pre>
</body>
</html>