chromium/services/device/public/mojom/device_service.mojom

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module device.mojom;

import "services/device/public/mojom/battery_monitor.mojom";
import "services/device/public/mojom/fingerprint.mojom";
import "services/device/public/mojom/geolocation_config.mojom";
import "services/device/public/mojom/geolocation_context.mojom";
import "services/device/public/mojom/geolocation_control.mojom";
import "services/device/public/mojom/geolocation_internals.mojom";
import "services/device/public/mojom/power_monitor.mojom";
import "services/device/public/mojom/public_ip_address_geolocation_provider.mojom";
import "services/device/public/mojom/screen_orientation.mojom";
import "services/device/public/mojom/sensor_provider.mojom";
import "services/device/public/mojom/serial.mojom";
import "services/device/public/mojom/time_zone_monitor.mojom";
import "services/device/public/mojom/usb_manager.mojom";
import "services/device/public/mojom/usb_manager_test.mojom";
import "services/device/public/mojom/vibration_manager.mojom";
import "services/device/public/mojom/wake_lock_provider.mojom";

[EnableIf=is_android]
import "services/device/public/mojom/nfc_provider.mojom";

[EnableIf=is_chromeos_ash]
import "services/device/public/mojom/mtp_manager.mojom";

[EnableIf=enable_hid]
import "services/device/public/mojom/hid.mojom";

[EnableIf=enable_compute_pressure]
import "services/device/public/mojom/pressure_manager.mojom";

[EnableIf=enable_input_device_manager]
import "services/device/public/mojom/input_service.mojom";

// The main interface to the Device Service. This is bound only by the browser
// process and is used to broker connections to more specific device APIs.
interface DeviceService {

  // Binds a Fingerprint endpoint.
  BindFingerprint(pending_receiver<Fingerprint> receiver);

  // Binds a GeolocationConfig endpoint.
  BindGeolocationConfig(pending_receiver<GeolocationConfig> receiver);

  // Binds a GeolocationContext endpoint.
  BindGeolocationContext(pending_receiver<GeolocationContext> receiver);

  // Binds a GeolocationContext endpoint.
  BindGeolocationControl(pending_receiver<GeolocationControl> receiver);

  // Binds a GeolocationInternals endpoint.
  BindGeolocationInternals(pending_receiver<GeolocationInternals> receiver);

  // Binds a InputDeviceManager endpoint.
  [EnableIf=enable_input_device_manager]
  BindInputDeviceManager(pending_receiver<InputDeviceManager> receiver);

  // Binds a BatteryMonitor endpoint.
  BindBatteryMonitor(pending_receiver<BatteryMonitor> receiver);

  // Binds a PressureManager endpoint.
  [EnableIf=enable_compute_pressure]
  BindPressureManager(pending_receiver<PressureManager> receiver);

  // Binds a NFCProvider endpoint.
  [EnableIf=is_android]
  BindNFCProvider(pending_receiver<NFCProvider> receiver);

  // Binds a VibrationManager endpoint and a VibrationManagerListener endpoint.
  BindVibrationManager(pending_receiver<VibrationManager> receiver,
                       pending_remote<VibrationManagerListener> listener);

  // Binds a HidManager endpoint.
  [EnableIf=enable_hid]
  BindHidManager(pending_receiver<HidManager> receiver);

  // Binds a MtpManager endpoint.
  [EnableIf=is_chromeos_ash]
  BindMtpManager(pending_receiver<MtpManager> receiver);

  // Binds a PowerMonitor endpoint.
  BindPowerMonitor(pending_receiver<PowerMonitor> receiver);

  // Binds a BindPublicIpAddressGeolocationProviderReceiver endpoint.
  BindPublicIpAddressGeolocationProvider(
      pending_receiver<PublicIpAddressGeolocationProvider> receiver);

  // Binds a ScreenOrientationListener endpoint.
  BindScreenOrientationListener(
      pending_receiver<ScreenOrientationListener> receiver);

  // Binds a SensorProvider endpoint.
  BindSensorProvider(pending_receiver<SensorProvider> receiver);

  // binds a SerialPortManager endpoint.
  BindSerialPortManager(pending_receiver<SerialPortManager> receiver);

  // Binds a TimeZoneMonitor endpoint.
  BindTimeZoneMonitor(pending_receiver<TimeZoneMonitor> receiver);

  // Binds a WakeLockProvider endpoint.
  BindWakeLockProvider(pending_receiver<WakeLockProvider> receiver);

  // Binds a UsbDeviceManager endpoint.
  BindUsbDeviceManager(pending_receiver<UsbDeviceManager> receiver);

  // Binds a UsbDeviceManagerTest endpoint.
  BindUsbDeviceManagerTest(pending_receiver<UsbDeviceManagerTest> receiver);
};