Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: content/renderer/media/media_stream_dispatcher.h

Issue 10830063: refactor EnumerateDevices to make it a persistent request. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_DISPATCHER_H_ 5 #ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_DISPATCHER_H_
6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_DISPATCHER_H_ 6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_DISPATCHER_H_
7 7
8 #include <list> 8 #include <list>
9 #include <map> 9 #include <map>
10 #include <string> 10 #include <string>
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 // Stop a started stream. Label is the label provided in OnStreamGenerated. 45 // Stop a started stream. Label is the label provided in OnStreamGenerated.
46 virtual void StopStream(const std::string& label); 46 virtual void StopStream(const std::string& label);
47 47
48 // Request to enumerate devices. 48 // Request to enumerate devices.
49 void EnumerateDevices( 49 void EnumerateDevices(
50 int request_id, 50 int request_id,
51 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler, 51 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler,
52 media_stream::MediaStreamType type, 52 media_stream::MediaStreamType type,
53 const GURL& security_origin); 53 const GURL& security_origin);
54 54
55 // Request to stop enumerating devices.
56 void StopEnumerateDevices(
57 int request_id,
58 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler);
59
55 // Request to open a device. 60 // Request to open a device.
56 void OpenDevice( 61 void OpenDevice(
57 int request_id, 62 int request_id,
58 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler, 63 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler,
59 const std::string& device_id, 64 const std::string& device_id,
60 media_stream::MediaStreamType type, 65 media_stream::MediaStreamType type,
61 const GURL& security_origin); 66 const GURL& security_origin);
62 67
63 // Close a started device. |label| is provided in OnDeviceOpened. 68 // Close a started device. |label| is provided in OnDeviceOpened.
64 void CloseDevice(const std::string& label); 69 void CloseDevice(const std::string& label);
(...skipping 11 matching lines...) Expand all
76 FRIEND_TEST_ALL_PREFIXES(MediaStreamDispatcherTest, BasicVideoDevice); 81 FRIEND_TEST_ALL_PREFIXES(MediaStreamDispatcherTest, BasicVideoDevice);
77 FRIEND_TEST_ALL_PREFIXES(MediaStreamDispatcherTest, TestFailure); 82 FRIEND_TEST_ALL_PREFIXES(MediaStreamDispatcherTest, TestFailure);
78 FRIEND_TEST_ALL_PREFIXES(MediaStreamDispatcherTest, CancelGenerateStream); 83 FRIEND_TEST_ALL_PREFIXES(MediaStreamDispatcherTest, CancelGenerateStream);
79 84
80 struct Request; 85 struct Request;
81 86
82 // Private class for keeping track of opened devices and who have 87 // Private class for keeping track of opened devices and who have
83 // opened it. 88 // opened it.
84 struct Stream; 89 struct Stream;
85 90
91 struct EnumerationRequest {
92 EnumerationRequest(
93 const base::WeakPtr<MediaStreamDispatcherEventHandler>& handler,
94 int request_id);
95
96 base::WeakPtr<MediaStreamDispatcherEventHandler> handler;
97 int request_id;
98 };
99
100 // List of requests made to EnumerateDevices.
101 typedef std::list<EnumerationRequest> EnumerationRequestList;
102
103 struct EnumerationState {
104 EnumerationState();
105
106 bool started;
107 int ipc_id;
108 std::string label;
109 bool cache_valid;
110 media_stream::StreamDeviceInfoArray cached_device;
111 EnumerationRequestList requests;
112 };
113
86 // Messages from the browser. 114 // Messages from the browser.
87 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 115 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
88 void OnStreamGenerated( 116 void OnStreamGenerated(
89 int request_id, 117 int request_id,
90 const std::string& label, 118 const std::string& label,
91 const media_stream::StreamDeviceInfoArray& audio_array, 119 const media_stream::StreamDeviceInfoArray& audio_array,
92 const media_stream::StreamDeviceInfoArray& video_array); 120 const media_stream::StreamDeviceInfoArray& video_array);
93 void OnStreamGenerationFailed(int request_id); 121 void OnStreamGenerationFailed(int request_id);
94 void OnVideoDeviceFailed(const std::string& label, int index); 122 void OnVideoDeviceFailed(const std::string& label, int index);
95 void OnAudioDeviceFailed(const std::string& label, int index); 123 void OnAudioDeviceFailed(const std::string& label, int index);
96 void OnDevicesEnumerated( 124 void OnDevicesEnumerated(
97 int request_id, 125 int request_id,
126 const std::string& label,
98 const media_stream::StreamDeviceInfoArray& device_array); 127 const media_stream::StreamDeviceInfoArray& device_array);
99 void OnDevicesEnumerationFailed(int request_id); 128 void OnDevicesEnumerationFailed(int request_id);
100 void OnDeviceOpened( 129 void OnDeviceOpened(
101 int request_id, 130 int request_id,
102 const std::string& label, 131 const std::string& label,
103 const media_stream::StreamDeviceInfo& device_info); 132 const media_stream::StreamDeviceInfo& device_info);
104 void OnDeviceOpenFailed(int request_id); 133 void OnDeviceOpenFailed(int request_id);
105 134
135 bool RemoveEnumerationRequest(
136 int request_id,
137 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler,
138 EnumerationState* state);
139
106 int next_ipc_id_; 140 int next_ipc_id_;
107 typedef std::map<std::string, Stream> LabelStreamMap; 141 typedef std::map<std::string, Stream> LabelStreamMap;
108 LabelStreamMap label_stream_map_; 142 LabelStreamMap label_stream_map_;
109 143
144 EnumerationState audio_enumeration_state_;
145 EnumerationState video_enumeration_state_;
146
110 // List of calls made to GenerateStream that has not yet completed. 147 // List of calls made to GenerateStream that has not yet completed.
111 typedef std::list<Request> RequestList; 148 typedef std::list<Request> RequestList;
112 RequestList requests_; 149 RequestList requests_;
113 150
114 DISALLOW_COPY_AND_ASSIGN(MediaStreamDispatcher); 151 DISALLOW_COPY_AND_ASSIGN(MediaStreamDispatcher);
115 }; 152 };
116 153
117 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_DISPATCHER_H_ 154 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_DISPATCHER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698