# 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/browser/metrics:metrics_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/ui_navigation/scroll_engine:scroll_engine_tests",
    "//cobalt/watchdog:watchdog_test",
    "//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",
    "//third_party/abseil-cpp:absl",
  ]

  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_modular) {
    deps += [ "//base/util/values:values_util" ]
    if (sb_is_evergreen) {
      deps += [
        # TODO(b/294247612): Remove unnecessary dependencies.
        "//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",
      ]
    }
  }
}
