# 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/extension:extension_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/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",
    ]
  }
}
