chromium/cc/BUILD.gn

# Copyright 2014 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/sanitizers/sanitizers.gni")
import("//gpu/vulkan/features.gni")
import("//skia/features.gni")
import("//third_party/jni_zero/jni_zero.gni")
import("//ui/gl/features.gni")

import("//cc/cc.gni")

if (is_android) {
  import("//build/config/android/rules.gni")
}

cc_component("cc") {
  sources = [
    "benchmarks/benchmark_instrumentation.cc",
    "benchmarks/benchmark_instrumentation.h",
    "benchmarks/invalidation_benchmark.cc",
    "benchmarks/invalidation_benchmark.h",
    "benchmarks/micro_benchmark.cc",
    "benchmarks/micro_benchmark.h",
    "benchmarks/micro_benchmark_controller.cc",
    "benchmarks/micro_benchmark_controller.h",
    "benchmarks/micro_benchmark_controller_impl.cc",
    "benchmarks/micro_benchmark_controller_impl.h",
    "benchmarks/micro_benchmark_impl.cc",
    "benchmarks/micro_benchmark_impl.h",
    "benchmarks/rasterize_and_record_benchmark.cc",
    "benchmarks/rasterize_and_record_benchmark.h",
    "benchmarks/rasterize_and_record_benchmark_impl.cc",
    "benchmarks/rasterize_and_record_benchmark_impl.h",
    "benchmarks/unittest_only_benchmark.cc",
    "benchmarks/unittest_only_benchmark.h",
    "benchmarks/unittest_only_benchmark_impl.cc",
    "benchmarks/unittest_only_benchmark_impl.h",
    "input/actively_scrolling_type.h",
    "input/browser_controls_offset_manager.cc",
    "input/browser_controls_offset_manager.h",
    "input/browser_controls_offset_manager_client.h",
    "input/browser_controls_offset_tags_info.h",
    "input/browser_controls_state.h",
    "input/compositor_input_interfaces.h",
    "input/hit_test_opaqueness.cc",
    "input/hit_test_opaqueness.h",
    "input/input_handler.cc",
    "input/input_handler.h",
    "input/layer_selection_bound.cc",
    "input/layer_selection_bound.h",
    "input/main_thread_scrolling_reason.cc",
    "input/main_thread_scrolling_reason.h",
    "input/overscroll_behavior.h",
    "input/page_scale_animation.cc",
    "input/page_scale_animation.h",
    "input/scroll_elasticity_helper.cc",
    "input/scroll_elasticity_helper.h",
    "input/scroll_snap_data.cc",
    "input/scroll_snap_data.h",
    "input/scroll_state.cc",
    "input/scroll_state.h",
    "input/scroll_state_data.cc",
    "input/scroll_state_data.h",
    "input/scroll_utils.cc",
    "input/scroll_utils.h",
    "input/scrollbar.h",
    "input/scrollbar_animation_controller.cc",
    "input/scrollbar_animation_controller.h",
    "input/scrollbar_controller.cc",
    "input/scrollbar_controller.h",
    "input/single_scrollbar_animation_controller_thinning.cc",
    "input/single_scrollbar_animation_controller_thinning.h",
    "input/snap_fling_controller.cc",
    "input/snap_fling_controller.h",
    "input/snap_fling_curve.cc",
    "input/snap_fling_curve.h",
    "input/snap_selection_strategy.cc",
    "input/snap_selection_strategy.h",
    "input/touch_action.h",
    "layers/append_quads_data.cc",
    "layers/append_quads_data.h",
    "layers/content_layer_client.h",
    "layers/deadline_policy.cc",
    "layers/deadline_policy.h",
    "layers/draw_mode.h",
    "layers/draw_properties.cc",
    "layers/draw_properties.h",
    "layers/effect_tree_layer_list_iterator.cc",
    "layers/effect_tree_layer_list_iterator.h",
    "layers/heads_up_display_layer.cc",
    "layers/heads_up_display_layer.h",
    "layers/heads_up_display_layer_impl.cc",
    "layers/heads_up_display_layer_impl.h",
    "layers/layer.cc",
    "layers/layer.h",
    "layers/layer_collections.h",
    "layers/layer_impl.cc",
    "layers/layer_impl.h",
    "layers/layer_list_iterator.cc",
    "layers/layer_list_iterator.h",
    "layers/mirror_layer.cc",
    "layers/mirror_layer.h",
    "layers/mirror_layer_impl.cc",
    "layers/mirror_layer_impl.h",
    "layers/nine_patch_generator.cc",
    "layers/nine_patch_generator.h",
    "layers/nine_patch_layer.cc",
    "layers/nine_patch_layer.h",
    "layers/nine_patch_layer_impl.cc",
    "layers/nine_patch_layer_impl.h",
    "layers/nine_patch_thumb_scrollbar_layer.cc",
    "layers/nine_patch_thumb_scrollbar_layer.h",
    "layers/nine_patch_thumb_scrollbar_layer_impl.cc",
    "layers/nine_patch_thumb_scrollbar_layer_impl.h",
    "layers/painted_scrollbar_layer.cc",
    "layers/painted_scrollbar_layer.h",
    "layers/painted_scrollbar_layer_impl.cc",
    "layers/painted_scrollbar_layer_impl.h",
    "layers/picture_layer.cc",
    "layers/picture_layer.h",
    "layers/picture_layer_impl.cc",
    "layers/picture_layer_impl.h",
    "layers/recording_source.cc",
    "layers/recording_source.h",
    "layers/render_surface_impl.cc",
    "layers/render_surface_impl.h",
    "layers/scroll_hit_test_rect.h",
    "layers/scrollbar_layer_base.cc",
    "layers/scrollbar_layer_base.h",
    "layers/scrollbar_layer_impl_base.cc",
    "layers/scrollbar_layer_impl_base.h",
    "layers/solid_color_layer.cc",
    "layers/solid_color_layer.h",
    "layers/solid_color_layer_impl.cc",
    "layers/solid_color_layer_impl.h",
    "layers/solid_color_scrollbar_layer.cc",
    "layers/solid_color_scrollbar_layer.h",
    "layers/solid_color_scrollbar_layer_impl.cc",
    "layers/solid_color_scrollbar_layer_impl.h",
    "layers/surface_layer.cc",
    "layers/surface_layer.h",
    "layers/surface_layer_impl.cc",
    "layers/surface_layer_impl.h",
    "layers/texture_layer.cc",
    "layers/texture_layer.h",
    "layers/texture_layer_client.h",
    "layers/texture_layer_impl.cc",
    "layers/texture_layer_impl.h",
    "layers/tile_display_layer_impl.cc",
    "layers/tile_display_layer_impl.h",
    "layers/tile_size_calculator.cc",
    "layers/tile_size_calculator.h",
    "layers/touch_action_region.cc",
    "layers/touch_action_region.h",
    "layers/ui_resource_layer.cc",
    "layers/ui_resource_layer.h",
    "layers/ui_resource_layer_impl.cc",
    "layers/ui_resource_layer_impl.h",
    "layers/video_frame_provider.h",
    "layers/video_frame_provider_client_impl.cc",
    "layers/video_frame_provider_client_impl.h",
    "layers/video_layer.cc",
    "layers/video_layer.h",
    "layers/video_layer_impl.cc",
    "layers/video_layer_impl.h",
    "layers/view_transition_content_layer.cc",
    "layers/view_transition_content_layer.h",
    "layers/view_transition_content_layer_impl.cc",
    "layers/view_transition_content_layer_impl.h",
    "layers/viewport.cc",
    "layers/viewport.h",
    "metrics/average_lag_tracker.cc",
    "metrics/average_lag_tracker.h",
    "metrics/average_lag_tracking_manager.cc",
    "metrics/average_lag_tracking_manager.h",
    "metrics/begin_main_frame_metrics.cc",
    "metrics/begin_main_frame_metrics.h",
    "metrics/compositor_frame_reporter.cc",
    "metrics/compositor_frame_reporter.h",
    "metrics/compositor_frame_reporting_controller.cc",
    "metrics/compositor_frame_reporting_controller.h",
    "metrics/compositor_timing_history.cc",
    "metrics/compositor_timing_history.h",
    "metrics/custom_metrics_recorder.cc",
    "metrics/custom_metrics_recorder.h",
    "metrics/dropped_frame_counter.cc",
    "metrics/dropped_frame_counter.h",
    "metrics/event_latency_tracing_recorder.cc",
    "metrics/event_latency_tracing_recorder.h",
    "metrics/event_latency_tracker.cc",
    "metrics/event_latency_tracker.h",
    "metrics/event_metrics.cc",
    "metrics/event_metrics.h",
    "metrics/events_metrics_manager.cc",
    "metrics/events_metrics_manager.h",
    "metrics/frame_info.cc",
    "metrics/frame_info.h",
    "metrics/frame_sequence_metrics.cc",
    "metrics/frame_sequence_metrics.h",
    "metrics/frame_sequence_tracker.cc",
    "metrics/frame_sequence_tracker.h",
    "metrics/frame_sequence_tracker_collection.cc",
    "metrics/frame_sequence_tracker_collection.h",
    "metrics/frame_sorter.cc",
    "metrics/frame_sorter.h",
    "metrics/latency_ukm_reporter.cc",
    "metrics/latency_ukm_reporter.h",
    "metrics/lcd_text_metrics_reporter.cc",
    "metrics/lcd_text_metrics_reporter.h",
    "metrics/predictor_jank_tracker.cc",
    "metrics/predictor_jank_tracker.h",
    "metrics/scroll_jank_dropped_frame_tracker.cc",
    "metrics/scroll_jank_dropped_frame_tracker.h",
    "metrics/scroll_jank_ukm_reporter.cc",
    "metrics/scroll_jank_ukm_reporter.h",
    "metrics/shared_metrics_buffer.h",
    "metrics/submit_info.h",
    "metrics/total_frame_counter.cc",
    "metrics/total_frame_counter.h",
    "metrics/ukm_manager.cc",
    "metrics/ukm_manager.h",
    "metrics/ukm_smoothness_data.cc",
    "metrics/ukm_smoothness_data.h",
    "metrics/video_playback_roughness_reporter.cc",
    "metrics/video_playback_roughness_reporter.h",
    "metrics/web_vital_metrics.cc",
    "metrics/web_vital_metrics.h",
    "raster/bitmap_raster_buffer_provider.cc",
    "raster/bitmap_raster_buffer_provider.h",
    "raster/categorized_worker_pool.cc",
    "raster/categorized_worker_pool.h",
    "raster/gpu_raster_buffer_provider.cc",
    "raster/gpu_raster_buffer_provider.h",
    "raster/lcd_text_disallowed_reason.cc",
    "raster/lcd_text_disallowed_reason.h",
    "raster/one_copy_raster_buffer_provider.cc",
    "raster/one_copy_raster_buffer_provider.h",
    "raster/paint_worklet_image_provider.cc",
    "raster/paint_worklet_image_provider.h",
    "raster/playback_image_provider.cc",
    "raster/playback_image_provider.h",
    "raster/raster_buffer.cc",
    "raster/raster_buffer.h",
    "raster/raster_buffer_provider.cc",
    "raster/raster_buffer_provider.h",
    "raster/raster_query_queue.cc",
    "raster/raster_query_queue.h",
    "raster/raster_source.cc",
    "raster/raster_source.h",
    "raster/scoped_grcontext_access.h",
    "raster/single_thread_task_graph_runner.cc",
    "raster/single_thread_task_graph_runner.h",
    "raster/staging_buffer_pool.cc",
    "raster/staging_buffer_pool.h",
    "raster/synchronous_task_graph_runner.cc",
    "raster/synchronous_task_graph_runner.h",
    "raster/task.cc",
    "raster/task.h",
    "raster/task_category.h",
    "raster/task_graph_runner.h",
    "raster/task_graph_work_queue.cc",
    "raster/task_graph_work_queue.h",
    "raster/tile_task.cc",
    "raster/tile_task.h",
    "raster/zero_copy_raster_buffer_provider.cc",
    "raster/zero_copy_raster_buffer_provider.h",
    "resources/cross_thread_shared_bitmap.cc",
    "resources/cross_thread_shared_bitmap.h",
    "resources/memory_history.cc",
    "resources/memory_history.h",
    "resources/resource_pool.cc",
    "resources/resource_pool.h",
    "resources/scoped_ui_resource.cc",
    "resources/scoped_ui_resource.h",
    "resources/shared_bitmap_id_registrar.cc",
    "resources/shared_bitmap_id_registrar.h",
    "resources/ui_resource_bitmap.cc",
    "resources/ui_resource_bitmap.h",
    "resources/ui_resource_client.h",
    "resources/ui_resource_manager.cc",
    "resources/ui_resource_manager.h",
    "resources/ui_resource_request.cc",
    "resources/ui_resource_request.h",
    "scheduler/begin_frame_tracker.cc",
    "scheduler/begin_frame_tracker.h",
    "scheduler/commit_earlyout_reason.h",
    "scheduler/draw_result.h",
    "scheduler/scheduler.cc",
    "scheduler/scheduler.h",
    "scheduler/scheduler_settings.cc",
    "scheduler/scheduler_settings.h",
    "scheduler/scheduler_state_machine.cc",
    "scheduler/scheduler_state_machine.h",
    "scheduler/video_frame_controller.h",
    "tiles/checker_image_tracker.cc",
    "tiles/checker_image_tracker.h",
    "tiles/decoded_image_tracker.cc",
    "tiles/decoded_image_tracker.h",
    "tiles/eviction_tile_priority_queue.cc",
    "tiles/eviction_tile_priority_queue.h",
    "tiles/frame_viewer_instrumentation.cc",
    "tiles/frame_viewer_instrumentation.h",
    "tiles/gpu_image_decode_cache.cc",
    "tiles/gpu_image_decode_cache.h",
    "tiles/image_controller.cc",
    "tiles/image_controller.h",
    "tiles/image_decode_cache.cc",
    "tiles/image_decode_cache.h",
    "tiles/image_decode_cache_utils.cc",
    "tiles/image_decode_cache_utils.h",
    "tiles/mipmap_util.cc",
    "tiles/mipmap_util.h",
    "tiles/picture_layer_tiling.cc",
    "tiles/picture_layer_tiling.h",
    "tiles/picture_layer_tiling_set.cc",
    "tiles/picture_layer_tiling_set.h",
    "tiles/prioritized_tile.cc",
    "tiles/prioritized_tile.h",
    "tiles/raster_dark_mode_filter.h",
    "tiles/raster_tile_priority_queue.cc",
    "tiles/raster_tile_priority_queue.h",
    "tiles/raster_tile_priority_queue_all.cc",
    "tiles/raster_tile_priority_queue_all.h",
    "tiles/raster_tile_priority_queue_required.cc",
    "tiles/raster_tile_priority_queue_required.h",
    "tiles/software_image_decode_cache.cc",
    "tiles/software_image_decode_cache.h",
    "tiles/software_image_decode_cache_utils.cc",
    "tiles/software_image_decode_cache_utils.h",
    "tiles/tile.cc",
    "tiles/tile.h",
    "tiles/tile_draw_info.cc",
    "tiles/tile_draw_info.h",
    "tiles/tile_index.h",
    "tiles/tile_manager.cc",
    "tiles/tile_manager.h",
    "tiles/tile_manager_settings.h",
    "tiles/tile_priority.cc",
    "tiles/tile_priority.h",
    "tiles/tile_task_manager.cc",
    "tiles/tile_task_manager.h",
    "tiles/tiles_with_resource_iterator.cc",
    "tiles/tiles_with_resource_iterator.h",
    "tiles/tiling_coverage_iterator.h",
    "tiles/tiling_internal.h",
    "tiles/tiling_set_coverage_iterator.h",
    "tiles/tiling_set_eviction_queue.cc",
    "tiles/tiling_set_eviction_queue.h",
    "tiles/tiling_set_raster_queue_all.cc",
    "tiles/tiling_set_raster_queue_all.h",
    "tiles/tiling_set_raster_queue_required.cc",
    "tiles/tiling_set_raster_queue_required.h",
    "trees/animated_paint_worklet_tracker.cc",
    "trees/animated_paint_worklet_tracker.h",
    "trees/animation_effect_timings.h",
    "trees/animation_options.h",
    "trees/browser_controls_params.cc",
    "trees/browser_controls_params.h",
    "trees/clip_node.cc",
    "trees/clip_node.h",
    "trees/commit_state.cc",
    "trees/commit_state.h",
    "trees/compositor_commit_data.cc",
    "trees/compositor_commit_data.h",
    "trees/compositor_mode.h",
    "trees/damage_reason.h",
    "trees/damage_tracker.cc",
    "trees/damage_tracker.h",
    "trees/debug_rect_history.cc",
    "trees/debug_rect_history.h",
    "trees/draw_property_utils.cc",
    "trees/draw_property_utils.h",
    "trees/effect_node.cc",
    "trees/effect_node.h",
    "trees/frame_rate_estimator.cc",
    "trees/frame_rate_estimator.h",
    "trees/image_animation_controller.cc",
    "trees/image_animation_controller.h",
    "trees/latency_info_swap_promise.cc",
    "trees/latency_info_swap_promise.h",
    "trees/latency_info_swap_promise_monitor.cc",
    "trees/latency_info_swap_promise_monitor.h",
    "trees/layer_context.h",
    "trees/layer_tree_frame_sink.cc",
    "trees/layer_tree_frame_sink.h",
    "trees/layer_tree_frame_sink_client.h",
    "trees/layer_tree_host.cc",
    "trees/layer_tree_host.h",
    "trees/layer_tree_host_client.cc",
    "trees/layer_tree_host_client.h",
    "trees/layer_tree_host_impl.cc",
    "trees/layer_tree_host_impl.h",
    "trees/layer_tree_host_single_thread_client.h",
    "trees/layer_tree_impl.cc",
    "trees/layer_tree_impl.h",
    "trees/layer_tree_mutator.cc",
    "trees/layer_tree_mutator.h",
    "trees/layer_tree_settings.cc",
    "trees/layer_tree_settings.h",
    "trees/managed_memory_policy.cc",
    "trees/managed_memory_policy.h",
    "trees/mobile_optimized_viewport_util.cc",
    "trees/mobile_optimized_viewport_util.h",
    "trees/mutator_host.h",
    "trees/mutator_host_client.h",
    "trees/occlusion.cc",
    "trees/occlusion.h",
    "trees/occlusion_tracker.cc",
    "trees/occlusion_tracker.h",
    "trees/paint_holding_commit_trigger.cc",
    "trees/paint_holding_commit_trigger.h",
    "trees/paint_holding_reason.h",
    "trees/presentation_time_callback_buffer.cc",
    "trees/presentation_time_callback_buffer.h",
    "trees/property_animation_state.cc",
    "trees/property_animation_state.h",
    "trees/property_ids.h",
    "trees/property_tree.cc",
    "trees/property_tree.h",
    "trees/property_tree_builder.cc",
    "trees/property_tree_builder.h",
    "trees/proxy.h",
    "trees/proxy_common.cc",
    "trees/proxy_common.h",
    "trees/proxy_impl.cc",
    "trees/proxy_impl.h",
    "trees/proxy_main.cc",
    "trees/proxy_main.h",
    "trees/raster_capabilities.cc",
    "trees/raster_capabilities.h",
    "trees/raster_context_provider_wrapper.cc",
    "trees/raster_context_provider_wrapper.h",
    "trees/render_frame_metadata.cc",
    "trees/render_frame_metadata.h",
    "trees/render_frame_metadata_observer.h",
    "trees/scoped_abort_remaining_swap_promises.h",
    "trees/scroll_node.cc",
    "trees/scroll_node.h",
    "trees/single_thread_proxy.cc",
    "trees/single_thread_proxy.h",
    "trees/sticky_position_constraint.cc",
    "trees/sticky_position_constraint.h",
    "trees/swap_promise.h",
    "trees/swap_promise_manager.cc",
    "trees/swap_promise_manager.h",
    "trees/target_property.cc",
    "trees/target_property.h",
    "trees/task_runner_provider.cc",
    "trees/task_runner_provider.h",
    "trees/throttle_decider.cc",
    "trees/throttle_decider.h",
    "trees/transform_node.cc",
    "trees/transform_node.h",
    "trees/tree_synchronizer.cc",
    "trees/tree_synchronizer.h",
    "trees/viewport_layers.cc",
    "trees/viewport_layers.h",
    "trees/viewport_property_ids.h",
    "view_transition/view_transition_request.cc",
    "view_transition/view_transition_request.h",
  ]

  public_deps = [
    "//cc/base",
    "//cc/mojom:layer_type",
    "//cc/paint",
    "//components/viz/common",
    "//skia",
  ]
  deps = [
    "//base",
    "//build:chromeos_buildflags",
    "//components/miracle_parameter/common",
    "//components/viz/client",
    "//device/base/synchronization",
    "//gpu",
    "//gpu/command_buffer/client:gles2_interface",
    "//gpu/command_buffer/client:raster_interface",
    "//gpu/ipc/client",
    "//gpu/skia_bindings:skia_bindings",
    "//gpu/vulkan:buildflags",
    "//media",  # For VideoLayerImpl.
    "//mojo/public/cpp/bindings:struct_traits",
    "//services/metrics/public/cpp:ukm_builders",
    "//services/metrics/public/mojom",
    "//services/tracing/public/cpp:cpp",
    "//skia:skcms",
    "//third_party/blink/public/common/tokens:tokens_headers",
    "//ui/base:features",
    "//ui/events:events_base",
    "//ui/gfx",
    "//ui/gfx/animation/keyframe",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//ui/latency",
  ]

  if (is_android) {
    sources += [
      "input/android/offset_tag_android.cc",
      "input/android/offset_tag_android.h",
    ]

    deps += [ ":cc_jni_headers" ]
  }

  defines = [ "CC_IMPLEMENTATION=1" ]
}

