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 c1206c02ad0becdf8a07b8491467194a883bd558..670cc04078b1f7be771a61c9358888029f0137e8 100644 |
| --- a/content/renderer/media/media_stream_impl.h |
| +++ b/content/renderer/media/media_stream_impl.h |
| @@ -21,6 +21,7 @@ |
| #include "base/threading/thread.h" |
| #include "content/common/content_export.h" |
| #include "content/public/renderer/render_view_observer.h" |
| +#include "content/renderer/media/media_stream_extra_data.h" |
| #include "content/renderer/media/media_stream_dispatcher_eventhandler.h" |
| #include "content/renderer/media/rtc_video_decoder.h" |
| #include "third_party/libjingle/source/talk/app/webrtc/mediastream.h" |
| @@ -87,11 +88,13 @@ class CONTENT_EXPORT MediaStreamImpl |
| WebKit::WebPeerConnectionHandlerClient* client); |
| virtual WebKit::WebPeerConnection00Handler* CreatePeerConnectionHandlerJsep( |
| WebKit::WebPeerConnection00HandlerClient* client); |
| - virtual void ClosePeerConnection(PeerConnectionHandlerBase* pc_handler); |
| - virtual webrtc::LocalMediaStreamInterface* GetLocalMediaStream( |
| + virtual void StopLocalMediaStream( |
| const WebKit::WebMediaStreamDescriptor& stream); |
| - bool StopLocalMediaStream(const WebKit::WebMediaStreamDescriptor& stream); |
| + // A new MediaStream have been created based on existing tracks. |
| + virtual void CreateMediaStream( |
| + WebKit::WebFrame* frame, |
| + WebKit::WebMediaStreamDescriptor* stream); |
| // WebKit::WebUserMediaClient implementation |
| virtual void requestUserMedia( |
| @@ -133,11 +136,16 @@ class CONTENT_EXPORT MediaStreamImpl |
| // content::RenderViewObserver OVERRIDE |
| virtual void FrameWillClose(WebKit::WebFrame* frame) OVERRIDE; |
| - private: |
| - FRIEND_TEST_ALL_PREFIXES(MediaStreamImplTest, Basic); |
| - FRIEND_TEST_ALL_PREFIXES(MediaStreamImplTest, MultiplePeerConnections); |
| - FRIEND_TEST_ALL_PREFIXES(MediaStreamImplTest, LocalMediaStream); |
| + protected: |
| + // This function is virtual for test purposes. A test can override this to |
| + // test requesting local media streams. |
| + virtual void CompleteGetUserMediaRequest( |
| + const WebKit::WebMediaStreamDescriptor& stream, |
| + WebKit::WebUserMediaRequest* request); |
|
tommi (sloooow) - chröme
2012/05/13 20:08:46
strange indent
perkj_chrome
2012/05/14 11:50:25
Done.
|
| + // This function is virtual for test purposes. |
| + virtual WebKit::WebMediaStreamDescriptor GetMediaStream(const GURL& url); |
| + private: |
| class VideoRendererWrapper : public webrtc::VideoRendererWrapperInterface { |
| public: |
| explicit VideoRendererWrapper(RTCVideoDecoder* decoder); |
| @@ -164,23 +172,11 @@ class CONTENT_EXPORT MediaStreamImpl |
| }; |
| typedef std::map<int, UserMediaRequestInfo> MediaRequestMap; |
| - // We keep a list of the generated local media streams, |
| - // so that we can enable and disable individual tracks and add renderers |
| - // when needed. |
| + // We keep a list of the label and WebFrame of generated local media streams, |
| + // so that we can stop them when needed. |
| + typedef std::map<std::string, WebKit::WebFrame*> LocalNativeStreamMap; |
| typedef talk_base::scoped_refptr<webrtc::LocalMediaStreamInterface> |
| - LocalMediaStreamPtr; |
| - struct LocalMediaStreamInfo { |
| - LocalMediaStreamInfo() : frame_(NULL), stream_() {} |
| - LocalMediaStreamInfo(WebKit::WebFrame* frame, |
| - webrtc::LocalMediaStreamInterface* stream) |
| - : frame_(frame), stream_(stream) {} |
| - ~LocalMediaStreamInfo(); |
| - // WebFrame that requested the Stream. |
| - WebKit::WebFrame* frame_; |
| - // Native representation of a local MediaStream. |
| - LocalMediaStreamPtr stream_; |
| - }; |
| - typedef std::map<std::string, LocalMediaStreamInfo> LocalNativeStreamMap; |
| + LocalNativeStreamPtr; |
| void InitializeWorkerThread(talk_base::Thread** thread, |
| base::WaitableEvent* event); |
| @@ -193,14 +189,13 @@ class CONTENT_EXPORT MediaStreamImpl |
| PeerConnectionHandlerBase* FindPeerConnectionByStream( |
| const WebKit::WebMediaStreamDescriptor& stream); |
| scoped_refptr<media::VideoDecoder> CreateLocalVideoDecoder( |
| - webrtc::LocalMediaStreamInterface* stream, |
| + webrtc::MediaStreamInterface* stream, |
| media::MessageLoopFactory* message_loop_factory); |
| scoped_refptr<media::VideoDecoder> CreateRemoteVideoDecoder( |
| - const WebKit::WebMediaStreamDescriptor& stream, |
| - PeerConnectionHandlerBase* pc_handler, |
| + webrtc::MediaStreamInterface* stream, |
| const GURL& url, |
| media::MessageLoopFactory* message_loop_factory); |
| - void CreateNativeLocalMediaStream( |
| + LocalNativeStreamPtr CreateNativeLocalMediaStream( |
| const std::string& label, |
| WebKit::WebFrame* frame, |
| const WebKit::WebVector<WebKit::WebMediaStreamSource>& audio_sources, |
| @@ -222,11 +217,6 @@ class CONTENT_EXPORT MediaStreamImpl |
| scoped_ptr<content::IpcPacketSocketFactory> socket_factory_; |
| scoped_refptr<VideoCaptureImplManager> vc_manager_; |
| - // peer_connection_handlers_ contains raw references, owned by WebKit. A |
| - // pointer is valid until stop is called on the object (which will call |
| - // ClosePeerConnection on us and we remove the pointer). |
| - std::list<PeerConnectionHandlerBase*> peer_connection_handlers_; |
| - |
| MediaRequestMap user_media_requests_; |
| LocalNativeStreamMap local_media_streams_; |