| Index: content/renderer/media/media_stream_dispatcher.h
|
| ===================================================================
|
| --- content/renderer/media/media_stream_dispatcher.h (revision 150440)
|
| +++ content/renderer/media/media_stream_dispatcher.h (working copy)
|
| @@ -11,12 +11,17 @@
|
|
|
| #include "base/basictypes.h"
|
| #include "base/gtest_prod_util.h"
|
| -#include "base/message_loop.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "base/memory/weak_ptr.h"
|
| #include "content/common/content_export.h"
|
| #include "content/common/media/media_stream_options.h"
|
| #include "content/public/renderer/render_view_observer.h"
|
| #include "content/renderer/media/media_stream_dispatcher_eventhandler.h"
|
|
|
| +namespace base {
|
| +class MessageLoopProxy;
|
| +}
|
| +
|
| class RenderViewImpl;
|
|
|
| // MediaStreamDispatcher is a delegate for the Media Stream API messages.
|
| @@ -52,6 +57,11 @@
|
| media_stream::MediaStreamType type,
|
| const GURL& security_origin);
|
|
|
| + // Request to stop enumerating devices.
|
| + void StopEnumerateDevices(
|
| + int request_id,
|
| + const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler);
|
| +
|
| // Request to open a device.
|
| void OpenDevice(
|
| int request_id,
|
| @@ -83,6 +93,31 @@
|
| // opened it.
|
| struct Stream;
|
|
|
| + struct EnumerationRequest {
|
| + EnumerationRequest(
|
| + const base::WeakPtr<MediaStreamDispatcherEventHandler>& handler,
|
| + int request_id);
|
| + ~EnumerationRequest();
|
| +
|
| + base::WeakPtr<MediaStreamDispatcherEventHandler> handler;
|
| + int request_id;
|
| + };
|
| +
|
| + // List of requests made to EnumerateDevices.
|
| + typedef std::list<EnumerationRequest> EnumerationRequestList;
|
| +
|
| + struct EnumerationState {
|
| + EnumerationState();
|
| + ~EnumerationState();
|
| +
|
| + struct CachedDevices;
|
| +
|
| + // If |ipc_id| >= 0, then we've started.
|
| + int ipc_id;
|
| + scoped_ptr<CachedDevices> cached_devices;
|
| + EnumerationRequestList requests;
|
| + };
|
| +
|
| // Messages from the browser.
|
| virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
|
| void OnStreamGenerated(
|
| @@ -95,6 +130,7 @@
|
| void OnAudioDeviceFailed(const std::string& label, int index);
|
| void OnDevicesEnumerated(
|
| int request_id,
|
| + const std::string& label,
|
| const media_stream::StreamDeviceInfoArray& device_array);
|
| void OnDevicesEnumerationFailed(int request_id);
|
| void OnDeviceOpened(
|
| @@ -103,10 +139,21 @@
|
| const media_stream::StreamDeviceInfo& device_info);
|
| void OnDeviceOpenFailed(int request_id);
|
|
|
| + void RemoveEnumerationRequest(
|
| + int request_id,
|
| + const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler,
|
| + EnumerationState* state);
|
| +
|
| + // Used for DCHECKs so methods calls won't execute in the wrong thread.
|
| + scoped_refptr<base::MessageLoopProxy> main_loop_;
|
| +
|
| int next_ipc_id_;
|
| typedef std::map<std::string, Stream> LabelStreamMap;
|
| LabelStreamMap label_stream_map_;
|
|
|
| + EnumerationState audio_enumeration_state_;
|
| + EnumerationState video_enumeration_state_;
|
| +
|
| // List of calls made to GenerateStream that has not yet completed.
|
| typedef std::list<Request> RequestList;
|
| RequestList requests_;
|
|
|