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

import("//build/config/ui.gni")

# This target will be built if no target is specified when invoking ninja.
group("default") {
  testonly = true

  deps = [
    "//apps",
    "//benchmarks",
    "//crypto:crypto_unittests",
    "//examples",
    "//mojo",
    "//mojom",
    "//services",
    "//shell",
  ]

  if (is_linux) {
    deps += [
      "//sandbox/linux:sandbox",
      "//sandbox/linux:sandbox_linux_unittests",
    ]
    if (!use_ozone) {
      deps += [ "//tools/xdisplaycheck" ]
    }
  }

  if (is_linux || is_android) {
    deps += [
      "//ui/events:events_unittests",
      "//ui/gfx:gfx_unittests",
    ]
  }

  if (use_ozone) {
    deps += [
      "//ui/ozone",
      "//ui/ozone/demo",
      "//ui/ozone:ozone_unittests",
    ]
  }
}

# Deprecated name for the default build target.
group("root") {
  testonly = true
  deps = [
    ":default",
  ]
}
