Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1531)

Unified Diff: content/browser/renderer_host/media/media_devices_manager.h

Issue 2480203002: ui: Cleanup class/struct forward declarations (Closed)
Patch Set: Sync CL to position 430550 Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/media/media_devices_manager.h
diff --git a/content/browser/renderer_host/media/media_devices_manager.h b/content/browser/renderer_host/media/media_devices_manager.h
index 9610acbbaa7f47a940a9ffb0f8167a236cb50ed5..63b0040959f7bedf4693ce79d0ac9a0cc76c3c7b 100644
--- a/content/browser/renderer_host/media/media_devices_manager.h
+++ b/content/browser/renderer_host/media/media_devices_manager.h
@@ -29,6 +29,18 @@ class VideoCaptureManager;
using MediaDeviceEnumeration =
std::array<MediaDeviceInfoArray, NUM_MEDIA_DEVICE_TYPES>;
+// MediaDeviceChangeSubscriber is an interface to be implemented by classes
+// that can register with MediaDevicesManager to get notifications about changes
+// in the set of media devices.
+class CONTENT_EXPORT MediaDeviceChangeSubscriber {
+ public:
+ // This function is invoked to notify about changes in the set of media
+ // devices of type |type|. |device_infos| contains the updated list of
+ // devices of type |type|.
+ virtual void OnDevicesChanged(MediaDeviceType type,
+ const MediaDeviceInfoArray& device_infos) = 0;
+};
+
// MediaDevicesManager is responsible for doing media-device enumerations.
// In addition it implements caching for enumeration results and device
// monitoring in order to keep caches consistent.
@@ -63,6 +75,22 @@ class CONTENT_EXPORT MediaDevicesManager
void EnumerateDevices(const BoolDeviceTypes& requested_types,
const EnumerationCallback& callback);
+ // Subscribes |subscriber| to receive device-change notifications for devices
+ // of type |type|. If |subscriber| is already subscribed, this function has
+ // no side effects. MediaDevicesManager does not own |subscriber|. It is the
+ // responsibility of the caller to ensure that all registered subscribers
+ // remain valid while the they are subscribed.
+ void SubscribeDeviceChangeNotifications(
+ MediaDeviceType type,
+ MediaDeviceChangeSubscriber* subscriber);
+
+ // Unubscribes |subscriber| from device-change notifications for the devices
+ // of type |type|. If |subscriber| is not subscribed, this function has no
+ // side effects.
+ void UnsubscribeDeviceChangeNotifications(
+ MediaDeviceType type,
+ MediaDeviceChangeSubscriber* subscriber);
+
// Tries to start device monitoring. If successful, enables caching of
// enumeration results for the device types supported by the monitor.
void StartMonitoring();
@@ -145,6 +173,9 @@ class CONTENT_EXPORT MediaDevicesManager
MediaDeviceEnumeration current_snapshot_;
bool monitoring_started_;
+ std::vector<MediaDeviceChangeSubscriber*>
+ device_change_subscribers_[NUM_MEDIA_DEVICE_TYPES];
+
base::WeakPtrFactory<MediaDevicesManager> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(MediaDevicesManager);

Powered by Google App Engine
This is Rietveld 408576698