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

group("gn_all") {
  testonly = true
  deps = [
    ":default",
    "//cobalt/bindings/testing:bindings_test",
    "//cobalt/browser:browser_test",
    "//cobalt/cssom:cssom_test",
    "//cobalt/demos/simple_sandbox",
    "//cobalt/dom:dom_test",
    "//cobalt/dom_parser:dom_parser_test",
    "//cobalt/encoding:text_encoding_test",
    "//cobalt/layout:layout_test",
    "//cobalt/layout_tests",
    "//cobalt/layout_tests:web_platform_tests",
    "//cobalt/loader:loader_test",
    "//cobalt/loader/image/sandbox:image_decoder_sandbox",
    "//cobalt/media:media_test",
    "//cobalt/media/sandbox:media_sandbox",
    "//cobalt/media/sandbox:web_media_player_sandbox",
    "//cobalt/media_capture:media_capture_test",
    "//cobalt/media_session:media_session_test",
    "//cobalt/media_stream:media_stream_test",
    "//cobalt/renderer:renderer_test",
    "//cobalt/renderer/sandbox:renderer_sandbox",
    "//cobalt/renderer/sandbox:scaling_text_sandbox",
    "//cobalt/speech/sandbox:speech_sandbox",
    "//cobalt/web:web_test",
    "//cobalt/web_animations:web_animations_test",
    "//cobalt/webdriver:webdriver_test",
    "//cobalt/websocket:websocket_test",
    "//cobalt/worker:worker_test",
    "//cobalt/xhr:xhr_test",
  ]

  if (sb_is_evergreen) {
    deps += [
      "//cobalt/updater:updater_test",
      "//components/update_client:cobalt_slot_management_test",
      "//components/update_client:update_client_test",
    ]
  }
}

group("default") {
  deps = [
    "//cobalt/browser:cobalt",
    "//cobalt/browser:cobalt_install",
    "//cobalt/renderer:default_options",
    "//cobalt/script:engine_shell",
    "//third_party/brotli:dec_no_dictionary_data",
  ]

  if (sb_is_evergreen) {
    deps += [
      "//base/util/values:values_util",
      "//cobalt/updater",
      "//cobalt/updater:crash_sandbox",
      "//cobalt/updater:noop_sandbox",
      "//cobalt/updater:one_app_only_sandbox",
      "//components/client_update_protocol",
      "//components/crx_file",
      "//components/prefs",
      "//components/update_client",
      "//third_party/llvm-project/compiler-rt:compiler_rt",
      "//third_party/llvm-project/libcxx:cxx",
      "//third_party/llvm-project/libcxxabi:cxxabi",
      "//third_party/llvm-project/libunwind:unwind_evergreen",
      "//third_party/musl:c",
    ]
  }
}