cc_test_static_library("test_support") {
  testonly = true
  sources = [
    "test/animation_test_common.cc",
    "test/animation_test_common.h",
    "test/animation_timelines_test_common.cc",
    "test/animation_timelines_test_common.h",
    "test/fake_compositor_frame_reporting_controller.cc",
    "test/fake_compositor_frame_reporting_controller.h",
    "test/fake_content_layer_client.cc",
    "test/fake_content_layer_client.h",
    "test/fake_frame_info.cc",
    "test/fake_frame_info.h",
    "test/fake_impl_task_runner_provider.h",
    "test/fake_layer_tree_frame_sink.cc",
    "test/fake_layer_tree_frame_sink.h",
    "test/fake_layer_tree_frame_sink_client.cc",
    "test/fake_layer_tree_frame_sink_client.h",
    "test/fake_layer_tree_host.cc",
    "test/fake_layer_tree_host.h",
    "test/fake_layer_tree_host_client.cc",
    "test/fake_layer_tree_host_client.h",
    "test/fake_layer_tree_host_impl.cc",
    "test/fake_layer_tree_host_impl.h",
    "test/fake_layer_tree_host_impl_client.cc",
    "test/fake_layer_tree_host_impl_client.h",
    "test/fake_mask_layer_impl.cc",
    "test/fake_mask_layer_impl.h",
    "test/fake_output_surface_client.cc",
    "test/fake_output_surface_client.h",
    "test/fake_paint_image_generator.cc",
    "test/fake_paint_image_generator.h",
    "test/fake_picture_layer.cc",
    "test/fake_picture_layer.h",
    "test/fake_picture_layer_impl.cc",
    "test/fake_picture_layer_impl.h",
    "test/fake_picture_layer_tiling_client.cc",
    "test/fake_picture_layer_tiling_client.h",
    "test/fake_proxy.cc",
    "test/fake_proxy.h",
    "test/fake_raster_buffer_provider.cc",
    "test/fake_raster_buffer_provider.h",
    "test/fake_raster_query_queue.cc",
    "test/fake_raster_query_queue.h",
    "test/fake_raster_source.cc",
    "test/fake_raster_source.h",
    "test/fake_recording_source.h",
    "test/fake_rendering_stats_instrumentation.h",
    "test/fake_scoped_ui_resource.cc",
    "test/fake_scoped_ui_resource.h",
    "test/fake_scrollbar.cc",
    "test/fake_scrollbar.h",
    "test/fake_scrollbar_layer.h",
    "test/fake_tile_manager.cc",
    "test/fake_tile_manager.h",
    "test/fake_tile_manager_client.cc",
    "test/fake_tile_manager_client.h",
    "test/fake_tile_task_manager.cc",
    "test/fake_tile_task_manager.h",
    "test/fake_ui_resource_layer_tree_host_impl.cc",
    "test/fake_ui_resource_layer_tree_host_impl.h",
    "test/fake_video_frame_provider.cc",
    "test/fake_video_frame_provider.h",
    "test/layer_test_common.cc",
    "test/layer_test_common.h",
    "test/layer_tree_impl_test_base.cc",
    "test/layer_tree_impl_test_base.h",
    "test/layer_tree_json_parser.cc",
    "test/layer_tree_json_parser.h",
    "test/layer_tree_pixel_resource_test.cc",
    "test/layer_tree_pixel_resource_test.h",
    "test/layer_tree_pixel_test.cc",
    "test/layer_tree_pixel_test.h",
    "test/layer_tree_test.cc",
    "test/layer_tree_test.h",
    "test/lottie_test_data.cc",
    "test/lottie_test_data.h",
    "test/mock_latency_info_swap_promise_monitor.cc",
    "test/mock_latency_info_swap_promise_monitor.h",
    "test/mock_layer_tree_mutator.cc",
    "test/mock_layer_tree_mutator.h",
    "test/paint_image_matchers.h",
    "test/paint_op_helper.cc",
    "test/paint_op_helper.h",
    "test/paint_op_matchers.h",
    "test/pixel_comparator.cc",
    "test/pixel_comparator.h",
    "test/pixel_test.cc",
    "test/pixel_test.h",
    "test/pixel_test_output_surface.cc",
    "test/pixel_test_output_surface.h",
    "test/pixel_test_utils.cc",
    "test/pixel_test_utils.h",
    "test/property_tree_test_utils.cc",
    "test/property_tree_test_utils.h",
    "test/push_properties_counting_layer.cc",
    "test/push_properties_counting_layer.h",
    "test/push_properties_counting_layer_impl.cc",
    "test/push_properties_counting_layer_impl.h",
    "test/render_pass_test_utils.cc",
    "test/render_pass_test_utils.h",
    "test/resource_provider_test_utils.cc",
    "test/resource_provider_test_utils.h",
    "test/scheduler_test_common.cc",
    "test/scheduler_test_common.h",
    "test/skia_common.cc",
    "test/skia_common.h",
    "test/solid_color_content_layer_client.cc",
    "test/solid_color_content_layer_client.h",
    "test/stub_decode_cache.cc",
    "test/stub_decode_cache.h",
    "test/stub_input_handler_client.cc",
    "test/stub_input_handler_client.h",
    "test/stub_layer_tree_host_client.cc",
    "test/stub_layer_tree_host_client.h",
    "test/stub_layer_tree_host_single_thread_client.cc",
    "test/stub_layer_tree_host_single_thread_client.h",
    "test/task_graph_runner_test_template.cc",
    "test/task_graph_runner_test_template.h",
    "test/test_hooks.cc",
    "test/test_hooks.h",
    "test/test_layer_tree_frame_sink.cc",
    "test/test_layer_tree_frame_sink.h",
    "test/test_layer_tree_host_base.cc",
    "test/test_layer_tree_host_base.h",
    "test/test_occlusion_tracker.h",
    "test/test_options_provider.cc",
    "test/test_options_provider.h",
    "test/test_paint_worklet_input.cc",
    "test/test_paint_worklet_input.h",
    "test/test_paint_worklet_layer_painter.cc",
    "test/test_paint_worklet_layer_painter.h",
    "test/test_skcanvas.cc",
    "test/test_skcanvas.h",
    "test/test_task_graph_runner.cc",
    "test/test_task_graph_runner.h",
    "test/test_tile_priorities.cc",
    "test/test_tile_priorities.h",
    "test/test_tile_task_runner.cc",
    "test/test_tile_task_runner.h",
    "test/test_types.cc",
    "test/test_types.h",
    "test/test_ukm_recorder_factory.cc",
    "test/test_ukm_recorder_factory.h",
    "test/transfer_cache_test_helper.cc",
    "test/transfer_cache_test_helper.h",
  ]

  public_deps = [
    ":cc",
    "//cc/animation",
    "//gpu:test_support",
    "//testing/gmock",
  ]
  deps = [
    "//base",
    "//base/test:test_support",
    "//cc/paint",
    "//components/ukm",
    "//components/ukm:test_support",
    "//components/viz/client",
    "//components/viz/common",
    "//components/viz/service",
    "//components/viz/test:test_support",
    "//gpu/command_buffer/client:gles2_implementation",
    "//gpu/command_buffer/client:raster",
    "//gpu/command_buffer/common",
    "//gpu/ipc:gl_in_process_context",
    "//gpu/ipc/service",
    "//gpu/skia_bindings",
    "//media",
    "//services/viz/privileged/mojom",
    "//skia",
    "//testing/gtest",
    "//ui/base:features",
    "//ui/gfx",
    "//ui/gfx:test_support",
    "//ui/gfx/animation/keyframe",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//ui/gl:test_support",
    "//ui/latency",
  ]
  if (enable_vulkan) {
    deps += [ "//gpu/vulkan/init" ]
  }
  if (!is_android) {
    data_deps = [ "//third_party/angle:includes" ]
  }
  if (skia_use_dawn) {
    deps += [
      "//third_party/dawn/src/dawn:proc",
      "//third_party/dawn/src/dawn/native",
    ]
  }
}

