From 0055bfa55b54adfd3e002345219db30bc1b90fcd Mon Sep 17 00:00:00 2001 From: Paul Adenot Date: Tue, 22 Aug 2023 14:33:21 +0000 Subject: [PATCH] Bug 1849271 - Flip test when checking for the presence of optional colorspace members on a VideoDecoderConfig. r=media-playback-reviewers,alwu Differential Revision: https://phabricator.services.mozilla.com/D186530 --- .eslintrc-test-paths.js | 1 + dom/media/webcodecs/VideoDecoder.cpp | 8 +++--- dom/media/webcodecs/crashtest/1849271.html | 27 +++++++++++++++++++ dom/media/webcodecs/crashtest/crashtests.list | 7 +++++ dom/media/webcodecs/moz.build | 1 + .../lib/environments/privileged.js | 9 +++++++ 6 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 dom/media/webcodecs/crashtest/1849271.html create mode 100644 dom/media/webcodecs/crashtest/crashtests.list diff --git a/.eslintrc-test-paths.js b/.eslintrc-test-paths.js index 2ed72b0f2d7e..fe3822f661bb 100644 --- a/.eslintrc-test-paths.js +++ b/.eslintrc-test-paths.js @@ -316,6 +316,7 @@ const extraMochitestTestPaths = [ "dom/media/mediasource/test/", "dom/media/test/", "dom/media/webcodecs/test/", + "dom/media/webcodecs/crashtests/", "dom/media/webspeech/recognition/test/", "dom/media/webspeech/synth/test/", "dom/messagechannel/tests/", diff --git a/dom/media/webcodecs/VideoDecoder.cpp b/dom/media/webcodecs/VideoDecoder.cpp index 9f29751287b3..d875d29c3dc7 100644 --- a/dom/media/webcodecs/VideoDecoder.cpp +++ b/dom/media/webcodecs/VideoDecoder.cpp @@ -300,16 +300,16 @@ static Result, nsresult> CreateVideoInfo( if (aConfig.mColorSpace.isSome()) { const VideoColorSpaceInternal& colorSpace(aConfig.mColorSpace.value()); - if (!colorSpace.mFullRange.isSome()) { + if (colorSpace.mFullRange.isSome()) { vi->mColorRange = ToColorRange(colorSpace.mFullRange.value()); } - if (!colorSpace.mMatrix.isSome()) { + if (colorSpace.mMatrix.isSome()) { vi->mColorSpace.emplace(ToColorSpace(colorSpace.mMatrix.value())); } - if (!colorSpace.mPrimaries.isSome()) { + if (colorSpace.mPrimaries.isSome()) { vi->mColorPrimaries.emplace(ToPrimaries(colorSpace.mPrimaries.value())); } - if (!colorSpace.mTransfer.isSome()) { + if (colorSpace.mTransfer.isSome()) { vi->mTransferFunction.emplace( ToTransferFunction(colorSpace.mTransfer.value())); } diff --git a/dom/media/webcodecs/crashtest/1849271.html b/dom/media/webcodecs/crashtest/1849271.html new file mode 100644 index 000000000000..67e170d8bfb4 --- /dev/null +++ b/dom/media/webcodecs/crashtest/1849271.html @@ -0,0 +1,27 @@ + + + diff --git a/dom/media/webcodecs/crashtest/crashtests.list b/dom/media/webcodecs/crashtest/crashtests.list new file mode 100644 index 000000000000..1b49d9930eeb --- /dev/null +++ b/dom/media/webcodecs/crashtest/crashtests.list @@ -0,0 +1,7 @@ +[DEFAULT] +subsuite = media +tags = webcodecs +prefs = + dom.media.webcodecs.enabled=true + +load 1849271.html diff --git a/dom/media/webcodecs/moz.build b/dom/media/webcodecs/moz.build index 9632ec59d496..887daa459b27 100644 --- a/dom/media/webcodecs/moz.build +++ b/dom/media/webcodecs/moz.build @@ -8,6 +8,7 @@ with Files("*"): BUG_COMPONENT = ("Core", "Audio/Video: Web Codecs") MOCHITEST_MANIFESTS += ["test/mochitest.ini"] +CRASHTEST_MANIFESTS += ["crashtest/crashtests.list"] # For mozilla/layers/ImageBridgeChild.h LOCAL_INCLUDES += [ diff --git a/tools/lint/eslint/eslint-plugin-mozilla/lib/environments/privileged.js b/tools/lint/eslint/eslint-plugin-mozilla/lib/environments/privileged.js index 185749156a67..4b70182573bb 100644 --- a/tools/lint/eslint/eslint-plugin-mozilla/lib/environments/privileged.js +++ b/tools/lint/eslint/eslint-plugin-mozilla/lib/environments/privileged.js @@ -36,7 +36,10 @@ module.exports = { AudioBuffer: false, AudioBufferSourceNode: false, AudioContext: false, + AudioDecoder: false, AudioDestinationNode: false, + AudioData: false, + AudioEncoder: false, AudioListener: false, AudioNode: false, AudioParam: false, @@ -162,6 +165,8 @@ module.exports = { DragEvent: false, DynamicsCompressorNode: false, Element: false, + EncodedAudioChunk: false, + EncodedVideoChunk: false, ErrorEvent: false, Event: false, EventSource: false, @@ -704,6 +709,10 @@ module.exports = { VTTCue: false, VTTRegion: false, ValidityState: false, + VideoColorSpace: false, + VideoDecoder: false, + VideoEncoder: false, + VideoFrame: false, VideoPlaybackQuality: false, VideoTrack: false, VideoTrackList: false,