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_impl.h

Issue 391703002: Implement ConstraintNotSatisfiedError for getusermedia (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase and change the reviewers list Created 6 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
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_IMPL_H_ 5 #ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_
6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_ 6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 const blink::WebMediaDevicesRequest& media_devices_request) OVERRIDE; 66 const blink::WebMediaDevicesRequest& media_devices_request) OVERRIDE;
67 67
68 // MediaStreamDispatcherEventHandler implementation. 68 // MediaStreamDispatcherEventHandler implementation.
69 virtual void OnStreamGenerated( 69 virtual void OnStreamGenerated(
70 int request_id, 70 int request_id,
71 const std::string& label, 71 const std::string& label,
72 const StreamDeviceInfoArray& audio_array, 72 const StreamDeviceInfoArray& audio_array,
73 const StreamDeviceInfoArray& video_array) OVERRIDE; 73 const StreamDeviceInfoArray& video_array) OVERRIDE;
74 virtual void OnStreamGenerationFailed( 74 virtual void OnStreamGenerationFailed(
75 int request_id, 75 int request_id,
76 content::MediaStreamRequestResult result) OVERRIDE; 76 MediaStreamRequestResult result) OVERRIDE;
77 virtual void OnDeviceStopped(const std::string& label, 77 virtual void OnDeviceStopped(const std::string& label,
78 const StreamDeviceInfo& device_info) OVERRIDE; 78 const StreamDeviceInfo& device_info) OVERRIDE;
79 virtual void OnDevicesEnumerated( 79 virtual void OnDevicesEnumerated(
80 int request_id, 80 int request_id,
81 const StreamDeviceInfoArray& device_array) OVERRIDE; 81 const StreamDeviceInfoArray& device_array) OVERRIDE;
82 virtual void OnDeviceOpened( 82 virtual void OnDeviceOpened(
83 int request_id, 83 int request_id,
84 const std::string& label, 84 const std::string& label,
85 const StreamDeviceInfo& device_info) OVERRIDE; 85 const StreamDeviceInfo& device_info) OVERRIDE;
86 virtual void OnDeviceOpenFailed(int request_id) OVERRIDE; 86 virtual void OnDeviceOpenFailed(int request_id) OVERRIDE;
87 87
88 // RenderFrameObserver OVERRIDE 88 // RenderFrameObserver OVERRIDE
89 virtual void FrameWillClose() OVERRIDE; 89 virtual void FrameWillClose() OVERRIDE;
90 90
91 protected: 91 protected:
92 // Called when |source| has been stopped from JavaScript. 92 // Called when |source| has been stopped from JavaScript.
93 void OnLocalSourceStopped(const blink::WebMediaStreamSource& source); 93 void OnLocalSourceStopped(const blink::WebMediaStreamSource& source);
94 94
95 // These methods are virtual for test purposes. A test can override them to 95 // These methods are virtual for test purposes. A test can override them to
96 // test requesting local media streams. The function notifies WebKit that the 96 // test requesting local media streams. The function notifies WebKit that the
97 // |request| have completed. 97 // |request| have completed.
98 virtual void GetUserMediaRequestSucceeded( 98 virtual void GetUserMediaRequestSucceeded(
99 const blink::WebMediaStream& stream, 99 const blink::WebMediaStream& stream,
100 blink::WebUserMediaRequest* request_info); 100 blink::WebUserMediaRequest* request_info);
101 virtual void GetUserMediaRequestFailed( 101 virtual void GetUserMediaRequestFailed(
102 blink::WebUserMediaRequest* request_info, 102 blink::WebUserMediaRequest* request_info,
103 content::MediaStreamRequestResult result); 103 MediaStreamRequestResult result);
104 virtual void GetUserMediaRequestTrackStartedFailed(
105 blink::WebUserMediaRequest* request_info,
106 MediaStreamRequestResult result,
107 const blink::WebString& result_name);
104 virtual void EnumerateDevicesSucceded( 108 virtual void EnumerateDevicesSucceded(
105 blink::WebMediaDevicesRequest* request, 109 blink::WebMediaDevicesRequest* request,
106 blink::WebVector<blink::WebMediaDeviceInfo>& devices); 110 blink::WebVector<blink::WebMediaDeviceInfo>& devices);
107 // Creates a MediaStreamVideoSource object. 111 // Creates a MediaStreamVideoSource object.
108 // This is virtual for test purposes. 112 // This is virtual for test purposes.
109 virtual MediaStreamVideoSource* CreateVideoSource( 113 virtual MediaStreamVideoSource* CreateVideoSource(
110 const StreamDeviceInfo& device, 114 const StreamDeviceInfo& device,
111 const MediaStreamSource::SourceStoppedCallback& stop_callback); 115 const MediaStreamSource::SourceStoppedCallback& stop_callback);
112 116
113 private: 117 private:
114 // Class for storing information about a WebKit request to create a 118 // Class for storing information about a WebKit request to create a
115 // MediaStream. 119 // MediaStream.
116 class UserMediaRequestInfo 120 class UserMediaRequestInfo
117 : public base::SupportsWeakPtr<UserMediaRequestInfo> { 121 : public base::SupportsWeakPtr<UserMediaRequestInfo> {
118 public: 122 public:
119 typedef base::Callback<void(UserMediaRequestInfo* request_info, 123 typedef base::Callback<void(UserMediaRequestInfo* request_info,
120 content::MediaStreamRequestResult result)> 124 MediaStreamRequestResult result,
125 const blink::WebString& result_name)>
121 ResourcesReady; 126 ResourcesReady;
122 127
123 UserMediaRequestInfo(int request_id, 128 UserMediaRequestInfo(int request_id,
124 const blink::WebUserMediaRequest& request, 129 const blink::WebUserMediaRequest& request,
125 bool enable_automatic_output_device_selection); 130 bool enable_automatic_output_device_selection);
126 ~UserMediaRequestInfo(); 131 ~UserMediaRequestInfo();
127 int request_id; 132 int request_id;
128 // True if MediaStreamDispatcher has generated the stream, see 133 // True if MediaStreamDispatcher has generated the stream, see
129 // OnStreamGenerated. 134 // OnStreamGenerated.
130 bool generated; 135 bool generated;
(...skipping 11 matching lines...) Expand all
142 // Triggers |callback| when all sources used in this request have either 147 // Triggers |callback| when all sources used in this request have either
143 // successfully started, or a source has failed to start. 148 // successfully started, or a source has failed to start.
144 void CallbackOnTracksStarted(const ResourcesReady& callback); 149 void CallbackOnTracksStarted(const ResourcesReady& callback);
145 150
146 bool IsSourceUsed(const blink::WebMediaStreamSource& source) const; 151 bool IsSourceUsed(const blink::WebMediaStreamSource& source) const;
147 void RemoveSource(const blink::WebMediaStreamSource& source); 152 void RemoveSource(const blink::WebMediaStreamSource& source);
148 153
149 bool HasPendingSources() const; 154 bool HasPendingSources() const;
150 155
151 private: 156 private:
152 void OnTrackStarted(MediaStreamSource* source, bool success); 157 void OnTrackStarted(
158 MediaStreamSource* source,
159 MediaStreamRequestResult result,
160 const blink::WebString& result_name);
153 void CheckAllTracksStarted(); 161 void CheckAllTracksStarted();
154 162
155 ResourcesReady ready_callback_; 163 ResourcesReady ready_callback_;
156 bool request_failed_; 164 MediaStreamRequestResult request_result_;
165 blink::WebString request_result_name_;
157 // Sources used in this request. 166 // Sources used in this request.
158 std::vector<blink::WebMediaStreamSource> sources_; 167 std::vector<blink::WebMediaStreamSource> sources_;
159 std::vector<MediaStreamSource*> sources_waiting_for_callback_; 168 std::vector<MediaStreamSource*> sources_waiting_for_callback_;
160 }; 169 };
161 typedef ScopedVector<UserMediaRequestInfo> UserMediaRequests; 170 typedef ScopedVector<UserMediaRequestInfo> UserMediaRequests;
162 171
163 typedef std::vector<blink::WebMediaStreamSource> LocalStreamSources; 172 typedef std::vector<blink::WebMediaStreamSource> LocalStreamSources;
164 173
165 struct MediaDevicesRequestInfo; 174 struct MediaDevicesRequestInfo;
166 typedef ScopedVector<MediaDevicesRequestInfo> MediaDevicesRequests; 175 typedef ScopedVector<MediaDevicesRequestInfo> MediaDevicesRequests;
(...skipping 15 matching lines...) Expand all
182 void CreateAudioTracks( 191 void CreateAudioTracks(
183 const StreamDeviceInfoArray& devices, 192 const StreamDeviceInfoArray& devices,
184 const blink::WebMediaConstraints& constraints, 193 const blink::WebMediaConstraints& constraints,
185 blink::WebVector<blink::WebMediaStreamTrack>* webkit_tracks, 194 blink::WebVector<blink::WebMediaStreamTrack>* webkit_tracks,
186 UserMediaRequestInfo* request); 195 UserMediaRequestInfo* request);
187 196
188 // Callback function triggered when all native versions of the 197 // Callback function triggered when all native versions of the
189 // underlying media sources and tracks have been created and started. 198 // underlying media sources and tracks have been created and started.
190 void OnCreateNativeTracksCompleted( 199 void OnCreateNativeTracksCompleted(
191 UserMediaRequestInfo* request, 200 UserMediaRequestInfo* request,
192 content::MediaStreamRequestResult result); 201 MediaStreamRequestResult result,
202 const blink::WebString& result_name);
193 203
194 void OnStreamGeneratedForCancelledRequest( 204 void OnStreamGeneratedForCancelledRequest(
195 const StreamDeviceInfoArray& audio_array, 205 const StreamDeviceInfoArray& audio_array,
196 const StreamDeviceInfoArray& video_array); 206 const StreamDeviceInfoArray& video_array);
197 207
198 UserMediaRequestInfo* FindUserMediaRequestInfo(int request_id); 208 UserMediaRequestInfo* FindUserMediaRequestInfo(int request_id);
199 UserMediaRequestInfo* FindUserMediaRequestInfo( 209 UserMediaRequestInfo* FindUserMediaRequestInfo(
200 const blink::WebUserMediaRequest& request); 210 const blink::WebUserMediaRequest& request);
201 void DeleteUserMediaRequestInfo(UserMediaRequestInfo* request); 211 void DeleteUserMediaRequestInfo(UserMediaRequestInfo* request);
202 void DeleteAllUserMediaRequests(); 212 void DeleteAllUserMediaRequests();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 // Note: This member must be the last to ensure all outstanding weak pointers 244 // Note: This member must be the last to ensure all outstanding weak pointers
235 // are invalidated first. 245 // are invalidated first.
236 base::WeakPtrFactory<MediaStreamImpl> weak_factory_; 246 base::WeakPtrFactory<MediaStreamImpl> weak_factory_;
237 247
238 DISALLOW_COPY_AND_ASSIGN(MediaStreamImpl); 248 DISALLOW_COPY_AND_ASSIGN(MediaStreamImpl);
239 }; 249 };
240 250
241 } // namespace content 251 } // namespace content
242 252
243 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_ 253 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_audio_source.cc ('k') | content/renderer/media/media_stream_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698