# Copyright 2022 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/buildflag_header.gni")
import("//build/config/chromeos/ui_mode.gni")
import("//services/accessibility/buildflags.gni")

buildflag_header("buildflags") {
  header = "buildflags.h"
  flags = [
    "ENABLE_ACCESSIBILITY_SERVICE=$enable_accessibility_service_internal",
    "SUPPORTS_OS_ACCESSIBILITY_SERVICE=$supports_os_accessibility_service",
  ]
}

source_set("lib") {
  public_deps = [
    "//services/accessibility/public/mojom",
    "//ui/accessibility:ax_base",
  ]

  if (supports_os_accessibility_service) {
    sources = [
      "assistive_technology_controller_impl.cc",
      "assistive_technology_controller_impl.h",
      "features/automation_internal_bindings.cc",
      "features/automation_internal_bindings.h",
      "features/bindings_isolate_holder.cc",
      "features/bindings_isolate_holder.h",
      "features/interface_binder.h",
      "features/mojo/mojo.cc",
      "features/mojo/mojo.h",
      "features/mojo/mojo_handle.cc",
      "features/mojo/mojo_handle.h",
      "features/mojo/mojo_watch_callback.cc",
      "features/mojo/mojo_watch_callback.h",
      "features/mojo/mojo_watcher.cc",
      "features/mojo/mojo_watcher.h",
      "features/registered_wrappable.cc",
      "features/registered_wrappable.h",
      "features/text_decoder.cc",
      "features/text_decoder.h",
      "features/text_encoder.cc",
      "features/text_encoder.h",
      "features/v8_bindings_utils.cc",
      "features/v8_bindings_utils.h",
      "features/v8_manager.cc",
      "features/v8_manager.h",
      "os_accessibility_service.cc",
      "os_accessibility_service.h",
    ]
    public_deps += [
      "//gin",
      "//ui/accessibility:accessibility",
    ]
    configs += [ "//v8:external_startup_data" ]
  } else {
    sources = [
      "automation_impl.cc",
      "automation_impl.h",
      "browser_accessibility_service.cc",
      "browser_accessibility_service.h",
    ]
  }
}

static_library("test_support") {
  testonly = true

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

  deps = [ ":lib" ]
}

source_set("tests") {
  testonly = true

  deps = [
    ":lib",
    ":test_support",
    "//base/test:test_support",
    "//testing/gtest",
    "//ui/gfx:test_support",
  ]

  if (supports_os_accessibility_service) {
    sources = [
      "assistive_technology_controller_impl_unittest.cc",
      "features/automation_internal_bindings_unittest.cc",
      "features/v8_manager_unittest.cc",
      "os_accessibility_service_unittest.cc",
    ]
    deps += [
      "//base",
      "//services/accessibility/features/mojo/test:mojom_js_api",
    ]
    data_deps =
        [ "//services/accessibility/features/mojo/test:test_support_data" ]
  } else {
    sources = [ "browser_accessibility_service_unittest.cc" ]
  }
}