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

mojom = "//content/common/native_types.mojom"
public_headers = [
  "//cc/input/touch_action.h",
  "//content/common/edit_command.h",
  "//content/common/frame_owner_properties.h",
  "//content/common/frame_replication_state.h",
  "//content/common/input/input_event.h",
  "//content/common/visual_properties.h",
  "//content/public/common/input_event_ack_source.h",
  "//content/public/common/input_event_ack_state.h",
  "//content/common/cursors/webcursor.h",
  "//content/common/input/synthetic_pinch_gesture_params.h",
  "//content/common/input/synthetic_pointer_action_list_params.h",
  "//content/common/input/synthetic_smooth_drag_gesture_params.h",
  "//content/common/input/synthetic_smooth_scroll_gesture_params.h",
  "//content/common/input/synthetic_tap_gesture_params.h",
  "//content/public/common/web_preferences.h",
  "//net/base/network_change_notifier.h",
  "//third_party/blink/public/platform/web_gesture_device.h",
  "//third_party/blink/public/platform/web_gesture_event.h",
  "//third_party/blink/public/platform/web_input_event.h",
  "//third_party/blink/public/platform/web_mouse_wheel_event.h",
  "//third_party/blink/public/platform/web_pointer_properties.h",
  "//third_party/blink/public/platform/web_touch_point.h",
  "//ui/events/blink/did_overscroll_params.h",
  "//ui/events/blink/web_input_event_traits.h",
  "//ui/latency/ipc/latency_info_param_traits.h",
]
traits_headers = [
  "//content/common/frame_messages.h",
  "//content/common/input_messages.h",
  "//content/common/input/input_event_struct_traits.h",
  "//content/common/input/touch_action_optional_struct_traits.h",
  "//content/common/view_messages.h",
  "//content/common/widget_messages.h",
  "//content/public/common/common_param_traits.h",
  "//services/network/public/cpp/p2p_param_traits.h",
]
public_deps = [
  # NOTE: These dependencies are here to satisfy gn check because
  # common_param_traits_macros.h and/or view_messages.h include their headers.
  # Although the mojo bindings target is configured to allow direct circular
  # includes from //content/common and //content/public/common, this isn't a
  # transitive allowance, so those targets' own public_deps aren't included in
  # the set of implied dependencies.
  "//content/common:buildflags",
  "//media",
  "//media/base/ipc",
  "//net",
  "//ppapi/buildflags",
  "//services/network/public/cpp",
  "//third_party/blink/public/common",
  "//ui/accessibility",
  "//ui/base/ime:text_input_types",
  "//ui/gfx/ipc",
  "//ui/gfx/ipc/color",
  "//ui/gfx/ipc/skia",
  "//ui/surface",
  "//url/ipc:url_ipc",
]
type_mappings = [
  "content.mojom.Button=blink::WebPointerProperties::Button",
  "content.mojom.Cancelability=blink::WebInputEvent::DispatchType",
  "content.mojom.EditCommand=content::EditCommand",
  "content.mojom.Event=std::unique_ptr<content::InputEvent>[move_only]",
  "content.mojom.EventType=blink::WebInputEvent::Type",
  "content.mojom.FrameOwnerProperties=content::FrameOwnerProperties",
  "content.mojom.FrameReplicationState=content::FrameReplicationState",
  "content.mojom.GestureDevice=blink::WebGestureDevice",
  "content.mojom.InertialPhaseState=blink::WebGestureEvent::InertialPhaseState",
  "content.mojom.InputEventAckSource=content::InputEventAckSource",
  "content.mojom.InputEventAckState=content::InputEventAckState",
  "content.mojom.NetworkConnectionType=net::NetworkChangeNotifier::ConnectionType",
  "content.mojom.DidOverscrollParams=ui::DidOverscrollParams",
  "content.mojom.PointerType=blink::WebPointerProperties::PointerType",
  "content.mojom.VisualProperties=content::VisualProperties",
  "content.mojom.ScrollUnits=blink::WebGestureEvent::ScrollUnits",
  "content.mojom.SyntheticSmoothDrag=content::SyntheticSmoothDragGestureParams",
  "content.mojom.SyntheticSmoothScroll=content::SyntheticSmoothScrollGestureParams",
  "content.mojom.SyntheticPinch=content::SyntheticPinchGestureParams",
  "content.mojom.SyntheticTap=content::SyntheticTapGestureParams",
  "content.mojom.SyntheticPointerAction=content::SyntheticPointerActionListParams",
  "content.mojom.TouchAction=cc::TouchAction",
  "content.mojom.TouchActionOptional=cc::TouchAction",
  "content.mojom.TouchState=blink::WebTouchPoint::State",
  "content.mojom.WebCursor=content::WebCursor",
  "content.mojom.WebPopupType=blink::WebPopupType",
  "content.mojom.WebPreferences=content::WebPreferences",
]
