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

source_set("test") {
  configs += [ "//build/config/compiler:enable_arc" ]
  testonly = true

  public_deps = [
    ":util",
    "//ios/web/public/test/fakes",
    "//testing/gtest",
  ]

  deps = [
    "//base",
    "//base/test:test_support",
    "//ios/web:web",
    "//ios/web/common:features",
    "//ios/web/js_messaging",
    "//ios/web/navigation",
    "//ios/web/navigation:wk_navigation_util",
    "//ios/web/public/deprecated",
    "//ios/web/test:test_support",
    "//ui/base",
  ]

  allow_circular_includes_from = [ "//ios/web/test:test_support" ]

  sources = [
    "scoped_testing_web_client.h",
    "scoped_testing_web_client.mm",
    "test_redirect_observer.h",
    "test_redirect_observer.mm",
    "test_web_thread.h",
    "web_js_test.h",
    "web_task_environment.h",
    "web_test.h",
    "web_test.mm",
    "web_test_suite.h",
    "web_test_with_web_state.h",
    "web_test_with_web_state.mm",
  ]
}

source_set("element_selector") {
  configs += [ "//build/config/compiler:enable_arc" ]
  testonly = true

  sources = [
    "element_selector.h",
    "element_selector.mm",
  ]

  deps = [ "//base" ]
}

source_set("util") {
  configs += [ "//build/config/compiler:enable_arc" ]
  testonly = true

  deps = [
    ":element_selector",
    "//base",
    "//base/test:test_support",
    "//ios/net",
    "//ios/web/js_messaging",
    "//ios/web/public:public",
    "//ios/web/public/js_messaging",
    "//ios/web/web_state:web_state_impl_header",
    "//ios/web/web_state/ui:ui",
    "//ios/web/web_view:util",
    "//net",
    "//testing/gtest",
  ]

  # TODO(crbug.com/922813): Remove this once internal targets depend directly
  # on ":element_selector".
  public_deps = [ "//ios/web/public/test:element_selector" ]

  sources = [
    "error_test_util.h",
    "error_test_util.mm",
    "js_test_storage_util.h",
    "js_test_storage_util.mm",
    "js_test_util.h",
    "js_test_util.mm",
    "navigation_test_util.h",
    "navigation_test_util.mm",
    "url_test_util.h",
    "web_view_content_test_util.h",
    "web_view_content_test_util.mm",
    "web_view_interaction_test_util.h",
    "web_view_interaction_test_util.mm",
  ]
}
