# 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("../../../mojo_sdk_root.gni")
import("$mojo_sdk_root/mojo/public/tools/bindings/mojom.gni")

mojom("interfaces") {
  sources = [
    "quads.mojom",
    "surfaces.mojom",
    "surfaces_service.mojom",
  ]

  import_dirs = [ get_path_info("../../../", "abspath") ]

  deps = [
    ":surface_id",
    "../../../geometry/public/interfaces",
    "../../../gpu/public/interfaces",
    "../../../native_viewport/public/interfaces",
  ]
}

mojom("surface_id") {
  sources = [
    "surface_id.mojom",
  ]
}
