# 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("//build/config/ui.gni")
import("//components/on_device_translation/buildflags/features.gni")

assert(toolkit_views)

source_set("accessibility") {
  public = [
    "caption_bubble_context_views.h",
    "caption_bubble_session_observer_views.h",
    "caret_browsing_dialog_delegate.h",
    "non_accessible_image_view.h",
    "theme_tracking_non_accessible_image_view.h",
  ]

  public_deps = [
    "//base",
    "//chrome/browser/accessibility",
    "//components/live_caption",
    "//content/public/browser",
    "//ui/base",
    "//ui/gfx",
    "//ui/views",
  ]

  if (!is_chromeos) {
    public += [ "accessibility_focus_highlight.h" ]
    public_deps += [
      "//chrome/browser/ui/tabs:tab_strip_model_observer",
      "//components/prefs",
    ]
  }
}

source_set("impl") {
  sources = [
    "caption_bubble_context_views.cc",
    "caption_bubble_session_observer_views.cc",
    "caret_browsing_dialog_delegate.cc",
    "non_accessible_image_view.cc",
    "theme_tracking_non_accessible_image_view.cc",
  ]
  deps = [
    ":accessibility",
    "//chrome/app:generated_resources",
    "//chrome/browser/profiles:profile",
    "//chrome/browser/ui/browser_window",
    "//chrome/browser/ui/color:color_headers",
    "//chrome/browser/ui/tabs:tab_strip",
    "//chrome/browser/ui/views:layout_provider",
    "//chrome/common:constants",
    "//components/constrained_window",
    "//components/prefs",
    "//content/public/browser",
    "//ui/compositor",
  ]

  if (is_win) {
    sources += [ "accessibility_util.cc" ]
    deps += [
      "//chrome/browser/ui:accessibility_util",
      "//chrome/browser/ui/waap:manager",
    ]
  }

  if (!is_chromeos) {
    sources += [ "accessibility_focus_highlight.cc" ]
    deps += [ "//chrome/browser/ui/webui/tab_search:mojo_bindings" ]
  } else {
    deps += [
      "//chrome/browser/ash/accessibility",
      "//ui/events/ash",
    ]
  }
}

if (!is_android) {
  source_set("unit_tests") {
    testonly = true
    sources = [ "theme_tracking_non_accessible_image_view_unittest.cc" ]
    deps = [
      ":accessibility",
      "//testing/gtest",
      "//ui/color:color_headers",
      "//ui/views",
      "//ui/views:test_support",
    ]
  }

  # Test base class for Views accessibility event tests. Shared by both
  # browser_tests and interactive_ui_tests.
  source_set("dump_accessibility_events_views_browsertest_base") {
    testonly = true
    sources = [
      "dump_accessibility_events_views_browsertest_base.cc",
      "dump_accessibility_events_views_browsertest_base.h",
    ]

    if (is_mac) {
      sources += [ "dump_accessibility_events_views_browsertest_base_mac.mm" ]
    } else if (is_linux) {
      sources +=
          [ "dump_accessibility_events_views_browsertest_base_auralinux.cc" ]
    }

    deps = [
      "//base",
      "//base/test:test_support",
      "//chrome/test:test_support",
      "//content/public/browser",
      "//content/test:test_support",
      "//testing/gtest",
      "//ui/accessibility",
      "//ui/accessibility:test_support",
      "//ui/views",
      "//ui/views:test_support",
    ]
  }

  source_set("browser_tests") {
    testonly = true
    defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
    sources = []
    deps = [ ":accessibility" ]

    if (!is_chromeos) {
      sources += [
        "accessibility_focus_highlight_browsertest.cc",
        "dump_accessibility_events_views_browsertest.cc",
        "menu_dump_accessibility_events_browsertest.cc",
        "tree_view_dump_accessibility_events_browsertest.cc",
      ]

      deps += [
        ":dump_accessibility_events_views_browsertest_base",
        "//chrome/browser/ui/color:color_headers",
        "//chrome/common:constants",
        "//chrome/test:test_support_ui",
        "//components/prefs",
        "//content/test:test_support",
        "//ui/accessibility",
        "//ui/base",
        "//ui/snapshot",
        "//ui/views",
        "//ui/views:test_support",
      ]
    }

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

  if (!is_chromeos_device) {
    source_set("interactive_ui_tests") {
      testonly = true
      defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
      sources = [ "caption_bubble_controller_views_browsertest.cc" ]
      deps = [
        ":accessibility",
        "//base/test:test_support",
        "//chrome/browser/preloading:test_support",
        "//chrome/browser/ui",
        "//chrome/test:test_support_ui",
        "//components/live_caption:constants",
        "//components/on_device_translation/buildflags",
        "//components/soda",
        "//ui/views:test_support",
      ]

      if (enable_on_device_translation) {
        deps += [ "//components/on_device_translation:public" ]
      }

      if (is_win) {
        sources += [
          "navigation_accessibility_uitest_win.cc",
          "post_install_announcement_browsertest.cc",
        ]
        deps += [
          "//chrome/browser/ui/views/toolbar",
          "//ui/base:test_support",
        ]
      }

      if (use_atk) {
        sources += [ "browser_accessibility_uitest_auralinux.cc" ]
        configs += [ "//build/config/linux/atk" ]
        deps += [
          "//chrome/browser/devtools:test_support",
          "//content/test:test_support",
        ]
      }
    }
  }
}

# Windows-only test support for UIA accessibility events.
if (is_win) {
  source_set("uia_test_support") {
    testonly = true
    sources = [
      "uia_accessibility_event_waiter.cc",
      "uia_accessibility_event_waiter.h",
    ]
    deps = [
      "//base",
      "//ui/accessibility",
      "//ui/views",
    ]
  }
}