if (is_ios) {
  bundle_data("unit_tests_bundle_data") {
    testonly = true
    sources = [
      "//testing/buildbot/filters/ios.cc_unittests.filter",
      "test/data/lottie/animation_with_2_text_nodes.json",
    ]
    outputs = [ "{{bundle_resources_dir}}/" +
                "{{source_root_relative_dir}}/{{source_file_part}}" ]
  }
}

cc_test("cc_unittests") {
  use_xvfb = use_xvfb_in_this_config

  sources = [
    "base/delayed_unique_notifier_unittest.cc",
    "base/histograms_unittest.cc",
    "base/index_rect_unittest.cc",
    "base/list_container_unittest.cc",
    "base/math_util_unittest.cc",
    "base/region_unittest.cc",
    "base/rolling_time_delta_history_unittest.cc",
    "base/rtree_unittest.cc",
    "base/simple_enclosed_region_unittest.cc",
    "base/spiral_iterator_unittest.cc",
    "base/tiling_data_unittest.cc",
    "base/unique_notifier_unittest.cc",
    "benchmarks/micro_benchmark_controller_unittest.cc",
    "debug/rendering_stats_unittest.cc",
    "input/browser_controls_offset_manager_unittest.cc",
    "input/hit_test_opaqueness_unittest.cc",
    "input/main_thread_scrolling_reason_unittest.cc",
    "input/scroll_snap_data_unittest.cc",
    "input/scroll_state_unittest.cc",
    "input/scrollbar_animation_controller_unittest.cc",
    "input/single_scrollbar_animation_controller_thinning_unittest.cc",
    "input/snap_fling_controller_unittest.cc",
    "input/snap_fling_curve_unittest.cc",
    "layers/effect_tree_layer_list_iterator_unittest.cc",
    "layers/heads_up_display_layer_impl_unittest.cc",
    "layers/heads_up_display_unittest.cc",
    "layers/layer_impl_unittest.cc",
    "layers/layer_list_iterator_unittest.cc",
    "layers/layer_unittest.cc",
    "layers/mirror_layer_unittest.cc",
    "layers/nine_patch_generator_unittest.cc",
    "layers/nine_patch_layer_impl_unittest.cc",
    "layers/nine_patch_layer_unittest.cc",
    "layers/nine_patch_thumb_scrollbar_layer_unittest.cc",
    "layers/painted_scrollbar_layer_impl_unittest.cc",
    "layers/painted_scrollbar_layer_unittest.cc",
    "layers/picture_layer_impl_unittest.cc",
    "layers/picture_layer_unittest.cc",
    "layers/recording_source_unittest.cc",
    "layers/render_surface_impl_unittest.cc",
    "layers/render_surface_unittest.cc",
    "layers/scrollbar_layer_unittest.cc",
    "layers/solid_color_layer_impl_unittest.cc",
    "layers/solid_color_scrollbar_layer_impl_unittest.cc",
    "layers/surface_layer_impl_unittest.cc",
    "layers/surface_layer_unittest.cc",
    "layers/texture_layer_impl_unittest.cc",
    "layers/texture_layer_unittest.cc",
    "layers/touch_action_region_unittest.cc",
    "layers/ui_resource_layer_impl_unittest.cc",
    "layers/ui_resource_layer_unittest.cc",
    "layers/video_frame_provider_client_impl_unittest.cc",
    "layers/video_layer_impl_unittest.cc",
    "layers/viewport_unittest.cc",
    "metrics/average_lag_tracker_unittest.cc",
    "metrics/average_lag_tracking_manager_unittest.cc",
    "metrics/compositor_frame_reporter_unittest.cc",
    "metrics/compositor_frame_reporting_controller_unittest.cc",
    "metrics/compositor_timing_history_unittest.cc",
    "metrics/dropped_frame_counter_unittest.cc",
    "metrics/event_metrics_unittest.cc",
    "metrics/events_metrics_manager_unittest.cc",
    "metrics/frame_info_unittest.cc",
    "metrics/frame_sequence_metrics_unittest.cc",
    "metrics/frame_sequence_tracker_unittest.cc",
    "metrics/frame_sorter_unittest.cc",
    "metrics/predictor_jank_tracker_unittest.cc",
    "metrics/scroll_jank_dropped_frame_tracker_unittest.cc",
    "metrics/scroll_jank_ukm_reporter_unittest.cc",
    "metrics/total_frame_counter_unittest.cc",
    "metrics/ukm_manager_unittest.cc",
    "metrics/video_playback_roughness_reporter_unittest.cc",
    "mojo_embedder/async_layer_tree_frame_sink_unittest.cc",
    "paint/clear_for_opaque_raster_unittest.cc",
    "paint/discardable_image_map_unittest.cc",
    "paint/display_item_list_unittest.cc",
    "paint/filter_operations_unittest.cc",
    "paint/image_transfer_cache_entry_unittest.cc",
    "paint/oop_pixeltest.cc",
    "paint/paint_cache_unittest.cc",
    "paint/paint_filter_unittest.cc",
    "paint/paint_image_unittest.cc",
    "paint/paint_op_buffer_unittest.cc",
    "paint/paint_op_helper_unittest.cc",
    "paint/paint_op_writer_reader_unittest.cc",
    "paint/paint_shader_unittest.cc",
    "paint/paint_worklet_input_unittest.cc",
    "paint/scoped_raster_flags_unittest.cc",
    "paint/skia_paint_canvas_unittest.cc",
    "paint/solid_color_analyzer_unittest.cc",
    "paint/transfer_cache_unittest.cc",
    "raster/categorized_worker_pool_unittest.cc",
    "raster/playback_image_provider_unittest.cc",
    "raster/raster_buffer_provider_unittest.cc",
    "raster/raster_source_unittest.cc",
    "raster/single_thread_task_graph_runner_unittest.cc",
    "raster/staging_buffer_pool_unittest.cc",
    "raster/synchronous_task_graph_runner_unittest.cc",
    "raster/task_graph_work_queue_unittest.cc",
    "resources/resource_pool_unittest.cc",
    "scheduler/scheduler_state_machine_unittest.cc",
    "scheduler/scheduler_unittest.cc",
    "slim/delayer_scheduler_unittest.cc",
    "slim/slim_layer_tree_compositor_frame_unittest.cc",
    "slim/slim_layer_tree_unittest.cc",
    "slim/slim_layer_unittest.cc",
    "slim/test_frame_sink_impl.cc",
    "slim/test_frame_sink_impl.h",
    "slim/test_layer_tree_client.cc",
    "slim/test_layer_tree_client.h",
    "slim/test_layer_tree_impl.cc",
    "slim/test_layer_tree_impl.h",
    "tiles/checker_image_tracker_unittest.cc",
    "tiles/decoded_image_tracker_unittest.cc",
    "tiles/gpu_image_decode_cache_unittest.cc",
    "tiles/image_controller_unittest.cc",
    "tiles/mipmap_util_unittest.cc",
    "tiles/picture_layer_tiling_set_unittest.cc",
    "tiles/picture_layer_tiling_unittest.cc",
    "tiles/software_image_decode_cache_unittest.cc",
    "tiles/software_image_decode_cache_unittest_combinations.cc",
    "tiles/tile_manager_unittest.cc",
    "tiles/tile_priority_unittest.cc",
    "trees/damage_tracker_unittest.cc",
    "trees/draw_properties_unittest.cc",
    "trees/frame_rate_estimator_unittest.cc",
    "trees/image_animation_controller_unittest.cc",
    "trees/layer_tree_frame_sink_unittest.cc",
    "trees/layer_tree_host_impl_unittest.cc",
    "trees/layer_tree_host_pixeltest_blending.cc",
    "trees/layer_tree_host_pixeltest_filters.cc",
    "trees/layer_tree_host_pixeltest_masks.cc",
    "trees/layer_tree_host_pixeltest_mirror.cc",
    "trees/layer_tree_host_pixeltest_readback.cc",
    "trees/layer_tree_host_pixeltest_scrollbars.cc",
    "trees/layer_tree_host_pixeltest_synchronous.cc",
    "trees/layer_tree_host_pixeltest_tiles.cc",
    "trees/layer_tree_host_unittest.cc",
    "trees/layer_tree_host_unittest_animation.cc",
    "trees/layer_tree_host_unittest_capture.cc",
    "trees/layer_tree_host_unittest_capture_content.cc",
    "trees/layer_tree_host_unittest_checkerimaging.cc",
    "trees/layer_tree_host_unittest_context.cc",
    "trees/layer_tree_host_unittest_copyrequest.cc",
    "trees/layer_tree_host_unittest_damage.cc",
    "trees/layer_tree_host_unittest_masks.cc",
    "trees/layer_tree_host_unittest_occlusion.cc",
    "trees/layer_tree_host_unittest_picture.cc",
    "trees/layer_tree_host_unittest_proxy.cc",
    "trees/layer_tree_host_unittest_record_gpu_histogram.cc",
    "trees/layer_tree_host_unittest_scroll.cc",
    "trees/layer_tree_host_unittest_video.cc",
    "trees/layer_tree_impl_unittest.cc",
    "trees/occlusion_tracker_unittest.cc",
    "trees/occlusion_unittest.cc",
    "trees/presentation_time_callback_buffer_unittest.cc",
    "trees/property_tree_builder_unittest.cc",
    "trees/property_tree_unittest.cc",
    "trees/swap_promise_manager_unittest.cc",
    "trees/throttle_decider_unittest.cc",
    "trees/tree_synchronizer_unittest.cc",
    "view_transition/view_transition_request_unittest.cc",

    # Animation test files.
    "animation/animation_host_unittest.cc",
    "animation/animation_timeline_unittest.cc",
    "animation/animation_unittest.cc",
    "animation/element_animations_unittest.cc",
    "animation/filter_animation_curve_unittest.cc",
    "animation/keyframe_model_unittest.cc",
    "animation/scroll_offset_animation_curve_unittest.cc",
    "animation/scroll_timeline_unittest.cc",
    "animation/worklet_animation_unittest.cc",

    # Setup.
    "test/cc_test_suite.cc",
    "test/cc_test_suite.h",
    "test/run_all_unittests.cc",
  ]

  if (skia_support_skottie) {
    sources += [
      "paint/skottie_mru_resource_provider_unittest.cc",
      "paint/skottie_resource_metadata_unittest.cc",
      "paint/skottie_serialization_history_unittest.cc",
      "paint/skottie_text_property_value_unittest.cc",
      "paint/skottie_transfer_cache_entry_unittest.cc",
      "paint/skottie_wrapper_unittest.cc",
    ]
  }

  deps = [
    ":cc",
    ":test_support",
    "//base/test:test_support",
    "//build:chromeos_buildflags",
    "//cc/mojo_embedder",
    "//cc/paint",
    "//cc/slim",
    "//components/ukm:test_support",
    "//components/viz/client",
    "//components/viz/common",
    "//components/viz/service",
    "//components/viz/test:test_support",
    "//gpu",
    "//gpu:test_support",
    "//gpu/command_buffer/client:gles2_implementation",
    "//gpu/command_buffer/client:gles2_interface",
    "//gpu/command_buffer/client:raster",
    "//gpu/command_buffer/client:raster_interface",
    "//gpu/ipc:gl_in_process_context",
    "//gpu/skia_bindings",
    "//media",
    "//mojo/core/embedder",
    "//mojo/public/cpp/bindings",
    "//skia",
    "//skia:buildflags",
    "//skia:skcms",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/events:events_base",
    "//ui/gfx",
    "//ui/gfx:test_support",
    "//ui/gfx/animation/keyframe",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//ui/gl:test_support",
  ]

  data = [ "//components/test/data/viz/" ]
  data_deps = [
    "//testing/buildbot/filters:cc_unittests_filters",
    "//third_party/angle:includes",
  ]

  if (is_android && enable_chrome_android_internal) {
    data_deps += [ "//clank/build/bot/filters:cc_unittests_filters" ]
  }

  if (skia_support_skottie) {
    data += [ "test/data/" ]
  }

  if (is_fuchsia) {
    # TODO(crbug.com/42050042): Some of these tests use SwiftShader,
    # which requires ambient VMEX.
    test_runner_shard = "//build/config/fuchsia/test/elf_test_ambient_exec_runner.shard.test-cml"

    additional_manifest_fragments = [
      "//build/config/fuchsia/test/fonts.shard.test-cml",

      # TODO(crbug.com/40055105): Investigate removing the requirement
      # for VmexResource.
      "//build/config/fuchsia/test/mark_vmo_executable.shard.test-cml",
      "//third_party/fuchsia-sdk/sdk/pkg/vulkan/client.shard.cml",
    ]
  }

  if (enable_vulkan) {
    deps += [
      "//gpu/vulkan:test_support",
      "//gpu/vulkan/init",
    ]
  }

  if (is_ios) {
    public_deps = [
      ":unit_tests_bundle_data",
      "//components/test:viz_test_bundle_data",
    ]
  }
}

