1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
ash / components / arc / mojom / usb_host.mojom [blame]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Next MinVersion: 4
module arc.mojom;
// re-use device.mojom.UsbDeviceInfo
import "services/device/public/mojom/usb_device.mojom";
// Deprecated method IDs: 0
// Next method ID: 4
interface UsbHostHost {
// Tries to open the USB device node for the device named 'guid' for caller
// 'pkg_name' and returns an open file descriptor to this node. 'pkg_name'
// needs to have previously called RequestPermission for this 'guid' else this
// call will fail. Note the 'pkg_name' is informational purposes only, there
// is no effective way that host can restrict access to only a specific
// package at the security boundary formed by this Mojo interface.
// When app tries to open a device without requesting permission, or
// permission_broker rejects the open request, empty handle will be returned.
[MinVersion=3] OpenDevice@3(string guid, string? pkg_name) =>
(handle? usb_fd);
// Returns the USB device descriptors for the device named 'guid'.
GetDeviceInfo@1(string guid) => (string device_name,
device.mojom.UsbDeviceInfo info);
// Asks for the permission to access the USB device called 'guid',
// if 'guid' is an empty string, requests the permission to list USB devices
// instead.
// if the permission hasn't successfully obtained in the past, this will
// trigger a UI pop-up requesting the user authorization on the behalf of
// the package 'pkg_name' if 'interactive' is set to true, or fail
// immediately.
RequestPermission@2(string guid, string pkg_name, bool interactive)
=> (bool authorized);
};
// Next method ID: 3
interface UsbHostInstance {
// Establishes full-duplex communication with the host.
Init@0(pending_remote<UsbHostHost> host_remote) => ();
// Notifies the instance of a new USB device.
// Only packages in |event_receiver_packages| will receive broadcast.
OnDeviceAdded@1(string guid,
[MinVersion=2] array<string>? event_receiver_packages);
// Notifies the instance of the removal of a USB device.
// Only packages in |event_receiver_packages| will receive broadcast.
OnDeviceRemoved@2(string guid,
[MinVersion=2] array<string>? event_receiver_packages);
};