Index: chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller_unittest.mm |
diff --git a/chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller_unittest.mm b/chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller_unittest.mm |
index 6088ebfc8118659fe6f1de61bf8ec205fc2a579d..61a403d8a68ca945195aacddd5eb2c454b24af68 100644 |
--- a/chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller_unittest.mm |
+++ b/chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller_unittest.mm |
@@ -15,6 +15,7 @@ |
#import "chrome/browser/ui/cocoa/cocoa_profile_test.h" |
#include "chrome/browser/ui/cocoa/cocoa_test_helper.h" |
#import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h" |
+#include "chrome/browser/ui/cocoa/spinner_view.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "testing/gtest_mac.h" |
@@ -49,6 +50,12 @@ class ChooserDialogCocoaControllerTest : public CocoaProfileTest { |
ASSERT_TRUE(chooser_content_view_); |
table_view_ = [chooser_content_view_ tableView]; |
ASSERT_TRUE(table_view_); |
+ spinner_ = [chooser_content_view_ spinner]; |
+ ASSERT_TRUE(spinner_); |
+ status_ = [chooser_content_view_ status]; |
+ ASSERT_TRUE(status_); |
+ rescan_button_ = [chooser_content_view_ rescanButton]; |
+ ASSERT_TRUE(rescan_button_); |
connect_button_ = [chooser_content_view_ connectButton]; |
ASSERT_TRUE(connect_button_); |
cancel_button_ = [chooser_content_view_ cancelButton]; |
@@ -63,6 +70,9 @@ class ChooserDialogCocoaControllerTest : public CocoaProfileTest { |
ChooserDialogCocoaController* chooser_dialog_controller_; |
ChooserContentViewCocoa* chooser_content_view_; |
NSTableView* table_view_; |
+ SpinnerView* spinner_; |
+ NSTextField* status_; |
+ NSButton* rescan_button_; |
NSButton* connect_button_; |
NSButton* cancel_button_; |
NSButton* help_button_; |
@@ -353,6 +363,119 @@ TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressCancelButton) { |
[cancel_button_ performClick:chooser_dialog_controller_]; |
} |
+TEST_F(ChooserDialogCocoaControllerTest, AdapterOnAndOffAndOn) { |
+ CreateChooserDialog(); |
+ |
+ chooser_controller_->OnAdapterPresenceChanged( |
+ content::BluetoothChooser::AdapterPresence::POWERED_ON); |
+ EXPECT_FALSE(table_view_.hidden); |
+ // There is no option shown now. But since "No devices found." |
+ // needs to be displayed on the |table_view_|, the number of rows is 1. |
+ EXPECT_EQ(1, table_view_.numberOfRows); |
+ // |table_view_| should be disabled since there is no option shown. |
+ ASSERT_FALSE(table_view_.enabled); |
+ // No option selected. |
+ EXPECT_EQ(-1, table_view_.selectedRow); |
+ EXPECT_TRUE(spinner_.hidden); |
+ EXPECT_TRUE(status_.hidden); |
+ EXPECT_FALSE(rescan_button_.hidden); |
+ ASSERT_FALSE(connect_button_.enabled); |
+ ASSERT_TRUE(cancel_button_.enabled); |
+ |
+ // Add options |
+ chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); |
+ chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); |
+ chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); |
+ ASSERT_TRUE(table_view_.enabled); |
+ EXPECT_EQ(3, table_view_.numberOfRows); |
+ // Select option 1. |
+ [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
+ byExtendingSelection:NO]; |
+ EXPECT_EQ(1, table_view_.selectedRow); |
+ ASSERT_TRUE(connect_button_.enabled); |
+ ASSERT_TRUE(cancel_button_.enabled); |
+ |
+ chooser_controller_->OnAdapterPresenceChanged( |
+ content::BluetoothChooser::AdapterPresence::POWERED_OFF); |
+ EXPECT_FALSE(table_view_.hidden); |
+ // Since "Bluetooth turned off." needs to be displayed on the |table_view_|, |
+ // the number of rows is 1. |
+ EXPECT_EQ(1, table_view_.numberOfRows); |
+ // |table_view_| should be disabled since there is no option shown. |
+ EXPECT_FALSE(table_view_.enabled); |
+ // No option selected. |
+ EXPECT_EQ(-1, table_view_.selectedRow); |
+ EXPECT_TRUE(spinner_.hidden); |
+ EXPECT_TRUE(status_.hidden); |
+ EXPECT_TRUE(rescan_button_.hidden); |
+ // Since the adapter is turned off, the previously selected option |
+ // becomes invalid, the OK button is disabled. |
+ EXPECT_EQ(0u, chooser_controller_->NumOptions()); |
+ ASSERT_FALSE(connect_button_.enabled); |
+ ASSERT_TRUE(cancel_button_.enabled); |
+ |
+ chooser_controller_->OnAdapterPresenceChanged( |
+ content::BluetoothChooser::AdapterPresence::POWERED_ON); |
+ EXPECT_EQ(0u, chooser_controller_->NumOptions()); |
+ ASSERT_FALSE(connect_button_.enabled); |
+ ASSERT_TRUE(cancel_button_.enabled); |
+} |
+ |
+TEST_F(ChooserDialogCocoaControllerTest, DiscoveringAndIdle) { |
+ CreateChooserDialog(); |
+ |
+ // Add options |
+ chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); |
+ chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); |
+ chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); |
+ EXPECT_FALSE(table_view_.hidden); |
+ ASSERT_TRUE(table_view_.enabled); |
+ EXPECT_EQ(3, table_view_.numberOfRows); |
+ // Select option 1. |
+ [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
+ byExtendingSelection:NO]; |
+ EXPECT_EQ(1, table_view_.selectedRow); |
+ EXPECT_TRUE(spinner_.hidden); |
+ EXPECT_TRUE(status_.hidden); |
+ EXPECT_TRUE(rescan_button_.hidden); |
+ ASSERT_TRUE(connect_button_.enabled); |
+ ASSERT_TRUE(cancel_button_.enabled); |
+ |
+ chooser_controller_->OnDiscoveryStateChanged( |
+ content::BluetoothChooser::DiscoveryState::DISCOVERING); |
+ EXPECT_TRUE(table_view_.hidden); |
+ EXPECT_FALSE(spinner_.hidden); |
+ EXPECT_FALSE(status_.hidden); |
+ EXPECT_TRUE(rescan_button_.hidden); |
+ // OK button is disabled since the chooser is refreshing options. |
+ ASSERT_FALSE(connect_button_.enabled); |
+ ASSERT_TRUE(cancel_button_.enabled); |
+ |
+ chooser_controller_->OnDiscoveryStateChanged( |
+ content::BluetoothChooser::DiscoveryState::IDLE); |
+ EXPECT_FALSE(table_view_.hidden); |
+ // There is no option shown now. But since "No devices found." |
+ // needs to be displayed on the |table_view_|, the number of rows is 1. |
+ EXPECT_EQ(1, table_view_.numberOfRows); |
+ // |table_view_| should be disabled since there is no option shown. |
+ ASSERT_FALSE(table_view_.enabled); |
+ // No option selected. |
+ EXPECT_EQ(-1, table_view_.selectedRow); |
+ EXPECT_TRUE(spinner_.hidden); |
+ EXPECT_TRUE(status_.hidden); |
+ EXPECT_FALSE(rescan_button_.hidden); |
+ // OK button is disabled since the chooser refreshed options. |
+ ASSERT_FALSE(connect_button_.enabled); |
+ ASSERT_TRUE(cancel_button_.enabled); |
+} |
+ |
+TEST_F(ChooserDialogCocoaControllerTest, PressRescanButton) { |
+ CreateChooserDialog(); |
+ |
+ EXPECT_CALL(*chooser_controller_, RefreshOptions()).Times(1); |
+ [rescan_button_ performClick:chooser_dialog_controller_]; |
+} |
+ |
TEST_F(ChooserDialogCocoaControllerTest, PressHelpButton) { |
CreateChooserDialog(); |