зеркало из https://github.com/mozilla/gecko-dev.git
eebcbbd123
There were two unrelated buffering problems in nsWebPDecoder. The first was with the decoder contract. We are expected to loop until the iterator is unable to provide more data, and wait for the SourceBuffer to reschedule us, where as nsWebPDecoder::DoDecode only did one pass. Thus when something yielded wanting more data, we would just wait forever. The second was the integration with the libwebp API. We are expected to retry when we receive SUSPENDED from the decoder, as it decided to yield pixels instead of continuing to decode as many as possible. The tests did not cover the first problem because multi chunk decoder tests do not use SourceBuffer scheduling. This is an oversight. They now will write a chunk of data, let the SourceBuffer reschedule the decoder, and repeat until all of the data has been written. The tests did not cover the second problem because all of the reference WebP images are too small. This patch adds a new test with a large WebP image (converted from a Mozilla all hands photo of lanyards). This should actually trigger the SUSPEND behaviour of libwebp. Differential Revision: https://phabricator.services.mozilla.com/D10817 |
||
---|---|---|
.. | ||
browser | ||
crashtests | ||
fuzzing | ||
gtest | ||
mochitest | ||
reftest | ||
unit |