| // Copyright 2019 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. |
| |
| #ifndef THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_MEDIASTREAM_WEB_MEDIA_STREAM_DEVICE_OBSERVER_H_ |
| #define THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_MEDIASTREAM_WEB_MEDIA_STREAM_DEVICE_OBSERVER_H_ |
| |
| #include <memory> |
| |
| #include "base/unguessable_token.h" |
| #include "third_party/blink/public/common/mediastream/media_stream_request.h" |
| #include "third_party/blink/public/platform/web_common.h" |
| #include "third_party/blink/public/platform/web_string.h" |
| |
| namespace blink { |
| |
| class MediaStreamDeviceObserver; |
| class WebLocalFrame; |
| |
| class BLINK_MODULES_EXPORT WebMediaStreamDeviceObserver { |
| public: |
| explicit WebMediaStreamDeviceObserver(WebLocalFrame* frame); |
| ~WebMediaStreamDeviceObserver(); |
| |
| MediaStreamDevices GetNonScreenCaptureDevices(); |
| |
| using OnDeviceStoppedCb = |
| base::RepeatingCallback<void(const MediaStreamDevice& device)>; |
| using OnDeviceChangedCb = |
| base::RepeatingCallback<void(const MediaStreamDevice& old_device, |
| const MediaStreamDevice& new_device)>; |
| using OnDeviceRequestStateChangeCb = base::RepeatingCallback<void( |
| const MediaStreamDevice& device, |
| const mojom::MediaStreamStateChange new_state)>; |
| void AddStream( |
| const WebString& label, |
| const MediaStreamDevices& audio_devices, |
| const MediaStreamDevices& video_devices, |
| OnDeviceStoppedCb on_device_stopped_cb, |
| OnDeviceChangedCb on_device_changed_cb, |
| OnDeviceRequestStateChangeCb on_device_request_state_change_cb); |
| void AddStream(const WebString& label, const MediaStreamDevice& device); |
| bool RemoveStream(const WebString& label); |
| void RemoveStreamDevice(const MediaStreamDevice& device); |
| |
| // Get the video session_id given a label. The label identifies a stream. |
| base::UnguessableToken GetVideoSessionId(const WebString& label); |
| // Returns an audio session_id given a label. |
| base::UnguessableToken GetAudioSessionId(const WebString& label); |
| |
| private: |
| std::unique_ptr<MediaStreamDeviceObserver> observer_; |
| }; |
| |
| } // namespace blink |
| |
| #endif // THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_MEDIASTREAM_WEB_MEDIA_STREAM_DEVICE_OBSERVER_H_ |