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

import("//mojo/public/tools/bindings/mojom.gni")

component("views_bridge_mac") {
  assert(is_mac)

  sources = [
    "bridged_native_widget_host_helper.h",
    "cocoa_mouse_capture.h",
    "cocoa_mouse_capture.mm",
    "cocoa_mouse_capture_delegate.h",
    "drag_drop_client.h",
    "views_bridge_mac_export.h",
  ]
  defines = [ "VIEWS_BRIDGE_MAC_IMPLEMENTATION" ]
  deps = [
    "//base",
    "//ui/base",
    "//ui/events",
    "//ui/gfx",
  ]
  libs = [ "Cocoa.framework" ]
}

mojom("mojo") {
  assert(is_mac)

  sources = [
    "mojo/bridge_factory.mojom",
    "mojo/bridged_native_widget.mojom",
    "mojo/bridged_native_widget_host.mojom",
  ]

  public_deps = [
    "//mojo/public/mojom/base",
    "//ui/base/mojo",
    "//ui/display/mojo:interfaces",
    "//ui/events/mojo:interfaces",
    "//ui/gfx/geometry/mojo",
    "//ui/gfx/mojo",
  ]
}
