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

Unified 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, 5 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
« 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