123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- # Copyright 2014 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- import("//media/media_options.gni")
- import("//testing/libfuzzer/fuzzer_test.gni")
- source_set("run_all_unittests") {
- testonly = true
- sources = [ "run_all_unittests.cc" ]
- configs += [ "//media:media_config" ]
- deps = [
- "//base",
- "//base/test:test_support",
- "//media:test_support",
- "//mojo/core/embedder",
- ]
- if (is_android) {
- deps += [ "//ui/gl" ]
- }
- }
- source_set("pipeline_integration_test_base") {
- testonly = true
- if (media_use_ffmpeg) {
- sources = [
- "fake_encrypted_media.cc",
- "fake_encrypted_media.h",
- "pipeline_integration_test_base.cc",
- "pipeline_integration_test_base.h",
- "test_media_source.cc",
- "test_media_source.h",
- ]
- configs += [ "//media:media_config" ]
- deps = [
- "//base",
- "//base/test:test_support",
- "//media:media_buildflags",
- "//media:test_support",
- "//testing/gmock",
- "//testing/gtest",
- "//url",
- ]
- }
- }
- source_set("pipeline_integration_tests") {
- testonly = true
- # Even if FFmpeg is enabled on Android we don't want these.
- # TODO(watk): Refactor tests that could be made to run on Android. See
- # http://crbug.com/570762
- if (media_use_ffmpeg && !is_android) {
- sources = [ "pipeline_integration_test.cc" ]
- deps = [
- ":pipeline_integration_test_base",
- "//base",
- "//base/test:test_support",
- "//media:media_buildflags",
- "//media:test_support",
- "//media/mojo/clients",
- # Needed for the opus_config
- "//third_party/opus",
- "//url",
- # TODO(dalecurtis): Required since the gmock header is included in the
- # header for pipeline_integration_test_base.h. This should be moved
- # into the .cc file to avoid the extra dependency here.
- "//testing/gmock",
- ]
- }
- }
- source_set("pipeline_integration_perftests") {
- testonly = true
- if (media_use_ffmpeg) {
- sources = [ "pipeline_integration_perftest.cc" ]
- deps = [
- ":pipeline_integration_test_base",
- "//media:test_support",
- "//testing/gtest",
- "//testing/perf",
- # TODO(dalecurtis): Required since the gmock header is included in the
- # header for pipeline_integration_test_base.h. This should be moved into
- # the .cc file to avoid the extra dependency here.
- "//testing/gmock",
- ]
- }
- }
- # Keep these aligned with FuzzerVariant in pipeline_integration_fuzzertest.c
- pipeline_integration_fuzzer_variants = [
- "SRC", # A SRC= version (not MSE) pipeline fuzzer test
- # MSE pipeline fuzzer test variants. Note, while it would be nice to have one
- # generic MSE fuzzer, we use distinct fuzzers corresponding 1:1 to a set of
- # mimetype+codec strings for now because:
- # a) the SourceBuffer implementation must be constructed to expect a
- # particular bytestream type and (set of) codec(s); it does not
- # auto-detect those from the appended media, and
- # b) maintaining the association of a (mutated) corpus item with the same MSE
- # SourceBuffer configuration requires associating that item with the same
- # mimetype+codec string. The benefits are simpler fuzzers and the ability
- # to slice per-fuzzer coverage stats. The costs include more fuzzers, risk
- # of new bytestream types or codec fuzzing gaps, and more potential
- # duplicate bugs from different fuzzers for common issues exposed across
- # mimetype+codec string variants.
- "WEBM_OPUS",
- "WEBM_VORBIS",
- "WEBM_VP8",
- "WEBM_VP9",
- "WEBM_OPUS_VP9",
- "MP4_FLAC",
- "MP4_OPUS",
- "MP3",
- # See below for additional variants depending on build configuration.
- ]
- if (enable_av1_decoder) {
- pipeline_integration_fuzzer_variants += [ "MP4_AV1" ]
- }
- if (proprietary_codecs) {
- pipeline_integration_fuzzer_variants += [
- "ADTS",
- "MP4_AACLC",
- "MP4_AACSBR",
- # Though neither StreamParserFactory, MP4StreamParser, nor
- # SourceBufferState::Init differentiate kinds of AVC, we use "AVC1" here to
- # retain corpus associated with this fuzzer target name.
- "MP4_AVC1",
- "MP4_AACLC_AVC",
- ]
- if (enable_mse_mpeg2ts_stream_parser) {
- pipeline_integration_fuzzer_variants += [
- "MP2T_AACLC",
- "MP2T_AACSBR",
- "MP2T_AVC",
- "MP2T_MP3",
- "MP2T_AACLC_AVC",
- ]
- }
- }
- foreach(variant, pipeline_integration_fuzzer_variants) {
- if (variant == "SRC") {
- test_name = "media_pipeline_integration_fuzzer"
- } else {
- test_name = "mediasource_${variant}_pipeline_integration_fuzzer"
- }
- fuzzer_test(test_name) {
- sources = [ "pipeline_integration_fuzzertest.cc" ]
- deps = [
- ":pipeline_integration_test_base",
- "//base",
- "//base/test:test_support",
- "//media",
- # TODO(dalecurtis): Required since the gmock header is included in the
- # header for pipeline_integration_test_base.h. This should be
- # moved into the .cc file to avoid the extra dependency here.
- "//testing/gmock",
- # TODO(https://crbug.com/1039559): Required for inclusion of
- # gtest-internal-inl.h.
- "//testing/gtest",
- "//ui/gfx:test_support",
- ]
- defines = [ "PIPELINE_FUZZER_VARIANT=${variant}" ]
- seed_corpus = "//media/test/data/"
- }
- }
|