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

source_set("features") {
  public = [ "features.h" ]
  sources = [ "features.cc" ]
  public_deps = [ "//base" ]
}

source_set("metrics") {
  public = [ "metrics.h" ]
  sources = [ "metrics.cc" ]
  public_deps = [ "//base" ]
}

source_set("dictation") {
  public = [
    "application_registration_delegate.h",
    "connector_component_extension.h",
    "dictation_keyed_service.h",
    "dictation_keyed_service_factory.h",
    "dictation_multiplexer.h",
    "local_hotkey_manager.h",
    "logging.h",
    "onboarding_manager.h",
    "session_controller.h",
    "session_controller_delegate.h",
    "session_state.h",
    "session_ui.h",
    "session_ui_delegate.h",
    "stream_provider.h",
    "stream_provider_delegate.h",
    "target.h",
  ]
  public_deps = [
    ":features",
    "//base",
    "//chrome/browser/profiles:profile",
    "//content/public/browser",
  ]
  deps = [
    ":metrics",
    "//chrome/browser/ui/views/dictation",
    "//components/prefs",
  ]
}

source_set("impl") {
  sources = [
    "application_registration_delegate.cc",
    "connector_component_extension.cc",
    "dictation_context.cc",
    "dictation_context.h",
    "dictation_context_fetcher.cc",
    "dictation_context_fetcher.h",
    "dictation_keyed_service.cc",
    "dictation_keyed_service_factory.cc",
    "dictation_multiplexer.cc",
    "listener_stream_provider.cc",
    "listener_stream_provider.h",
    "local_hotkey_manager.cc",
    "logging.cc",
    "onboarding_manager.cc",
    "session_controller.cc",
    "session_state.cc",
    "session_ui_impl.cc",
    "session_ui_impl.h",
    "target.cc",
  ]

  deps = [
    ":dictation",
    ":metrics",
    "//base",
    "//chrome/browser/component_updater",
    "//chrome/browser/extensions",
    "//chrome/browser/glic",
    "//chrome/browser/page_content_annotations:fetcher",
    "//chrome/browser/ui",
    "//chrome/browser/ui:browser_element_identifiers",
    "//chrome/browser/ui/browser_window",
    "//chrome/browser/ui/tabs",
    "//chrome/browser/ui/toasts",
    "//chrome/browser/ui/toasts/api:toasts",
    "//chrome/browser/ui/views/dictation",
    "//chrome/browser/ui/views/interaction",
    "//chrome/common/extensions/api",
    "//components/optimization_guide/content/browser",
    "//components/optimization_guide/proto:optimization_guide_proto",
    "//components/page_content_annotations/content",
    "//components/tabs:public",
    "//content/public/browser",
    "//extensions/browser",
    "//ui/base",
    "//ui/views",
  ]
}

source_set("test_support") {
  testonly = true
  sources = [
    "dictation_browser_test_base.cc",
    "dictation_browser_test_base.h",
    "dictation_interactive_browser_test_base.cc",
    "dictation_interactive_browser_test_base.h",
    "test_util.cc",
    "test_util.h",
  ]

  public_deps = [
    ":dictation",
    "//base",
    "//base/test:test_support",
    "//chrome/common/extensions/api",
    "//chrome/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]

  deps = [
    ":impl",
    "//chrome/browser/extensions:test_support",
    "//chrome/common:constants",
    "//components/prefs",
    "//content/test:test_support",
    "//extensions/browser:test_support",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "dictation_keyed_service_unittest.cc",
    "local_hotkey_manager_unittest.cc",
    "logging_unittest.cc",
    "session_controller_unittest.cc",
    "target_unittest.cc",
  ]

  deps = [
    ":impl",
    ":metrics",
    ":test_support",
    "//base/test:test_support",
    "//chrome/browser/ui:test_support",
    "//chrome/test:test_support",
    "//components/tabs:test_support",
    "//content/test:test_support",
    "//extensions/browser:test_support",
  ]
}

source_set("browser_tests") {
  testonly = true
  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
  sources = [
    "dictation_context_browsertest.cc",
    "dictation_keyed_service_browsertest.cc",
    "dictation_onboarding_browsertest.cc",
    "metrics_browsertest.cc",
    "policy_browsertest.cc",
    "session_ui_impl_browsertest.cc",
  ]
  deps = [
    ":impl",
    ":metrics",
    ":test_support",
    "//chrome/browser/glic/browser_ui",
    "//chrome/browser/glic/browser_ui:glow",
    "//chrome/browser/glic/test_support",
    "//chrome/browser/policy:test_support",
    "//chrome/browser/profiles:profile",
    "//chrome/browser/ui/tabs",
    "//chrome/browser/ui/toasts",
    "//chrome/browser/ui/toasts/api:toasts",
    "//chrome/browser/ui/views/dictation",
    "//chrome/test:test_support",
    "//components/tabs:test_support",
    "//content/test:test_support",
  ]
}

source_set("interactive_ui_tests") {
  testonly = true
  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
  sources = [ "session_ui_impl_interactive_uitest.cc" ]
  deps = [
    ":impl",
    ":test_support",
    "//chrome/browser/glic/test_support",
    "//chrome/browser/profiles:profile",
    "//chrome/browser/ui/tabs",
    "//chrome/browser/ui/toasts",
    "//chrome/browser/ui/toasts/api:toasts",
    "//chrome/browser/ui/views/dictation",
    "//chrome/test:test_support",
    "//components/tabs:test_support",
    "//content/test:test_support",
  ]
}
