1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_CENTER_H_ 6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_CENTER_H_ 7 8 #include <map> 9 10 #include "base/basictypes.h" 11 #include "base/compiler_specific.h" 12 #include "content/common/content_export.h" 13 #include "content/common/media/media_stream_options.h" 14 #include "content/public/renderer/render_process_observer.h" 15 #include "third_party/WebKit/public/platform/WebMediaStream.h" 16 #include "third_party/WebKit/public/platform/WebMediaStreamCenter.h" 17 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" 18 19 namespace WebKit { 20 class WebMediaStreamCenterClient; 21 } 22 23 namespace content { 24 class MediaStreamDependencyFactory; 25 26 class CONTENT_EXPORT MediaStreamCenter 27 : NON_EXPORTED_BASE(public WebKit::WebMediaStreamCenter), 28 public RenderProcessObserver { 29 public: 30 MediaStreamCenter(WebKit::WebMediaStreamCenterClient* client, 31 MediaStreamDependencyFactory* factory); 32 virtual ~MediaStreamCenter(); 33 34 virtual bool getMediaStreamTrackSources( 35 const WebKit::WebMediaStreamTrackSourcesRequest& request); 36 37 virtual void didEnableMediaStreamTrack( 38 const WebKit::WebMediaStream& stream, 39 const WebKit::WebMediaStreamTrack& component); 40 41 virtual void didDisableMediaStreamTrack( 42 const WebKit::WebMediaStream& stream, 43 const WebKit::WebMediaStreamTrack& component); 44 45 virtual void didStopLocalMediaStream( 46 const WebKit::WebMediaStream& stream); 47 48 virtual void didCreateMediaStream( 49 WebKit::WebMediaStream& stream); 50 51 virtual bool didAddMediaStreamTrack( 52 const WebKit::WebMediaStream& stream, 53 const WebKit::WebMediaStreamTrack& track); 54 55 virtual bool didRemoveMediaStreamTrack( 56 const WebKit::WebMediaStream& stream, 57 const WebKit::WebMediaStreamTrack& track); 58 59 private: 60 // RenderProcessObserver implementation. 61 virtual bool OnControlMessageReceived(const IPC::Message& message) OVERRIDE; 62 63 void OnGetSourcesComplete(int request_id, 64 const content::StreamDeviceInfoArray& devices); 65 66 // |rtc_factory_| is a weak pointer and is owned by the RenderThreadImpl. 67 // It is valid as long as RenderThreadImpl exist. 68 MediaStreamDependencyFactory* rtc_factory_; 69 70 // A strictly increasing id that's used to label incoming GetSources() 71 // requests. 72 int next_request_id_; 73 74 typedef std::map<int, WebKit::WebMediaStreamTrackSourcesRequest> RequestMap; 75 // Maps request ids to request objects. 76 RequestMap requests_; 77 78 DISALLOW_COPY_AND_ASSIGN(MediaStreamCenter); 79 }; 80 81 } // namespace content 82 83 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_CENTER_H_ 84