Chromium Code Reviews| Index: content/renderer/media/media_stream_impl.h |
| diff --git a/content/renderer/media/media_stream_impl.h b/content/renderer/media/media_stream_impl.h |
| index 8f72d2ba287f4b910a0a894091232bb29ebcbf63..e97dbcfe542654001851b2bef10f9224a6debddd 100644 |
| --- a/content/renderer/media/media_stream_impl.h |
| +++ b/content/renderer/media/media_stream_impl.h |
| @@ -30,7 +30,7 @@ namespace content { |
| class MediaStreamAudioRenderer; |
| class MediaStreamDependencyFactory; |
| class MediaStreamDispatcher; |
| -class MediaStreamSourceExtraData; |
| +class MediaStreamSource; |
| class WebRtcAudioRenderer; |
| class WebRtcLocalAudioRenderer; |
| @@ -92,19 +92,17 @@ class CONTENT_EXPORT MediaStreamImpl |
| virtual void FrameWillClose(blink::WebFrame* frame) OVERRIDE; |
| protected: |
| - void OnLocalSourceStop(const blink::WebMediaStreamSource& source); |
| + // Called when |source| has been stopped from JavaScript. |
| + void OnLocalSourceStopped(const blink::WebMediaStreamSource& source); |
| + // Called when a MediaStream with label |label| has been order to stop from |
|
Jói
2014/01/27 22:14:57
has been order -> has been ordered
perkj_chrome
2014/01/28 08:31:43
Done.
|
| + // JavaScript. The implementation must stop all sources that is not used by |
|
Jói
2014/01/27 22:14:57
sources that is -> sources that are
perkj_chrome
2014/01/28 08:31:43
Done.
|
| + // other MediaStreams. |
| + // TODO(perkj): MediaStream::Stop has been deprecated from the spec and all |
| + // applications should move to use MediaStreamTrack::Stop instead and this |
| + // method be removed. |
| void OnLocalMediaStreamStop(const std::string& label); |
| - // Callback function triggered when all native (libjingle) versions of the |
| - // underlying media sources have been created and started. |
| - // |web_stream| is a raw pointer to the web_stream in |
| - // UserMediaRequests::web_stream for which the underlying sources have been |
| - // created. |
| - void OnCreateNativeSourcesComplete( |
| - blink::WebMediaStream* web_stream, |
| - bool request_succeeded); |
| - |
| // This function is virtual for test purposes. A test can override this to |
| // test requesting local media streams. The function notifies WebKit that the |
| // |request| have completed and generated the MediaStream |stream|. |
| @@ -118,9 +116,14 @@ class CONTENT_EXPORT MediaStreamImpl |
| virtual blink::WebMediaStream GetMediaStream(const GURL& url); |
| private: |
| - // Structure for storing information about a WebKit request to create a |
| + // Class for storing information about a WebKit request to create a |
| // MediaStream. |
| - struct UserMediaRequestInfo { |
| + class UserMediaRequestInfo |
| + : public base::SupportsWeakPtr<UserMediaRequestInfo> { |
| + public: |
| + typedef base::Callback<void(UserMediaRequestInfo* request_info, |
| + bool request_succeeded)> ResourcesReady; |
| + |
| UserMediaRequestInfo(int request_id, |
| blink::WebFrame* frame, |
| const blink::WebUserMediaRequest& request, |
| @@ -134,7 +137,28 @@ class CONTENT_EXPORT MediaStreamImpl |
| blink::WebFrame* frame; // WebFrame that requested the MediaStream. |
| blink::WebMediaStream web_stream; |
| blink::WebUserMediaRequest request; |
| - std::vector<blink::WebMediaStreamSource> sources; |
| + |
| + void StartTrack(const blink::WebMediaStreamTrack& track, |
| + const blink::WebMediaConstraints& constraints); |
| + |
| + // Triggers |callback| when all sources used in this request has either |
|
Jói
2014/01/27 22:14:57
has either -> have either
perkj_chrome
2014/01/28 08:31:43
Done.
|
| + // successfully started, or a source has failed to start. |
| + void CallbackOnTracksStarted(const ResourcesReady& callback); |
| + |
| + bool IsSourceUsed(const blink::WebMediaStreamSource& source) const; |
| + void RemoveSource(const blink::WebMediaStreamSource& source); |
| + |
| + bool IsAllSourcesRemoved() const { return sources_.empty(); }; |
|
Jói
2014/01/27 22:14:57
Suggest renaming to AreAllSourcesRemoved
perkj_chrome
2014/01/28 08:31:43
Done.
|
| + |
| + private: |
| + void OnTrackStarted(MediaStreamSource* source, bool success); |
| + void CheckAllTracksStarted(); |
| + |
| + ResourcesReady ready_callback_; |
| + bool request_failed_; |
| + // Sources used in this request. |
| + std::vector<blink::WebMediaStreamSource> sources_; |
| + std::vector<MediaStreamSource*> sources_waiting_for_callback_; |
| }; |
| typedef ScopedVector<UserMediaRequestInfo> UserMediaRequests; |
| @@ -152,17 +176,33 @@ class CONTENT_EXPORT MediaStreamImpl |
| // Creates a WebKit representation of stream sources based on |
| // |devices| from the MediaStreamDispatcher. |
| - void CreateWebKitSourceVector( |
| - const std::string& label, |
| - const StreamDeviceInfoArray& devices, |
| + void InitializeSourceObject( |
| + const StreamDeviceInfo& device, |
| blink::WebMediaStreamSource::Type type, |
| + const blink::WebMediaConstraints& constraints, |
| blink::WebFrame* frame, |
| - blink::WebVector<blink::WebMediaStreamSource>& webkit_sources); |
| + blink::WebMediaStreamSource* webkit_source); |
| + |
| + void CreateVideoTracks( |
| + const StreamDeviceInfoArray& devices, |
| + const blink::WebMediaConstraints& constraints, |
| + blink::WebVector<blink::WebMediaStreamTrack>* webkit_tracks, |
| + UserMediaRequestInfo* request); |
| + |
| + void CreateAudioTracks( |
| + const StreamDeviceInfoArray& devices, |
| + const blink::WebMediaConstraints& constraints, |
| + blink::WebVector<blink::WebMediaStreamTrack>* webkit_tracks, |
| + UserMediaRequestInfo* request); |
| + |
| + // Callback function triggered when all native versions of the |
| + // underlying media sources and tracks have been created and started. |
| + void OnCreateNativeTracksCompleted( |
| + UserMediaRequestInfo* request, |
| + bool request_succeeded); |
| UserMediaRequestInfo* FindUserMediaRequestInfo(int request_id); |
| UserMediaRequestInfo* FindUserMediaRequestInfo( |
| - blink::WebMediaStream* web_stream); |
| - UserMediaRequestInfo* FindUserMediaRequestInfo( |
| const blink::WebUserMediaRequest& request); |
| UserMediaRequestInfo* FindUserMediaRequestInfo(const std::string& label); |
| void DeleteUserMediaRequestInfo(UserMediaRequestInfo* request); |
| @@ -173,7 +213,7 @@ class CONTENT_EXPORT MediaStreamImpl |
| const StreamDeviceInfo& device) const; |
| // Returns true if |source| exists in |user_media_requests_| |
| - bool FindSourceInRequests(const blink::WebMediaStreamSource& source) const; |
| + bool IsSourceInRequests(const blink::WebMediaStreamSource& source) const; |
| void StopLocalSource(const blink::WebMediaStreamSource& source, |
| bool notify_dispatcher); |