SendStreamAudio gets called by SendStreamData which can be called
on the state machine thread since bug 794426 was fixed.
At the same time PlayFromAudioQueuec can no longer guarantee that
mAudioCaptured is false. It could be true and we're waiting for
the audio thread to shut down. We can just remove that assertion;
the logic in SendStreamData guarantees that we don't try to pass
audio to MediaStreams until the audio thread has actually stopped.
--HG--
extra : rebase_source : 431b4af63710ef13a57f7560aeec553b8aae6139
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
Add a new test file with some invalid comments and verify
they are filtered out of the mozGetMetadata() output.
The new file includes the following valid edge cases:
- empty tag name
- empty tag value
- punctuation in the tag name
and the following invalid cases:
- non-ascii tag name
- invalid characters in tag name
- non-utf-8 tag value
- no tag=value separator
Also updates the mochitest messages to be less confusing.
Add a few Ogg files which have non-trivial tag metadata in their Vorbis streams, and verify they are returned correctly by the media.mozGetMetadata() extention.
Add a file with no comments to test {} output as well.
Verify that mozGetMetadata() throws an InvalidStateError if called immediately, before the loadedmetadata event fires.