# 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 = [
  "//content/common/frame_owner_properties.h",
  "//content/common/frame_replication_state.h",
  "//content/common/resize_params.h",
  "//content/public/common/renderer_preferences.h",
  "//content/public/common/web_preferences.h",
  "//net/base/network_change_notifier.h",
  "//third_party/WebKit/public/web/WebPopupType.h",
]
traits_headers = [
  "//content/common/frame_messages.h",
  "//content/common/view_messages.h",
  "//content/public/common/common_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.
  "//cc/ipc",
  "//content/common:features",
  "//media",
  "//media/base/ipc",
  "//net",
  "//ppapi/features",
  "//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.FrameOwnerProperties=content::FrameOwnerProperties",
  "content.mojom.FrameReplicationState=content::FrameReplicationState",
  "content.mojom.NetworkConnectionType=net::NetworkChangeNotifier::ConnectionType",
  "content.mojom.RendererPreferences=content::RendererPreferences",
  "content.mojom.ResizeParams=content::ResizeParams",
  "content.mojom.WebPopupType=blink::WebPopupType",
  "content.mojom.WebPreferences=content::WebPreferences",
]
