# Copyright 2022 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

## BAZEL2GN SENTINEL - DO NOT EDIT BELOW THIS LINE ##
#
#  ________  _________  ________  ________
# |\   ____\|\___   ___\\   __  \|\   __  \
# \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
#  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
#   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
#     ____\_\  \   \ \__\ \ \_______\ \__\
#    |\_________\   \|__|  \|_______|\|__|
#    \|_________|
#
#
# AUTO-GENERATED - DO NOT EDIT
#
# The targets below are auto-generated based on the targets defined in the
# BUILD.bazel file from the same directory. If you made changes to targets in
# Bazel, instead of editing this file manually, run:
#
#   > fx bazel2gn
#
# Please do NOT edit this file directly. Instead, edit the BUILD.bazel file and
# rerun bazel2gn.

import("//build/tools/bazel2gn/bazel_migration.gni")

# A self-verification target for generated content in this file.
if (is_host) {
  verify_bazel2gn("verify_bazel2gn") {
  }
}

fidl("fuchsia.ui.composition.internal") {
  sources = [
    "display_ownership.fidl",
    "screen_capture.fidl",
  ]
  enable_hlcpp = true
  visibility = [ "*" ]
  public_deps = [
    "//sdk/fidl/fuchsia.math",
    "//sdk/fidl/fuchsia.ui.composition",
    "//zircon/vdso/zx",
  ]
}
