# 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.

assert(!is_android)

source_set("live_caption") {
  public = [
    "live_caption_controller_factory.h",
    "live_caption_speech_recognition_host.h",
    "live_translate_controller_factory.h",
  ]

  public_deps = [
    "//base",
    "//chrome/browser/profiles:profile",
    "//components/keyed_service/core",
    "//components/live_caption:utils",
    "//content/public/browser",
    "//media/mojo/mojom",
    "//mojo/public/cpp/bindings",
  ]

  if (is_win) {
    public += [ "live_caption_unavailability_notifier.h" ]
    public_deps += [ "//components/live_caption" ]
  }
}

source_set("impl") {
  sources = [
    "live_caption_controller_factory.cc",
    "live_caption_speech_recognition_host.cc",
    "live_translate_controller_factory.cc",
  ]

  if (is_win) {
    sources += [ "live_caption_unavailability_notifier.cc" ]
  }

  deps = [
    ":live_caption",
    "//chrome/browser:browser_process",
    "//chrome/browser/accessibility",
    "//chrome/browser/extensions",
    "//chrome/browser/on_device_translation",
    "//chrome/browser/screen_ai:screen_ai_service_router_factory",
    "//chrome/browser/ui",
    "//chrome/browser/ui/browser_window",
    "//components/live_caption",
    "//components/live_caption:constants",
    "//components/live_caption:live_translate",
    "//components/on_device_translation",
    "//components/pref_registry",
    "//components/soda",
    "//components/sync_preferences",
    "//ui/accessibility",
  ]

  if (is_chromeos) {
    deps += [ "//chrome/browser/ash/accessibility" ]
  }

  if (is_win) {
    # live_caption_unavailability_notifier.cc includes
    # chrome/browser/ui/chrome_pages.h.
    deps += [ "//chrome/browser/ui:chrome_pages" ]
  }
}

source_set("unit_tests") {
  testonly = true
  sources = []

  if (is_win) {
    sources += [ "live_caption_unavailability_notifier_unittest.cc" ]
  }

  deps = [
    ":impl",
    ":live_caption",
    "//base/test:test_support",
    "//chrome/test:test_support",
    "//testing/gtest",
  ]
}

source_set("browser_tests") {
  testonly = true
  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
  sources = [ "live_translate_controller_browsertest.cc" ]

  if (!is_linux || target_cpu != "arm64") {
    sources += [
      "live_caption_controller_browsertest.cc",
      "live_caption_speech_recognition_host_browsertest.cc",
      "live_caption_speech_recognition_host_browsertest.h",
    ]

    if (is_win || is_mac || is_linux) {
      sources += [
        "live_caption_automatic_language_download_browsertest.cc",
        "live_caption_language_identification_browsertest.cc",
      ]
    }
  }

  if (is_win) {
    sources += [ "live_caption_unavailability_notifier_browsertest.cc" ]
  }

  deps = [
    ":impl",
    ":live_caption",
    ":test_support",
    "//chrome/browser/accessibility",
    "//chrome/browser/lifetime",
    "//chrome/browser/profiles:misc",
    "//chrome/test:test_support",
    "//components/live_caption",
    "//components/live_caption:constants",
    "//components/live_caption:live_translate",
    "//components/on_device_translation",
    "//components/soda:constants",
    "//content/test:test_support",
    "//testing/gtest",
  ]
}

source_set("test_support") {
  testonly = true
  public = [ "live_caption_test_util.h" ]
  sources = [ "live_caption_test_util.cc" ]
  public_deps = [
    "//base",
    "//chrome/browser/profiles:profile",
    "//chrome/test:test_support_ui",
  ]
  deps = [
    "//chrome/browser:browser_process",
    "//chrome/browser/accessibility",
    "//chrome/browser/ui",
    "//components/live_caption:constants",
    "//components/soda",
    "//components/soda:constants",
    "//components/sync_preferences",
    "//ui/accessibility",
  ]
}
