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

Side by Side Diff: content/browser/renderer_host/media/media_stream_ui_proxy_unittest.cc

Issue 2869733005: Convert some audio code to OnceCallback. (Closed)
Patch Set: Rebase, comments on unretained. Created 3 years, 7 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 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 <string>
7 #include <utility> 8 #include <utility>
8 9
9 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h" 11 #include "base/run_loop.h"
11 #include "content/browser/frame_host/render_frame_host_delegate.h" 12 #include "content/browser/frame_host/render_frame_host_delegate.h"
12 #include "content/public/test/test_browser_thread.h" 13 #include "content/public/test/test_browser_thread.h"
13 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 #include "ui/gfx/geometry/rect.h" 16 #include "ui/gfx/geometry/rect.h"
16 #include "url/gurl.h" 17 #include "url/gurl.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 } 92 }
92 93
93 TEST_F(MediaStreamUIProxyTest, Deny) { 94 TEST_F(MediaStreamUIProxyTest, Deny) {
94 std::unique_ptr<MediaStreamRequest> request(new MediaStreamRequest( 95 std::unique_ptr<MediaStreamRequest> request(new MediaStreamRequest(
95 0, 0, 0, GURL("http://origin/"), false, MEDIA_GENERATE_STREAM, 96 0, 0, 0, GURL("http://origin/"), false, MEDIA_GENERATE_STREAM,
96 std::string(), std::string(), MEDIA_DEVICE_AUDIO_CAPTURE, 97 std::string(), std::string(), MEDIA_DEVICE_AUDIO_CAPTURE,
97 MEDIA_DEVICE_VIDEO_CAPTURE, false)); 98 MEDIA_DEVICE_VIDEO_CAPTURE, false));
98 MediaStreamRequest* request_ptr = request.get(); 99 MediaStreamRequest* request_ptr = request.get();
99 proxy_->RequestAccess( 100 proxy_->RequestAccess(
100 std::move(request), 101 std::move(request),
101 base::Bind(&MockResponseCallback::OnAccessRequestResponse, 102 base::BindOnce(&MockResponseCallback::OnAccessRequestResponse,
102 base::Unretained(&response_callback_))); 103 base::Unretained(&response_callback_)));
103 MediaResponseCallback callback; 104 MediaResponseCallback callback;
104 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr), 105 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr),
105 _)) 106 _))
106 .WillOnce(SaveArg<1>(&callback)); 107 .WillOnce(SaveArg<1>(&callback));
107 base::RunLoop().RunUntilIdle(); 108 base::RunLoop().RunUntilIdle();
108 ASSERT_FALSE(callback.is_null()); 109 ASSERT_FALSE(callback.is_null());
109 110
110 MediaStreamDevices devices; 111 MediaStreamDevices devices;
111 callback.Run(devices, MEDIA_DEVICE_OK, std::unique_ptr<MediaStreamUI>()); 112 callback.Run(devices, MEDIA_DEVICE_OK, std::unique_ptr<MediaStreamUI>());
112 113
113 MediaStreamDevices response; 114 MediaStreamDevices response;
114 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _)) 115 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _))
115 .WillOnce(SaveArg<0>(&response)); 116 .WillOnce(SaveArg<0>(&response));
116 base::RunLoop().RunUntilIdle(); 117 base::RunLoop().RunUntilIdle();
117 118
118 EXPECT_TRUE(response.empty()); 119 EXPECT_TRUE(response.empty());
119 } 120 }
120 121
121 TEST_F(MediaStreamUIProxyTest, AcceptAndStart) { 122 TEST_F(MediaStreamUIProxyTest, AcceptAndStart) {
122 std::unique_ptr<MediaStreamRequest> request(new MediaStreamRequest( 123 std::unique_ptr<MediaStreamRequest> request(new MediaStreamRequest(
123 0, 0, 0, GURL("http://origin/"), false, MEDIA_GENERATE_STREAM, 124 0, 0, 0, GURL("http://origin/"), false, MEDIA_GENERATE_STREAM,
124 std::string(), std::string(), MEDIA_DEVICE_AUDIO_CAPTURE, 125 std::string(), std::string(), MEDIA_DEVICE_AUDIO_CAPTURE,
125 MEDIA_DEVICE_VIDEO_CAPTURE, false)); 126 MEDIA_DEVICE_VIDEO_CAPTURE, false));
126 MediaStreamRequest* request_ptr = request.get(); 127 MediaStreamRequest* request_ptr = request.get();
127 proxy_->RequestAccess( 128 proxy_->RequestAccess(
128 std::move(request), 129 std::move(request),
129 base::Bind(&MockResponseCallback::OnAccessRequestResponse, 130 base::BindOnce(&MockResponseCallback::OnAccessRequestResponse,
130 base::Unretained(&response_callback_))); 131 base::Unretained(&response_callback_)));
131 MediaResponseCallback callback; 132 MediaResponseCallback callback;
132 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr), 133 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr),
133 _)) 134 _))
134 .WillOnce(SaveArg<1>(&callback)); 135 .WillOnce(SaveArg<1>(&callback));
135 base::RunLoop().RunUntilIdle(); 136 base::RunLoop().RunUntilIdle();
136 ASSERT_FALSE(callback.is_null()); 137 ASSERT_FALSE(callback.is_null());
137 138
138 MediaStreamDevices devices; 139 MediaStreamDevices devices;
139 devices.push_back( 140 devices.push_back(
140 MediaStreamDevice(MEDIA_DEVICE_AUDIO_CAPTURE, "Mic", "Mic")); 141 MediaStreamDevice(MEDIA_DEVICE_AUDIO_CAPTURE, "Mic", "Mic"));
(...skipping 14 matching lines...) Expand all
155 156
156 // Verify that the proxy can be deleted before the request is processed. 157 // Verify that the proxy can be deleted before the request is processed.
157 TEST_F(MediaStreamUIProxyTest, DeleteBeforeAccepted) { 158 TEST_F(MediaStreamUIProxyTest, DeleteBeforeAccepted) {
158 std::unique_ptr<MediaStreamRequest> request(new MediaStreamRequest( 159 std::unique_ptr<MediaStreamRequest> request(new MediaStreamRequest(
159 0, 0, 0, GURL("http://origin/"), false, MEDIA_GENERATE_STREAM, 160 0, 0, 0, GURL("http://origin/"), false, MEDIA_GENERATE_STREAM,
160 std::string(), std::string(), MEDIA_DEVICE_AUDIO_CAPTURE, 161 std::string(), std::string(), MEDIA_DEVICE_AUDIO_CAPTURE,
161 MEDIA_DEVICE_VIDEO_CAPTURE, false)); 162 MEDIA_DEVICE_VIDEO_CAPTURE, false));
162 MediaStreamRequest* request_ptr = request.get(); 163 MediaStreamRequest* request_ptr = request.get();
163 proxy_->RequestAccess( 164 proxy_->RequestAccess(
164 std::move(request), 165 std::move(request),
165 base::Bind(&MockResponseCallback::OnAccessRequestResponse, 166 base::BindOnce(&MockResponseCallback::OnAccessRequestResponse,
166 base::Unretained(&response_callback_))); 167 base::Unretained(&response_callback_)));
167 MediaResponseCallback callback; 168 MediaResponseCallback callback;
168 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr) 169 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr)
169 , _)) 170 , _))
170 .WillOnce(SaveArg<1>(&callback)); 171 .WillOnce(SaveArg<1>(&callback));
171 base::RunLoop().RunUntilIdle(); 172 base::RunLoop().RunUntilIdle();
172 ASSERT_FALSE(callback.is_null()); 173 ASSERT_FALSE(callback.is_null());
173 174
174 proxy_.reset(); 175 proxy_.reset();
175 176
176 MediaStreamDevices devices; 177 MediaStreamDevices devices;
177 std::unique_ptr<MediaStreamUI> ui; 178 std::unique_ptr<MediaStreamUI> ui;
178 callback.Run(devices, MEDIA_DEVICE_OK, std::move(ui)); 179 callback.Run(devices, MEDIA_DEVICE_OK, std::move(ui));
179 } 180 }
180 181
181 TEST_F(MediaStreamUIProxyTest, StopFromUI) { 182 TEST_F(MediaStreamUIProxyTest, StopFromUI) {
182 std::unique_ptr<MediaStreamRequest> request(new MediaStreamRequest( 183 std::unique_ptr<MediaStreamRequest> request(new MediaStreamRequest(
183 0, 0, 0, GURL("http://origin/"), false, MEDIA_GENERATE_STREAM, 184 0, 0, 0, GURL("http://origin/"), false, MEDIA_GENERATE_STREAM,
184 std::string(), std::string(), MEDIA_DEVICE_AUDIO_CAPTURE, 185 std::string(), std::string(), MEDIA_DEVICE_AUDIO_CAPTURE,
185 MEDIA_DEVICE_VIDEO_CAPTURE, false)); 186 MEDIA_DEVICE_VIDEO_CAPTURE, false));
186 MediaStreamRequest* request_ptr = request.get(); 187 MediaStreamRequest* request_ptr = request.get();
187 proxy_->RequestAccess( 188 proxy_->RequestAccess(
188 std::move(request), 189 std::move(request),
189 base::Bind(&MockResponseCallback::OnAccessRequestResponse, 190 base::BindOnce(&MockResponseCallback::OnAccessRequestResponse,
190 base::Unretained(&response_callback_))); 191 base::Unretained(&response_callback_)));
191 MediaResponseCallback callback; 192 MediaResponseCallback callback;
192 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr) 193 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr)
193 , _)) 194 , _))
194 .WillOnce(SaveArg<1>(&callback)); 195 .WillOnce(SaveArg<1>(&callback));
195 base::RunLoop().RunUntilIdle(); 196 base::RunLoop().RunUntilIdle();
196 ASSERT_FALSE(callback.is_null()); 197 ASSERT_FALSE(callback.is_null());
197 198
198 base::Closure stop_callback; 199 base::Closure stop_callback;
199 200
200 MediaStreamDevices devices; 201 MediaStreamDevices devices;
201 devices.push_back( 202 devices.push_back(
202 MediaStreamDevice(MEDIA_DEVICE_AUDIO_CAPTURE, "Mic", "Mic")); 203 MediaStreamDevice(MEDIA_DEVICE_AUDIO_CAPTURE, "Mic", "Mic"));
203 std::unique_ptr<MockMediaStreamUI> ui(new MockMediaStreamUI()); 204 std::unique_ptr<MockMediaStreamUI> ui(new MockMediaStreamUI());
204 EXPECT_CALL(*ui, OnStarted(_)) 205 EXPECT_CALL(*ui, OnStarted(_))
205 .WillOnce(testing::DoAll(SaveArg<0>(&stop_callback), Return(0))); 206 .WillOnce(testing::DoAll(SaveArg<0>(&stop_callback), Return(0)));
206 callback.Run(devices, MEDIA_DEVICE_OK, std::move(ui)); 207 callback.Run(devices, MEDIA_DEVICE_OK, std::move(ui));
207 208
208 MediaStreamDevices response; 209 MediaStreamDevices response;
209 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _)) 210 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _))
210 .WillOnce(SaveArg<0>(&response)); 211 .WillOnce(SaveArg<0>(&response));
211 base::RunLoop().RunUntilIdle(); 212 base::RunLoop().RunUntilIdle();
212 213
213 EXPECT_FALSE(response.empty()); 214 EXPECT_FALSE(response.empty());
214 215
215 MockStopStreamHandler stop_handler; 216 MockStopStreamHandler stop_handler;
216 proxy_->OnStarted(base::Bind(&MockStopStreamHandler::OnStop, 217 proxy_->OnStarted(base::BindOnce(&MockStopStreamHandler::OnStop,
217 base::Unretained(&stop_handler)), 218 base::Unretained(&stop_handler)),
218 MediaStreamUIProxy::WindowIdCallback()); 219 MediaStreamUIProxy::WindowIdCallback());
219 base::RunLoop().RunUntilIdle(); 220 base::RunLoop().RunUntilIdle();
220 221
221 ASSERT_FALSE(stop_callback.is_null()); 222 ASSERT_FALSE(stop_callback.is_null());
222 EXPECT_CALL(stop_handler, OnStop()); 223 EXPECT_CALL(stop_handler, OnStop());
223 stop_callback.Run(); 224 stop_callback.Run();
224 base::RunLoop().RunUntilIdle(); 225 base::RunLoop().RunUntilIdle();
225 } 226 }
226 227
227 TEST_F(MediaStreamUIProxyTest, WindowIdCallbackCalled) { 228 TEST_F(MediaStreamUIProxyTest, WindowIdCallbackCalled) {
228 std::unique_ptr<MediaStreamRequest> request(new MediaStreamRequest( 229 std::unique_ptr<MediaStreamRequest> request(new MediaStreamRequest(
229 0, 0, 0, GURL("http://origin/"), false, MEDIA_GENERATE_STREAM, 230 0, 0, 0, GURL("http://origin/"), false, MEDIA_GENERATE_STREAM,
230 std::string(), std::string(), MEDIA_NO_SERVICE, 231 std::string(), std::string(), MEDIA_NO_SERVICE,
231 MEDIA_DESKTOP_VIDEO_CAPTURE, false)); 232 MEDIA_DESKTOP_VIDEO_CAPTURE, false));
232 MediaStreamRequest* request_ptr = request.get(); 233 MediaStreamRequest* request_ptr = request.get();
233 234
234 proxy_->RequestAccess( 235 proxy_->RequestAccess(
235 std::move(request), 236 std::move(request),
236 base::Bind(&MockResponseCallback::OnAccessRequestResponse, 237 base::BindOnce(&MockResponseCallback::OnAccessRequestResponse,
237 base::Unretained(&response_callback_))); 238 base::Unretained(&response_callback_)));
238 MediaResponseCallback callback; 239 MediaResponseCallback callback;
239 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr), 240 EXPECT_CALL(delegate_, RequestMediaAccessPermission(SameRequest(request_ptr),
240 _)) 241 _))
241 .WillOnce(SaveArg<1>(&callback)); 242 .WillOnce(SaveArg<1>(&callback));
242 base::RunLoop().RunUntilIdle(); 243 base::RunLoop().RunUntilIdle();
243 244
244 const int kWindowId = 1; 245 const int kWindowId = 1;
245 std::unique_ptr<MockMediaStreamUI> ui(new MockMediaStreamUI()); 246 std::unique_ptr<MockMediaStreamUI> ui(new MockMediaStreamUI());
246 EXPECT_CALL(*ui, OnStarted(_)).WillOnce(Return(kWindowId)); 247 EXPECT_CALL(*ui, OnStarted(_)).WillOnce(Return(kWindowId));
247 248
248 callback.Run(MediaStreamDevices(), MEDIA_DEVICE_OK, std::move(ui)); 249 callback.Run(MediaStreamDevices(), MEDIA_DEVICE_OK, std::move(ui));
249 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _)); 250 EXPECT_CALL(response_callback_, OnAccessRequestResponse(_, _));
250 251
251 MockStopStreamHandler handler; 252 MockStopStreamHandler handler;
252 EXPECT_CALL(handler, OnWindowId(kWindowId)); 253 EXPECT_CALL(handler, OnWindowId(kWindowId));
253 254
254 proxy_->OnStarted( 255 proxy_->OnStarted(base::BindOnce(&MockStopStreamHandler::OnStop,
255 base::Bind(&MockStopStreamHandler::OnStop, base::Unretained(&handler)), 256 base::Unretained(&handler)),
256 base::Bind(&MockStopStreamHandler::OnWindowId, 257 base::BindOnce(&MockStopStreamHandler::OnWindowId,
257 base::Unretained(&handler))); 258 base::Unretained(&handler)));
258 base::RunLoop().RunUntilIdle(); 259 base::RunLoop().RunUntilIdle();
259 } 260 }
260 261
261 } // namespace content 262 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698