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

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

Issue 2354023003: Add help link when Bluetooth adapter is off for WebBluetooth chooser on Mac (Closed)
Patch Set: rebase Created 4 years, 2 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>
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 ASSERT_TRUE(chooser_controller); 65 ASSERT_TRUE(chooser_controller);
66 mock_chooser_controller_ = chooser_controller.get(); 66 mock_chooser_controller_ = chooser_controller.get();
67 chooser_dialog_.reset( 67 chooser_dialog_.reset(
68 new ChooserDialogCocoa(web_contents, std::move(chooser_controller))); 68 new ChooserDialogCocoa(web_contents, std::move(chooser_controller)));
69 ASSERT_TRUE(chooser_dialog_); 69 ASSERT_TRUE(chooser_dialog_);
70 chooser_dialog_controller_ = 70 chooser_dialog_controller_ =
71 chooser_dialog_->chooser_dialog_cocoa_controller_.get(); 71 chooser_dialog_->chooser_dialog_cocoa_controller_.get();
72 ASSERT_TRUE(chooser_dialog_controller_); 72 ASSERT_TRUE(chooser_dialog_controller_);
73 chooser_content_view_ = [chooser_dialog_controller_ chooserContentView]; 73 chooser_content_view_ = [chooser_dialog_controller_ chooserContentView];
74 ASSERT_TRUE(chooser_content_view_); 74 ASSERT_TRUE(chooser_content_view_);
75 adapter_off_help_button_ = [chooser_content_view_ adapterOffHelpButton];
76 ASSERT_TRUE(adapter_off_help_button_);
75 table_view_ = [chooser_content_view_ tableView]; 77 table_view_ = [chooser_content_view_ tableView];
76 ASSERT_TRUE(table_view_); 78 ASSERT_TRUE(table_view_);
77 spinner_ = [chooser_content_view_ spinner]; 79 spinner_ = [chooser_content_view_ spinner];
78 ASSERT_TRUE(spinner_); 80 ASSERT_TRUE(spinner_);
79 status_ = [chooser_content_view_ status]; 81 status_ = [chooser_content_view_ status];
80 ASSERT_TRUE(status_); 82 ASSERT_TRUE(status_);
81 rescan_button_ = [chooser_content_view_ rescanButton]; 83 rescan_button_ = [chooser_content_view_ rescanButton];
82 ASSERT_TRUE(rescan_button_); 84 ASSERT_TRUE(rescan_button_);
83 connect_button_ = [chooser_content_view_ connectButton]; 85 connect_button_ = [chooser_content_view_ connectButton];
84 ASSERT_TRUE(connect_button_); 86 ASSERT_TRUE(connect_button_);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 tableRowViewPairedStatus:static_cast<NSInteger>(row)] textColor]); 151 tableRowViewPairedStatus:static_cast<NSInteger>(row)] textColor]);
150 } 152 }
151 153
152 ui::ResourceBundle& rb_; 154 ui::ResourceBundle& rb_;
153 155
154 std::unique_ptr<ChooserDialogCocoa> chooser_dialog_; 156 std::unique_ptr<ChooserDialogCocoa> chooser_dialog_;
155 157
156 MockChooserController* mock_chooser_controller_; 158 MockChooserController* mock_chooser_controller_;
157 ChooserDialogCocoaController* chooser_dialog_controller_; 159 ChooserDialogCocoaController* chooser_dialog_controller_;
158 ChooserContentViewCocoa* chooser_content_view_; 160 ChooserContentViewCocoa* chooser_content_view_;
161 NSButton* adapter_off_help_button_;
159 NSTableView* table_view_; 162 NSTableView* table_view_;
160 SpinnerView* spinner_; 163 SpinnerView* spinner_;
161 NSTextField* status_; 164 NSTextField* status_;
162 NSButton* rescan_button_; 165 NSButton* rescan_button_;
163 NSButton* connect_button_; 166 NSButton* connect_button_;
164 NSButton* cancel_button_; 167 NSButton* cancel_button_;
165 NSButton* help_button_; 168 NSButton* help_button_;
166 169
167 private: 170 private:
168 DISALLOW_COPY_AND_ASSIGN(ChooserDialogCocoaControllerTest); 171 DISALLOW_COPY_AND_ASSIGN(ChooserDialogCocoaControllerTest);
(...skipping 12 matching lines...) Expand all
181 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); 184 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT));
182 EXPECT_FALSE(IsRowPaired(0)); 185 EXPECT_FALSE(IsRowPaired(0));
183 // |table_view_| should be disabled since there is no option shown. 186 // |table_view_| should be disabled since there is no option shown.
184 EXPECT_FALSE(table_view_.enabled); 187 EXPECT_FALSE(table_view_.enabled);
185 // No option selected. 188 // No option selected.
186 EXPECT_EQ(-1, table_view_.selectedRow); 189 EXPECT_EQ(-1, table_view_.selectedRow);
187 // |connect_button_| should be disabled since no option selected. 190 // |connect_button_| should be disabled since no option selected.
188 EXPECT_FALSE(connect_button_.enabled); 191 EXPECT_FALSE(connect_button_.enabled);
189 EXPECT_TRUE(cancel_button_.enabled); 192 EXPECT_TRUE(cancel_button_.enabled);
190 EXPECT_TRUE(help_button_.enabled); 193 EXPECT_TRUE(help_button_.enabled);
194 EXPECT_NSEQ(l10n_util::GetNSString(IDS_DEVICE_CHOOSER_GET_HELP_LINK_TEXT),
195 help_button_.title);
191 } 196 }
192 197
193 TEST_F(ChooserDialogCocoaControllerTest, AddOption) { 198 TEST_F(ChooserDialogCocoaControllerTest, AddOption) {
194 CreateChooserDialog(); 199 CreateChooserDialog();
195 200
196 mock_chooser_controller_->OptionAdded( 201 mock_chooser_controller_->OptionAdded(
197 base::ASCIIToUTF16("a"), 202 base::ASCIIToUTF16("a"),
198 MockChooserController::kNoSignalStrengthLevelImage, 203 MockChooserController::kNoSignalStrengthLevelImage,
199 MockChooserController::ConnectedPairedStatus::CONNECTED | 204 MockChooserController::ConnectedPairedStatus::CONNECTED |
200 MockChooserController::ConnectedPairedStatus::PAIRED); 205 MockChooserController::ConnectedPairedStatus::PAIRED);
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 EXPECT_CALL(*mock_chooser_controller_, Select(testing::_)).Times(0); 877 EXPECT_CALL(*mock_chooser_controller_, Select(testing::_)).Times(0);
873 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(1); 878 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(1);
874 [cancel_button_ performClick:chooser_dialog_controller_]; 879 [cancel_button_ performClick:chooser_dialog_controller_];
875 } 880 }
876 881
877 TEST_F(ChooserDialogCocoaControllerTest, AdapterOnAndOffAndOn) { 882 TEST_F(ChooserDialogCocoaControllerTest, AdapterOnAndOffAndOn) {
878 CreateChooserDialog(); 883 CreateChooserDialog();
879 884
880 mock_chooser_controller_->OnAdapterPresenceChanged( 885 mock_chooser_controller_->OnAdapterPresenceChanged(
881 content::BluetoothChooser::AdapterPresence::POWERED_ON); 886 content::BluetoothChooser::AdapterPresence::POWERED_ON);
887 EXPECT_TRUE(adapter_off_help_button_.hidden);
882 EXPECT_FALSE(table_view_.hidden); 888 EXPECT_FALSE(table_view_.hidden);
883 // There is no option shown now. But since "No devices found." 889 // There is no option shown now. But since "No devices found."
884 // needs to be displayed on the |table_view_|, the number of rows is 1. 890 // needs to be displayed on the |table_view_|, the number of rows is 1.
885 EXPECT_EQ(1, table_view_.numberOfRows); 891 EXPECT_EQ(1, table_view_.numberOfRows);
886 // |table_view_| should be disabled since there is no option shown. 892 // |table_view_| should be disabled since there is no option shown.
887 EXPECT_FALSE(table_view_.enabled); 893 EXPECT_FALSE(table_view_.enabled);
888 // No option selected. 894 // No option selected.
889 EXPECT_EQ(-1, table_view_.selectedRow); 895 EXPECT_EQ(-1, table_view_.selectedRow);
890 ExpectNoRowImage(0); 896 ExpectNoRowImage(0);
891 ExpectRowTextIs( 897 ExpectRowTextIs(
892 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); 898 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT));
893 EXPECT_FALSE(IsRowPaired(0)); 899 EXPECT_FALSE(IsRowPaired(0));
894 EXPECT_TRUE(spinner_.hidden); 900 EXPECT_TRUE(spinner_.hidden);
895 EXPECT_TRUE(status_.hidden); 901 EXPECT_TRUE(status_.hidden);
896 EXPECT_FALSE(rescan_button_.hidden); 902 EXPECT_FALSE(rescan_button_.hidden);
903 EXPECT_NSEQ(l10n_util::GetNSString(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN),
904 rescan_button_.title);
897 EXPECT_FALSE(connect_button_.enabled); 905 EXPECT_FALSE(connect_button_.enabled);
898 EXPECT_TRUE(cancel_button_.enabled); 906 EXPECT_TRUE(cancel_button_.enabled);
899 907
900 // Add options 908 // Add options
901 mock_chooser_controller_->OptionAdded( 909 mock_chooser_controller_->OptionAdded(
902 base::ASCIIToUTF16("a"), 910 base::ASCIIToUTF16("a"),
903 MockChooserController::kNoSignalStrengthLevelImage, 911 MockChooserController::kNoSignalStrengthLevelImage,
904 MockChooserController::ConnectedPairedStatus::CONNECTED | 912 MockChooserController::ConnectedPairedStatus::CONNECTED |
905 MockChooserController::ConnectedPairedStatus::PAIRED); 913 MockChooserController::ConnectedPairedStatus::PAIRED);
906 mock_chooser_controller_->OptionAdded( 914 mock_chooser_controller_->OptionAdded(
907 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, 915 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar,
908 MockChooserController::ConnectedPairedStatus::NONE); 916 MockChooserController::ConnectedPairedStatus::NONE);
909 mock_chooser_controller_->OptionAdded( 917 mock_chooser_controller_->OptionAdded(
910 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, 918 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar,
911 MockChooserController::ConnectedPairedStatus::NONE); 919 MockChooserController::ConnectedPairedStatus::NONE);
912 EXPECT_TRUE(table_view_.enabled); 920 EXPECT_TRUE(table_view_.enabled);
913 EXPECT_EQ(3, table_view_.numberOfRows); 921 EXPECT_EQ(3, table_view_.numberOfRows);
914 // Select option 1. 922 // Select option 1.
915 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] 923 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
916 byExtendingSelection:NO]; 924 byExtendingSelection:NO];
917 EXPECT_EQ(1, table_view_.selectedRow); 925 EXPECT_EQ(1, table_view_.selectedRow);
918 EXPECT_TRUE(connect_button_.enabled); 926 EXPECT_TRUE(connect_button_.enabled);
919 EXPECT_TRUE(cancel_button_.enabled); 927 EXPECT_TRUE(cancel_button_.enabled);
920 928
921 mock_chooser_controller_->OnAdapterPresenceChanged( 929 mock_chooser_controller_->OnAdapterPresenceChanged(
922 content::BluetoothChooser::AdapterPresence::POWERED_OFF); 930 content::BluetoothChooser::AdapterPresence::POWERED_OFF);
923 EXPECT_FALSE(table_view_.hidden); 931 EXPECT_FALSE(adapter_off_help_button_.hidden);
924 // Since "Bluetooth turned off." needs to be displayed on the |table_view_|, 932 EXPECT_NSEQ(
925 // the number of rows is 1. 933 l10n_util::GetNSString(IDS_BLUETOOTH_DEVICE_CHOOSER_TURN_ADAPTER_OFF),
926 EXPECT_EQ(1, table_view_.numberOfRows); 934 adapter_off_help_button_.title);
927 // |table_view_| should be disabled since there is no option shown. 935 EXPECT_TRUE(table_view_.hidden);
928 EXPECT_FALSE(table_view_.enabled);
929 // No option selected.
930 EXPECT_EQ(-1, table_view_.selectedRow);
931 ExpectNoRowImage(0);
932 // TODO(juncai): test the row text is "Turn on Bluetooth to allow pairing"
933 // after the Mac implementation is done.
934 // https://crbug.com/644168
935 EXPECT_FALSE(IsRowPaired(0));
936 EXPECT_TRUE(spinner_.hidden); 936 EXPECT_TRUE(spinner_.hidden);
937 EXPECT_TRUE(status_.hidden); 937 EXPECT_TRUE(status_.hidden);
938 EXPECT_TRUE(rescan_button_.hidden); 938 EXPECT_TRUE(rescan_button_.hidden);
939 // Since the adapter is turned off, the previously selected option 939 // Since the adapter is turned off, the previously selected option
940 // becomes invalid, the OK button is disabled. 940 // becomes invalid, the OK button is disabled.
941 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions()); 941 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions());
942 EXPECT_FALSE(connect_button_.enabled); 942 EXPECT_FALSE(connect_button_.enabled);
943 EXPECT_TRUE(cancel_button_.enabled); 943 EXPECT_TRUE(cancel_button_.enabled);
944 944
945 mock_chooser_controller_->OnAdapterPresenceChanged( 945 mock_chooser_controller_->OnAdapterPresenceChanged(
946 content::BluetoothChooser::AdapterPresence::POWERED_ON); 946 content::BluetoothChooser::AdapterPresence::POWERED_ON);
947 EXPECT_TRUE(adapter_off_help_button_.hidden);
948 EXPECT_FALSE(table_view_.hidden);
947 ExpectNoRowImage(0); 949 ExpectNoRowImage(0);
948 ExpectRowTextIs( 950 ExpectRowTextIs(
949 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); 951 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT));
950 EXPECT_FALSE(IsRowPaired(0)); 952 EXPECT_FALSE(IsRowPaired(0));
951 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions()); 953 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions());
952 EXPECT_FALSE(connect_button_.enabled); 954 EXPECT_FALSE(connect_button_.enabled);
953 EXPECT_TRUE(cancel_button_.enabled); 955 EXPECT_TRUE(cancel_button_.enabled);
954 } 956 }
955 957
956 TEST_F(ChooserDialogCocoaControllerTest, DiscoveringAndNoOptionAddedAndIdle) { 958 TEST_F(ChooserDialogCocoaControllerTest, DiscoveringAndNoOptionAddedAndIdle) {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 EXPECT_FALSE(table_view_.enabled); 1003 EXPECT_FALSE(table_view_.enabled);
1002 // No option selected. 1004 // No option selected.
1003 EXPECT_EQ(-1, table_view_.selectedRow); 1005 EXPECT_EQ(-1, table_view_.selectedRow);
1004 ExpectNoRowImage(0); 1006 ExpectNoRowImage(0);
1005 ExpectRowTextIs( 1007 ExpectRowTextIs(
1006 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); 1008 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT));
1007 EXPECT_FALSE(IsRowPaired(0)); 1009 EXPECT_FALSE(IsRowPaired(0));
1008 EXPECT_TRUE(spinner_.hidden); 1010 EXPECT_TRUE(spinner_.hidden);
1009 EXPECT_TRUE(status_.hidden); 1011 EXPECT_TRUE(status_.hidden);
1010 EXPECT_FALSE(rescan_button_.hidden); 1012 EXPECT_FALSE(rescan_button_.hidden);
1013 EXPECT_NSEQ(l10n_util::GetNSString(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN),
1014 rescan_button_.title);
1011 // OK button is disabled since the chooser refreshed options. 1015 // OK button is disabled since the chooser refreshed options.
1012 EXPECT_FALSE(connect_button_.enabled); 1016 EXPECT_FALSE(connect_button_.enabled);
1013 EXPECT_TRUE(cancel_button_.enabled); 1017 EXPECT_TRUE(cancel_button_.enabled);
1014 } 1018 }
1015 1019
1016 TEST_F(ChooserDialogCocoaControllerTest, 1020 TEST_F(ChooserDialogCocoaControllerTest,
1017 DiscoveringAndOneOptionAddedAndSelectedAndIdle) { 1021 DiscoveringAndOneOptionAddedAndSelectedAndIdle) {
1018 CreateChooserDialog(); 1022 CreateChooserDialog();
1019 1023
1020 mock_chooser_controller_->OptionAdded( 1024 mock_chooser_controller_->OptionAdded(
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1063 content::BluetoothChooser::DiscoveryState::IDLE); 1067 content::BluetoothChooser::DiscoveryState::IDLE);
1064 EXPECT_FALSE(table_view_.hidden); 1068 EXPECT_FALSE(table_view_.hidden);
1065 EXPECT_TRUE(table_view_.enabled); 1069 EXPECT_TRUE(table_view_.enabled);
1066 EXPECT_EQ(1, table_view_.numberOfRows); 1070 EXPECT_EQ(1, table_view_.numberOfRows);
1067 EXPECT_EQ(0, table_view_.selectedRow); 1071 EXPECT_EQ(0, table_view_.selectedRow);
1068 ExpectRowTextIs(0, @"d"); 1072 ExpectRowTextIs(0, @"d");
1069 EXPECT_FALSE(IsRowPaired(0)); 1073 EXPECT_FALSE(IsRowPaired(0));
1070 EXPECT_TRUE(spinner_.hidden); 1074 EXPECT_TRUE(spinner_.hidden);
1071 EXPECT_TRUE(status_.hidden); 1075 EXPECT_TRUE(status_.hidden);
1072 EXPECT_FALSE(rescan_button_.hidden); 1076 EXPECT_FALSE(rescan_button_.hidden);
1077 EXPECT_NSEQ(l10n_util::GetNSString(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN),
1078 rescan_button_.title);
1073 EXPECT_TRUE(connect_button_.enabled); 1079 EXPECT_TRUE(connect_button_.enabled);
1074 EXPECT_TRUE(cancel_button_.enabled); 1080 EXPECT_TRUE(cancel_button_.enabled);
1075 } 1081 }
1076 1082
1083 TEST_F(ChooserDialogCocoaControllerTest, PressAdapterOffHelpButton) {
1084 CreateChooserDialog();
1085
1086 EXPECT_CALL(*mock_chooser_controller_, OpenAdapterOffHelpUrl()).Times(1);
1087 [adapter_off_help_button_ performClick:chooser_dialog_controller_];
1088 }
1089
1077 TEST_F(ChooserDialogCocoaControllerTest, PressRescanButton) { 1090 TEST_F(ChooserDialogCocoaControllerTest, PressRescanButton) {
1078 CreateChooserDialog(); 1091 CreateChooserDialog();
1079 1092
1080 EXPECT_CALL(*mock_chooser_controller_, RefreshOptions()).Times(1); 1093 EXPECT_CALL(*mock_chooser_controller_, RefreshOptions()).Times(1);
1081 [rescan_button_ performClick:chooser_dialog_controller_]; 1094 [rescan_button_ performClick:chooser_dialog_controller_];
1082 } 1095 }
1083 1096
1084 TEST_F(ChooserDialogCocoaControllerTest, PressHelpButton) { 1097 TEST_F(ChooserDialogCocoaControllerTest, PressHelpButton) {
1085 CreateChooserDialog(); 1098 CreateChooserDialog();
1086 1099
(...skipping 10 matching lines...) Expand all
1097 MockChooserController::ConnectedPairedStatus::NONE); 1110 MockChooserController::ConnectedPairedStatus::NONE);
1098 1111
1099 // Select option 0 and press "Get help" button. 1112 // Select option 0 and press "Get help" button.
1100 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 1113 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
1101 byExtendingSelection:NO]; 1114 byExtendingSelection:NO];
1102 EXPECT_CALL(*mock_chooser_controller_, Select(testing::_)).Times(0); 1115 EXPECT_CALL(*mock_chooser_controller_, Select(testing::_)).Times(0);
1103 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(0); 1116 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(0);
1104 EXPECT_CALL(*mock_chooser_controller_, OpenHelpCenterUrl()).Times(1); 1117 EXPECT_CALL(*mock_chooser_controller_, OpenHelpCenterUrl()).Times(1);
1105 [help_button_ performClick:chooser_dialog_controller_]; 1118 [help_button_ performClick:chooser_dialog_controller_];
1106 } 1119 }
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