blob: d53232e580266f2337d724cee50c8786666f33b9 [file] [log] [blame]
guidou9357cc52016-10-11 19:53:361// Copyright 2016 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5module mojom;
6
7import "url/mojo/origin.mojom";
8
9[Native]
10enum MediaDeviceType;
11
12[Native]
13struct MediaDeviceInfo;
14
15// This object lives in the browser and is responsible for processing device
guidou57409ac2016-11-07 17:39:3116// enumeration requests and managing subscriptions for device-change
17// notifications.
guidou9357cc52016-10-11 19:53:3618interface MediaDevicesDispatcherHost {
19 // The reply always contains NUM_MEDIA_DEVICE_TYPES elements.
20 // The result is indexed by device type as defined in
21 // content/common/media/media_devices.h.
22 EnumerateDevices(bool request_audio_input,
23 bool request_video_input,
24 bool request_audio_output,
25 url.mojom.Origin security_origin)
26 => (array<array<MediaDeviceInfo>> enumeration);
guidou57409ac2016-11-07 17:39:3127
28 // Creates a subscription for device-change notifications for the calling
29 // frame/security origin. It is the responsibility of the caller to send
30 // |subscription_id| values that are unique per device type.
31 // Requests to create a subscription with an ID that already exists for type
32 // |type| are invalid and result in a renderer crash.
33 SubscribeDeviceChangeNotifications(MediaDeviceType type,
34 uint32 subscription_id,
35 url.mojom.Origin security_origin);
36
37 // Removes a subscription to device-change notifications for the calling
38 // frame. The caller is responsible for sending |subscription_id| values that
39 // that refer to existing subscriptions for type |type|. Requests to remove
40 // a nonexisting subscription with are invalid and result in a renderer crash.
41 UnsubscribeDeviceChangeNotifications(MediaDeviceType type,
42 uint32 subscription_id);
43};
44
45// This object lives in the renderer process and is used by the browser process
46// to pass device-change notifications to the renderer.
47interface MediaDevicesListener {
48 // Called to notify a change in the set of devices of type |type| for
49 // subscription |subscription_id|. |device_infos| contains the new list of
50 // devices of type |type|, with device and group IDs obfuscated according to
51 // the subscription's security origin.
52 OnDevicesChanged(MediaDeviceType type,
53 uint32 subscription_id,
54 array<MediaDeviceInfo> device_infos);
guidou9357cc52016-10-11 19:53:3655};