OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "content/browser/renderer_host/media/media_stream_ui_proxy.h" | 5 #include "content/browser/renderer_host/media/media_stream_ui_proxy.h" |
6 | 6 |
| 7 #include <utility> |
| 8 |
7 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
8 #include "content/browser/frame_host/render_frame_host_delegate.h" | 10 #include "content/browser/frame_host/render_frame_host_delegate.h" |
9 #include "content/public/test/test_browser_thread.h" | 11 #include "content/public/test/test_browser_thread.h" |
10 #include "testing/gmock/include/gmock/gmock.h" | 12 #include "testing/gmock/include/gmock/gmock.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
12 #include "ui/gfx/geometry/rect.h" | 14 #include "ui/gfx/geometry/rect.h" |
13 | 15 |
14 using testing::_; | 16 using testing::_; |
15 using testing::Return; | 17 using testing::Return; |
16 using testing::SaveArg; | 18 using testing::SaveArg; |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 TEST_F(MediaStreamUIProxyTest, Deny) { | 90 TEST_F(MediaStreamUIProxyTest, Deny) { |
89 scoped_ptr<MediaStreamRequest> request ( | 91 scoped_ptr<MediaStreamRequest> request ( |
90 new MediaStreamRequest(0, 0, 0, GURL("http://origin/"), | 92 new MediaStreamRequest(0, 0, 0, GURL("http://origin/"), |
91 false, | 93 false, |
92 MEDIA_GENERATE_STREAM, std::string(), | 94 MEDIA_GENERATE_STREAM, std::string(), |
93 std::string(), | 95 std::string(), |
94 MEDIA_DEVICE_AUDIO_CAPTURE, | 96 MEDIA_DEVICE_AUDIO_CAPTURE, |
95 MEDIA_DEVICE_VIDEO_CAPTURE)); | 97 MEDIA_DEVICE_VIDEO_CAPTURE)); |
96 MediaStreamRequest* request_ptr = request.get(); | 98 MediaStreamRequest* request_ptr = request.get(); |
97 proxy_->RequestAccess( | 99 proxy_->RequestAccess( |
98 request.Pass(), base::Bind(&MockResponseCallback::OnAccessRequestResponse, | 100 std::move(request), |
99 base::Unretained(&response_callback_))); | 101 base::Bind(&MockResponseCallback::OnAccessRequestResponse, |
| 102 base::Unretained(&response_callback_))); |
100 MediaResponseCallback callback; | 103 MediaResponseCallback callback; |
101 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr), | 104 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr), |
102 _)) | 105 _)) |
103 .WillOnce(SaveArg<1>(&callback)); | 106 .WillOnce(SaveArg<1>(&callback)); |
104 message_loop_.RunUntilIdle(); | 107 message_loop_.RunUntilIdle(); |
105 ASSERT_FALSE(callback.is_null()); | 108 ASSERT_FALSE(callback.is_null()); |
106 | 109 |
107 MediaStreamDevices devices; | 110 MediaStreamDevices devices; |
108 callback.Run(devices, MEDIA_DEVICE_OK, scoped_ptr<MediaStreamUI>()); | 111 callback.Run(devices, MEDIA_DEVICE_OK, scoped_ptr<MediaStreamUI>()); |
109 | 112 |
110 MediaStreamDevices response; | 113 MediaStreamDevices response; |
111 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _)) | 114 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _)) |
112 .WillOnce(SaveArg<0>(&response)); | 115 .WillOnce(SaveArg<0>(&response)); |
113 message_loop_.RunUntilIdle(); | 116 message_loop_.RunUntilIdle(); |
114 | 117 |
115 EXPECT_TRUE(response.empty()); | 118 EXPECT_TRUE(response.empty()); |
116 } | 119 } |
117 | 120 |
118 TEST_F(MediaStreamUIProxyTest, AcceptAndStart) { | 121 TEST_F(MediaStreamUIProxyTest, AcceptAndStart) { |
119 scoped_ptr<MediaStreamRequest> request ( | 122 scoped_ptr<MediaStreamRequest> request ( |
120 new MediaStreamRequest(0, 0, 0, | 123 new MediaStreamRequest(0, 0, 0, |
121 GURL("http://origin/"), false, | 124 GURL("http://origin/"), false, |
122 MEDIA_GENERATE_STREAM, std::string(), | 125 MEDIA_GENERATE_STREAM, std::string(), |
123 std::string(), | 126 std::string(), |
124 MEDIA_DEVICE_AUDIO_CAPTURE, | 127 MEDIA_DEVICE_AUDIO_CAPTURE, |
125 MEDIA_DEVICE_VIDEO_CAPTURE)); | 128 MEDIA_DEVICE_VIDEO_CAPTURE)); |
126 MediaStreamRequest* request_ptr = request.get(); | 129 MediaStreamRequest* request_ptr = request.get(); |
127 proxy_->RequestAccess( | 130 proxy_->RequestAccess( |
128 request.Pass(), base::Bind(&MockResponseCallback::OnAccessRequestResponse, | 131 std::move(request), |
129 base::Unretained(&response_callback_))); | 132 base::Bind(&MockResponseCallback::OnAccessRequestResponse, |
| 133 base::Unretained(&response_callback_))); |
130 MediaResponseCallback callback; | 134 MediaResponseCallback callback; |
131 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr), | 135 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr), |
132 _)) | 136 _)) |
133 .WillOnce(SaveArg<1>(&callback)); | 137 .WillOnce(SaveArg<1>(&callback)); |
134 message_loop_.RunUntilIdle(); | 138 message_loop_.RunUntilIdle(); |
135 ASSERT_FALSE(callback.is_null()); | 139 ASSERT_FALSE(callback.is_null()); |
136 | 140 |
137 MediaStreamDevices devices; | 141 MediaStreamDevices devices; |
138 devices.push_back( | 142 devices.push_back( |
139 MediaStreamDevice(MEDIA_DEVICE_AUDIO_CAPTURE, "Mic", "Mic")); | 143 MediaStreamDevice(MEDIA_DEVICE_AUDIO_CAPTURE, "Mic", "Mic")); |
140 scoped_ptr<MockMediaStreamUI> ui(new MockMediaStreamUI()); | 144 scoped_ptr<MockMediaStreamUI> ui(new MockMediaStreamUI()); |
141 EXPECT_CALL(*ui, OnStarted(_)).WillOnce(Return(0)); | 145 EXPECT_CALL(*ui, OnStarted(_)).WillOnce(Return(0)); |
142 callback.Run(devices, MEDIA_DEVICE_OK, ui.Pass()); | 146 callback.Run(devices, MEDIA_DEVICE_OK, std::move(ui)); |
143 | 147 |
144 MediaStreamDevices response; | 148 MediaStreamDevices response; |
145 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _)) | 149 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _)) |
146 .WillOnce(SaveArg<0>(&response)); | 150 .WillOnce(SaveArg<0>(&response)); |
147 message_loop_.RunUntilIdle(); | 151 message_loop_.RunUntilIdle(); |
148 | 152 |
149 EXPECT_FALSE(response.empty()); | 153 EXPECT_FALSE(response.empty()); |
150 | 154 |
151 proxy_->OnStarted(base::Closure(), MediaStreamUIProxy::WindowIdCallback()); | 155 proxy_->OnStarted(base::Closure(), MediaStreamUIProxy::WindowIdCallback()); |
152 message_loop_.RunUntilIdle(); | 156 message_loop_.RunUntilIdle(); |
153 } | 157 } |
154 | 158 |
155 // Verify that the proxy can be deleted before the request is processed. | 159 // Verify that the proxy can be deleted before the request is processed. |
156 TEST_F(MediaStreamUIProxyTest, DeleteBeforeAccepted) { | 160 TEST_F(MediaStreamUIProxyTest, DeleteBeforeAccepted) { |
157 scoped_ptr<MediaStreamRequest> request ( | 161 scoped_ptr<MediaStreamRequest> request ( |
158 new MediaStreamRequest(0, 0, 0, | 162 new MediaStreamRequest(0, 0, 0, |
159 GURL("http://origin/"), false, | 163 GURL("http://origin/"), false, |
160 MEDIA_GENERATE_STREAM, std::string(), | 164 MEDIA_GENERATE_STREAM, std::string(), |
161 std::string(), | 165 std::string(), |
162 MEDIA_DEVICE_AUDIO_CAPTURE, | 166 MEDIA_DEVICE_AUDIO_CAPTURE, |
163 MEDIA_DEVICE_VIDEO_CAPTURE)); | 167 MEDIA_DEVICE_VIDEO_CAPTURE)); |
164 MediaStreamRequest* request_ptr = request.get(); | 168 MediaStreamRequest* request_ptr = request.get(); |
165 proxy_->RequestAccess( | 169 proxy_->RequestAccess( |
166 request.Pass(), base::Bind(&MockResponseCallback::OnAccessRequestResponse, | 170 std::move(request), |
167 base::Unretained(&response_callback_))); | 171 base::Bind(&MockResponseCallback::OnAccessRequestResponse, |
| 172 base::Unretained(&response_callback_))); |
168 MediaResponseCallback callback; | 173 MediaResponseCallback callback; |
169 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr) | 174 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr) |
170 , _)) | 175 , _)) |
171 .WillOnce(SaveArg<1>(&callback)); | 176 .WillOnce(SaveArg<1>(&callback)); |
172 message_loop_.RunUntilIdle(); | 177 message_loop_.RunUntilIdle(); |
173 ASSERT_FALSE(callback.is_null()); | 178 ASSERT_FALSE(callback.is_null()); |
174 | 179 |
175 proxy_.reset(); | 180 proxy_.reset(); |
176 | 181 |
177 MediaStreamDevices devices; | 182 MediaStreamDevices devices; |
178 scoped_ptr<MediaStreamUI> ui; | 183 scoped_ptr<MediaStreamUI> ui; |
179 callback.Run(devices, MEDIA_DEVICE_OK, ui.Pass()); | 184 callback.Run(devices, MEDIA_DEVICE_OK, std::move(ui)); |
180 } | 185 } |
181 | 186 |
182 TEST_F(MediaStreamUIProxyTest, StopFromUI) { | 187 TEST_F(MediaStreamUIProxyTest, StopFromUI) { |
183 scoped_ptr<MediaStreamRequest> request ( | 188 scoped_ptr<MediaStreamRequest> request ( |
184 new MediaStreamRequest(0, 0, 0, | 189 new MediaStreamRequest(0, 0, 0, |
185 GURL("http://origin/"), false, | 190 GURL("http://origin/"), false, |
186 MEDIA_GENERATE_STREAM, std::string(), | 191 MEDIA_GENERATE_STREAM, std::string(), |
187 std::string(), | 192 std::string(), |
188 MEDIA_DEVICE_AUDIO_CAPTURE, | 193 MEDIA_DEVICE_AUDIO_CAPTURE, |
189 MEDIA_DEVICE_VIDEO_CAPTURE)); | 194 MEDIA_DEVICE_VIDEO_CAPTURE)); |
190 MediaStreamRequest* request_ptr = request.get(); | 195 MediaStreamRequest* request_ptr = request.get(); |
191 proxy_->RequestAccess( | 196 proxy_->RequestAccess( |
192 request.Pass(), base::Bind(&MockResponseCallback::OnAccessRequestResponse, | 197 std::move(request), |
193 base::Unretained(&response_callback_))); | 198 base::Bind(&MockResponseCallback::OnAccessRequestResponse, |
| 199 base::Unretained(&response_callback_))); |
194 MediaResponseCallback callback; | 200 MediaResponseCallback callback; |
195 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr) | 201 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr) |
196 , _)) | 202 , _)) |
197 .WillOnce(SaveArg<1>(&callback)); | 203 .WillOnce(SaveArg<1>(&callback)); |
198 message_loop_.RunUntilIdle(); | 204 message_loop_.RunUntilIdle(); |
199 ASSERT_FALSE(callback.is_null()); | 205 ASSERT_FALSE(callback.is_null()); |
200 | 206 |
201 base::Closure stop_callback; | 207 base::Closure stop_callback; |
202 | 208 |
203 MediaStreamDevices devices; | 209 MediaStreamDevices devices; |
204 devices.push_back( | 210 devices.push_back( |
205 MediaStreamDevice(MEDIA_DEVICE_AUDIO_CAPTURE, "Mic", "Mic")); | 211 MediaStreamDevice(MEDIA_DEVICE_AUDIO_CAPTURE, "Mic", "Mic")); |
206 scoped_ptr<MockMediaStreamUI> ui(new MockMediaStreamUI()); | 212 scoped_ptr<MockMediaStreamUI> ui(new MockMediaStreamUI()); |
207 EXPECT_CALL(*ui, OnStarted(_)) | 213 EXPECT_CALL(*ui, OnStarted(_)) |
208 .WillOnce(testing::DoAll(SaveArg<0>(&stop_callback), Return(0))); | 214 .WillOnce(testing::DoAll(SaveArg<0>(&stop_callback), Return(0))); |
209 callback.Run(devices, MEDIA_DEVICE_OK, ui.Pass()); | 215 callback.Run(devices, MEDIA_DEVICE_OK, std::move(ui)); |
210 | 216 |
211 MediaStreamDevices response; | 217 MediaStreamDevices response; |
212 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _)) | 218 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _)) |
213 .WillOnce(SaveArg<0>(&response)); | 219 .WillOnce(SaveArg<0>(&response)); |
214 message_loop_.RunUntilIdle(); | 220 message_loop_.RunUntilIdle(); |
215 | 221 |
216 EXPECT_FALSE(response.empty()); | 222 EXPECT_FALSE(response.empty()); |
217 | 223 |
218 MockStopStreamHandler stop_handler; | 224 MockStopStreamHandler stop_handler; |
219 proxy_->OnStarted(base::Bind(&MockStopStreamHandler::OnStop, | 225 proxy_->OnStarted(base::Bind(&MockStopStreamHandler::OnStop, |
(...skipping 11 matching lines...) Expand all Loading... |
231 scoped_ptr<MediaStreamRequest> request ( | 237 scoped_ptr<MediaStreamRequest> request ( |
232 new MediaStreamRequest(0, 0, 0, | 238 new MediaStreamRequest(0, 0, 0, |
233 GURL("http://origin/"), false, | 239 GURL("http://origin/"), false, |
234 MEDIA_GENERATE_STREAM, std::string(), | 240 MEDIA_GENERATE_STREAM, std::string(), |
235 std::string(), | 241 std::string(), |
236 MEDIA_NO_SERVICE, | 242 MEDIA_NO_SERVICE, |
237 MEDIA_DESKTOP_VIDEO_CAPTURE)); | 243 MEDIA_DESKTOP_VIDEO_CAPTURE)); |
238 MediaStreamRequest* request_ptr = request.get(); | 244 MediaStreamRequest* request_ptr = request.get(); |
239 | 245 |
240 proxy_->RequestAccess( | 246 proxy_->RequestAccess( |
241 request.Pass(), | 247 std::move(request), |
242 base::Bind(&MockResponseCallback::OnAccessRequestResponse, | 248 base::Bind(&MockResponseCallback::OnAccessRequestResponse, |
243 base::Unretained(&response_callback_))); | 249 base::Unretained(&response_callback_))); |
244 MediaResponseCallback callback; | 250 MediaResponseCallback callback; |
245 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr), | 251 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr), |
246 _)) | 252 _)) |
247 .WillOnce(SaveArg<1>(&callback)); | 253 .WillOnce(SaveArg<1>(&callback)); |
248 message_loop_.RunUntilIdle(); | 254 message_loop_.RunUntilIdle(); |
249 | 255 |
250 const int kWindowId = 1; | 256 const int kWindowId = 1; |
251 scoped_ptr<MockMediaStreamUI> ui(new MockMediaStreamUI()); | 257 scoped_ptr<MockMediaStreamUI> ui(new MockMediaStreamUI()); |
252 EXPECT_CALL(*ui, OnStarted(_)).WillOnce(Return(kWindowId)); | 258 EXPECT_CALL(*ui, OnStarted(_)).WillOnce(Return(kWindowId)); |
253 | 259 |
254 callback.Run(MediaStreamDevices(), MEDIA_DEVICE_OK, ui.Pass()); | 260 callback.Run(MediaStreamDevices(), MEDIA_DEVICE_OK, std::move(ui)); |
255 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _)); | 261 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _)); |
256 | 262 |
257 MockStopStreamHandler handler; | 263 MockStopStreamHandler handler; |
258 EXPECT_CALL(handler, OnWindowId(kWindowId)); | 264 EXPECT_CALL(handler, OnWindowId(kWindowId)); |
259 | 265 |
260 proxy_->OnStarted( | 266 proxy_->OnStarted( |
261 base::Bind(&MockStopStreamHandler::OnStop, base::Unretained(&handler)), | 267 base::Bind(&MockStopStreamHandler::OnStop, base::Unretained(&handler)), |
262 base::Bind(&MockStopStreamHandler::OnWindowId, | 268 base::Bind(&MockStopStreamHandler::OnWindowId, |
263 base::Unretained(&handler))); | 269 base::Unretained(&handler))); |
264 message_loop_.RunUntilIdle(); | 270 message_loop_.RunUntilIdle(); |
265 } | 271 } |
266 | 272 |
267 TEST_F(MediaStreamUIProxyTest, CheckAccess) { | 273 TEST_F(MediaStreamUIProxyTest, CheckAccess) { |
268 proxy_->CheckAccess(GURL("http://origin/"), | 274 proxy_->CheckAccess(GURL("http://origin/"), |
269 MEDIA_DEVICE_AUDIO_CAPTURE, | 275 MEDIA_DEVICE_AUDIO_CAPTURE, |
270 0, | 276 0, |
271 0, | 277 0, |
272 base::Bind(&MockResponseCallback::OnCheckResponse, | 278 base::Bind(&MockResponseCallback::OnCheckResponse, |
273 base::Unretained(&response_callback_))); | 279 base::Unretained(&response_callback_))); |
274 EXPECT_CALL(delegate_, CheckMediaAccessPermission(_, _)); | 280 EXPECT_CALL(delegate_, CheckMediaAccessPermission(_, _)); |
275 EXPECT_CALL(response_callback_, OnCheckResponse(_)); | 281 EXPECT_CALL(response_callback_, OnCheckResponse(_)); |
276 message_loop_.RunUntilIdle(); | 282 message_loop_.RunUntilIdle(); |
277 } | 283 } |
278 | 284 |
279 } // content | 285 } // content |
OLD | NEW |