# Copyright 2026 The Chromium Authors
# 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")

source_set("readaloud") {
  public = [
    "audio_renderer/read_aloud_audio_renderer.h",
    "audio_segment_queue.h",
    "chunking/text_chunker.h",
    "decoded_audio_segment.h",
    "decoder/opus_decoder_helper.h",
    "decoder/read_aloud_decoder_sequencer.h",
    "prefetch/prefetch_manager.h",
    "prefetch/prefetch_mode_scheduler.h",
    "read_aloud_playback_controller.h",
  ]
  sources = [
    "audio_renderer/read_aloud_audio_renderer.cc",
    "audio_segment_queue.cc",
    "chunking/text_chunker.cc",
    "decoded_audio_segment.cc",
    "decoder/opus_decoder_helper.cc",
    "decoder/read_aloud_decoder_sequencer.cc",
    "prefetch/prefetch_manager.cc",
    "prefetch/prefetch_mode_scheduler.cc",
    "read_aloud_playback_controller.cc",
  ]

  deps = [ "//media:media_buildflags" ]

  public_deps = [
    "//base",
    "//base:i18n",
    "//chrome/common:mojo_bindings",
    "//chrome/common:readaloud_constants",
    "//media",
    "//media/mojo/mojom",
    "//mojo/public/cpp/bindings",
  ]
  if (media_use_ffmpeg) {
    deps += [
      "//third_party/ffmpeg",
      "//third_party/ffmpeg:ffmpeg_features",
    ]
  }
}

source_set("unit_tests") {
  testonly = true

  sources = [
    "audio_renderer/read_aloud_audio_renderer_unittest.cc",
    "audio_segment_queue_unittest.cc",
    "chunking/text_chunker_unittest.cc",
    "decoded_audio_segment_unittest.cc",
    "decoder/opus_decoder_helper_unittest.cc",
    "decoder/read_aloud_decoder_sequencer_unittest.cc",
    "mock_read_aloud_playback_controller_unittest.cc",
    "prefetch/prefetch_manager_unittest.cc",
    "prefetch/prefetch_mode_scheduler_unittest.cc",
    "read_aloud_playback_controller_unittest.cc",
  ]

  data = [ "//media/test/data/sfx-opus.ogg" ]

  deps = [
    ":mock_playback_controller",
    ":readaloud",
    "//base",
    "//base/test:test_support",
    "//chrome/common:mojo_bindings",
    "//media",
    "//media:test_support",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/test_support:test_utils",
    "//mojo/public/mojom/base",
    "//testing/gmock",
    "//testing/gtest",
  ]
  if (media_use_ffmpeg) {
    deps += [
      "//third_party/ffmpeg",
      "//third_party/ffmpeg:ffmpeg_features",
    ]
  }
}

source_set("mock_playback_controller") {
  testonly = true

  sources = [
    "mock_read_aloud_playback_controller.cc",
    "mock_read_aloud_playback_controller.h",
  ]

  deps = [ "//media:media_buildflags" ]

  public_deps = [
    "//base",
    "//chrome/common:mojo_bindings",
    "//media",
    "//media/mojo/mojom",
    "//mojo/public/cpp/bindings",
    "//testing/gmock",
  ]
}
