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

Side by Side Diff: chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller_unittest.mm

Issue 2179193002: Add test for WebBluetooth chooser spinner, status, and rescan button on Mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@add_test
Patch Set: rebase Created 4 years, 4 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
« no previous file with comments | « chrome/browser/ui/cocoa/chooser_content_view_cocoa.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 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 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/extensions/chooser_dialog_cocoa_controller.h" 5 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller.h"
6 6
7 #import <Cocoa/Cocoa.h> 7 #import <Cocoa/Cocoa.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "chrome/browser/chooser_controller/mock_chooser_controller.h" 13 #include "chrome/browser/chooser_controller/mock_chooser_controller.h"
14 #import "chrome/browser/ui/cocoa/chooser_content_view_cocoa.h" 14 #import "chrome/browser/ui/cocoa/chooser_content_view_cocoa.h"
15 #import "chrome/browser/ui/cocoa/cocoa_profile_test.h" 15 #import "chrome/browser/ui/cocoa/cocoa_profile_test.h"
16 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h" 16 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
17 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h" 17 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h"
18 #include "chrome/browser/ui/cocoa/spinner_view.h"
18 #include "testing/gmock/include/gmock/gmock.h" 19 #include "testing/gmock/include/gmock/gmock.h"
19 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
20 #include "testing/gtest_mac.h" 21 #include "testing/gtest_mac.h"
21 22
22 class ChooserDialogCocoaControllerTest : public CocoaProfileTest { 23 class ChooserDialogCocoaControllerTest : public CocoaProfileTest {
23 protected: 24 protected:
24 ChooserDialogCocoaControllerTest() {} 25 ChooserDialogCocoaControllerTest() {}
25 ~ChooserDialogCocoaControllerTest() override {} 26 ~ChooserDialogCocoaControllerTest() override {}
26 27
27 void SetUp() override { 28 void SetUp() override {
(...skipping 14 matching lines...) Expand all
42 chooser_dialog_.reset( 43 chooser_dialog_.reset(
43 new ChooserDialogCocoa(web_contents, std::move(chooser_controller))); 44 new ChooserDialogCocoa(web_contents, std::move(chooser_controller)));
44 ASSERT_TRUE(chooser_dialog_); 45 ASSERT_TRUE(chooser_dialog_);
45 chooser_dialog_controller_ = 46 chooser_dialog_controller_ =
46 chooser_dialog_->chooser_dialog_cocoa_controller_.get(); 47 chooser_dialog_->chooser_dialog_cocoa_controller_.get();
47 ASSERT_TRUE(chooser_dialog_controller_); 48 ASSERT_TRUE(chooser_dialog_controller_);
48 chooser_content_view_ = [chooser_dialog_controller_ chooserContentView]; 49 chooser_content_view_ = [chooser_dialog_controller_ chooserContentView];
49 ASSERT_TRUE(chooser_content_view_); 50 ASSERT_TRUE(chooser_content_view_);
50 table_view_ = [chooser_content_view_ tableView]; 51 table_view_ = [chooser_content_view_ tableView];
51 ASSERT_TRUE(table_view_); 52 ASSERT_TRUE(table_view_);
53 spinner_ = [chooser_content_view_ spinner];
54 ASSERT_TRUE(spinner_);
55 status_ = [chooser_content_view_ status];
56 ASSERT_TRUE(status_);
57 rescan_button_ = [chooser_content_view_ rescanButton];
58 ASSERT_TRUE(rescan_button_);
52 connect_button_ = [chooser_content_view_ connectButton]; 59 connect_button_ = [chooser_content_view_ connectButton];
53 ASSERT_TRUE(connect_button_); 60 ASSERT_TRUE(connect_button_);
54 cancel_button_ = [chooser_content_view_ cancelButton]; 61 cancel_button_ = [chooser_content_view_ cancelButton];
55 ASSERT_TRUE(cancel_button_); 62 ASSERT_TRUE(cancel_button_);
56 help_button_ = [chooser_content_view_ helpButton]; 63 help_button_ = [chooser_content_view_ helpButton];
57 ASSERT_TRUE(help_button_); 64 ASSERT_TRUE(help_button_);
58 } 65 }
59 66
60 std::unique_ptr<ChooserDialogCocoa> chooser_dialog_; 67 std::unique_ptr<ChooserDialogCocoa> chooser_dialog_;
61 68
62 MockChooserController* chooser_controller_; 69 MockChooserController* chooser_controller_;
63 ChooserDialogCocoaController* chooser_dialog_controller_; 70 ChooserDialogCocoaController* chooser_dialog_controller_;
64 ChooserContentViewCocoa* chooser_content_view_; 71 ChooserContentViewCocoa* chooser_content_view_;
65 NSTableView* table_view_; 72 NSTableView* table_view_;
73 SpinnerView* spinner_;
74 NSTextField* status_;
75 NSButton* rescan_button_;
66 NSButton* connect_button_; 76 NSButton* connect_button_;
67 NSButton* cancel_button_; 77 NSButton* cancel_button_;
68 NSButton* help_button_; 78 NSButton* help_button_;
69 79
70 private: 80 private:
71 DISALLOW_COPY_AND_ASSIGN(ChooserDialogCocoaControllerTest); 81 DISALLOW_COPY_AND_ASSIGN(ChooserDialogCocoaControllerTest);
72 }; 82 };
73 83
74 TEST_F(ChooserDialogCocoaControllerTest, InitialState) { 84 TEST_F(ChooserDialogCocoaControllerTest, InitialState) {
75 CreateChooserDialog(); 85 CreateChooserDialog();
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 356 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
347 357
348 // Select option 0 and press "Cancel" button. 358 // Select option 0 and press "Cancel" button.
349 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 359 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
350 byExtendingSelection:NO]; 360 byExtendingSelection:NO];
351 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); 361 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0);
352 EXPECT_CALL(*chooser_controller_, Cancel()).Times(1); 362 EXPECT_CALL(*chooser_controller_, Cancel()).Times(1);
353 [cancel_button_ performClick:chooser_dialog_controller_]; 363 [cancel_button_ performClick:chooser_dialog_controller_];
354 } 364 }
355 365
366 TEST_F(ChooserDialogCocoaControllerTest, AdapterOnAndOffAndOn) {
367 CreateChooserDialog();
368
369 chooser_controller_->OnAdapterPresenceChanged(
370 content::BluetoothChooser::AdapterPresence::POWERED_ON);
371 EXPECT_FALSE(table_view_.hidden);
372 // There is no option shown now. But since "No devices found."
373 // needs to be displayed on the |table_view_|, the number of rows is 1.
374 EXPECT_EQ(1, table_view_.numberOfRows);
375 // |table_view_| should be disabled since there is no option shown.
376 ASSERT_FALSE(table_view_.enabled);
377 // No option selected.
378 EXPECT_EQ(-1, table_view_.selectedRow);
379 EXPECT_TRUE(spinner_.hidden);
380 EXPECT_TRUE(status_.hidden);
381 EXPECT_FALSE(rescan_button_.hidden);
382 ASSERT_FALSE(connect_button_.enabled);
383 ASSERT_TRUE(cancel_button_.enabled);
384
385 // Add options
386 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
387 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
388 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
389 ASSERT_TRUE(table_view_.enabled);
390 EXPECT_EQ(3, table_view_.numberOfRows);
391 // Select option 1.
392 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
393 byExtendingSelection:NO];
394 EXPECT_EQ(1, table_view_.selectedRow);
395 ASSERT_TRUE(connect_button_.enabled);
396 ASSERT_TRUE(cancel_button_.enabled);
397
398 chooser_controller_->OnAdapterPresenceChanged(
399 content::BluetoothChooser::AdapterPresence::POWERED_OFF);
400 EXPECT_FALSE(table_view_.hidden);
401 // Since "Bluetooth turned off." needs to be displayed on the |table_view_|,
402 // the number of rows is 1.
403 EXPECT_EQ(1, table_view_.numberOfRows);
404 // |table_view_| should be disabled since there is no option shown.
405 EXPECT_FALSE(table_view_.enabled);
406 // No option selected.
407 EXPECT_EQ(-1, table_view_.selectedRow);
408 EXPECT_TRUE(spinner_.hidden);
409 EXPECT_TRUE(status_.hidden);
410 EXPECT_TRUE(rescan_button_.hidden);
411 // Since the adapter is turned off, the previously selected option
412 // becomes invalid, the OK button is disabled.
413 EXPECT_EQ(0u, chooser_controller_->NumOptions());
414 ASSERT_FALSE(connect_button_.enabled);
415 ASSERT_TRUE(cancel_button_.enabled);
416
417 chooser_controller_->OnAdapterPresenceChanged(
418 content::BluetoothChooser::AdapterPresence::POWERED_ON);
419 EXPECT_EQ(0u, chooser_controller_->NumOptions());
420 ASSERT_FALSE(connect_button_.enabled);
421 ASSERT_TRUE(cancel_button_.enabled);
422 }
423
424 TEST_F(ChooserDialogCocoaControllerTest, DiscoveringAndIdle) {
425 CreateChooserDialog();
426
427 // Add options
428 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
429 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
430 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
431 EXPECT_FALSE(table_view_.hidden);
432 ASSERT_TRUE(table_view_.enabled);
433 EXPECT_EQ(3, table_view_.numberOfRows);
434 // Select option 1.
435 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
436 byExtendingSelection:NO];
437 EXPECT_EQ(1, table_view_.selectedRow);
438 EXPECT_TRUE(spinner_.hidden);
439 EXPECT_TRUE(status_.hidden);
440 EXPECT_TRUE(rescan_button_.hidden);
441 ASSERT_TRUE(connect_button_.enabled);
442 ASSERT_TRUE(cancel_button_.enabled);
443
444 chooser_controller_->OnDiscoveryStateChanged(
445 content::BluetoothChooser::DiscoveryState::DISCOVERING);
446 EXPECT_TRUE(table_view_.hidden);
447 EXPECT_FALSE(spinner_.hidden);
448 EXPECT_FALSE(status_.hidden);
449 EXPECT_TRUE(rescan_button_.hidden);
450 // OK button is disabled since the chooser is refreshing options.
451 ASSERT_FALSE(connect_button_.enabled);
452 ASSERT_TRUE(cancel_button_.enabled);
453
454 chooser_controller_->OnDiscoveryStateChanged(
455 content::BluetoothChooser::DiscoveryState::IDLE);
456 EXPECT_FALSE(table_view_.hidden);
457 // There is no option shown now. But since "No devices found."
458 // needs to be displayed on the |table_view_|, the number of rows is 1.
459 EXPECT_EQ(1, table_view_.numberOfRows);
460 // |table_view_| should be disabled since there is no option shown.
461 ASSERT_FALSE(table_view_.enabled);
462 // No option selected.
463 EXPECT_EQ(-1, table_view_.selectedRow);
464 EXPECT_TRUE(spinner_.hidden);
465 EXPECT_TRUE(status_.hidden);
466 EXPECT_FALSE(rescan_button_.hidden);
467 // OK button is disabled since the chooser refreshed options.
468 ASSERT_FALSE(connect_button_.enabled);
469 ASSERT_TRUE(cancel_button_.enabled);
470 }
471
472 TEST_F(ChooserDialogCocoaControllerTest, PressRescanButton) {
473 CreateChooserDialog();
474
475 EXPECT_CALL(*chooser_controller_, RefreshOptions()).Times(1);
476 [rescan_button_ performClick:chooser_dialog_controller_];
477 }
478
356 TEST_F(ChooserDialogCocoaControllerTest, PressHelpButton) { 479 TEST_F(ChooserDialogCocoaControllerTest, PressHelpButton) {
357 CreateChooserDialog(); 480 CreateChooserDialog();
358 481
359 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 482 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
360 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 483 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
361 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 484 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
362 485
363 // Select option 0 and press "Get help" button. 486 // Select option 0 and press "Get help" button.
364 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 487 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
365 byExtendingSelection:NO]; 488 byExtendingSelection:NO];
366 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); 489 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0);
367 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0); 490 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0);
368 EXPECT_CALL(*chooser_controller_, OpenHelpCenterUrl()).Times(1); 491 EXPECT_CALL(*chooser_controller_, OpenHelpCenterUrl()).Times(1);
369 [help_button_ performClick:chooser_dialog_controller_]; 492 [help_button_ performClick:chooser_dialog_controller_];
370 } 493 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/chooser_content_view_cocoa.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698