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

Unified Diff: content/browser/renderer_host/media/media_devices_dispatcher_host.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_dispatcher_host.h
diff --git a/content/browser/renderer_host/media/media_devices_dispatcher_host.h b/content/browser/renderer_host/media/media_devices_dispatcher_host.h
index 9302e1304c31798dc0d2e4f05830ecd6e4e6b674..46d8b4cb9aadda610364a8750bec732fbce7a429 100644
--- a/content/browser/renderer_host/media/media_devices_dispatcher_host.h
+++ b/content/browser/renderer_host/media/media_devices_dispatcher_host.h
@@ -7,6 +7,7 @@
#include <memory>
#include <string>
+#include <vector>
#include "base/macros.h"
#include "content/browser/media/media_devices_permission_checker.h"
@@ -25,16 +26,17 @@ namespace content {
class MediaStreamManager;
class CONTENT_EXPORT MediaDevicesDispatcherHost
- : public ::mojom::MediaDevicesDispatcherHost {
+ : public ::mojom::MediaDevicesDispatcherHost,
+ public MediaDeviceChangeSubscriber {
public:
MediaDevicesDispatcherHost(int render_process_id,
- int routing_id,
+ int render_frame_id,
const std::string& device_id_salt,
MediaStreamManager* media_stream_manager);
~MediaDevicesDispatcherHost() override;
static void Create(int render_process_id,
- int routing_id,
+ int render_frame_id,
const std::string& device_id_salt,
MediaStreamManager* media_stream_manager,
::mojom::MediaDevicesDispatcherHostRequest request);
@@ -46,10 +48,23 @@ class CONTENT_EXPORT MediaDevicesDispatcherHost
bool request_audio_output,
const url::Origin& security_origin,
const EnumerateDevicesCallback& client_callback) override;
+ void SubscribeDeviceChangeNotifications(
+ MediaDeviceType type,
+ uint32_t subscription_id,
+ const url::Origin& security_origin) override;
+ void UnsubscribeDeviceChangeNotifications(MediaDeviceType type,
+ uint32_t subscription_id) override;
+
+ // MediaDeviceChangeSubscriber implementation.
+ void OnDevicesChanged(MediaDeviceType type,
+ const MediaDeviceInfoArray& device_infos) override;
void SetPermissionChecker(
const MediaDevicesPermissionChecker& permission_checker);
+ void SetDeviceChangeListenerForTesting(
+ ::mojom::MediaDevicesListenerPtr listener);
+
private:
void DoEnumerateDevices(
const MediaDevicesManager::BoolDeviceTypes& requested_types,
@@ -64,12 +79,26 @@ class CONTENT_EXPORT MediaDevicesDispatcherHost
const MediaDevicesManager::BoolDeviceTypes& has_permissions,
const MediaDeviceEnumeration& enumeration);
- int render_process_id_;
- int routing_id_;
- std::string device_id_salt_;
- std::string group_id_salt_;
+ struct SubscriptionInfo;
+ void NotifyDeviceChangeOnUIThread(
+ const std::vector<SubscriptionInfo>& subscriptions,
+ MediaDeviceType type,
+ const MediaDeviceInfoArray& device_infos);
+
+ // The following const fields can be accessed on any thread.
+ const int render_process_id_;
+ const int render_frame_id_;
+ const std::string device_id_salt_;
+ const std::string group_id_salt_;
+
+ // The following fields can only be accessed on the IO thread.
MediaStreamManager* media_stream_manager_;
MediaDevicesPermissionChecker permission_checker_;
+ std::vector<SubscriptionInfo>
+ device_change_subscriptions_[NUM_MEDIA_DEVICE_TYPES];
+
+ // This field can only be accessed on the UI thread.
+ ::mojom::MediaDevicesListenerPtr device_change_listener_;
base::WeakPtrFactory<MediaDevicesDispatcherHost> weak_factory_;

Powered by Google App Engine
This is Rietveld 408576698