cc_test("cc_perftests") {
  sources = [
    "animation/animation_host_perftest.cc",
    "base/rtree_perftest.cc",
    "layers/layer_perftest.cc",
    "layers/picture_layer_impl_perftest.cc",
    "paint/paint_op_perftest.cc",
    "raster/raster_buffer_provider_perftest.cc",
    "raster/task_graph_runner_perftest.cc",
    "test/cc_test_suite.cc",
    "test/cc_test_suite.h",
    "test/run_all_perftests.cc",
    "tiles/gpu_image_decode_cache_perftest.cc",
    "tiles/software_image_decode_cache_perftest.cc",
    "tiles/tile_manager_perftest.cc",
    "trees/draw_property_utils_perftest.cc",
    "trees/layer_tree_host_perftest.cc",
  ]

  deps = [
    ":cc",
    ":test_support",
    "//base",
    "//base/test:test_support",
    "//cc/paint",
    "//components/viz/client",
    "//components/viz/common",
    "//components/viz/test:test_support",
    "//gpu",
    "//gpu:test_support",
    "//gpu/command_buffer/client:gles2_implementation",
    "//gpu/command_buffer/client:raster",
    "//gpu/command_buffer/client:raster_interface",
    "//gpu/ipc:gl_in_process_context",
    "//gpu/ipc/common",
    "//media",
    "//mojo/core/embedder",
    "//mojo/public/cpp/bindings",
    "//services/viz/public/mojom",
    "//skia",
    "//skia:test_fonts",
    "//testing/gmock",
    "//testing/gtest",
    "//testing/perf",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//ui/gl:test_support",
  ]

  # This target should not require the Chrome executable to run.
  assert_no_deps = [ "//chrome" ]

  data = [ "//components/test/data/viz/" ]

  data_deps = [
    # Needed for isolate script to execute.
    "//testing:run_perf_test",
  ]
}

if (is_android) {
  java_cpp_enum("cc_android_java_enums_srcjar") {
    sources = [ "//cc/input/browser_controls_state.h" ]
  }

  generate_jni("cc_jni_headers") {
    sources = [
      "input/android/java/src/org/chromium/cc/input/BrowserControlsOffsetTagsInfo.java",
      "input/android/java/src/org/chromium/cc/input/OffsetTag.java",
    ]
  }

  android_library("cc_java") {
    # Right now, this only includes the Java switches. But if we need more Java
    # files, they should be added here as necessary.
    srcjar_deps = [
      ":cc_android_java_enums_srcjar",
      ":cc_jni_headers",
    ]

    sources = [
      "input/android/java/src/org/chromium/cc/input/BrowserControlsOffsetTagsInfo.java",
      "input/android/java/src/org/chromium/cc/input/OffsetTag.java",
    ]

    deps = [
      "//base:base_java",
      "//third_party/android_deps:com_google_errorprone_error_prone_annotations_java",
      "//third_party/androidx:androidx_annotation_annotation_java",
      "//third_party/jni_zero:jni_zero_java",
    ]
  }
}