Home | History | Annotate | Download | only in media
      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