зеркало из https://github.com/mozilla/gecko-dev.git
[PATCH] Bug 812847 - Test Opus channel count validation - r=kinetik
From 49f5e33d79df3713bc510e611a5064858bf24e4a Mon Sep 17 00:00:00 2001 These files have specially crafted headers which should be rejected by the new checks added to resolve this bug. If any audio output is produced then this bug has re-occured. The audio data is the phrase "invalid file", in one or six channels, to make this more obvious. The new mochitest test_invalid_reject.html tries to load and play each of the new invalid files and verifies that an error event is triggered. Since the invalid data is in the file headers, this should happen after network load but before metadata is ready, so the test also asserts errors if loadedmetadata or a number of subsequent events are triggered. The test will time out if no error event is fired at all. Thanks to Matthew Gregan for assistance writing the mochitest. --- content/media/test/Makefile.in | 11 ++++++ content/media/test/invalid-cmap-s0c0.opus | Bin 0 -> 6835 bytes content/media/test/invalid-cmap-s0c2.opus | Bin 0 -> 6834 bytes content/media/test/invalid-cmap-s1c2.opus | Bin 0 -> 6848 bytes content/media/test/invalid-cmap-short.opus | Bin 0 -> 6854 bytes content/media/test/invalid-m0c0.opus | Bin 0 -> 2471 bytes content/media/test/invalid-m0c3.opus | Bin 0 -> 2471 bytes content/media/test/invalid-m1c0.opus | Bin 0 -> 6836 bytes content/media/test/invalid-m1c9.opus | Bin 0 -> 6836 bytes content/media/test/invalid-m2c0.opus | Bin 0 -> 2471 bytes content/media/test/invalid-m2c1.opus | Bin 0 -> 2455 bytes content/media/test/manifest.js | 14 ++++++++ content/media/test/test_invalid_reject.html | 52 ++++++++++++++++++++++++++++ 13 files changed, 77 insertions(+) create mode 100644 content/media/test/invalid-cmap-s0c0.opus create mode 100644 content/media/test/invalid-cmap-s0c2.opus create mode 100644 content/media/test/invalid-cmap-s1c2.opus create mode 100644 content/media/test/invalid-cmap-short.opus create mode 100644 content/media/test/invalid-m0c0.opus create mode 100644 content/media/test/invalid-m0c3.opus create mode 100644 content/media/test/invalid-m1c0.opus create mode 100644 content/media/test/invalid-m1c9.opus create mode 100644 content/media/test/invalid-m2c0.opus create mode 100644 content/media/test/invalid-m2c1.opus create mode 100644 content/media/test/test_invalid_reject.html
This commit is contained in:
Родитель
bc72f9ee9e
Коммит
89a7b7987c
|
@ -81,6 +81,7 @@ MOCHITEST_FILES = \
|
|||
test_delay_load.html \
|
||||
test_error_on_404.html \
|
||||
test_info_leak.html \
|
||||
test_invalid_reject.html \
|
||||
test_load.html \
|
||||
test_load_candidates.html \
|
||||
test_load_same_resource.html \
|
||||
|
@ -246,6 +247,16 @@ MOCHITEST_FILES += \
|
|||
# Other files
|
||||
MOCHITEST_FILES += \
|
||||
bogus.duh \
|
||||
invalid-m0c0.opus \
|
||||
invalid-m0c3.opus \
|
||||
invalid-m1c0.opus \
|
||||
invalid-m1c9.opus \
|
||||
invalid-m2c0.opus \
|
||||
invalid-m2c1.opus \
|
||||
invalid-cmap-short.opus \
|
||||
invalid-cmap-s0c0.opus \
|
||||
invalid-cmap-s0c2.opus \
|
||||
invalid-cmap-s1c2.opus \
|
||||
$(NULL)
|
||||
|
||||
# These tests contain backend-specific tests. Try to write backend
|
||||
|
|
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
|
@ -167,6 +167,20 @@ var gSnifferTests = [
|
|||
{ name:"bogus.duh", type:"bogus/duh" }
|
||||
];
|
||||
|
||||
// Files we must reject as invalid.
|
||||
var gInvalidTests = [
|
||||
{ name:"invalid-m0c0.opus", type:"audio/ogg; codecs=opus"},
|
||||
{ name:"invalid-m0c3.opus", type:"audio/ogg; codecs=opus"},
|
||||
{ name:"invalid-m1c0.opus", type:"audio/ogg; codecs=opus"},
|
||||
{ name:"invalid-m1c9.opus", type:"audio/ogg; codecs=opus"},
|
||||
{ name:"invalid-m2c0.opus", type:"audio/ogg; codecs=opus"},
|
||||
{ name:"invalid-m2c1.opus", type:"audio/ogg; codecs=opus"},
|
||||
{ name:"invalid-cmap-short.opus", type:"audio/ogg; codecs=opus"},
|
||||
{ name:"invalid-cmap-s0c0.opus", type:"audio/ogg; codecs=opus"},
|
||||
{ name:"invalid-cmap-s0c2.opus", type:"audio/ogg; codecs=opus"},
|
||||
{ name:"invalid-cmap-s1c2.opus", type:"audio/ogg; codecs=opus"},
|
||||
];
|
||||
|
||||
// Converts a path/filename to a file:// URI which we can load from disk.
|
||||
// Optionally checks whether the file actually exists on disk at the location
|
||||
// we've specified.
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Test rejection of invalid files</title>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||||
<script type="text/javascript" src="manifest.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="test">
|
||||
<script class="testbody" type="text/javascript">
|
||||
|
||||
var manager = new MediaTestManager;
|
||||
|
||||
function startTest(test, token) {
|
||||
var v = document.createElement('video');
|
||||
manager.started(token);
|
||||
|
||||
// Set up event handlers. Seeing any of these is a failure.
|
||||
function badEvent(type) { return function(e) {
|
||||
ok(false, test.name + " should not fire '" + type + "' event");
|
||||
}};
|
||||
var events = [
|
||||
'loadedmetadata', 'load',
|
||||
'canplay', 'canplaythrough',
|
||||
'playing'
|
||||
];
|
||||
events.forEach( function(e) {
|
||||
v.addEventListener(e, badEvent(e));
|
||||
});
|
||||
|
||||
// Seeing a decoder error is a success.
|
||||
v.addEventListener("error", function(e) {
|
||||
is(v.error.code, v.error.MEDIA_ERR_DECODE,
|
||||
"decoder should reject " + test.name);
|
||||
manager.finished(token);
|
||||
});
|
||||
|
||||
// Now try to load and play the file, which should result in the
|
||||
// error event handler above being called, terminating the test.
|
||||
document.body.appendChild(v);
|
||||
v.src = test.name;
|
||||
v.play();
|
||||
}
|
||||
|
||||
manager.runTests(gInvalidTests, startTest);
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче