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

component("accessibility") {
  sources = [
    "ax_enums.cc",
    "ax_enums.h",
    "ax_node.cc",
    "ax_node.h",
    "ax_node_data.cc",
    "ax_node_data.h",
    "ax_serializable_tree.cc",
    "ax_serializable_tree.h",
    "ax_text_utils.cc",
    "ax_text_utils.h",
    "ax_tree.cc",
    "ax_tree.h",
    "ax_tree_serializer.cc",
    "ax_tree_serializer.h",
    "ax_tree_source.h",
    "ax_tree_update.cc",
    "ax_tree_update.h",
    "ax_view_state.cc",
    "ax_view_state.h",
    "platform/ax_platform_node.cc",
    "platform/ax_platform_node.h",
    "platform/ax_platform_node_base.cc",
    "platform/ax_platform_node_base.h",
    "platform/ax_platform_node_delegate.h",
    "platform/ax_platform_node_mac.h",
    "platform/ax_platform_node_mac.mm",
  ]

  defines = [ "ACCESSIBILITY_IMPLEMENTATION" ]

  public_deps = [
    "//base",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]
}

source_set("test_support") {
  sources = [
    "tree_generator.cc",
    "tree_generator.h",
  ]

  deps = [
    ":accessibility",
  ]
}

test("accessibility_unittests") {
  sources = [
    "ax_generated_tree_unittest.cc",
    "ax_tree_serializer_unittest.cc",
    "ax_tree_unittest.cc",
  ]

  deps = [
    ":accessibility",
    ":test_support",
    "//base",
    "//base/test:run_all_unittests",
    "//testing/gtest",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]
}
