blob: f984b8f4e716ed53afc9d1872a7c06961cd2e0d0 [file] [log] [blame]
# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/chromeos/ui_mode.gni")
import("//build/config/features.gni")
import("//mojo/public/tools/bindings/mojom.gni")
mojom("mojom") {
generate_java = true
sources = [
"battery_monitor.mojom",
"battery_status.mojom",
"fingerprint.mojom",
"geolocation.mojom",
"geolocation_config.mojom",
"geolocation_context.mojom",
"geolocation_control.mojom",
"hid.mojom",
"input_service.mojom",
"nfc.mojom",
"nfc_provider.mojom",
"power_monitor.mojom",
"pressure_manager.mojom",
"pressure_update.mojom",
"public_ip_address_geolocation_provider.mojom",
"screen_orientation.mojom",
"screen_orientation_lock_types.mojom",
"serial.mojom",
"smart_card.mojom",
"time_zone_monitor.mojom",
"vibration_manager.mojom",
"wake_lock.mojom",
"wake_lock_context.mojom",
"wake_lock_provider.mojom",
]
public_deps = [
":geoposition",
"//device/bluetooth/public/mojom",
"//mojo/public/mojom/base",
"//services/network/public/mojom",
"//services/network/public/mojom:mojom_proxy_config",
"//services/network/public/mojom:url_loader_base",
"//ui/gfx/geometry/mojom",
"//url/mojom:url_mojom_gurl",
"//url/mojom:url_mojom_origin",
]
if (is_chromeos_ash) {
sources += [
"mtp_file_entry.mojom",
"mtp_manager.mojom",
"mtp_storage_info.mojom",
]
}
cpp_typemaps = [
{
types = [
{
mojom = "device.mojom.BluetoothAddress"
cpp = "::std::array<::uint8_t, 6>"
},
]
traits_public_deps = [ "//base" ]
},
]
# The blink variant of the Device Service mojom are depended on by the
# blink platform target. All blink variant mojoms use WTF types, which are
# part of the blink platform component. In order to avoid a dependency cycle,
# these targets must be part of that component.
export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
visibility_blink = [
"//third_party/blink/renderer/platform:blink_platform_public_deps",
"//third_party/blink/renderer/platform/media:*",
"//third_party/blink/public/mojom:mojom_platform_blink",
]
}
mojom("device_service") {
sources = [ "device_service.mojom" ]
# We can't depend on the Blink variant of ":generic_sensors", but we need the
# non-Blink variant as a dependency. Blink can never use the DeviceService
# interface directly anyway, so don't generate bindings for it.
disable_variants = true
cpp_only = true
# The interfaces defined here are privileged, and not vended to a renderer, so
# they are not fuzzable by javascript-based fuzzers.
enable_js_fuzzing = false
enabled_features = []
if ((is_linux || is_chromeos) && use_udev) {
enabled_features += [ "enable_input_device_manager" ]
}
if (!is_android) {
enabled_features += [ "enable_hid" ]
}
public_deps = [
":generic_sensor",
":geolocation_internals",
":mojom",
":usb",
":usb_test",
]
}
mojom("generic_sensor") {
generate_java = true
sources = [
"sensor.mojom",
"sensor_provider.mojom",
]
export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
visibility_blink = [
":mojom_blink",
"//third_party/blink/public/mojom:mojom_platform_blink",
"//third_party/blink/renderer/platform:blink_platform_public_deps",
]
# Generic Sensor Mojom interfaces are exposed publicly to layout tests which
# use prepackaged redistributable JS bindings. It is therefore not desirable
# to scramble these messages.
scramble_message_ids = false
cpp_typemaps = [
{
types = [
{
mojom = "device.mojom.SensorConfiguration"
cpp = "::device::PlatformSensorConfiguration"
},
{
mojom = "device.mojom.SensorReadingRaw"
cpp = "::device::SensorReading"
},
]
traits_headers = [
"//services/device/public/cpp/generic_sensor/sensor_mojom_traits.h",
]
traits_sources = [
"//services/device/public/cpp/generic_sensor/sensor_mojom_traits.cc",
]
traits_public_deps = [
"//services/device/public/cpp/generic_sensor:sensor_configuration",
"//services/device/public/cpp/generic_sensor:sensor_reading",
]
},
]
public_deps = [ "//mojo/public/mojom/base" ]
}
mojom("usb") {
generate_java = true
sources = [
"usb_device.mojom",
"usb_enumeration_options.mojom",
"usb_manager.mojom",
"usb_manager_client.mojom",
]
public_deps = [
"//mojo/public/mojom/base",
"//url/mojom:url_mojom_gurl",
]
# USB Mojom interfaces are exposed publicly to layout tests which use
# prepackaged redistributable JS bindings. It is therefore not desirable to
# scramble these messages.
scramble_message_ids = false
# The blink variant of the usb mojom is depended on by the blink platform
# target. All blink variant mojoms use WTF types, which are part of the
# blink platform component. In order to avoid a dependency cycle, these
# targets must be part of that component.
export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
visibility_blink = [
":*",
"//ash/components/arc/mojom:mojom_blink",
"//third_party/blink/public/mojom/usb:usb_blink",
"//third_party/blink/renderer/modules/webusb",
"//chrome/browser/ui/webui/usb_internals:mojo_bindings_blink",
]
webui_module_path = "/"
# Generate legacy JS bindings in addition to WebUI TS bindings for Blink Web
# Tests.
generate_legacy_js_bindings = true
}
mojom("usb_test") {
generate_java = true
sources = [ "usb_manager_test.mojom" ]
public_deps = [ "//url/mojom:url_mojom_gurl" ]
webui_module_path = "/"
}
mojom("geoposition") {
generate_java = true
sources = [ "geoposition.mojom" ]
public_deps = [ "//mojo/public/mojom/base:base" ]
# The blink variant of the geoposition mojom is depended on by the blink
# platform target. All blink variant mojoms use WTF types, which are part of
# the blink platform component. In order to avoid a dependency cycle, these
# targets must be part of that component.
export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
webui_module_path = "/"
generate_legacy_js_bindings = true
}
mojom("geolocation_internals") {
sources = [ "geolocation_internals.mojom" ]
webui_module_path = "/"
public_deps = [
":geoposition",
"//mojo/public/mojom/base",
]
}