blob: 12ea598ddb2116ab35fd114466c86b28954e2dd6 [file] [log] [blame]
# Copyright 2019 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("//testing/libfuzzer/fuzzer_test.gni")
import("//third_party/protobuf/proto_library.gni")
declare_args() {
seed_corpus_dir = "$target_gen_dir/binary_seed_corpus"
}
proto_library("compositor_frame_fuzzer_proto") {
sources = [
"compositor_frame_fuzzer.proto",
]
}
# Encodes text-format protobuf messages into binary-format protobuf
# messages in seed_corpus_dir.
#
# The messages must be of type RenderPass, as defined in the proto2 file
# compositor_frame_fuzzer.proto (these assumptions are all hardcoded into
# generate_renderpass_binary.py)
action_foreach("generate_seed_corpus") {
script = "generate_renderpass_binary.py"
pyproto_path = "$root_out_dir/pyproto"
input_dir = "text_format_seed_corpus"
sources = [
"$input_dir/1_quad_renderpass.asciipb",
"$input_dir/2_quad_renderpass.asciipb",
"$input_dir/nested_render_pass_draw_quads.asciipb",
"$input_dir/overlapping_quads_in_render_pass_draw_quad.asciipb",
"$input_dir/solid_color_tiled_background_with_2_quads_on_top.asciipb",
]
outputs = [
"$seed_corpus_dir/{{source_name_part}}.pb",
]
deps = [
":compositor_frame_fuzzer_proto",
"//third_party/protobuf:py_proto",
]
args = [
"-i",
"{{source}}",
"-d",
rebase_path(seed_corpus_dir, root_build_dir),
"-o",
"{{source_name_part}}.pb",
"-p",
rebase_path(pyproto_path, root_build_dir),
"-p",
rebase_path("$pyproto_path/components/viz/service/compositor_frame_fuzzer",
root_build_dir),
]
}
fuzzer_test("compositor_frame_fuzzer") {
sources = [
"compositor_frame_fuzzer.cc",
"compositor_frame_fuzzer_util.cc",
"compositor_frame_fuzzer_util.h",
"fuzzer_browser_process.cc",
"fuzzer_browser_process.h",
"fuzzer_software_display_provider.cc",
"fuzzer_software_display_provider.h",
]
deps = [
":compositor_frame_fuzzer_proto",
":generate_seed_corpus",
"//components/viz/service",
"//components/viz/test:test_support",
"//mojo/core/embedder",
"//third_party/libprotobuf-mutator",
]
seed_corpus = "$seed_corpus_dir"
seed_corpus_deps = [ ":generate_seed_corpus" ]
}