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

component("ipc") {
  output_name = "cc_ipc"

  defines = [ "CC_IPC_IMPLEMENTATION" ]

  sources = [
    "cc_ipc_export.h",
    "cc_param_traits.cc",
    "cc_param_traits.h",
    "cc_param_traits_macros.h",
  ]

  public_deps = [
    "//cc",
    "//cc/surfaces",
    "//skia",
  ]

  deps = [
    "//base",
    "//gpu/ipc/common",
    "//ipc",
    "//ui/events/ipc",
    "//ui/gfx",
    "//ui/gfx/ipc",
    "//ui/gfx/ipc/color",
    "//ui/gfx/ipc/geometry",
    "//ui/gfx/ipc/skia",
  ]
}

mojom("interfaces") {
  sources = [
    "begin_frame_args.mojom",
    "compositor_frame.mojom",
    "compositor_frame_metadata.mojom",
    "filter_operation.mojom",
    "filter_operations.mojom",
    "frame_sink_id.mojom",
    "local_frame_id.mojom",
    "mojo_compositor_frame_sink.mojom",
    "quads.mojom",
    "render_pass.mojom",
    "render_pass_id.mojom",
    "returned_resource.mojom",
    "selection.mojom",
    "shared_quad_state.mojom",
    "surface_id.mojom",
    "surface_sequence.mojom",
    "transferable_resource.mojom",
  ]

  public_deps = [
    "//gpu/ipc/common:interfaces",
    "//mojo/common:common_custom_types",
    "//skia/public/interfaces",
    "//ui/events/mojo:interfaces",
    "//ui/gfx/geometry/mojo",
    "//ui/gfx/mojo",
  ]
}

# Interfaces between two privileged services.
mojom("internal_interfaces") {
  sources = [
    "display_compositor.mojom",
  ]

  public_deps = [
    ":interfaces",
    "//ui/gfx/geometry/mojo",
  ]
}

mojom("test_interfaces") {
  testonly = true
  sources = [
    "traits_test_service.mojom",
  ]

  public_deps = [
    ":interfaces",
  ]
}

source_set("struct_traits") {
  sources = [
    "begin_frame_args_struct_traits.h",
    "compositor_frame_metadata_struct_traits.cc",
    "compositor_frame_metadata_struct_traits.h",
    "compositor_frame_struct_traits.cc",
    "compositor_frame_struct_traits.h",
    "filter_operation_struct_traits.h",
    "filter_operations_struct_traits.h",
    "frame_sink_id_struct_traits.h",
    "local_frame_id_struct_traits.h",
    "quads_struct_traits.cc",
    "quads_struct_traits.h",
    "render_pass_id_struct_traits.h",
    "render_pass_struct_traits.cc",
    "render_pass_struct_traits.h",
    "selection_struct_traits.h",
    "shared_quad_state_struct_traits.h",
    "surface_id_struct_traits.h",
    "surface_sequence_struct_traits.h",
    "transferable_resource_struct_traits.cc",
    "transferable_resource_struct_traits.h",
  ]
  public_deps = [
    ":interfaces_shared_cpp_sources",
    "//base",
    "//cc",
    "//cc/surfaces:surface_id",
    "//gpu/ipc/common:struct_traits",
    "//mojo/common:struct_traits",
    "//skia/public/interfaces:struct_traits",
    "//ui/events:events_base",
    "//ui/events/mojo:struct_traits",
    "//ui/gfx",
    "//ui/gfx:selection_bound",
    "//ui/gfx/geometry/mojo:struct_traits",
    "//ui/gfx/mojo:struct_traits",
  ]
}
