Chromium Code Reviews (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out

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

Issue 88283002: Reland review 34393006: Refactor MediaStreamManager to not output real device id. (Closed) Base URL: svn://
Patch Set: Rebase Created 7 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_stream_manager.h
diff --git a/content/browser/renderer_host/media/media_stream_manager.h b/content/browser/renderer_host/media/media_stream_manager.h
index d1b6ec245dd613828f316ff92f8de3cfc643765f..4df8957b24c7a3ace306669bb77ffcb1b81d7736 100644
--- a/content/browser/renderer_host/media/media_stream_manager.h
+++ b/content/browser/renderer_host/media/media_stream_manager.h
@@ -155,12 +155,19 @@ class CONTENT_EXPORT MediaStreamManager
// generated stream (or when using --use-fake-ui-for-media-stream).
void UseFakeUI(scoped_ptr<FakeMediaStreamUIProxy> fake_ui);
+ // Returns all devices currently opened by a request with label |label|.
+ // If no request with |label| exist, an empty array is returned.
+ StreamDeviceInfoArray GetDevicesOpenedByRequest(
+ const std::string& label) const;
// This object gets deleted on the UI thread after the IO thread has been
// destroyed. So we need to know when IO thread is being destroyed so that
- // we can delete VideoCaptureManager and AudioInputDeviceManager.
- // We also must call this function explicitly in tests which use
- // TestBrowserThreadBundle, because the notification happens too late in that
- // case (see
+ // we can delete VideoCaptureManager and AudioInputDeviceManager. Normally
+ // this is handled by
+ // base::MessageLoop::DestructionObserver::WillDestroyCurrentMessageLoop.
+ // But for some tests which use TestBrowserThreadBundle, we need to call
+ // WillDestroyCurrentMessageLoop explicitly because the notification happens
+ // too late. (see
virtual void WillDestroyCurrentMessageLoop() OVERRIDE;
@@ -168,8 +175,6 @@ class CONTENT_EXPORT MediaStreamManager
- friend class MockMediaStreamDispatcherHost;
// Contains all data needed to keep track of requests.
class DeviceRequest;
@@ -193,11 +198,12 @@ class CONTENT_EXPORT MediaStreamManager
void NotifyDevicesChanged(MediaStreamType stream_type,
const StreamDeviceInfoArray& devices);
void HandleAccessRequestResponse(const std::string& label,
const MediaStreamDevices& devices);
void StopMediaStreamFromBrowser(const std::string& label);
+ void DoEnumerateDevices(const std::string& label);
// Helpers.
// Checks if all devices that was requested in the request identififed by
// |label| has been opened and set the request state accordingly.
@@ -216,23 +222,41 @@ class CONTENT_EXPORT MediaStreamManager
MediaStreamProvider* GetDeviceManager(MediaStreamType stream_type);
void StartEnumeration(DeviceRequest* request);
std::string AddRequest(DeviceRequest* request);
- void RemoveRequest(DeviceRequests::iterator it);
+ DeviceRequest* FindRequest(const std::string& label) const;
+ void DeleteRequest(const std::string& label);
void ClearEnumerationCache(EnumerationCache* cache);
- void PostRequestToUI(const std::string& label);
- void HandleRequest(const std::string& label);
+ // Prepare the request with label |label| by starting device enumeration if
+ // needed.
+ void SetupRequest(const std::string& label);
+ bool SetupTabCaptureRequest(DeviceRequest* request);
+ bool SetupScreenCaptureRequest(DeviceRequest* request);
+ // Called when a request has been setup and devices have been enumerated if
+ // needed. If a certain source id has been requested, the source id is
+ // translated to a real device id before the request is posted to UI.
+ void PostRequestToUI(const std::string& label, DeviceRequest* request);
// Returns true if a device with |device_id| has already been requested by
// |render_process_id| and |render_view_id| of type |type|. If it has been
- // requested, |device_info| contain information about the the device.
+ // requested, |device_info| contain information about the device.
bool FindExistingRequestedDeviceInfo(int render_process_id,
int render_view_id,
+ const GURL& security_origin,
MediaStreamRequestType type,
const std::string& device_id,
+ MediaStreamType device_type,
StreamDeviceInfo* device_info,
MediaRequestState* request_state) const;
- // Sends cached device list to a client corresponding to the request
- // identified by |label|.
- void SendCachedDeviceList(EnumerationCache* cache, const std::string& label);
+ void FinalizeGenerateStream(const std::string& label,
+ DeviceRequest* request);
+ void FinalizeRequestFailed(const std::string& label,
+ DeviceRequest* request);
+ void FinalizeOpenDevice(const std::string& label,
+ DeviceRequest* request);
+ void FinalizeMediaAccessRequest(const std::string& label,
+ DeviceRequest* request,
+ const MediaStreamDevices& devices);
+ void FinalizeEnumerateDevices(const std::string& label,
+ DeviceRequest* request);
// This method is called when an audio or video device is plugged in or
// removed. It make sure all MediaStreams that use a removed device is
@@ -249,14 +273,18 @@ class CONTENT_EXPORT MediaStreamManager
void StartMonitoring();
void StopMonitoring();
- // Finds and returns the raw device id corresponding to the given
- // |device_guid|. Returns true if there was a raw device id that matched the
- // given |device_guid|, false if nothing matched it.
- bool TranslateGUIDToRawId(
+ bool TranslateRequestedSourceIdToDeviceId(MediaStreamRequest* request);
+ void TranslateDeviceIdToSourceId(const MediaStreamRequest& request,
+ MediaStreamDevice* device);
+ // Finds and returns the device id corresponding to the given
+ // |source_id|. Returns true if there was a raw device id that matched the
+ // given |source_id|, false if nothing matched it.
+ bool TranslateSourceIdToDeviceId(
MediaStreamType stream_type,
const GURL& security_origin,
- const std::string& device_guid,
- std::string* raw_device_id);
+ const std::string& source_id,
+ std::string* device_id);
// Device thread shared by VideoCaptureManager and AudioInputDeviceManager.
scoped_ptr<base::Thread> device_thread_;
@@ -280,15 +308,10 @@ class CONTENT_EXPORT MediaStreamManager
// All non-closed request.
DeviceRequests requests_;
- std::vector<int> opened_audio_session_ids_;
- std::vector<int> opened_video_session_ids_;
// Hold a pointer to the IO loop to check we delete the device thread and
// managers on the right thread.
base::MessageLoop* io_loop_;
- bool screen_capture_active_;
bool use_fake_ui_;
scoped_ptr<FakeMediaStreamUIProxy> fake_ui_;

Powered by Google App Engine
This is Rietveld 408576698