Chromium Code Reviews| Index: content/public/browser/media_capture_devices.h |
| diff --git a/content/public/browser/media_capture_devices.h b/content/public/browser/media_capture_devices.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5a62ca53033a7cc192475ffa6fb6962f57e67709 |
| --- /dev/null |
| +++ b/content/public/browser/media_capture_devices.h |
| @@ -0,0 +1,59 @@ |
| +// Copyright 2014 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 CONTENT_PUBLIC_BROWSER_MEDIA_CAPTURE_DEVICES_H_ |
| +#define CONTENT_PUBLIC_BROWSER_MEDIA_CAPTURE_DEVICES_H_ |
| + |
| +#include "content/public/common/media_stream_request.h" |
| + |
| +namespace content { |
| + |
| +// This is a singleton class, used to get Audio/Video devices, it also provides |
| +// observer interface to notify the change of devices. |
| +CONTENT_EXPORT class MediaCaptureDevices { |
| + public: |
| + class Observer { |
|
jam
2014/03/05 08:45:04
i probably wasn't clear in the email thread, sorry
michaelbai
2014/03/05 21:55:46
Done.
|
| + public: |
| + // Handle an information update consisting of a up-to-date audio capture |
| + // device lists. This happens when a microphone is plugged in or unplugged. |
| + virtual void OnUpdateAudioDevices( |
| + const content::MediaStreamDevices& devices) {} |
| + |
| + // Handle an information update consisting of a up-to-date video capture |
| + // device lists. This happens when a camera is plugged in or unplugged. |
| + virtual void OnUpdateVideoDevices( |
| + const content::MediaStreamDevices& devices) {} |
| + |
| + virtual ~Observer() {} |
| + }; |
| + |
| + // Get signleton instance of MediaCaptureDevices. |
| + static MediaCaptureDevices* GetInstance(); |
| + |
| + // Add/Remove Observer must be called on UI thread. |
| + virtual void AddObserver(Observer* observer) = 0; |
| + virtual void RemoveObserver(Observer* observer) = 0; |
| + |
| + // Return all Audio/Video devices. |
| + virtual const MediaStreamDevices& GetAudioCaptureDevices() = 0; |
| + virtual const MediaStreamDevices& GetVideoCaptureDevices() = 0; |
| + |
| + // Only for testing, should be called in IO thread. |
| + virtual void SetAudioCaptureDevices(const MediaStreamDevices& devices) = 0; |
|
jam
2014/03/05 08:45:04
these test methods are called by chrome to fake th
michaelbai
2014/03/05 21:55:46
Done.
|
| + virtual void SetVideoCaptureDevices(const MediaStreamDevices& devices) = 0; |
| + // Unittests that do not require actual device enumeration should call this |
| + // API on the singleton. It is safe to call this multiple times on the |
| + // signleton. |
| + virtual void DisableDeviceEnumerationForTesting() = 0; |
| + |
| + private: |
| + // This interface should only be implemented inside content. |
| + friend class MediaCaptureDevicesImpl; |
| + MediaCaptureDevices() {} |
| + virtual ~MediaCaptureDevices() {} |
| +}; |
| + |
| +} // namespace content |
| + |
| +#endif // CONTENT_PUBLIC_BROWSER_MEDIA_CAPTURE_DEVICES_H_ |