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

Side by Side Diff: chrome/browser/media/native_desktop_media_list_unittest.cc

Issue 1622733002: Add CombinedDesktopMediaList class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 "chrome/browser/media/native_desktop_media_list.h" 5 #include "chrome/browser/media/native_desktop_media_list.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <string.h> 9 #include <string.h>
10 10
(...skipping 11 matching lines...) Expand all
22 #include "third_party/webrtc/modules/desktop_capture/screen_capturer.h" 22 #include "third_party/webrtc/modules/desktop_capture/screen_capturer.h"
23 #include "third_party/webrtc/modules/desktop_capture/window_capturer.h" 23 #include "third_party/webrtc/modules/desktop_capture/window_capturer.h"
24 24
25 using testing::_; 25 using testing::_;
26 using testing::DoAll; 26 using testing::DoAll;
27 27
28 namespace { 28 namespace {
29 29
30 class MockObserver : public DesktopMediaListObserver { 30 class MockObserver : public DesktopMediaListObserver {
31 public: 31 public:
32 MOCK_METHOD1(OnSourceAdded, void(int index)); 32 MOCK_METHOD2(OnSourceAdded, void(DesktopMediaList* list, int index));
33 MOCK_METHOD1(OnSourceRemoved, void(int index)); 33 MOCK_METHOD2(OnSourceRemoved, void(DesktopMediaList* list, int index));
34 MOCK_METHOD2(OnSourceMoved, void(int old_index, int new_index)); 34 MOCK_METHOD3(OnSourceMoved,
35 MOCK_METHOD1(OnSourceNameChanged, void(int index)); 35 void(DesktopMediaList* list, int old_index, int new_index));
36 MOCK_METHOD1(OnSourceThumbnailChanged, void(int index)); 36 MOCK_METHOD2(OnSourceNameChanged, void(DesktopMediaList* list, int index));
37 MOCK_METHOD2(OnSourceThumbnailChanged,
38 void(DesktopMediaList* list, int index));
37 }; 39 };
38 40
39 class FakeScreenCapturer : public webrtc::ScreenCapturer { 41 class FakeScreenCapturer : public webrtc::ScreenCapturer {
40 public: 42 public:
41 FakeScreenCapturer() {} 43 FakeScreenCapturer() {}
42 ~FakeScreenCapturer() override {} 44 ~FakeScreenCapturer() override {}
43 45
44 // webrtc::ScreenCapturer implementation. 46 // webrtc::ScreenCapturer implementation.
45 void Start(Callback* callback) override { callback_ = callback; } 47 void Start(Callback* callback) override { callback_ = callback; }
46 48
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 window.id = i + 1; 170 window.id = i + 1;
169 window.title = "Test window"; 171 window.title = "Test window";
170 list.push_back(window); 172 list.push_back(window);
171 } 173 }
172 window_capturer_->SetWindowList(list); 174 window_capturer_->SetWindowList(list);
173 175
174 { 176 {
175 testing::InSequence dummy; 177 testing::InSequence dummy;
176 size_t source_count = window_only ? count : count + 1; 178 size_t source_count = window_only ? count : count + 1;
177 for (size_t i = 0; i < source_count; ++i) { 179 for (size_t i = 0; i < source_count; ++i) {
178 EXPECT_CALL(observer_, OnSourceAdded(i)) 180 EXPECT_CALL(observer_, OnSourceAdded(model_.get(), i))
179 .WillOnce(CheckListSize(model_.get(), static_cast<int>(i + 1))); 181 .WillOnce(CheckListSize(model_.get(), static_cast<int>(i + 1)));
180 } 182 }
181 for (size_t i = 0; i < source_count - 1; ++i) { 183 for (size_t i = 0; i < source_count - 1; ++i) {
182 EXPECT_CALL(observer_, OnSourceThumbnailChanged(i)); 184 EXPECT_CALL(observer_, OnSourceThumbnailChanged(model_.get(), i));
183 } 185 }
184 EXPECT_CALL(observer_, OnSourceThumbnailChanged(source_count - 1)) 186 EXPECT_CALL(observer_,
185 .WillOnce(QuitMessageLoop(&message_loop_)); 187 OnSourceThumbnailChanged(model_.get(), source_count - 1))
188 .WillOnce(QuitMessageLoop(&message_loop_));
186 } 189 }
187 model_->StartUpdating(&observer_); 190 model_->StartUpdating(&observer_);
188 message_loop_.Run(); 191 message_loop_.Run();
189 192
190 for (size_t i = 0; i < count; ++i) { 193 for (size_t i = 0; i < count; ++i) {
191 size_t source_index = window_only ? i : i + 1; 194 size_t source_index = window_only ? i : i + 1;
192 EXPECT_EQ(model_->GetSource(source_index).id.type, 195 EXPECT_EQ(model_->GetSource(source_index).id.type,
193 content::DesktopMediaID::TYPE_WINDOW); 196 content::DesktopMediaID::TYPE_WINDOW);
194 EXPECT_EQ(model_->GetSource(source_index).id.id, static_cast<int>(i + 1)); 197 EXPECT_EQ(model_->GetSource(source_index).id.id, static_cast<int>(i + 1));
195 EXPECT_EQ(model_->GetSource(source_index).name, 198 EXPECT_EQ(model_->GetSource(source_index).name,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 AddWindowsAndVerify(1, true); 243 AddWindowsAndVerify(1, true);
241 } 244 }
242 245
243 TEST_F(DesktopMediaListTest, ScreenOnly) { 246 TEST_F(DesktopMediaListTest, ScreenOnly) {
244 model_.reset(new NativeDesktopMediaList( 247 model_.reset(new NativeDesktopMediaList(
245 scoped_ptr<webrtc::ScreenCapturer>(new FakeScreenCapturer), 248 scoped_ptr<webrtc::ScreenCapturer>(new FakeScreenCapturer),
246 scoped_ptr<webrtc::WindowCapturer>())); 249 scoped_ptr<webrtc::WindowCapturer>()));
247 250
248 { 251 {
249 testing::InSequence dummy; 252 testing::InSequence dummy;
250 EXPECT_CALL(observer_, OnSourceAdded(0)) 253 EXPECT_CALL(observer_, OnSourceAdded(model_.get(), 0))
251 .WillOnce(CheckListSize(model_.get(), 1)); 254 .WillOnce(CheckListSize(model_.get(), 1));
252 EXPECT_CALL(observer_, OnSourceThumbnailChanged(0)) 255 EXPECT_CALL(observer_, OnSourceThumbnailChanged(model_.get(), 0))
253 .WillOnce(QuitMessageLoop(&message_loop_)); 256 .WillOnce(QuitMessageLoop(&message_loop_));
254 } 257 }
255 model_->StartUpdating(&observer_); 258 model_->StartUpdating(&observer_);
256 259
257 message_loop_.Run(); 260 message_loop_.Run();
258 261
259 EXPECT_EQ(model_->GetSource(0).id.type, content::DesktopMediaID::TYPE_SCREEN); 262 EXPECT_EQ(model_->GetSource(0).id.type, content::DesktopMediaID::TYPE_SCREEN);
260 } 263 }
261 264
262 TEST_F(DesktopMediaListTest, AddWindow) { 265 TEST_F(DesktopMediaListTest, AddWindow) {
263 CreateWithDefaultCapturers(); 266 CreateWithDefaultCapturers();
264 webrtc::WindowCapturer::WindowList list = AddWindowsAndVerify(1, false); 267 webrtc::WindowCapturer::WindowList list = AddWindowsAndVerify(1, false);
265 268
266 EXPECT_CALL(observer_, OnSourceAdded(2)) 269 EXPECT_CALL(observer_, OnSourceAdded(model_.get(), 2))
267 .WillOnce(DoAll(CheckListSize(model_.get(), 3), 270 .WillOnce(DoAll(CheckListSize(model_.get(), 3),
268 QuitMessageLoop(&message_loop_))); 271 QuitMessageLoop(&message_loop_)));
269 272
270 webrtc::WindowCapturer::Window window; 273 webrtc::WindowCapturer::Window window;
271 window.id = 10; // id=0 is invalid. 274 window.id = 10; // id=0 is invalid.
272 window.title = "Test window 10"; 275 window.title = "Test window 10";
273 list.push_back(window); 276 list.push_back(window);
274 window_capturer_->SetWindowList(list); 277 window_capturer_->SetWindowList(list);
275 278
276 message_loop_.Run(); 279 message_loop_.Run();
277 280
278 EXPECT_EQ(model_->GetSource(2).id.type, content::DesktopMediaID::TYPE_WINDOW); 281 EXPECT_EQ(model_->GetSource(2).id.type, content::DesktopMediaID::TYPE_WINDOW);
279 EXPECT_EQ(model_->GetSource(2).id.id, 10); 282 EXPECT_EQ(model_->GetSource(2).id.id, 10);
280 } 283 }
281 284
282 TEST_F(DesktopMediaListTest, RemoveWindow) { 285 TEST_F(DesktopMediaListTest, RemoveWindow) {
283 CreateWithDefaultCapturers(); 286 CreateWithDefaultCapturers();
284 webrtc::WindowCapturer::WindowList list = AddWindowsAndVerify(2, false); 287 webrtc::WindowCapturer::WindowList list = AddWindowsAndVerify(2, false);
285 288
286 EXPECT_CALL(observer_, OnSourceRemoved(2)) 289 EXPECT_CALL(observer_, OnSourceRemoved(model_.get(), 2))
287 .WillOnce(DoAll(CheckListSize(model_.get(), 2), 290 .WillOnce(DoAll(CheckListSize(model_.get(), 2),
288 QuitMessageLoop(&message_loop_))); 291 QuitMessageLoop(&message_loop_)));
289 292
290 list.erase(list.begin() + 1); 293 list.erase(list.begin() + 1);
291 window_capturer_->SetWindowList(list); 294 window_capturer_->SetWindowList(list);
292 295
293 message_loop_.Run(); 296 message_loop_.Run();
294 } 297 }
295 298
296 TEST_F(DesktopMediaListTest, RemoveAllWindows) { 299 TEST_F(DesktopMediaListTest, RemoveAllWindows) {
297 CreateWithDefaultCapturers(); 300 CreateWithDefaultCapturers();
298 webrtc::WindowCapturer::WindowList list = AddWindowsAndVerify(2, false); 301 webrtc::WindowCapturer::WindowList list = AddWindowsAndVerify(2, false);
299 302
300 testing::InSequence seq; 303 testing::InSequence seq;
301 EXPECT_CALL(observer_, OnSourceRemoved(1)) 304 EXPECT_CALL(observer_, OnSourceRemoved(model_.get(), 1))
302 .WillOnce(CheckListSize(model_.get(), 2)); 305 .WillOnce(CheckListSize(model_.get(), 2));
303 EXPECT_CALL(observer_, OnSourceRemoved(1)) 306 EXPECT_CALL(observer_, OnSourceRemoved(model_.get(), 1))
304 .WillOnce(DoAll(CheckListSize(model_.get(), 1), 307 .WillOnce(DoAll(CheckListSize(model_.get(), 1),
305 QuitMessageLoop(&message_loop_))); 308 QuitMessageLoop(&message_loop_)));
306 309
307 list.erase(list.begin(), list.end()); 310 list.erase(list.begin(), list.end());
308 window_capturer_->SetWindowList(list); 311 window_capturer_->SetWindowList(list);
309 312
310 message_loop_.Run(); 313 message_loop_.Run();
311 } 314 }
312 315
313 TEST_F(DesktopMediaListTest, UpdateTitle) { 316 TEST_F(DesktopMediaListTest, UpdateTitle) {
314 CreateWithDefaultCapturers(); 317 CreateWithDefaultCapturers();
315 webrtc::WindowCapturer::WindowList list = AddWindowsAndVerify(1, false); 318 webrtc::WindowCapturer::WindowList list = AddWindowsAndVerify(1, false);
316 319
317 EXPECT_CALL(observer_, OnSourceNameChanged(1)) 320 EXPECT_CALL(observer_, OnSourceNameChanged(model_.get(), 1))
318 .WillOnce(QuitMessageLoop(&message_loop_)); 321 .WillOnce(QuitMessageLoop(&message_loop_));
319 322
320 const std::string kTestTitle = "New Title"; 323 const std::string kTestTitle = "New Title";
321 324
322 list[0].title = kTestTitle; 325 list[0].title = kTestTitle;
323 window_capturer_->SetWindowList(list); 326 window_capturer_->SetWindowList(list);
324 327
325 message_loop_.Run(); 328 message_loop_.Run();
326 329
327 EXPECT_EQ(model_->GetSource(1).name, base::UTF8ToUTF16(kTestTitle)); 330 EXPECT_EQ(model_->GetSource(1).name, base::UTF8ToUTF16(kTestTitle));
328 } 331 }
329 332
330 TEST_F(DesktopMediaListTest, UpdateThumbnail) { 333 TEST_F(DesktopMediaListTest, UpdateThumbnail) {
331 CreateWithDefaultCapturers(); 334 CreateWithDefaultCapturers();
332 AddWindowsAndVerify(2, false); 335 AddWindowsAndVerify(2, false);
333 336
334 EXPECT_CALL(observer_, OnSourceThumbnailChanged(1)) 337 EXPECT_CALL(observer_, OnSourceThumbnailChanged(model_.get(), 1))
335 .WillOnce(QuitMessageLoop(&message_loop_)); 338 .WillOnce(QuitMessageLoop(&message_loop_));
336 // Update frame for the window and verify that we get notification about it. 339 // Update frame for the window and verify that we get notification about it.
337 window_capturer_->SetNextFrameValue(1, 1); 340 window_capturer_->SetNextFrameValue(1, 1);
338 341
339 message_loop_.Run(); 342 message_loop_.Run();
340 } 343 }
341 344
342 TEST_F(DesktopMediaListTest, MoveWindow) { 345 TEST_F(DesktopMediaListTest, MoveWindow) {
343 CreateWithDefaultCapturers(); 346 CreateWithDefaultCapturers();
344 webrtc::WindowCapturer::WindowList list = AddWindowsAndVerify(2, false); 347 webrtc::WindowCapturer::WindowList list = AddWindowsAndVerify(2, false);
345 348
346 EXPECT_CALL(observer_, OnSourceMoved(2, 1)) 349 EXPECT_CALL(observer_, OnSourceMoved(model_.get(), 2, 1))
347 .WillOnce(DoAll(CheckListSize(model_.get(), 3), 350 .WillOnce(DoAll(CheckListSize(model_.get(), 3),
348 QuitMessageLoop(&message_loop_))); 351 QuitMessageLoop(&message_loop_)));
349 352
350 // Swap the two windows. 353 // Swap the two windows.
351 webrtc::WindowCapturer::Window temp = list[0]; 354 webrtc::WindowCapturer::Window temp = list[0];
352 list[0] = list[1]; 355 list[0] = list[1];
353 list[1] = temp; 356 list[1] = temp;
354 window_capturer_->SetWindowList(list); 357 window_capturer_->SetWindowList(list);
355 358
356 message_loop_.Run(); 359 message_loop_.Run();
357 } 360 }
358 361
359 } // namespace 362 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/media/fake_desktop_media_list.cc ('k') | chrome/browser/ui/cocoa/media_picker/desktop_media_picker_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698