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

assert(is_fuchsia)

import("//third_party/fuchsia-sdk/sdk/build/fidl_library.gni")

fidl_library("cast_fidl") {
  library_name = "chromium.cast"

  sources = [
    "fidl/cast/api_bindings.fidl",
    "fidl/cast/application_config.fidl",
    "fidl/cast/application_context.fidl",
    "fidl/cast/application_controller.fidl",
    "fidl/cast/cors_exempt_headers.fidl",
    "fidl/cast/data_reset.fidl",
    "fidl/cast/url_request_rewriter.fidl",
  ]

  public_deps = [
    "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.media.sessions2",
    "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.gfx",
    "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.web",
  ]
}

# Used by the top-level "gn_all" target to discover Fuchsia build targets.
group("gn_all") {
  testonly = true
  deps = [
    "base:cr_fuchsia_base_unittests",
    "engine:web_engine",
    "engine:web_engine_browsertests",
    "engine:web_engine_shell",
    "engine:web_engine_unittests",
    "http:http_service_tests",
    "mojom:fuchsia_mojo_unittests",
    "release:fuchsia_sizes",
    "runners:cast_runner",
    "runners:cast_runner_browsertests",
    "runners:cast_runner_integration_tests",
    "runners:cast_runner_unittests",
    "runners:web_runner",
    "//chromecast/bindings:bindings_manager_fuchsia",
  ]

  if (is_official_build) {
    deps += [ "cipd" ]
  }
}
