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

Side by Side Diff: chrome/browser/ui/cocoa/media_picker/desktop_media_picker_controller_unittest.mm

Issue 1880693002: Desktop Capture Picker New UI: Preliminary Refactor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit Created 4 years, 8 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 #import "chrome/browser/ui/cocoa/media_picker/desktop_media_picker_controller.h" 5 #import "chrome/browser/ui/cocoa/media_picker/desktop_media_picker_controller.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/media/desktop_media_list_observer.h" 10 #include "chrome/browser/media/desktop_media_list_observer.h"
(...skipping 26 matching lines...) Expand all
37 return audioShareCheckbox_; 37 return audioShareCheckbox_;
38 } 38 }
39 39
40 - (NSArray*)items { 40 - (NSArray*)items {
41 return items_; 41 return items_;
42 } 42 }
43 @end 43 @end
44 44
45 class DesktopMediaPickerControllerTest : public CocoaTest { 45 class DesktopMediaPickerControllerTest : public CocoaTest {
46 public: 46 public:
47 DesktopMediaPickerControllerTest() 47 DesktopMediaPickerControllerTest() {}
48 : callback_called_(false), media_list_(NULL) {
49 }
50 48
51 void SetUp() override { 49 void SetUp() override {
52 CocoaTest::SetUp(); 50 CocoaTest::SetUp();
53 51
54 media_list_ = new FakeDesktopMediaList(); 52 screen_list_ = new FakeDesktopMediaList();
53 window_list_ = new FakeDesktopMediaList();
54 tab_list_ = new FakeDesktopMediaList();
55 55
56 DesktopMediaPicker::DoneCallback callback = 56 DesktopMediaPicker::DoneCallback callback =
57 base::Bind(&DesktopMediaPickerControllerTest::OnResult, 57 base::Bind(&DesktopMediaPickerControllerTest::OnResult,
58 base::Unretained(this)); 58 base::Unretained(this));
59 59
60 controller_.reset([[DesktopMediaPickerController alloc] 60 controller_.reset([[DesktopMediaPickerController alloc]
61 initWithMediaList:std::unique_ptr<DesktopMediaList>(media_list_) 61 initWithScreenList:std::unique_ptr<DesktopMediaList>(screen_list_)
62 parent:nil 62 windowList:std::unique_ptr<DesktopMediaList>(window_list_)
63 callback:callback 63 tabList:std::unique_ptr<DesktopMediaList>(tab_list_)
64 appName:base::ASCIIToUTF16("Screenshare Test") 64 parent:nil
65 targetName:base::ASCIIToUTF16("https://foo.com") 65 callback:callback
66 requestAudio:true]); 66 appName:base::ASCIIToUTF16("Screenshare Test")
67 targetName:base::ASCIIToUTF16("https://foo.com")
68 requestAudio:true]);
67 } 69 }
68 70
69 void TearDown() override { 71 void TearDown() override {
70 controller_.reset(); 72 controller_.reset();
71 CocoaTest::TearDown(); 73 CocoaTest::TearDown();
72 } 74 }
73 75
74 bool WaitForCallback() { 76 bool WaitForCallback() {
75 if (!callback_called_) { 77 if (!callback_called_) {
76 base::RunLoop().RunUntilIdle(); 78 base::RunLoop().RunUntilIdle();
77 } 79 }
78 return callback_called_; 80 return callback_called_;
79 } 81 }
80 82
81 protected: 83 protected:
82 void OnResult(content::DesktopMediaID source) { 84 void OnResult(content::DesktopMediaID source) {
83 EXPECT_FALSE(callback_called_); 85 EXPECT_FALSE(callback_called_);
84 callback_called_ = true; 86 callback_called_ = true;
85 source_reported_ = source; 87 source_reported_ = source;
86 } 88 }
87 89
88 content::TestBrowserThreadBundle thread_bundle_; 90 content::TestBrowserThreadBundle thread_bundle_;
89 bool callback_called_; 91 bool callback_called_ = false;
90 content::DesktopMediaID source_reported_; 92 content::DesktopMediaID source_reported_;
91 FakeDesktopMediaList* media_list_; 93 FakeDesktopMediaList* screen_list_ = nullptr;
94 FakeDesktopMediaList* window_list_ = nullptr;
95 FakeDesktopMediaList* tab_list_ = nullptr;
92 base::scoped_nsobject<DesktopMediaPickerController> controller_; 96 base::scoped_nsobject<DesktopMediaPickerController> controller_;
93 }; 97 };
94 98
95 TEST_F(DesktopMediaPickerControllerTest, ShowAndDismiss) { 99 TEST_F(DesktopMediaPickerControllerTest, ShowAndDismiss) {
96 [controller_ showWindow:nil]; 100 [controller_ showWindow:nil];
97 101
98 media_list_->AddSource(0); 102 window_list_->AddSource(0);
99 media_list_->AddSource(1); 103 window_list_->AddSource(1);
100 media_list_->SetSourceThumbnail(1); 104 window_list_->SetSourceThumbnail(1);
101 105
102 NSArray* items = [controller_ items]; 106 NSArray* items = [controller_ items];
103 EXPECT_EQ(2U, [items count]); 107 EXPECT_EQ(2U, [items count]);
104 EXPECT_NSEQ(@"0", [[items objectAtIndex:0] imageTitle]); 108 EXPECT_NSEQ(@"0", [[items objectAtIndex:0] imageTitle]);
105 EXPECT_EQ(nil, [[items objectAtIndex:0] imageRepresentation]); 109 EXPECT_EQ(nil, [[items objectAtIndex:0] imageRepresentation]);
106 EXPECT_NSEQ(@"1", [[items objectAtIndex:1] imageTitle]); 110 EXPECT_NSEQ(@"1", [[items objectAtIndex:1] imageTitle]);
107 EXPECT_TRUE([[items objectAtIndex:1] imageRepresentation] != nil); 111 EXPECT_TRUE([[items objectAtIndex:1] imageRepresentation] != nil);
108 } 112 }
109 113
110 TEST_F(DesktopMediaPickerControllerTest, ClickShare) { 114 TEST_F(DesktopMediaPickerControllerTest, ClickShare) {
111 [controller_ showWindow:nil]; 115 [controller_ showWindow:nil];
112 116
113 media_list_->AddSource(0); 117 window_list_->AddSource(0);
114 media_list_->SetSourceThumbnail(0); 118 window_list_->SetSourceThumbnail(0);
115 media_list_->AddSource(1); 119 window_list_->AddSource(1);
116 media_list_->SetSourceThumbnail(1); 120 window_list_->SetSourceThumbnail(1);
117 121
118 EXPECT_EQ(2U, [[controller_ items] count]); 122 EXPECT_EQ(2U, [[controller_ items] count]);
119 EXPECT_FALSE([[controller_ shareButton] isEnabled]); 123 EXPECT_FALSE([[controller_ shareButton] isEnabled]);
120 124
121 NSIndexSet* indexSet = [NSIndexSet indexSetWithIndex:1]; 125 NSIndexSet* indexSet = [NSIndexSet indexSetWithIndex:1];
122 [[controller_ sourceBrowser] setSelectionIndexes:indexSet 126 [[controller_ sourceBrowser] setSelectionIndexes:indexSet
123 byExtendingSelection:NO]; 127 byExtendingSelection:NO];
124 EXPECT_TRUE([[controller_ shareButton] isEnabled]); 128 EXPECT_TRUE([[controller_ shareButton] isEnabled]);
125 129
126 [[controller_ shareButton] performClick:nil]; 130 [[controller_ shareButton] performClick:nil];
127 EXPECT_TRUE(WaitForCallback()); 131 EXPECT_TRUE(WaitForCallback());
128 EXPECT_EQ(media_list_->GetSource(1).id, source_reported_); 132 EXPECT_EQ(window_list_->GetSource(1).id, source_reported_);
129 } 133 }
130 134
131 TEST_F(DesktopMediaPickerControllerTest, ClickCancel) { 135 TEST_F(DesktopMediaPickerControllerTest, ClickCancel) {
132 [controller_ showWindow:nil]; 136 [controller_ showWindow:nil];
133 137
134 media_list_->AddSource(0); 138 window_list_->AddSource(0);
135 media_list_->SetSourceThumbnail(0); 139 window_list_->SetSourceThumbnail(0);
136 media_list_->AddSource(1); 140 window_list_->AddSource(1);
137 media_list_->SetSourceThumbnail(1); 141 window_list_->SetSourceThumbnail(1);
138 142
139 [[controller_ cancelButton] performClick:nil]; 143 [[controller_ cancelButton] performClick:nil];
140 EXPECT_TRUE(WaitForCallback()); 144 EXPECT_TRUE(WaitForCallback());
141 EXPECT_EQ(content::DesktopMediaID(), source_reported_); 145 EXPECT_EQ(content::DesktopMediaID(), source_reported_);
142 } 146 }
143 147
144 TEST_F(DesktopMediaPickerControllerTest, CloseWindow) { 148 TEST_F(DesktopMediaPickerControllerTest, CloseWindow) {
145 [controller_ showWindow:nil]; 149 [controller_ showWindow:nil];
146 150
147 media_list_->AddSource(0); 151 window_list_->AddSource(0);
148 media_list_->SetSourceThumbnail(0); 152 window_list_->SetSourceThumbnail(0);
149 media_list_->AddSource(1); 153 window_list_->AddSource(1);
150 media_list_->SetSourceThumbnail(1); 154 window_list_->SetSourceThumbnail(1);
151 155
152 [controller_ close]; 156 [controller_ close];
153 EXPECT_TRUE(WaitForCallback()); 157 EXPECT_TRUE(WaitForCallback());
154 EXPECT_EQ(content::DesktopMediaID(), source_reported_); 158 EXPECT_EQ(content::DesktopMediaID(), source_reported_);
155 } 159 }
156 160
157 TEST_F(DesktopMediaPickerControllerTest, UpdateThumbnail) { 161 TEST_F(DesktopMediaPickerControllerTest, UpdateThumbnail) {
158 [controller_ showWindow:nil]; 162 [controller_ showWindow:nil];
159 163
160 media_list_->AddSource(0); 164 window_list_->AddSource(0);
161 media_list_->SetSourceThumbnail(0); 165 window_list_->SetSourceThumbnail(0);
162 media_list_->AddSource(1); 166 window_list_->AddSource(1);
163 media_list_->SetSourceThumbnail(1); 167 window_list_->SetSourceThumbnail(1);
164 168
165 NSArray* items = [controller_ items]; 169 NSArray* items = [controller_ items];
166 EXPECT_EQ(2U, [items count]); 170 EXPECT_EQ(2U, [items count]);
167 NSUInteger version = [[items objectAtIndex:0] imageVersion]; 171 NSUInteger version = [[items objectAtIndex:0] imageVersion];
168 172
169 media_list_->SetSourceThumbnail(0); 173 window_list_->SetSourceThumbnail(0);
170 EXPECT_NE(version, [[items objectAtIndex:0] imageVersion]); 174 EXPECT_NE(version, [[items objectAtIndex:0] imageVersion]);
171 } 175 }
172 176
173 TEST_F(DesktopMediaPickerControllerTest, UpdateName) { 177 TEST_F(DesktopMediaPickerControllerTest, UpdateName) {
174 [controller_ showWindow:nil]; 178 [controller_ showWindow:nil];
175 179
176 media_list_->AddSource(0); 180 window_list_->AddSource(0);
177 media_list_->SetSourceThumbnail(0); 181 window_list_->SetSourceThumbnail(0);
178 media_list_->AddSource(1); 182 window_list_->AddSource(1);
179 media_list_->SetSourceThumbnail(1); 183 window_list_->SetSourceThumbnail(1);
180 184
181 NSArray* items = [controller_ items]; 185 NSArray* items = [controller_ items];
182 EXPECT_EQ(2U, [items count]); 186 EXPECT_EQ(2U, [items count]);
183 NSUInteger version = [[items objectAtIndex:0] imageVersion]; 187 NSUInteger version = [[items objectAtIndex:0] imageVersion];
184 188
185 media_list_->SetSourceThumbnail(0); 189 window_list_->SetSourceThumbnail(0);
186 EXPECT_NE(version, [[items objectAtIndex:0] imageVersion]); 190 EXPECT_NE(version, [[items objectAtIndex:0] imageVersion]);
187 } 191 }
188 192
189 TEST_F(DesktopMediaPickerControllerTest, RemoveSource) { 193 TEST_F(DesktopMediaPickerControllerTest, RemoveSource) {
190 [controller_ showWindow:nil]; 194 [controller_ showWindow:nil];
191 195
192 media_list_->AddSource(0); 196 window_list_->AddSource(0);
193 media_list_->AddSource(1); 197 window_list_->AddSource(1);
194 media_list_->AddSource(2); 198 window_list_->AddSource(2);
195 media_list_->SetSourceName(1, base::ASCIIToUTF16("foo")); 199 window_list_->SetSourceName(1, base::ASCIIToUTF16("foo"));
196 200
197 NSArray* items = [controller_ items]; 201 NSArray* items = [controller_ items];
198 EXPECT_EQ(3U, [items count]); 202 EXPECT_EQ(3U, [items count]);
199 EXPECT_NSEQ(@"foo", [[items objectAtIndex:1] imageTitle]); 203 EXPECT_NSEQ(@"foo", [[items objectAtIndex:1] imageTitle]);
200 } 204 }
201 205
202 TEST_F(DesktopMediaPickerControllerTest, MoveSource) { 206 TEST_F(DesktopMediaPickerControllerTest, MoveSource) {
203 [controller_ showWindow:nil]; 207 [controller_ showWindow:nil];
204 208
205 media_list_->AddSource(0); 209 window_list_->AddSource(0);
206 media_list_->AddSource(1); 210 window_list_->AddSource(1);
207 media_list_->SetSourceName(1, base::ASCIIToUTF16("foo")); 211 window_list_->SetSourceName(1, base::ASCIIToUTF16("foo"));
208 NSArray* items = [controller_ items]; 212 NSArray* items = [controller_ items];
209 EXPECT_NSEQ(@"foo", [[items objectAtIndex:1] imageTitle]); 213 EXPECT_NSEQ(@"foo", [[items objectAtIndex:1] imageTitle]);
210 214
211 media_list_->MoveSource(1, 0); 215 window_list_->MoveSource(1, 0);
212 EXPECT_NSEQ(@"foo", [[items objectAtIndex:0] imageTitle]); 216 EXPECT_NSEQ(@"foo", [[items objectAtIndex:0] imageTitle]);
213 217
214 media_list_->MoveSource(0, 1); 218 window_list_->MoveSource(0, 1);
215 EXPECT_NSEQ(@"foo", [[items objectAtIndex:1] imageTitle]); 219 EXPECT_NSEQ(@"foo", [[items objectAtIndex:1] imageTitle]);
216 } 220 }
217 221
218 // Make sure the audio share checkbox' state reacts correctly with 222 // Make sure the audio share checkbox' state reacts correctly with
219 // the source selection. Namely the checkbox is enabled only for tab 223 // the source selection. Namely the checkbox is enabled only for tab
220 // sharing on Mac. 224 // sharing on Mac.
221 TEST_F(DesktopMediaPickerControllerTest, AudioShareCheckboxState) { 225 TEST_F(DesktopMediaPickerControllerTest, AudioShareCheckboxState) {
222 [controller_ showWindow:nil]; 226 [controller_ showWindow:nil];
223 227
224 media_list_->AddSourceByFullMediaID( 228 screen_list_->AddSourceByFullMediaID(
225 content::DesktopMediaID(content::DesktopMediaID::TYPE_SCREEN, 0)); 229 content::DesktopMediaID(content::DesktopMediaID::TYPE_SCREEN, 0));
226 media_list_->AddSourceByFullMediaID( 230 window_list_->AddSourceByFullMediaID(
227 content::DesktopMediaID(content::DesktopMediaID::TYPE_WINDOW, 1)); 231 content::DesktopMediaID(content::DesktopMediaID::TYPE_WINDOW, 1));
228 media_list_->AddSourceByFullMediaID( 232 tab_list_->AddSourceByFullMediaID(
229 content::DesktopMediaID(content::DesktopMediaID::TYPE_WEB_CONTENTS, 2)); 233 content::DesktopMediaID(content::DesktopMediaID::TYPE_WEB_CONTENTS, 2));
230 234
231 NSButton* checkbox = [controller_ audioShareCheckbox]; 235 NSButton* checkbox = [controller_ audioShareCheckbox];
232 EXPECT_EQ(NO, [checkbox isEnabled]); 236 EXPECT_EQ(NO, [checkbox isEnabled]);
233 237
234 NSIndexSet* index_set = [NSIndexSet indexSetWithIndex:0]; 238 NSIndexSet* index_set = [NSIndexSet indexSetWithIndex:0];
235 [checkbox setEnabled:YES]; 239 [checkbox setEnabled:YES];
236 [[controller_ sourceBrowser] setSelectionIndexes:index_set 240 [[controller_ sourceBrowser] setSelectionIndexes:index_set
237 byExtendingSelection:NO]; 241 byExtendingSelection:NO];
238 EXPECT_EQ(NO, [checkbox isEnabled]); 242 EXPECT_EQ(NO, [checkbox isEnabled]);
239 243
240 index_set = [NSIndexSet indexSetWithIndex:1]; 244 index_set = [NSIndexSet indexSetWithIndex:1];
241 [checkbox setEnabled:YES]; 245 [checkbox setEnabled:YES];
242 [[controller_ sourceBrowser] setSelectionIndexes:index_set 246 [[controller_ sourceBrowser] setSelectionIndexes:index_set
243 byExtendingSelection:NO]; 247 byExtendingSelection:NO];
244 EXPECT_EQ(NO, [checkbox isEnabled]); 248 EXPECT_EQ(NO, [checkbox isEnabled]);
245 249
246 index_set = [NSIndexSet indexSetWithIndex:2]; 250 index_set = [NSIndexSet indexSetWithIndex:2];
247 [[controller_ sourceBrowser] setSelectionIndexes:index_set 251 [[controller_ sourceBrowser] setSelectionIndexes:index_set
248 byExtendingSelection:NO]; 252 byExtendingSelection:NO];
249 EXPECT_EQ(YES, [checkbox isEnabled]); 253 EXPECT_EQ(YES, [checkbox isEnabled]);
250 254
251 index_set = [NSIndexSet indexSet]; 255 index_set = [NSIndexSet indexSet];
252 [[controller_ sourceBrowser] setSelectionIndexes:index_set 256 [[controller_ sourceBrowser] setSelectionIndexes:index_set
253 byExtendingSelection:NO]; 257 byExtendingSelection:NO];
254 EXPECT_EQ(NO, [checkbox isEnabled]); 258 EXPECT_EQ(NO, [checkbox isEnabled]);
255 } 259 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698