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

Side by Side Diff: chrome/browser/ui/views/chooser_content_view_unittest.cc

Issue 2595083002: Change ChooserContentView[Cocoa] class name to be DeviceChooserContentView[Cocoa] (Closed)
Patch Set: merge master Created 3 years, 11 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
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/views/chooser_content_view.h"
6
7 #include <memory>
8
9 #include "base/macros.h"
10 #include "base/memory/ptr_util.h"
11 #include "base/strings/utf_string_conversions.h"
12 #include "chrome/browser/chooser_controller/mock_chooser_controller.h"
13 #include "chrome/grit/generated_resources.h"
14 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "ui/base/l10n/l10n_util.h"
17 #include "ui/base/models/list_selection_model.h"
18 #include "ui/views/controls/link.h"
19 #include "ui/views/controls/styled_label.h"
20 #include "ui/views/controls/table/table_view.h"
21 #include "ui/views/controls/table/table_view_observer.h"
22 #include "ui/views/controls/throbber.h"
23 #include "ui/views/test/views_test_base.h"
24
25 namespace {
26
27 class MockTableViewObserver : public views::TableViewObserver {
28 public:
29 // views::TableViewObserver:
30 MOCK_METHOD0(OnSelectionChanged, void());
31 };
32
33 base::string16 GetPairedText(const std::string& device_name) {
34 return l10n_util::GetStringFUTF16(
35 IDS_DEVICE_CHOOSER_DEVICE_NAME_AND_PAIRED_STATUS_TEXT,
36 base::ASCIIToUTF16(device_name));
37 }
38
39 } // namespace
40
41 class ChooserContentViewTest : public views::ViewsTestBase {
42 public:
43 ChooserContentViewTest() {}
44
45 // views::ViewsTestBase:
46 void SetUp() override {
47 views::ViewsTestBase::SetUp();
48 std::unique_ptr<MockChooserController> mock_chooser_controller(
49 new MockChooserController(nullptr));
50 mock_chooser_controller_ = mock_chooser_controller.get();
51 mock_table_view_observer_ = base::MakeUnique<MockTableViewObserver>();
52 chooser_content_view_ = base::MakeUnique<ChooserContentView>(
53 mock_table_view_observer_.get(), std::move(mock_chooser_controller));
54 table_view_ = chooser_content_view_->table_view_;
55 ASSERT_TRUE(table_view_);
56 table_model_ = table_view_->model();
57 ASSERT_TRUE(table_model_);
58 throbber_ = chooser_content_view_->throbber_;
59 ASSERT_TRUE(throbber_);
60 turn_adapter_off_help_ = chooser_content_view_->turn_adapter_off_help_;
61 ASSERT_TRUE(turn_adapter_off_help_);
62 footnote_link_ = chooser_content_view_->footnote_link();
63 ASSERT_TRUE(footnote_link_);
64 }
65
66 protected:
67 std::unique_ptr<MockTableViewObserver> mock_table_view_observer_;
68 std::unique_ptr<ChooserContentView> chooser_content_view_;
69 MockChooserController* mock_chooser_controller_ = nullptr;
70 views::TableView* table_view_ = nullptr;
71 ui::TableModel* table_model_ = nullptr;
72 views::Throbber* throbber_ = nullptr;
73 views::StyledLabel* turn_adapter_off_help_ = nullptr;
74 views::StyledLabel* footnote_link_ = nullptr;
75
76 private:
77 DISALLOW_COPY_AND_ASSIGN(ChooserContentViewTest);
78 };
79
80 TEST_F(ChooserContentViewTest, InitialState) {
81 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0);
82
83 EXPECT_TRUE(table_view_->visible());
84 // Since "No devices found." needs to be displayed on the |table_view_|,
85 // the number of rows is 1.
86 EXPECT_EQ(1, table_view_->RowCount());
87 EXPECT_EQ(
88 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
89 table_model_->GetText(0, 0));
90 // |table_view_| should be disabled since there is no option shown.
91 EXPECT_FALSE(table_view_->enabled());
92 // No option selected.
93 EXPECT_EQ(0UL, table_view_->selection_model().size());
94 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
95 EXPECT_FALSE(throbber_->visible());
96 EXPECT_FALSE(turn_adapter_off_help_->visible());
97 EXPECT_EQ(chooser_content_view_->help_text_, footnote_link_->text());
98 }
99
100 TEST_F(ChooserContentViewTest, AddOption) {
101 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0);
102
103 mock_chooser_controller_->OptionAdded(
104 base::ASCIIToUTF16("a"),
105 MockChooserController::kNoSignalStrengthLevelImage,
106 MockChooserController::ConnectedPairedStatus::CONNECTED |
107 MockChooserController::ConnectedPairedStatus::PAIRED);
108 EXPECT_EQ(1, table_view_->RowCount());
109 EXPECT_EQ(GetPairedText("a"), table_model_->GetText(0, 0));
110 // |table_view_| should be enabled since there is an option.
111 EXPECT_TRUE(table_view_->enabled());
112 // No option selected.
113 EXPECT_EQ(0UL, table_view_->selection_model().size());
114 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
115
116 mock_chooser_controller_->OptionAdded(
117 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
118 MockChooserController::ConnectedPairedStatus::NONE);
119 EXPECT_EQ(2, table_view_->RowCount());
120 EXPECT_EQ(base::ASCIIToUTF16("b"), table_model_->GetText(1, 0));
121 EXPECT_TRUE(table_view_->enabled());
122 EXPECT_EQ(0UL, table_view_->selection_model().size());
123 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
124
125 mock_chooser_controller_->OptionAdded(
126 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
127 MockChooserController::ConnectedPairedStatus::NONE);
128 EXPECT_EQ(3, table_view_->RowCount());
129 EXPECT_EQ(base::ASCIIToUTF16("c"), table_model_->GetText(2, 0));
130 EXPECT_TRUE(table_view_->enabled());
131 EXPECT_EQ(0UL, table_view_->selection_model().size());
132 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
133 }
134
135 TEST_F(ChooserContentViewTest, RemoveOption) {
136 // Called from TableView::OnItemsRemoved().
137 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(3);
138
139 mock_chooser_controller_->OptionAdded(
140 base::ASCIIToUTF16("a"),
141 MockChooserController::kNoSignalStrengthLevelImage,
142 MockChooserController::ConnectedPairedStatus::CONNECTED |
143 MockChooserController::ConnectedPairedStatus::PAIRED);
144 mock_chooser_controller_->OptionAdded(
145 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
146 MockChooserController::ConnectedPairedStatus::NONE);
147 mock_chooser_controller_->OptionAdded(
148 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
149 MockChooserController::ConnectedPairedStatus::NONE);
150
151 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
152 EXPECT_EQ(2, table_view_->RowCount());
153 EXPECT_EQ(GetPairedText("a"), table_model_->GetText(0, 0));
154 EXPECT_EQ(base::ASCIIToUTF16("c"), table_model_->GetText(1, 0));
155 EXPECT_TRUE(table_view_->enabled());
156 EXPECT_EQ(0UL, table_view_->selection_model().size());
157 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
158
159 // Remove a non-existent option, the number of rows should not change.
160 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("non-existent"));
161 EXPECT_EQ(2, table_view_->RowCount());
162 EXPECT_EQ(GetPairedText("a"), table_model_->GetText(0, 0));
163 EXPECT_EQ(base::ASCIIToUTF16("c"), table_model_->GetText(1, 0));
164 EXPECT_TRUE(table_view_->enabled());
165 EXPECT_EQ(0UL, table_view_->selection_model().size());
166 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
167
168 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
169 EXPECT_EQ(1, table_view_->RowCount());
170 EXPECT_EQ(GetPairedText("a"), table_model_->GetText(0, 0));
171 EXPECT_TRUE(table_view_->enabled());
172 EXPECT_EQ(0UL, table_view_->selection_model().size());
173 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
174
175 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
176 // There is no option shown now. But since "No devices found."
177 // needs to be displayed on the |table_view_|, the number of rows is 1.
178 EXPECT_EQ(1, table_view_->RowCount());
179 EXPECT_EQ(
180 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
181 table_model_->GetText(0, 0));
182 // |table_view_| should be disabled since all options are removed.
183 EXPECT_FALSE(table_view_->enabled());
184 EXPECT_EQ(0UL, table_view_->selection_model().size());
185 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
186 }
187
188 TEST_F(ChooserContentViewTest, UpdateOption) {
189 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(0);
190
191 mock_chooser_controller_->OptionAdded(
192 base::ASCIIToUTF16("a"),
193 MockChooserController::kNoSignalStrengthLevelImage,
194 MockChooserController::ConnectedPairedStatus::CONNECTED |
195 MockChooserController::ConnectedPairedStatus::PAIRED);
196 mock_chooser_controller_->OptionAdded(
197 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
198 MockChooserController::ConnectedPairedStatus::NONE);
199 mock_chooser_controller_->OptionAdded(
200 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
201 MockChooserController::ConnectedPairedStatus::NONE);
202
203 mock_chooser_controller_->OptionUpdated(
204 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"),
205 MockChooserController::kNoSignalStrengthLevelImage,
206 MockChooserController::ConnectedPairedStatus::CONNECTED |
207 MockChooserController::ConnectedPairedStatus::PAIRED);
208 EXPECT_EQ(3, table_view_->RowCount());
209 EXPECT_EQ(GetPairedText("a"), table_model_->GetText(0, 0));
210 EXPECT_EQ(GetPairedText("d"), table_model_->GetText(1, 0));
211 EXPECT_EQ(base::ASCIIToUTF16("c"), table_model_->GetText(2, 0));
212 EXPECT_TRUE(table_view_->enabled());
213 EXPECT_EQ(0UL, table_view_->selection_model().size());
214 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
215 }
216
217 TEST_F(ChooserContentViewTest, AddAndRemoveOption) {
218 // Called from TableView::OnItemsRemoved().
219 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(3);
220
221 mock_chooser_controller_->OptionAdded(
222 base::ASCIIToUTF16("a"),
223 MockChooserController::kNoSignalStrengthLevelImage,
224 MockChooserController::ConnectedPairedStatus::CONNECTED |
225 MockChooserController::ConnectedPairedStatus::PAIRED);
226 EXPECT_EQ(1, table_view_->RowCount());
227 mock_chooser_controller_->OptionAdded(
228 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
229 MockChooserController::ConnectedPairedStatus::NONE);
230 EXPECT_EQ(2, table_view_->RowCount());
231 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
232 EXPECT_EQ(1, table_view_->RowCount());
233 mock_chooser_controller_->OptionAdded(
234 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
235 MockChooserController::ConnectedPairedStatus::NONE);
236 EXPECT_EQ(2, table_view_->RowCount());
237 mock_chooser_controller_->OptionAdded(
238 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar,
239 MockChooserController::ConnectedPairedStatus::NONE);
240 EXPECT_EQ(3, table_view_->RowCount());
241 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d"));
242 EXPECT_EQ(2, table_view_->RowCount());
243 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
244 EXPECT_EQ(1, table_view_->RowCount());
245 }
246
247 TEST_F(ChooserContentViewTest, UpdateAndRemoveTheUpdatedOption) {
248 // Called from TableView::OnItemsRemoved().
249 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(1);
250
251 mock_chooser_controller_->OptionAdded(
252 base::ASCIIToUTF16("a"),
253 MockChooserController::kNoSignalStrengthLevelImage,
254 MockChooserController::ConnectedPairedStatus::CONNECTED |
255 MockChooserController::ConnectedPairedStatus::PAIRED);
256 mock_chooser_controller_->OptionAdded(
257 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
258 MockChooserController::ConnectedPairedStatus::NONE);
259 mock_chooser_controller_->OptionAdded(
260 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
261 MockChooserController::ConnectedPairedStatus::NONE);
262
263 mock_chooser_controller_->OptionUpdated(
264 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"),
265 MockChooserController::kNoSignalStrengthLevelImage,
266 MockChooserController::ConnectedPairedStatus::CONNECTED |
267 MockChooserController::ConnectedPairedStatus::PAIRED);
268
269 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d"));
270
271 EXPECT_EQ(2, table_view_->RowCount());
272 EXPECT_EQ(GetPairedText("a"), table_model_->GetText(0, 0));
273 EXPECT_EQ(base::ASCIIToUTF16("c"), table_model_->GetText(1, 0));
274 EXPECT_TRUE(table_view_->enabled());
275 EXPECT_EQ(0UL, table_view_->selection_model().size());
276 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
277 }
278
279 TEST_F(ChooserContentViewTest, SelectAndDeselectAnOption) {
280 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(4);
281
282 mock_chooser_controller_->OptionAdded(
283 base::ASCIIToUTF16("a"),
284 MockChooserController::kNoSignalStrengthLevelImage,
285 MockChooserController::ConnectedPairedStatus::CONNECTED |
286 MockChooserController::ConnectedPairedStatus::PAIRED);
287 mock_chooser_controller_->OptionAdded(
288 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
289 MockChooserController::ConnectedPairedStatus::NONE);
290 mock_chooser_controller_->OptionAdded(
291 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
292 MockChooserController::ConnectedPairedStatus::NONE);
293
294 // Select option 0.
295 table_view_->Select(0);
296 EXPECT_EQ(1UL, table_view_->selection_model().size());
297 EXPECT_EQ(0, table_view_->FirstSelectedRow());
298
299 // Unselect option 0.
300 table_view_->Select(-1);
301 EXPECT_EQ(0UL, table_view_->selection_model().size());
302 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
303
304 // Select option 1.
305 table_view_->Select(1);
306 EXPECT_EQ(1UL, table_view_->selection_model().size());
307 EXPECT_EQ(1, table_view_->FirstSelectedRow());
308
309 // Unselect option 1.
310 table_view_->Select(-1);
311 EXPECT_EQ(0UL, table_view_->selection_model().size());
312 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
313 }
314
315 TEST_F(ChooserContentViewTest, SelectAnOptionAndThenSelectAnotherOption) {
316 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(3);
317
318 mock_chooser_controller_->OptionAdded(
319 base::ASCIIToUTF16("a"),
320 MockChooserController::kNoSignalStrengthLevelImage,
321 MockChooserController::ConnectedPairedStatus::CONNECTED |
322 MockChooserController::ConnectedPairedStatus::PAIRED);
323 mock_chooser_controller_->OptionAdded(
324 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
325 MockChooserController::ConnectedPairedStatus::NONE);
326 mock_chooser_controller_->OptionAdded(
327 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
328 MockChooserController::ConnectedPairedStatus::NONE);
329
330 // Select option 0.
331 table_view_->Select(0);
332 EXPECT_EQ(1UL, table_view_->selection_model().size());
333 EXPECT_EQ(0, table_view_->FirstSelectedRow());
334
335 // Select option 1.
336 table_view_->Select(1);
337 EXPECT_EQ(1UL, table_view_->selection_model().size());
338 EXPECT_EQ(1, table_view_->FirstSelectedRow());
339
340 // Select option 2.
341 table_view_->Select(2);
342 EXPECT_EQ(1UL, table_view_->selection_model().size());
343 EXPECT_EQ(2, table_view_->FirstSelectedRow());
344 }
345
346 TEST_F(ChooserContentViewTest, SelectAnOptionAndRemoveAnotherOption) {
347 // Called one time from TableView::Select() and two times from
348 // TableView::OnItemsRemoved().
349 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(3);
350
351 mock_chooser_controller_->OptionAdded(
352 base::ASCIIToUTF16("a"),
353 MockChooserController::kNoSignalStrengthLevelImage,
354 MockChooserController::ConnectedPairedStatus::CONNECTED |
355 MockChooserController::ConnectedPairedStatus::PAIRED);
356 mock_chooser_controller_->OptionAdded(
357 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
358 MockChooserController::ConnectedPairedStatus::NONE);
359 mock_chooser_controller_->OptionAdded(
360 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
361 MockChooserController::ConnectedPairedStatus::NONE);
362
363 // Select option 1.
364 table_view_->Select(1);
365 EXPECT_EQ(1UL, table_view_->selection_model().size());
366 EXPECT_EQ(1, table_view_->FirstSelectedRow());
367
368 // Remove option 0, the list becomes: b c.
369 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
370 EXPECT_EQ(2, table_view_->RowCount());
371 EXPECT_EQ(1UL, table_view_->selection_model().size());
372 // Since option 0 is removed, the original selected option 1 becomes
373 // the first option in the list.
374 EXPECT_EQ(0, table_view_->FirstSelectedRow());
375
376 // Remove option 1.
377 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
378 EXPECT_EQ(1, table_view_->RowCount());
379 EXPECT_EQ(1UL, table_view_->selection_model().size());
380 EXPECT_EQ(0, table_view_->FirstSelectedRow());
381 }
382
383 TEST_F(ChooserContentViewTest, SelectAnOptionAndRemoveTheSelectedOption) {
384 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(2);
385
386 mock_chooser_controller_->OptionAdded(
387 base::ASCIIToUTF16("a"),
388 MockChooserController::kNoSignalStrengthLevelImage,
389 MockChooserController::ConnectedPairedStatus::CONNECTED |
390 MockChooserController::ConnectedPairedStatus::PAIRED);
391 mock_chooser_controller_->OptionAdded(
392 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
393 MockChooserController::ConnectedPairedStatus::NONE);
394 mock_chooser_controller_->OptionAdded(
395 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
396 MockChooserController::ConnectedPairedStatus::NONE);
397
398 // Select option 1.
399 table_view_->Select(1);
400 EXPECT_EQ(1UL, table_view_->selection_model().size());
401 EXPECT_EQ(1, table_view_->FirstSelectedRow());
402
403 // Remove option 1.
404 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
405 EXPECT_EQ(2, table_view_->RowCount());
406 // No option selected.
407 EXPECT_EQ(0UL, table_view_->selection_model().size());
408 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
409 }
410
411 TEST_F(ChooserContentViewTest, SelectAnOptionAndUpdateTheSelectedOption) {
412 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(1);
413
414 mock_chooser_controller_->OptionAdded(
415 base::ASCIIToUTF16("a"),
416 MockChooserController::kNoSignalStrengthLevelImage,
417 MockChooserController::ConnectedPairedStatus::CONNECTED |
418 MockChooserController::ConnectedPairedStatus::PAIRED);
419 mock_chooser_controller_->OptionAdded(
420 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
421 MockChooserController::ConnectedPairedStatus::NONE);
422 mock_chooser_controller_->OptionAdded(
423 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
424 MockChooserController::ConnectedPairedStatus::NONE);
425
426 // Select option 1.
427 table_view_->Select(1);
428
429 // Update option 1.
430 mock_chooser_controller_->OptionUpdated(
431 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"),
432 MockChooserController::kNoSignalStrengthLevelImage,
433 MockChooserController::ConnectedPairedStatus::CONNECTED |
434 MockChooserController::ConnectedPairedStatus::PAIRED);
435
436 EXPECT_EQ(1UL, table_view_->selection_model().size());
437 EXPECT_EQ(1, table_view_->FirstSelectedRow());
438 EXPECT_EQ(GetPairedText("a"), table_model_->GetText(0, 0));
439 EXPECT_EQ(GetPairedText("d"), table_model_->GetText(1, 0));
440 EXPECT_EQ(base::ASCIIToUTF16("c"), table_model_->GetText(2, 0));
441 }
442
443 TEST_F(ChooserContentViewTest,
444 AddAnOptionAndSelectItAndRemoveTheSelectedOption) {
445 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(2);
446
447 mock_chooser_controller_->OptionAdded(
448 base::ASCIIToUTF16("a"),
449 MockChooserController::kNoSignalStrengthLevelImage,
450 MockChooserController::ConnectedPairedStatus::CONNECTED |
451 MockChooserController::ConnectedPairedStatus::PAIRED);
452
453 // Select option 0.
454 table_view_->Select(0);
455 EXPECT_EQ(1UL, table_view_->selection_model().size());
456 EXPECT_EQ(0, table_view_->FirstSelectedRow());
457
458 // Remove option 0.
459 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
460 // There is no option shown now. But since "No devices found."
461 // needs to be displayed on the |table_view_|, the number of rows is 1.
462 EXPECT_EQ(1, table_view_->RowCount());
463 EXPECT_EQ(
464 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
465 table_model_->GetText(0, 0));
466 // |table_view_| should be disabled since all options are removed.
467 EXPECT_FALSE(table_view_->enabled());
468 // No option selected.
469 EXPECT_EQ(0UL, table_view_->selection_model().size());
470 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
471 }
472
473 TEST_F(ChooserContentViewTest, AdapterOnAndOffAndOn) {
474 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(2);
475
476 mock_chooser_controller_->OnAdapterPresenceChanged(
477 content::BluetoothChooser::AdapterPresence::POWERED_ON);
478 EXPECT_TRUE(table_view_->visible());
479 // Since "No devices found." needs to be displayed on the |table_view_|,
480 // the number of rows is 1.
481 EXPECT_EQ(1, table_view_->RowCount());
482 EXPECT_EQ(
483 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
484 table_model_->GetText(0, 0));
485 // |table_view_| should be disabled since there is no option shown.
486 EXPECT_FALSE(table_view_->enabled());
487 // No option selected.
488 EXPECT_EQ(0UL, table_view_->selection_model().size());
489 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
490 EXPECT_FALSE(throbber_->visible());
491 EXPECT_FALSE(turn_adapter_off_help_->visible());
492 EXPECT_EQ(chooser_content_view_->help_and_re_scan_text_,
493 footnote_link_->text());
494
495 mock_chooser_controller_->OptionAdded(
496 base::ASCIIToUTF16("a"),
497 MockChooserController::kNoSignalStrengthLevelImage,
498 MockChooserController::ConnectedPairedStatus::CONNECTED |
499 MockChooserController::ConnectedPairedStatus::PAIRED);
500 mock_chooser_controller_->OptionAdded(
501 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
502 MockChooserController::ConnectedPairedStatus::NONE);
503 mock_chooser_controller_->OptionAdded(
504 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
505 MockChooserController::ConnectedPairedStatus::NONE);
506
507 table_view_->Select(1);
508
509 mock_chooser_controller_->OnAdapterPresenceChanged(
510 content::BluetoothChooser::AdapterPresence::POWERED_OFF);
511 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions());
512 EXPECT_FALSE(table_view_->visible());
513 EXPECT_FALSE(throbber_->visible());
514 EXPECT_TRUE(turn_adapter_off_help_->visible());
515 EXPECT_EQ(chooser_content_view_->help_text_, footnote_link_->text());
516
517 mock_chooser_controller_->OnAdapterPresenceChanged(
518 content::BluetoothChooser::AdapterPresence::POWERED_ON);
519 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions());
520 EXPECT_TRUE(table_view_->visible());
521 EXPECT_EQ(1, table_view_->RowCount());
522 EXPECT_EQ(
523 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
524 table_model_->GetText(0, 0));
525 EXPECT_FALSE(table_view_->enabled());
526 EXPECT_EQ(0UL, table_view_->selection_model().size());
527 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
528 EXPECT_FALSE(throbber_->visible());
529 EXPECT_FALSE(turn_adapter_off_help_->visible());
530 EXPECT_EQ(chooser_content_view_->help_and_re_scan_text_,
531 footnote_link_->text());
532 }
533
534 TEST_F(ChooserContentViewTest, DiscoveringAndNoOptionAddedAndIdle) {
535 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(2);
536
537 mock_chooser_controller_->OptionAdded(
538 base::ASCIIToUTF16("a"),
539 MockChooserController::kNoSignalStrengthLevelImage,
540 MockChooserController::ConnectedPairedStatus::CONNECTED |
541 MockChooserController::ConnectedPairedStatus::PAIRED);
542 mock_chooser_controller_->OptionAdded(
543 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
544 MockChooserController::ConnectedPairedStatus::NONE);
545 mock_chooser_controller_->OptionAdded(
546 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
547 MockChooserController::ConnectedPairedStatus::NONE);
548 table_view_->Select(1);
549
550 mock_chooser_controller_->OnDiscoveryStateChanged(
551 content::BluetoothChooser::DiscoveryState::DISCOVERING);
552 EXPECT_FALSE(table_view_->visible());
553 EXPECT_TRUE(throbber_->visible());
554 EXPECT_EQ(chooser_content_view_->help_and_scanning_text_,
555 footnote_link_->text());
556
557 mock_chooser_controller_->OnDiscoveryStateChanged(
558 content::BluetoothChooser::DiscoveryState::IDLE);
559 EXPECT_TRUE(table_view_->visible());
560 // Since "No devices found." needs to be displayed on the |table_view_|,
561 // the number of rows is 1.
562 EXPECT_EQ(1, table_view_->RowCount());
563 EXPECT_EQ(
564 l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT),
565 table_model_->GetText(0, 0));
566 // |table_view_| should be disabled since there is no option shown.
567 EXPECT_FALSE(table_view_->enabled());
568 // No option selected.
569 EXPECT_EQ(0UL, table_view_->selection_model().size());
570 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
571 EXPECT_FALSE(throbber_->visible());
572 EXPECT_EQ(chooser_content_view_->help_and_re_scan_text_,
573 footnote_link_->text());
574 }
575
576 TEST_F(ChooserContentViewTest, DiscoveringAndOneOptionAddedAndSelectedAndIdle) {
577 EXPECT_CALL(*mock_table_view_observer_, OnSelectionChanged()).Times(3);
578
579 mock_chooser_controller_->OptionAdded(
580 base::ASCIIToUTF16("a"),
581 MockChooserController::kNoSignalStrengthLevelImage,
582 MockChooserController::ConnectedPairedStatus::CONNECTED |
583 MockChooserController::ConnectedPairedStatus::PAIRED);
584 mock_chooser_controller_->OptionAdded(
585 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
586 MockChooserController::ConnectedPairedStatus::NONE);
587 mock_chooser_controller_->OptionAdded(
588 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
589 MockChooserController::ConnectedPairedStatus::NONE);
590 table_view_->Select(1);
591
592 mock_chooser_controller_->OnDiscoveryStateChanged(
593 content::BluetoothChooser::DiscoveryState::DISCOVERING);
594 mock_chooser_controller_->OptionAdded(
595 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar,
596 MockChooserController::ConnectedPairedStatus::NONE);
597 EXPECT_TRUE(table_view_->visible());
598 EXPECT_EQ(1, table_view_->RowCount());
599 EXPECT_EQ(base::ASCIIToUTF16("d"), table_model_->GetText(0, 0));
600 // |table_view_| should be enabled since there is an option.
601 EXPECT_TRUE(table_view_->enabled());
602 // No option selected.
603 EXPECT_EQ(0UL, table_view_->selection_model().size());
604 EXPECT_EQ(-1, table_view_->FirstSelectedRow());
605 EXPECT_FALSE(throbber_->visible());
606 EXPECT_EQ(chooser_content_view_->help_and_scanning_text_,
607 footnote_link_->text());
608 table_view_->Select(0);
609 EXPECT_EQ(1UL, table_view_->selection_model().size());
610 EXPECT_EQ(0, table_view_->FirstSelectedRow());
611
612 mock_chooser_controller_->OnDiscoveryStateChanged(
613 content::BluetoothChooser::DiscoveryState::IDLE);
614 EXPECT_TRUE(table_view_->visible());
615 EXPECT_EQ(1, table_view_->RowCount());
616 EXPECT_EQ(base::ASCIIToUTF16("d"), table_model_->GetText(0, 0));
617 // |table_view_| should be enabled since there is an option.
618 EXPECT_TRUE(table_view_->enabled());
619 EXPECT_EQ(1UL, table_view_->selection_model().size());
620 EXPECT_EQ(0, table_view_->FirstSelectedRow());
621 EXPECT_FALSE(throbber_->visible());
622 EXPECT_EQ(chooser_content_view_->help_and_re_scan_text_,
623 footnote_link_->text());
624 }
625
626 TEST_F(ChooserContentViewTest, ClickAdapterOffHelpLink) {
627 EXPECT_CALL(*mock_chooser_controller_, OpenAdapterOffHelpUrl()).Times(1);
628 turn_adapter_off_help_->LinkClicked(nullptr, 0);
629 }
630
631 TEST_F(ChooserContentViewTest, ClickRescanLink) {
632 EXPECT_CALL(*mock_chooser_controller_, RefreshOptions()).Times(1);
633 chooser_content_view_->StyledLabelLinkClicked(
634 footnote_link_, chooser_content_view_->re_scan_text_range_, 0);
635 }
636
637 TEST_F(ChooserContentViewTest, ClickGetHelpLink) {
638 EXPECT_CALL(*mock_chooser_controller_, OpenHelpCenterUrl()).Times(1);
639 chooser_content_view_->StyledLabelLinkClicked(
640 footnote_link_, chooser_content_view_->help_text_range_, 0);
641 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/chooser_content_view.cc ('k') | chrome/browser/ui/views/device_chooser_content_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698