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

import("//build/fidl/fidl.gni")

fidl("fuchsia.ui.scenic") {
  # TODO(https://fxbug.dev/42111344): Remove lint exclusions by fixing known FIDL lint violations in this target
  excluded_checks = [
    "invalid-case-for-constant",
    "string-bounds-not-specified",
    "vector-bounds-not-specified",
  ]

  sdk_category = "partner"
  sdk_area = "Unknown"

  sources = [
    "commands.fidl",
    "events.fidl",
    "overview.fidl",
    "scenic.fidl",
    "session.fidl",
    "snapshot.fidl",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.images",
    "//sdk/fidl/fuchsia.mem",
    "//sdk/fidl/fuchsia.scenic.scheduling",
    "//sdk/fidl/fuchsia.sysmem",
    "//sdk/fidl/fuchsia.ui.gfx",
    "//sdk/fidl/fuchsia.ui.input",
    "//sdk/fidl/fuchsia.ui.pointer",
    "//sdk/fidl/fuchsia.ui.views",
    "//zircon/vdso/zx",
  ]

  enable_hlcpp = true
}
