# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

static_library("dom_testing") {
  testonly = true
  has_pedantic_warnings = true

  sources = [
    "html_collection_testing.h",
    "mock_layout_boxes.h",
    "stub_css_parser.cc",
    "stub_css_parser.h",
    "stub_environment_settings.h",
    "stub_window.h",
  ]

  deps = [
    "//base",
    "//base/test:test_support",
    "//cobalt/base",
    "//cobalt/browser",
    "//cobalt/browser:bindings",
    "//cobalt/css_parser",
    "//cobalt/cssom",
    "//cobalt/dom",
    "//cobalt/dom_parser",
    "//cobalt/loader",
    "//cobalt/script",
    "//cobalt/web",
    "//cobalt/web:dom_exception",
    "//cobalt/web/testing:web_testing",
    "//testing/gmock",
    "//testing/gtest",
    "//url",
  ]

  public_deps = [ "//cobalt/web/testing:web_testing" ]
}
