| 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..c6aa2638175b69790959fd28553753e7656d677a 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,14 @@ class CONTENT_EXPORT MediaStreamImpl
|
| WebKit::WebPeerConnectionHandlerClient* client);
|
| virtual WebKit::WebPeerConnection00Handler* CreatePeerConnectionHandlerJsep(
|
| WebKit::WebPeerConnection00HandlerClient* client);
|
| - virtual void ClosePeerConnection(PeerConnectionHandlerBase* pc_handler);
|
| -
|
| - virtual webrtc::LocalMediaStreamInterface* GetLocalMediaStream(
|
| + // Stops a local MediaStream by notifying the MediaStreamDispatcher that the
|
| + // stream no longer may be used.
|
| + 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 +137,18 @@ 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. The function notifies WebKit that the
|
| + // |request| have completed and generated the MediaStream |stream|.
|
| + virtual void CompleteGetUserMediaRequest(
|
| + const WebKit::WebMediaStreamDescriptor& stream,
|
| + WebKit::WebUserMediaRequest* request);
|
| + // This function is virtual for test purposes.
|
| + // Returns the WebKit representation of a MediaStream given an URL.
|
| + virtual WebKit::WebMediaStreamDescriptor GetMediaStream(const GURL& url);
|
|
|
| + private:
|
| class VideoRendererWrapper : public webrtc::VideoRendererWrapperInterface {
|
| public:
|
| explicit VideoRendererWrapper(RTCVideoDecoder* decoder);
|
| @@ -164,23 +175,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 +192,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 +220,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_;
|
|
|
|
|