OLD | NEW |
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 "chrome/browser/ui/cocoa/spinner_view.h" |
19 #include "chrome/grit/generated_resources.h" | 19 #include "chrome/grit/generated_resources.h" |
20 #include "testing/gmock/include/gmock/gmock.h" | 20 #include "testing/gmock/include/gmock/gmock.h" |
21 #include "testing/gtest/include/gtest/gtest.h" | 21 #include "testing/gtest/include/gtest/gtest.h" |
22 #include "testing/gtest_mac.h" | 22 #include "testing/gtest_mac.h" |
23 #include "ui/base/l10n/l10n_util_mac.h" | 23 #include "ui/base/l10n/l10n_util_mac.h" |
24 #include "ui/base/resource/resource_bundle.h" | 24 #include "ui/base/resource/resource_bundle.h" |
| 25 #include "ui/gfx/color_palette.h" |
| 26 #include "ui/gfx/image/image.h" |
| 27 #include "ui/gfx/image/image_unittest_util.h" |
| 28 #include "ui/gfx/paint_vector_icon.h" |
| 29 #include "ui/gfx/vector_icons_public.h" |
25 #include "ui/resources/grit/ui_resources.h" | 30 #include "ui/resources/grit/ui_resources.h" |
26 | 31 |
27 namespace { | 32 namespace { |
28 | 33 |
29 // The lookup table for signal strength level image. | 34 // The lookup table for signal strength level image. |
30 const int kSignalStrengthLevelImageIds[5] = {IDR_SIGNAL_0_BAR, IDR_SIGNAL_1_BAR, | 35 const int kSignalStrengthLevelImageIds[5] = {IDR_SIGNAL_0_BAR, IDR_SIGNAL_1_BAR, |
31 IDR_SIGNAL_2_BAR, IDR_SIGNAL_3_BAR, | 36 IDR_SIGNAL_2_BAR, IDR_SIGNAL_3_BAR, |
32 IDR_SIGNAL_4_BAR}; | 37 IDR_SIGNAL_4_BAR}; |
33 | 38 |
34 } // namespace | 39 } // namespace |
(...skipping 11 matching lines...) Expand all Loading... |
46 | 51 |
47 // Create a ChooserDialogCocoa. | 52 // Create a ChooserDialogCocoa. |
48 void CreateChooserDialog() { | 53 void CreateChooserDialog() { |
49 content::WebContents* web_contents = | 54 content::WebContents* web_contents = |
50 content::WebContents::Create(content::WebContents::CreateParams( | 55 content::WebContents::Create(content::WebContents::CreateParams( |
51 profile(), content::SiteInstance::Create(profile()))); | 56 profile(), content::SiteInstance::Create(profile()))); |
52 ASSERT_TRUE(web_contents); | 57 ASSERT_TRUE(web_contents); |
53 std::unique_ptr<MockChooserController> chooser_controller( | 58 std::unique_ptr<MockChooserController> chooser_controller( |
54 new MockChooserController(web_contents->GetMainFrame())); | 59 new MockChooserController(web_contents->GetMainFrame())); |
55 ASSERT_TRUE(chooser_controller); | 60 ASSERT_TRUE(chooser_controller); |
56 chooser_controller_ = chooser_controller.get(); | 61 mock_chooser_controller_ = chooser_controller.get(); |
57 chooser_dialog_.reset( | 62 chooser_dialog_.reset( |
58 new ChooserDialogCocoa(web_contents, std::move(chooser_controller))); | 63 new ChooserDialogCocoa(web_contents, std::move(chooser_controller))); |
59 ASSERT_TRUE(chooser_dialog_); | 64 ASSERT_TRUE(chooser_dialog_); |
60 chooser_dialog_controller_ = | 65 chooser_dialog_controller_ = |
61 chooser_dialog_->chooser_dialog_cocoa_controller_.get(); | 66 chooser_dialog_->chooser_dialog_cocoa_controller_.get(); |
62 ASSERT_TRUE(chooser_dialog_controller_); | 67 ASSERT_TRUE(chooser_dialog_controller_); |
63 chooser_content_view_ = [chooser_dialog_controller_ chooserContentView]; | 68 chooser_content_view_ = [chooser_dialog_controller_ chooserContentView]; |
64 ASSERT_TRUE(chooser_content_view_); | 69 ASSERT_TRUE(chooser_content_view_); |
65 table_view_ = [chooser_content_view_ tableView]; | 70 table_view_ = [chooser_content_view_ tableView]; |
66 ASSERT_TRUE(table_view_); | 71 ASSERT_TRUE(table_view_); |
67 spinner_ = [chooser_content_view_ spinner]; | 72 spinner_ = [chooser_content_view_ spinner]; |
68 ASSERT_TRUE(spinner_); | 73 ASSERT_TRUE(spinner_); |
69 status_ = [chooser_content_view_ status]; | 74 status_ = [chooser_content_view_ status]; |
70 ASSERT_TRUE(status_); | 75 ASSERT_TRUE(status_); |
71 rescan_button_ = [chooser_content_view_ rescanButton]; | 76 rescan_button_ = [chooser_content_view_ rescanButton]; |
72 ASSERT_TRUE(rescan_button_); | 77 ASSERT_TRUE(rescan_button_); |
73 connect_button_ = [chooser_content_view_ connectButton]; | 78 connect_button_ = [chooser_content_view_ connectButton]; |
74 ASSERT_TRUE(connect_button_); | 79 ASSERT_TRUE(connect_button_); |
75 cancel_button_ = [chooser_content_view_ cancelButton]; | 80 cancel_button_ = [chooser_content_view_ cancelButton]; |
76 ASSERT_TRUE(cancel_button_); | 81 ASSERT_TRUE(cancel_button_); |
77 help_button_ = [chooser_content_view_ helpButton]; | 82 help_button_ = [chooser_content_view_ helpButton]; |
78 ASSERT_TRUE(help_button_); | 83 ASSERT_TRUE(help_button_); |
79 } | 84 } |
80 | 85 |
| 86 void ExpectNoRowImage(int row) { |
| 87 ASSERT_FALSE( |
| 88 [chooser_content_view_ tableRowViewImage:static_cast<NSInteger>(row)]); |
| 89 } |
| 90 |
81 void ExpectSignalStrengthLevelImageIs(int row, | 91 void ExpectSignalStrengthLevelImageIs(int row, |
82 int expected_signal_strength_level) { | 92 int expected_signal_strength_level) { |
83 NSImageView* image_view = | 93 NSImageView* image_view = |
84 [chooser_content_view_ tableRowViewImage:static_cast<NSInteger>(row)]; | 94 [chooser_content_view_ tableRowViewImage:static_cast<NSInteger>(row)]; |
| 95 ASSERT_TRUE(image_view); |
| 96 EXPECT_NSEQ( |
| 97 rb_.GetNativeImageNamed( |
| 98 kSignalStrengthLevelImageIds[expected_signal_strength_level]) |
| 99 .ToNSImage(), |
| 100 [image_view image]); |
| 101 } |
85 | 102 |
86 if (expected_signal_strength_level == -1) { | 103 void ExpectRowImageIsConnectedImage(int row) { |
87 ASSERT_FALSE(image_view); | 104 NSImageView* image_view = |
88 } else { | 105 [chooser_content_view_ tableRowViewImage:static_cast<NSInteger>(row)]; |
89 ASSERT_TRUE(image_view); | 106 ASSERT_TRUE(image_view); |
90 EXPECT_NSEQ( | 107 EXPECT_TRUE(gfx::test::AreImagesEqual( |
91 rb_.GetNativeImageNamed( | 108 gfx::Image(gfx::CreateVectorIcon(gfx::VectorIconId::BLUETOOTH_CONNECTED, |
92 kSignalStrengthLevelImageIds[expected_signal_strength_level]) | 109 gfx::kChromeIconGrey)), |
93 .ToNSImage(), | 110 gfx::Image([[image_view image] copy]))); |
94 [image_view image]); | |
95 } | |
96 } | 111 } |
97 | 112 |
98 void ExpectRowTextIs(int row, NSString* expected_text) { | 113 void ExpectRowTextIs(int row, NSString* expected_text) { |
99 EXPECT_NSEQ(expected_text, | 114 EXPECT_NSEQ(expected_text, |
100 [[chooser_content_view_ | 115 [[chooser_content_view_ |
101 tableRowViewText:static_cast<NSInteger>(row)] stringValue]); | 116 tableRowViewText:static_cast<NSInteger>(row)] stringValue]); |
102 } | 117 } |
103 | 118 |
| 119 bool IsRowPaired(int row) { |
| 120 NSTextField* paired_status = [chooser_content_view_ |
| 121 tableRowViewPairedStatus:static_cast<NSInteger>(row)]; |
| 122 if (paired_status) { |
| 123 EXPECT_NSEQ(l10n_util::GetNSString(IDS_DEVICE_CHOOSER_PAIRED_STATUS_TEXT), |
| 124 [paired_status stringValue]); |
| 125 return true; |
| 126 } else { |
| 127 return false; |
| 128 } |
| 129 } |
| 130 |
104 ui::ResourceBundle& rb_; | 131 ui::ResourceBundle& rb_; |
105 | 132 |
106 std::unique_ptr<ChooserDialogCocoa> chooser_dialog_; | 133 std::unique_ptr<ChooserDialogCocoa> chooser_dialog_; |
107 | 134 |
108 MockChooserController* chooser_controller_; | 135 MockChooserController* mock_chooser_controller_; |
109 ChooserDialogCocoaController* chooser_dialog_controller_; | 136 ChooserDialogCocoaController* chooser_dialog_controller_; |
110 ChooserContentViewCocoa* chooser_content_view_; | 137 ChooserContentViewCocoa* chooser_content_view_; |
111 NSTableView* table_view_; | 138 NSTableView* table_view_; |
112 SpinnerView* spinner_; | 139 SpinnerView* spinner_; |
113 NSTextField* status_; | 140 NSTextField* status_; |
114 NSButton* rescan_button_; | 141 NSButton* rescan_button_; |
115 NSButton* connect_button_; | 142 NSButton* connect_button_; |
116 NSButton* cancel_button_; | 143 NSButton* cancel_button_; |
117 NSButton* help_button_; | 144 NSButton* help_button_; |
118 | 145 |
119 private: | 146 private: |
120 DISALLOW_COPY_AND_ASSIGN(ChooserDialogCocoaControllerTest); | 147 DISALLOW_COPY_AND_ASSIGN(ChooserDialogCocoaControllerTest); |
121 }; | 148 }; |
122 | 149 |
123 TEST_F(ChooserDialogCocoaControllerTest, InitialState) { | 150 TEST_F(ChooserDialogCocoaControllerTest, InitialState) { |
124 CreateChooserDialog(); | 151 CreateChooserDialog(); |
125 | 152 |
126 // Since "No devices found." needs to be displayed on the |table_view_|, | 153 // Since "No devices found." needs to be displayed on the |table_view_|, |
127 // the number of rows is 1. | 154 // the number of rows is 1. |
128 EXPECT_EQ(1, table_view_.numberOfRows); | 155 EXPECT_EQ(1, table_view_.numberOfRows); |
129 EXPECT_EQ(1, table_view_.numberOfColumns); | 156 EXPECT_EQ(1, table_view_.numberOfColumns); |
130 // No signal strength level image shown. | 157 // No image shown. |
131 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 158 ExpectNoRowImage(0); |
132 ExpectRowTextIs( | 159 ExpectRowTextIs( |
133 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); | 160 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); |
| 161 EXPECT_FALSE(IsRowPaired(0)); |
134 // |table_view_| should be disabled since there is no option shown. | 162 // |table_view_| should be disabled since there is no option shown. |
135 ASSERT_FALSE(table_view_.enabled); | 163 EXPECT_FALSE(table_view_.enabled); |
136 // No option selected. | 164 // No option selected. |
137 EXPECT_EQ(-1, table_view_.selectedRow); | 165 EXPECT_EQ(-1, table_view_.selectedRow); |
138 // |connect_button_| should be disabled since no option selected. | 166 // |connect_button_| should be disabled since no option selected. |
139 ASSERT_FALSE(connect_button_.enabled); | 167 EXPECT_FALSE(connect_button_.enabled); |
140 ASSERT_TRUE(cancel_button_.enabled); | 168 EXPECT_TRUE(cancel_button_.enabled); |
141 ASSERT_TRUE(help_button_.enabled); | 169 EXPECT_TRUE(help_button_.enabled); |
142 } | 170 } |
143 | 171 |
144 TEST_F(ChooserDialogCocoaControllerTest, AddOption) { | 172 TEST_F(ChooserDialogCocoaControllerTest, AddOption) { |
145 CreateChooserDialog(); | 173 CreateChooserDialog(); |
146 | 174 |
147 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 175 mock_chooser_controller_->OptionAdded( |
148 MockChooserController::kNoImage); | 176 base::ASCIIToUTF16("a"), |
| 177 MockChooserController::kNoSignalStrengthLevelImage, |
| 178 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 179 MockChooserController::ConnectedPairedStatus::PAIRED); |
149 EXPECT_EQ(1, table_view_.numberOfRows); | 180 EXPECT_EQ(1, table_view_.numberOfRows); |
150 EXPECT_EQ(1, table_view_.numberOfColumns); | 181 EXPECT_EQ(1, table_view_.numberOfColumns); |
151 // |table_view_| should be enabled since there is an option. | 182 // |table_view_| should be enabled since there is an option. |
152 ASSERT_TRUE(table_view_.enabled); | 183 EXPECT_TRUE(table_view_.enabled); |
153 EXPECT_EQ(-1, table_view_.selectedRow); | 184 EXPECT_EQ(-1, table_view_.selectedRow); |
154 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 185 ExpectRowImageIsConnectedImage(0); |
155 ExpectRowTextIs(0, @"a"); | 186 ExpectRowTextIs(0, @"a"); |
156 ASSERT_FALSE(connect_button_.enabled); | 187 EXPECT_TRUE(IsRowPaired(0)); |
157 ASSERT_TRUE(cancel_button_.enabled); | 188 EXPECT_FALSE(connect_button_.enabled); |
158 ASSERT_TRUE(help_button_.enabled); | 189 EXPECT_TRUE(cancel_button_.enabled); |
159 | 190 EXPECT_TRUE(help_button_.enabled); |
160 chooser_controller_->OptionAdded( | 191 |
161 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 192 mock_chooser_controller_->OptionAdded( |
162 EXPECT_EQ(2, table_view_.numberOfRows); | 193 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
163 EXPECT_EQ(1, table_view_.numberOfColumns); | 194 MockChooserController::ConnectedPairedStatus::NONE); |
164 ASSERT_TRUE(table_view_.enabled); | 195 EXPECT_EQ(2, table_view_.numberOfRows); |
| 196 EXPECT_EQ(1, table_view_.numberOfColumns); |
| 197 EXPECT_TRUE(table_view_.enabled); |
165 EXPECT_EQ(-1, table_view_.selectedRow); | 198 EXPECT_EQ(-1, table_view_.selectedRow); |
166 ExpectSignalStrengthLevelImageIs( | 199 ExpectSignalStrengthLevelImageIs( |
167 1, MockChooserController::kSignalStrengthLevel0Bar); | 200 1, MockChooserController::kSignalStrengthLevel0Bar); |
168 ExpectRowTextIs(1, @"b"); | 201 ExpectRowTextIs(1, @"b"); |
169 | 202 EXPECT_FALSE(IsRowPaired(1)); |
170 chooser_controller_->OptionAdded( | 203 |
171 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 204 mock_chooser_controller_->OptionAdded( |
| 205 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 206 MockChooserController::ConnectedPairedStatus::NONE); |
172 EXPECT_EQ(3, table_view_.numberOfRows); | 207 EXPECT_EQ(3, table_view_.numberOfRows); |
173 EXPECT_EQ(1, table_view_.numberOfColumns); | 208 EXPECT_EQ(1, table_view_.numberOfColumns); |
174 ASSERT_TRUE(table_view_.enabled); | 209 EXPECT_TRUE(table_view_.enabled); |
175 EXPECT_EQ(-1, table_view_.selectedRow); | 210 EXPECT_EQ(-1, table_view_.selectedRow); |
176 ExpectSignalStrengthLevelImageIs( | 211 ExpectSignalStrengthLevelImageIs( |
177 2, MockChooserController::kSignalStrengthLevel1Bar); | 212 2, MockChooserController::kSignalStrengthLevel1Bar); |
178 ExpectRowTextIs(2, @"c"); | 213 ExpectRowTextIs(2, @"c"); |
179 | 214 EXPECT_FALSE(IsRowPaired(2)); |
180 chooser_controller_->OptionAdded( | 215 |
181 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar); | 216 mock_chooser_controller_->OptionAdded( |
| 217 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar, |
| 218 MockChooserController::ConnectedPairedStatus::NONE); |
182 ExpectSignalStrengthLevelImageIs( | 219 ExpectSignalStrengthLevelImageIs( |
183 3, MockChooserController::kSignalStrengthLevel2Bar); | 220 3, MockChooserController::kSignalStrengthLevel2Bar); |
184 ExpectRowTextIs(3, @"d"); | 221 ExpectRowTextIs(3, @"d"); |
185 | 222 EXPECT_FALSE(IsRowPaired(3)); |
186 chooser_controller_->OptionAdded( | 223 |
187 base::ASCIIToUTF16("e"), MockChooserController::kSignalStrengthLevel3Bar); | 224 mock_chooser_controller_->OptionAdded( |
| 225 base::ASCIIToUTF16("e"), MockChooserController::kSignalStrengthLevel3Bar, |
| 226 MockChooserController::ConnectedPairedStatus::NONE); |
188 ExpectSignalStrengthLevelImageIs( | 227 ExpectSignalStrengthLevelImageIs( |
189 4, MockChooserController::kSignalStrengthLevel3Bar); | 228 4, MockChooserController::kSignalStrengthLevel3Bar); |
190 ExpectRowTextIs(4, @"e"); | 229 ExpectRowTextIs(4, @"e"); |
191 | 230 EXPECT_FALSE(IsRowPaired(4)); |
192 chooser_controller_->OptionAdded( | 231 |
193 base::ASCIIToUTF16("f"), MockChooserController::kSignalStrengthLevel4Bar); | 232 mock_chooser_controller_->OptionAdded( |
| 233 base::ASCIIToUTF16("f"), MockChooserController::kSignalStrengthLevel4Bar, |
| 234 MockChooserController::ConnectedPairedStatus::NONE); |
194 ExpectSignalStrengthLevelImageIs( | 235 ExpectSignalStrengthLevelImageIs( |
195 5, MockChooserController::kSignalStrengthLevel4Bar); | 236 5, MockChooserController::kSignalStrengthLevel4Bar); |
196 ExpectRowTextIs(5, @"f"); | 237 ExpectRowTextIs(5, @"f"); |
| 238 EXPECT_FALSE(IsRowPaired(5)); |
197 } | 239 } |
198 | 240 |
199 TEST_F(ChooserDialogCocoaControllerTest, RemoveOption) { | 241 TEST_F(ChooserDialogCocoaControllerTest, RemoveOption) { |
200 CreateChooserDialog(); | 242 CreateChooserDialog(); |
201 | 243 |
202 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 244 mock_chooser_controller_->OptionAdded( |
203 MockChooserController::kNoImage); | 245 base::ASCIIToUTF16("a"), |
204 chooser_controller_->OptionAdded( | 246 MockChooserController::kNoSignalStrengthLevelImage, |
205 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 247 MockChooserController::ConnectedPairedStatus::CONNECTED | |
206 chooser_controller_->OptionAdded( | 248 MockChooserController::ConnectedPairedStatus::PAIRED); |
207 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 249 mock_chooser_controller_->OptionAdded( |
208 | 250 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
209 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); | 251 MockChooserController::ConnectedPairedStatus::NONE); |
210 EXPECT_EQ(2, table_view_.numberOfRows); | 252 mock_chooser_controller_->OptionAdded( |
211 EXPECT_EQ(1, table_view_.numberOfColumns); | 253 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
212 ASSERT_TRUE(table_view_.enabled); | 254 MockChooserController::ConnectedPairedStatus::NONE); |
213 EXPECT_EQ(-1, table_view_.selectedRow); | 255 |
214 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 256 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); |
215 ExpectRowTextIs(0, @"a"); | 257 EXPECT_EQ(2, table_view_.numberOfRows); |
| 258 EXPECT_EQ(1, table_view_.numberOfColumns); |
| 259 EXPECT_TRUE(table_view_.enabled); |
| 260 EXPECT_EQ(-1, table_view_.selectedRow); |
| 261 ExpectRowImageIsConnectedImage(0); |
| 262 ExpectRowTextIs(0, @"a"); |
| 263 EXPECT_TRUE(IsRowPaired(0)); |
216 ExpectSignalStrengthLevelImageIs( | 264 ExpectSignalStrengthLevelImageIs( |
217 1, MockChooserController::kSignalStrengthLevel1Bar); | 265 1, MockChooserController::kSignalStrengthLevel1Bar); |
218 ExpectRowTextIs(1, @"c"); | 266 ExpectRowTextIs(1, @"c"); |
| 267 EXPECT_FALSE(IsRowPaired(1)); |
219 | 268 |
220 // Remove a non-existent option, the number of rows should not change. | 269 // Remove a non-existent option, the number of rows should not change. |
221 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("non-existent")); | 270 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("non-existent")); |
222 EXPECT_EQ(2, table_view_.numberOfRows); | 271 EXPECT_EQ(2, table_view_.numberOfRows); |
223 EXPECT_EQ(1, table_view_.numberOfColumns); | 272 EXPECT_EQ(1, table_view_.numberOfColumns); |
224 ASSERT_TRUE(table_view_.enabled); | 273 EXPECT_TRUE(table_view_.enabled); |
225 EXPECT_EQ(-1, table_view_.selectedRow); | 274 EXPECT_EQ(-1, table_view_.selectedRow); |
226 ExpectRowTextIs(0, @"a"); | 275 ExpectRowTextIs(0, @"a"); |
227 ExpectRowTextIs(1, @"c"); | 276 ExpectRowTextIs(1, @"c"); |
228 | 277 |
229 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); | 278 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); |
230 EXPECT_EQ(1, table_view_.numberOfRows); | 279 EXPECT_EQ(1, table_view_.numberOfRows); |
231 EXPECT_EQ(1, table_view_.numberOfColumns); | 280 EXPECT_EQ(1, table_view_.numberOfColumns); |
232 ASSERT_TRUE(table_view_.enabled); | 281 EXPECT_TRUE(table_view_.enabled); |
233 EXPECT_EQ(-1, table_view_.selectedRow); | 282 EXPECT_EQ(-1, table_view_.selectedRow); |
234 ExpectRowTextIs(0, @"a"); | 283 ExpectRowTextIs(0, @"a"); |
235 | 284 |
236 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); | 285 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); |
237 // There is no option shown now. But since "No devices found." | 286 // There is no option shown now. But since "No devices found." |
238 // needs to be displayed on the |table_view_|, the number of rows is 1. | 287 // needs to be displayed on the |table_view_|, the number of rows is 1. |
239 EXPECT_EQ(1, table_view_.numberOfRows); | 288 EXPECT_EQ(1, table_view_.numberOfRows); |
240 EXPECT_EQ(1, table_view_.numberOfColumns); | 289 EXPECT_EQ(1, table_view_.numberOfColumns); |
241 // |table_view_| should be disabled since all options are removed. | 290 // |table_view_| should be disabled since all options are removed. |
242 ASSERT_FALSE(table_view_.enabled); | 291 EXPECT_FALSE(table_view_.enabled); |
243 EXPECT_EQ(-1, table_view_.selectedRow); | 292 EXPECT_EQ(-1, table_view_.selectedRow); |
244 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 293 ExpectNoRowImage(0); |
245 ExpectRowTextIs( | 294 ExpectRowTextIs( |
246 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); | 295 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); |
| 296 EXPECT_FALSE(IsRowPaired(0)); |
247 } | 297 } |
248 | 298 |
249 TEST_F(ChooserDialogCocoaControllerTest, UpdateOption) { | 299 TEST_F(ChooserDialogCocoaControllerTest, UpdateOption) { |
250 CreateChooserDialog(); | 300 CreateChooserDialog(); |
251 | 301 |
252 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 302 mock_chooser_controller_->OptionAdded( |
253 MockChooserController::kNoImage); | 303 base::ASCIIToUTF16("a"), |
254 chooser_controller_->OptionAdded( | 304 MockChooserController::kNoSignalStrengthLevelImage, |
255 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 305 MockChooserController::ConnectedPairedStatus::CONNECTED | |
256 chooser_controller_->OptionAdded( | 306 MockChooserController::ConnectedPairedStatus::PAIRED); |
257 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 307 mock_chooser_controller_->OptionAdded( |
258 | 308 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
259 chooser_controller_->OptionUpdated( | 309 MockChooserController::ConnectedPairedStatus::NONE); |
| 310 mock_chooser_controller_->OptionAdded( |
| 311 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 312 MockChooserController::ConnectedPairedStatus::NONE); |
| 313 |
| 314 mock_chooser_controller_->OptionUpdated( |
260 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"), | 315 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"), |
261 MockChooserController::kSignalStrengthLevel2Bar); | 316 MockChooserController::kNoSignalStrengthLevelImage, |
| 317 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 318 MockChooserController::ConnectedPairedStatus::PAIRED); |
262 | 319 |
263 EXPECT_EQ(3, table_view_.numberOfRows); | 320 EXPECT_EQ(3, table_view_.numberOfRows); |
264 EXPECT_EQ(1, table_view_.numberOfColumns); | 321 EXPECT_EQ(1, table_view_.numberOfColumns); |
265 ASSERT_TRUE(table_view_.enabled); | 322 EXPECT_TRUE(table_view_.enabled); |
266 EXPECT_EQ(-1, table_view_.selectedRow); | 323 EXPECT_EQ(-1, table_view_.selectedRow); |
267 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 324 ExpectRowImageIsConnectedImage(0); |
268 ExpectRowTextIs(0, @"a"); | 325 ExpectRowTextIs(0, @"a"); |
269 ExpectSignalStrengthLevelImageIs( | 326 EXPECT_TRUE(IsRowPaired(0)); |
270 1, MockChooserController::kSignalStrengthLevel2Bar); | 327 ExpectRowImageIsConnectedImage(1); |
271 ExpectRowTextIs(1, @"d"); | 328 ExpectRowTextIs(1, @"d"); |
| 329 EXPECT_TRUE(IsRowPaired(1)); |
272 ExpectSignalStrengthLevelImageIs( | 330 ExpectSignalStrengthLevelImageIs( |
273 2, MockChooserController::kSignalStrengthLevel1Bar); | 331 2, MockChooserController::kSignalStrengthLevel1Bar); |
274 ExpectRowTextIs(2, @"c"); | 332 ExpectRowTextIs(2, @"c"); |
| 333 EXPECT_FALSE(IsRowPaired(2)); |
275 } | 334 } |
276 | 335 |
277 TEST_F(ChooserDialogCocoaControllerTest, AddAndRemoveOption) { | 336 TEST_F(ChooserDialogCocoaControllerTest, AddAndRemoveOption) { |
278 CreateChooserDialog(); | 337 CreateChooserDialog(); |
279 | 338 |
280 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 339 mock_chooser_controller_->OptionAdded( |
281 MockChooserController::kNoImage); | 340 base::ASCIIToUTF16("a"), |
282 EXPECT_EQ(1, table_view_.numberOfRows); | 341 MockChooserController::kNoSignalStrengthLevelImage, |
283 chooser_controller_->OptionAdded( | 342 MockChooserController::ConnectedPairedStatus::CONNECTED | |
284 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 343 MockChooserController::ConnectedPairedStatus::PAIRED); |
285 EXPECT_EQ(2, table_view_.numberOfRows); | 344 EXPECT_EQ(1, table_view_.numberOfRows); |
286 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); | 345 mock_chooser_controller_->OptionAdded( |
287 EXPECT_EQ(1, table_view_.numberOfRows); | 346 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
288 chooser_controller_->OptionAdded( | 347 MockChooserController::ConnectedPairedStatus::NONE); |
289 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 348 EXPECT_EQ(2, table_view_.numberOfRows); |
290 EXPECT_EQ(2, table_view_.numberOfRows); | 349 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); |
291 chooser_controller_->OptionAdded( | 350 EXPECT_EQ(1, table_view_.numberOfRows); |
292 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar); | 351 mock_chooser_controller_->OptionAdded( |
| 352 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 353 MockChooserController::ConnectedPairedStatus::NONE); |
| 354 EXPECT_EQ(2, table_view_.numberOfRows); |
| 355 mock_chooser_controller_->OptionAdded( |
| 356 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar, |
| 357 MockChooserController::ConnectedPairedStatus::NONE); |
293 EXPECT_EQ(3, table_view_.numberOfRows); | 358 EXPECT_EQ(3, table_view_.numberOfRows); |
294 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d")); | 359 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d")); |
295 EXPECT_EQ(2, table_view_.numberOfRows); | 360 EXPECT_EQ(2, table_view_.numberOfRows); |
296 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); | 361 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); |
297 EXPECT_EQ(1, table_view_.numberOfRows); | 362 EXPECT_EQ(1, table_view_.numberOfRows); |
298 } | 363 } |
299 | 364 |
300 TEST_F(ChooserDialogCocoaControllerTest, UpdateAndRemoveTheUpdatedOption) { | 365 TEST_F(ChooserDialogCocoaControllerTest, UpdateAndRemoveTheUpdatedOption) { |
301 CreateChooserDialog(); | 366 CreateChooserDialog(); |
302 | 367 |
303 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 368 mock_chooser_controller_->OptionAdded( |
304 MockChooserController::kNoImage); | 369 base::ASCIIToUTF16("a"), |
305 chooser_controller_->OptionAdded( | 370 MockChooserController::kNoSignalStrengthLevelImage, |
306 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 371 MockChooserController::ConnectedPairedStatus::CONNECTED | |
307 chooser_controller_->OptionAdded( | 372 MockChooserController::ConnectedPairedStatus::PAIRED); |
308 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 373 mock_chooser_controller_->OptionAdded( |
309 | 374 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
310 chooser_controller_->OptionUpdated( | 375 MockChooserController::ConnectedPairedStatus::NONE); |
| 376 mock_chooser_controller_->OptionAdded( |
| 377 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 378 MockChooserController::ConnectedPairedStatus::NONE); |
| 379 |
| 380 mock_chooser_controller_->OptionUpdated( |
311 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"), | 381 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"), |
312 MockChooserController::kSignalStrengthLevel2Bar); | 382 MockChooserController::kNoSignalStrengthLevelImage, |
313 | 383 MockChooserController::ConnectedPairedStatus::CONNECTED | |
314 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d")); | 384 MockChooserController::ConnectedPairedStatus::PAIRED); |
315 | 385 |
316 EXPECT_EQ(2, table_view_.numberOfRows); | 386 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d")); |
317 EXPECT_EQ(1, table_view_.numberOfColumns); | 387 |
318 ASSERT_TRUE(table_view_.enabled); | 388 EXPECT_EQ(2, table_view_.numberOfRows); |
319 EXPECT_EQ(-1, table_view_.selectedRow); | 389 EXPECT_EQ(1, table_view_.numberOfColumns); |
320 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 390 EXPECT_TRUE(table_view_.enabled); |
321 ExpectRowTextIs(0, @"a"); | 391 EXPECT_EQ(-1, table_view_.selectedRow); |
| 392 ExpectRowImageIsConnectedImage(0); |
| 393 ExpectRowTextIs(0, @"a"); |
| 394 EXPECT_TRUE(IsRowPaired(0)); |
322 ExpectSignalStrengthLevelImageIs( | 395 ExpectSignalStrengthLevelImageIs( |
323 1, MockChooserController::kSignalStrengthLevel1Bar); | 396 1, MockChooserController::kSignalStrengthLevel1Bar); |
324 ExpectRowTextIs(1, @"c"); | 397 ExpectRowTextIs(1, @"c"); |
| 398 EXPECT_FALSE(IsRowPaired(1)); |
325 } | 399 } |
326 | 400 |
327 TEST_F(ChooserDialogCocoaControllerTest, SelectAndDeselectAnOption) { | 401 TEST_F(ChooserDialogCocoaControllerTest, SelectAndDeselectAnOption) { |
328 CreateChooserDialog(); | 402 CreateChooserDialog(); |
329 | 403 |
330 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 404 mock_chooser_controller_->OptionAdded( |
331 MockChooserController::kNoImage); | 405 base::ASCIIToUTF16("a"), |
332 chooser_controller_->OptionAdded( | 406 MockChooserController::kNoSignalStrengthLevelImage, |
333 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 407 MockChooserController::ConnectedPairedStatus::CONNECTED | |
334 chooser_controller_->OptionAdded( | 408 MockChooserController::ConnectedPairedStatus::PAIRED); |
335 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 409 mock_chooser_controller_->OptionAdded( |
| 410 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 411 MockChooserController::ConnectedPairedStatus::NONE); |
| 412 mock_chooser_controller_->OptionAdded( |
| 413 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 414 MockChooserController::ConnectedPairedStatus::NONE); |
336 | 415 |
337 // Select option 0. | 416 // Select option 0. |
338 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 417 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
339 byExtendingSelection:NO]; | 418 byExtendingSelection:NO]; |
340 EXPECT_EQ(0, table_view_.selectedRow); | 419 EXPECT_EQ(0, table_view_.selectedRow); |
341 ASSERT_TRUE(connect_button_.enabled); | 420 EXPECT_TRUE(connect_button_.enabled); |
342 | 421 |
343 // Deselect option 0. | 422 // Deselect option 0. |
344 [table_view_ deselectRow:0]; | 423 [table_view_ deselectRow:0]; |
345 EXPECT_EQ(-1, table_view_.selectedRow); | 424 EXPECT_EQ(-1, table_view_.selectedRow); |
346 ASSERT_FALSE(connect_button_.enabled); | 425 EXPECT_FALSE(connect_button_.enabled); |
347 | 426 |
348 // Select option 1. | 427 // Select option 1. |
349 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 428 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
350 byExtendingSelection:NO]; | 429 byExtendingSelection:NO]; |
351 EXPECT_EQ(1, table_view_.selectedRow); | 430 EXPECT_EQ(1, table_view_.selectedRow); |
352 ASSERT_TRUE(connect_button_.enabled); | 431 EXPECT_TRUE(connect_button_.enabled); |
353 | 432 |
354 // Deselect option 1. | 433 // Deselect option 1. |
355 [table_view_ deselectRow:1]; | 434 [table_view_ deselectRow:1]; |
356 EXPECT_EQ(-1, table_view_.selectedRow); | 435 EXPECT_EQ(-1, table_view_.selectedRow); |
357 ASSERT_FALSE(connect_button_.enabled); | 436 EXPECT_FALSE(connect_button_.enabled); |
358 } | 437 } |
359 | 438 |
360 TEST_F(ChooserDialogCocoaControllerTest, | 439 TEST_F(ChooserDialogCocoaControllerTest, |
361 SelectAnOptionAndThenSelectAnotherOption) { | 440 SelectAnOptionAndThenSelectAnotherOption) { |
362 CreateChooserDialog(); | 441 CreateChooserDialog(); |
363 | 442 |
364 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 443 mock_chooser_controller_->OptionAdded( |
365 MockChooserController::kNoImage); | 444 base::ASCIIToUTF16("a"), |
366 chooser_controller_->OptionAdded( | 445 MockChooserController::kNoSignalStrengthLevelImage, |
367 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 446 MockChooserController::ConnectedPairedStatus::CONNECTED | |
368 chooser_controller_->OptionAdded( | 447 MockChooserController::ConnectedPairedStatus::PAIRED); |
369 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 448 mock_chooser_controller_->OptionAdded( |
| 449 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 450 MockChooserController::ConnectedPairedStatus::NONE); |
| 451 mock_chooser_controller_->OptionAdded( |
| 452 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 453 MockChooserController::ConnectedPairedStatus::NONE); |
370 | 454 |
371 // Select option 0. | 455 // Select option 0. |
372 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 456 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
373 byExtendingSelection:NO]; | 457 byExtendingSelection:NO]; |
374 EXPECT_EQ(0, table_view_.selectedRow); | 458 EXPECT_EQ(0, table_view_.selectedRow); |
375 ASSERT_TRUE(connect_button_.enabled); | 459 EXPECT_TRUE(connect_button_.enabled); |
376 | 460 |
377 // Select option 1. | 461 // Select option 1. |
378 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 462 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
379 byExtendingSelection:NO]; | 463 byExtendingSelection:NO]; |
380 EXPECT_EQ(1, table_view_.selectedRow); | 464 EXPECT_EQ(1, table_view_.selectedRow); |
381 ASSERT_TRUE(connect_button_.enabled); | 465 EXPECT_TRUE(connect_button_.enabled); |
382 | 466 |
383 // Select option 2. | 467 // Select option 2. |
384 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2] | 468 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2] |
385 byExtendingSelection:NO]; | 469 byExtendingSelection:NO]; |
386 EXPECT_EQ(2, table_view_.selectedRow); | 470 EXPECT_EQ(2, table_view_.selectedRow); |
387 ASSERT_TRUE(connect_button_.enabled); | 471 EXPECT_TRUE(connect_button_.enabled); |
388 } | 472 } |
389 | 473 |
390 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndRemoveAnotherOption) { | 474 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndRemoveAnotherOption) { |
391 CreateChooserDialog(); | 475 CreateChooserDialog(); |
392 | 476 |
393 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 477 mock_chooser_controller_->OptionAdded( |
394 MockChooserController::kNoImage); | 478 base::ASCIIToUTF16("a"), |
395 chooser_controller_->OptionAdded( | 479 MockChooserController::kNoSignalStrengthLevelImage, |
396 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 480 MockChooserController::ConnectedPairedStatus::CONNECTED | |
397 chooser_controller_->OptionAdded( | 481 MockChooserController::ConnectedPairedStatus::PAIRED); |
398 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 482 mock_chooser_controller_->OptionAdded( |
| 483 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 484 MockChooserController::ConnectedPairedStatus::NONE); |
| 485 mock_chooser_controller_->OptionAdded( |
| 486 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 487 MockChooserController::ConnectedPairedStatus::NONE); |
399 | 488 |
400 // Select option 1. | 489 // Select option 1. |
401 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 490 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
402 byExtendingSelection:NO]; | 491 byExtendingSelection:NO]; |
403 EXPECT_EQ(3, table_view_.numberOfRows); | 492 EXPECT_EQ(3, table_view_.numberOfRows); |
404 EXPECT_EQ(1, table_view_.selectedRow); | 493 EXPECT_EQ(1, table_view_.selectedRow); |
405 ASSERT_TRUE(connect_button_.enabled); | 494 EXPECT_TRUE(connect_button_.enabled); |
406 | 495 |
407 // Remove option 0. The list becomes: b c. And the index of the previously | 496 // Remove option 0. The list becomes: b c. And the index of the previously |
408 // selected item "b" becomes 0. | 497 // selected item "b" becomes 0. |
409 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); | 498 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); |
410 EXPECT_EQ(2, table_view_.numberOfRows); | 499 EXPECT_EQ(2, table_view_.numberOfRows); |
411 EXPECT_EQ(0, table_view_.selectedRow); | 500 EXPECT_EQ(0, table_view_.selectedRow); |
412 ASSERT_TRUE(connect_button_.enabled); | 501 EXPECT_TRUE(connect_button_.enabled); |
413 | 502 |
414 // Remove option 1. The list becomes: b. | 503 // Remove option 1. The list becomes: b. |
415 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); | 504 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); |
416 EXPECT_EQ(1, table_view_.numberOfRows); | 505 EXPECT_EQ(1, table_view_.numberOfRows); |
417 EXPECT_EQ(0, table_view_.selectedRow); | 506 EXPECT_EQ(0, table_view_.selectedRow); |
418 ASSERT_TRUE(connect_button_.enabled); | 507 EXPECT_TRUE(connect_button_.enabled); |
419 } | 508 } |
420 | 509 |
421 TEST_F(ChooserDialogCocoaControllerTest, | 510 TEST_F(ChooserDialogCocoaControllerTest, |
422 SelectAnOptionAndRemoveTheSelectedOption) { | 511 SelectAnOptionAndRemoveTheSelectedOption) { |
423 CreateChooserDialog(); | 512 CreateChooserDialog(); |
424 | 513 |
425 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 514 mock_chooser_controller_->OptionAdded( |
426 MockChooserController::kNoImage); | 515 base::ASCIIToUTF16("a"), |
427 chooser_controller_->OptionAdded( | 516 MockChooserController::kNoSignalStrengthLevelImage, |
428 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 517 MockChooserController::ConnectedPairedStatus::CONNECTED | |
429 chooser_controller_->OptionAdded( | 518 MockChooserController::ConnectedPairedStatus::PAIRED); |
430 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 519 mock_chooser_controller_->OptionAdded( |
| 520 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 521 MockChooserController::ConnectedPairedStatus::NONE); |
| 522 mock_chooser_controller_->OptionAdded( |
| 523 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 524 MockChooserController::ConnectedPairedStatus::NONE); |
431 | 525 |
432 // Select option 1. | 526 // Select option 1. |
433 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 527 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
434 byExtendingSelection:NO]; | 528 byExtendingSelection:NO]; |
435 EXPECT_EQ(3, table_view_.numberOfRows); | 529 EXPECT_EQ(3, table_view_.numberOfRows); |
436 EXPECT_EQ(1, table_view_.selectedRow); | 530 EXPECT_EQ(1, table_view_.selectedRow); |
437 ASSERT_TRUE(connect_button_.enabled); | 531 EXPECT_TRUE(connect_button_.enabled); |
438 | 532 |
439 // Remove option 1 | 533 // Remove option 1 |
440 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); | 534 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); |
441 EXPECT_EQ(2, table_view_.numberOfRows); | 535 EXPECT_EQ(2, table_view_.numberOfRows); |
442 // No option selected. | 536 // No option selected. |
443 EXPECT_EQ(-1, table_view_.selectedRow); | 537 EXPECT_EQ(-1, table_view_.selectedRow); |
444 // Since no option selected, the "Connect" button should be disabled. | 538 // Since no option selected, the "Connect" button should be disabled. |
445 ASSERT_FALSE(connect_button_.enabled); | 539 EXPECT_FALSE(connect_button_.enabled); |
446 } | 540 } |
447 | 541 |
448 TEST_F(ChooserDialogCocoaControllerTest, | 542 TEST_F(ChooserDialogCocoaControllerTest, |
449 SelectAnOptionAndUpdateTheSelectedOption) { | 543 SelectAnOptionAndUpdateTheSelectedOption) { |
450 CreateChooserDialog(); | 544 CreateChooserDialog(); |
451 | 545 |
452 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 546 mock_chooser_controller_->OptionAdded( |
453 MockChooserController::kNoImage); | 547 base::ASCIIToUTF16("a"), |
454 chooser_controller_->OptionAdded( | 548 MockChooserController::kNoSignalStrengthLevelImage, |
455 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 549 MockChooserController::ConnectedPairedStatus::CONNECTED | |
456 chooser_controller_->OptionAdded( | 550 MockChooserController::ConnectedPairedStatus::PAIRED); |
457 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 551 mock_chooser_controller_->OptionAdded( |
| 552 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 553 MockChooserController::ConnectedPairedStatus::NONE); |
| 554 mock_chooser_controller_->OptionAdded( |
| 555 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 556 MockChooserController::ConnectedPairedStatus::NONE); |
458 | 557 |
459 // Select option 1. | 558 // Select option 1. |
460 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 559 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
461 byExtendingSelection:NO]; | 560 byExtendingSelection:NO]; |
462 | 561 |
463 // Update option 1. | 562 // Update option 1. |
464 chooser_controller_->OptionUpdated( | 563 mock_chooser_controller_->OptionUpdated( |
465 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"), | 564 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"), |
466 MockChooserController::kSignalStrengthLevel2Bar); | 565 MockChooserController::kNoSignalStrengthLevelImage, |
| 566 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 567 MockChooserController::ConnectedPairedStatus::PAIRED); |
467 | 568 |
468 EXPECT_EQ(1, table_view_.selectedRow); | 569 EXPECT_EQ(1, table_view_.selectedRow); |
469 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 570 ExpectRowImageIsConnectedImage(0); |
470 ExpectRowTextIs(0, @"a"); | 571 ExpectRowTextIs(0, @"a"); |
471 ExpectSignalStrengthLevelImageIs( | 572 EXPECT_TRUE(IsRowPaired(0)); |
472 1, MockChooserController::kSignalStrengthLevel2Bar); | 573 ExpectRowImageIsConnectedImage(1); |
473 ExpectRowTextIs(1, @"d"); | 574 ExpectRowTextIs(1, @"d"); |
| 575 EXPECT_TRUE(IsRowPaired(1)); |
474 ExpectSignalStrengthLevelImageIs( | 576 ExpectSignalStrengthLevelImageIs( |
475 2, MockChooserController::kSignalStrengthLevel1Bar); | 577 2, MockChooserController::kSignalStrengthLevel1Bar); |
476 ExpectRowTextIs(2, @"c"); | 578 ExpectRowTextIs(2, @"c"); |
477 ASSERT_TRUE(connect_button_.enabled); | 579 EXPECT_FALSE(IsRowPaired(2)); |
| 580 EXPECT_TRUE(connect_button_.enabled); |
478 } | 581 } |
479 | 582 |
480 TEST_F(ChooserDialogCocoaControllerTest, | 583 TEST_F(ChooserDialogCocoaControllerTest, |
481 AddAnOptionAndSelectItAndRemoveTheSelectedOption) { | 584 AddAnOptionAndSelectItAndRemoveTheSelectedOption) { |
482 CreateChooserDialog(); | 585 CreateChooserDialog(); |
483 | 586 |
484 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 587 mock_chooser_controller_->OptionAdded( |
485 MockChooserController::kNoImage); | 588 base::ASCIIToUTF16("a"), |
| 589 MockChooserController::kNoSignalStrengthLevelImage, |
| 590 MockChooserController::ConnectedPairedStatus::CONNECTED | |
| 591 MockChooserController::ConnectedPairedStatus::PAIRED); |
486 | 592 |
487 // Select option 0. | 593 // Select option 0. |
488 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 594 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
489 byExtendingSelection:NO]; | 595 byExtendingSelection:NO]; |
490 EXPECT_EQ(1, table_view_.numberOfRows); | 596 EXPECT_EQ(1, table_view_.numberOfRows); |
491 EXPECT_EQ(0, table_view_.selectedRow); | 597 EXPECT_EQ(0, table_view_.selectedRow); |
492 ASSERT_TRUE(connect_button_.enabled); | 598 EXPECT_TRUE(connect_button_.enabled); |
493 | 599 |
494 // Remove option 0. | 600 // Remove option 0. |
495 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); | 601 mock_chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); |
496 // There is no option shown now. But since "No devices found." | 602 // There is no option shown now. But since "No devices found." |
497 // needs to be displayed on the |table_view_|, the number of rows is 1. | 603 // needs to be displayed on the |table_view_|, the number of rows is 1. |
498 EXPECT_EQ(1, table_view_.numberOfRows); | 604 EXPECT_EQ(1, table_view_.numberOfRows); |
499 // No option selected. | 605 // No option selected. |
500 EXPECT_EQ(-1, table_view_.selectedRow); | 606 EXPECT_EQ(-1, table_view_.selectedRow); |
501 // |table_view_| should be disabled since there is no option shown. | 607 // |table_view_| should be disabled since there is no option shown. |
502 ASSERT_FALSE(table_view_.enabled); | 608 EXPECT_FALSE(table_view_.enabled); |
503 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 609 ExpectNoRowImage(0); |
504 ExpectRowTextIs( | 610 ExpectRowTextIs( |
505 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); | 611 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); |
| 612 EXPECT_FALSE(IsRowPaired(0)); |
506 // Since no option selected, the "Connect" button should be disabled. | 613 // Since no option selected, the "Connect" button should be disabled. |
507 ASSERT_FALSE(connect_button_.enabled); | 614 EXPECT_FALSE(connect_button_.enabled); |
508 } | 615 } |
509 | 616 |
510 TEST_F(ChooserDialogCocoaControllerTest, NoOptionSelectedAndPressCancelButton) { | 617 TEST_F(ChooserDialogCocoaControllerTest, NoOptionSelectedAndPressCancelButton) { |
511 CreateChooserDialog(); | 618 CreateChooserDialog(); |
512 | 619 |
513 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 620 mock_chooser_controller_->OptionAdded( |
514 MockChooserController::kNoImage); | 621 base::ASCIIToUTF16("a"), |
515 chooser_controller_->OptionAdded( | 622 MockChooserController::kNoSignalStrengthLevelImage, |
516 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 623 MockChooserController::ConnectedPairedStatus::CONNECTED | |
517 chooser_controller_->OptionAdded( | 624 MockChooserController::ConnectedPairedStatus::PAIRED); |
518 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 625 mock_chooser_controller_->OptionAdded( |
519 | 626 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
520 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); | 627 MockChooserController::ConnectedPairedStatus::NONE); |
521 EXPECT_CALL(*chooser_controller_, Cancel()).Times(1); | 628 mock_chooser_controller_->OptionAdded( |
| 629 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 630 MockChooserController::ConnectedPairedStatus::NONE); |
| 631 |
| 632 EXPECT_CALL(*mock_chooser_controller_, Select(testing::_)).Times(0); |
| 633 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(1); |
522 [cancel_button_ performClick:chooser_dialog_controller_]; | 634 [cancel_button_ performClick:chooser_dialog_controller_]; |
523 } | 635 } |
524 | 636 |
525 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressConnectButton) { | 637 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressConnectButton) { |
526 CreateChooserDialog(); | 638 CreateChooserDialog(); |
527 | 639 |
528 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 640 mock_chooser_controller_->OptionAdded( |
529 MockChooserController::kNoImage); | 641 base::ASCIIToUTF16("a"), |
530 chooser_controller_->OptionAdded( | 642 MockChooserController::kNoSignalStrengthLevelImage, |
531 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 643 MockChooserController::ConnectedPairedStatus::CONNECTED | |
532 chooser_controller_->OptionAdded( | 644 MockChooserController::ConnectedPairedStatus::PAIRED); |
533 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 645 mock_chooser_controller_->OptionAdded( |
| 646 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 647 MockChooserController::ConnectedPairedStatus::NONE); |
| 648 mock_chooser_controller_->OptionAdded( |
| 649 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 650 MockChooserController::ConnectedPairedStatus::NONE); |
534 | 651 |
535 // Select option 0 and press "Connect" button. | 652 // Select option 0 and press "Connect" button. |
536 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 653 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
537 byExtendingSelection:NO]; | 654 byExtendingSelection:NO]; |
538 EXPECT_CALL(*chooser_controller_, Select(0)).Times(1); | 655 EXPECT_CALL(*mock_chooser_controller_, Select(0)).Times(1); |
539 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0); | 656 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(0); |
540 [connect_button_ performClick:chooser_dialog_controller_]; | 657 [connect_button_ performClick:chooser_dialog_controller_]; |
541 | 658 |
542 // Select option 2 and press "Connect" button. | 659 // Select option 2 and press "Connect" button. |
543 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2] | 660 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2] |
544 byExtendingSelection:NO]; | 661 byExtendingSelection:NO]; |
545 EXPECT_CALL(*chooser_controller_, Select(2)).Times(1); | 662 EXPECT_CALL(*mock_chooser_controller_, Select(2)).Times(1); |
546 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0); | 663 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(0); |
547 [connect_button_ performClick:chooser_dialog_controller_]; | 664 [connect_button_ performClick:chooser_dialog_controller_]; |
548 } | 665 } |
549 | 666 |
550 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressCancelButton) { | 667 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressCancelButton) { |
551 CreateChooserDialog(); | 668 CreateChooserDialog(); |
552 | 669 |
553 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 670 mock_chooser_controller_->OptionAdded( |
554 MockChooserController::kNoImage); | 671 base::ASCIIToUTF16("a"), |
555 chooser_controller_->OptionAdded( | 672 MockChooserController::kNoSignalStrengthLevelImage, |
556 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 673 MockChooserController::ConnectedPairedStatus::CONNECTED | |
557 chooser_controller_->OptionAdded( | 674 MockChooserController::ConnectedPairedStatus::PAIRED); |
558 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 675 mock_chooser_controller_->OptionAdded( |
| 676 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 677 MockChooserController::ConnectedPairedStatus::NONE); |
| 678 mock_chooser_controller_->OptionAdded( |
| 679 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 680 MockChooserController::ConnectedPairedStatus::NONE); |
559 | 681 |
560 // Select option 0 and press "Cancel" button. | 682 // Select option 0 and press "Cancel" button. |
561 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 683 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
562 byExtendingSelection:NO]; | 684 byExtendingSelection:NO]; |
563 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); | 685 EXPECT_CALL(*mock_chooser_controller_, Select(testing::_)).Times(0); |
564 EXPECT_CALL(*chooser_controller_, Cancel()).Times(1); | 686 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(1); |
565 [cancel_button_ performClick:chooser_dialog_controller_]; | 687 [cancel_button_ performClick:chooser_dialog_controller_]; |
566 } | 688 } |
567 | 689 |
568 TEST_F(ChooserDialogCocoaControllerTest, AdapterOnAndOffAndOn) { | 690 TEST_F(ChooserDialogCocoaControllerTest, AdapterOnAndOffAndOn) { |
569 CreateChooserDialog(); | 691 CreateChooserDialog(); |
570 | 692 |
571 chooser_controller_->OnAdapterPresenceChanged( | 693 mock_chooser_controller_->OnAdapterPresenceChanged( |
572 content::BluetoothChooser::AdapterPresence::POWERED_ON); | 694 content::BluetoothChooser::AdapterPresence::POWERED_ON); |
573 EXPECT_FALSE(table_view_.hidden); | 695 EXPECT_FALSE(table_view_.hidden); |
574 // There is no option shown now. But since "No devices found." | 696 // There is no option shown now. But since "No devices found." |
575 // needs to be displayed on the |table_view_|, the number of rows is 1. | 697 // needs to be displayed on the |table_view_|, the number of rows is 1. |
576 EXPECT_EQ(1, table_view_.numberOfRows); | 698 EXPECT_EQ(1, table_view_.numberOfRows); |
577 // |table_view_| should be disabled since there is no option shown. | 699 // |table_view_| should be disabled since there is no option shown. |
578 ASSERT_FALSE(table_view_.enabled); | 700 EXPECT_FALSE(table_view_.enabled); |
579 // No option selected. | 701 // No option selected. |
580 EXPECT_EQ(-1, table_view_.selectedRow); | 702 EXPECT_EQ(-1, table_view_.selectedRow); |
581 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 703 ExpectNoRowImage(0); |
582 ExpectRowTextIs( | 704 ExpectRowTextIs( |
583 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); | 705 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); |
| 706 EXPECT_FALSE(IsRowPaired(0)); |
584 EXPECT_TRUE(spinner_.hidden); | 707 EXPECT_TRUE(spinner_.hidden); |
585 EXPECT_TRUE(status_.hidden); | 708 EXPECT_TRUE(status_.hidden); |
586 EXPECT_FALSE(rescan_button_.hidden); | 709 EXPECT_FALSE(rescan_button_.hidden); |
587 ASSERT_FALSE(connect_button_.enabled); | 710 EXPECT_FALSE(connect_button_.enabled); |
588 ASSERT_TRUE(cancel_button_.enabled); | 711 EXPECT_TRUE(cancel_button_.enabled); |
589 | 712 |
590 // Add options | 713 // Add options |
591 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 714 mock_chooser_controller_->OptionAdded( |
592 MockChooserController::kNoImage); | 715 base::ASCIIToUTF16("a"), |
593 chooser_controller_->OptionAdded( | 716 MockChooserController::kNoSignalStrengthLevelImage, |
594 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 717 MockChooserController::ConnectedPairedStatus::CONNECTED | |
595 chooser_controller_->OptionAdded( | 718 MockChooserController::ConnectedPairedStatus::PAIRED); |
596 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 719 mock_chooser_controller_->OptionAdded( |
597 ASSERT_TRUE(table_view_.enabled); | 720 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 721 MockChooserController::ConnectedPairedStatus::NONE); |
| 722 mock_chooser_controller_->OptionAdded( |
| 723 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 724 MockChooserController::ConnectedPairedStatus::NONE); |
| 725 EXPECT_TRUE(table_view_.enabled); |
598 EXPECT_EQ(3, table_view_.numberOfRows); | 726 EXPECT_EQ(3, table_view_.numberOfRows); |
599 // Select option 1. | 727 // Select option 1. |
600 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 728 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
601 byExtendingSelection:NO]; | 729 byExtendingSelection:NO]; |
602 EXPECT_EQ(1, table_view_.selectedRow); | 730 EXPECT_EQ(1, table_view_.selectedRow); |
603 ASSERT_TRUE(connect_button_.enabled); | 731 EXPECT_TRUE(connect_button_.enabled); |
604 ASSERT_TRUE(cancel_button_.enabled); | 732 EXPECT_TRUE(cancel_button_.enabled); |
605 | 733 |
606 chooser_controller_->OnAdapterPresenceChanged( | 734 mock_chooser_controller_->OnAdapterPresenceChanged( |
607 content::BluetoothChooser::AdapterPresence::POWERED_OFF); | 735 content::BluetoothChooser::AdapterPresence::POWERED_OFF); |
608 EXPECT_FALSE(table_view_.hidden); | 736 EXPECT_FALSE(table_view_.hidden); |
609 // Since "Bluetooth turned off." needs to be displayed on the |table_view_|, | 737 // Since "Bluetooth turned off." needs to be displayed on the |table_view_|, |
610 // the number of rows is 1. | 738 // the number of rows is 1. |
611 EXPECT_EQ(1, table_view_.numberOfRows); | 739 EXPECT_EQ(1, table_view_.numberOfRows); |
612 // |table_view_| should be disabled since there is no option shown. | 740 // |table_view_| should be disabled since there is no option shown. |
613 EXPECT_FALSE(table_view_.enabled); | 741 EXPECT_FALSE(table_view_.enabled); |
614 // No option selected. | 742 // No option selected. |
615 EXPECT_EQ(-1, table_view_.selectedRow); | 743 EXPECT_EQ(-1, table_view_.selectedRow); |
616 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 744 ExpectNoRowImage(0); |
617 ExpectRowTextIs( | 745 ExpectRowTextIs( |
618 0, l10n_util::GetNSString(IDS_BLUETOOTH_DEVICE_CHOOSER_ADAPTER_OFF)); | 746 0, l10n_util::GetNSString(IDS_BLUETOOTH_DEVICE_CHOOSER_ADAPTER_OFF)); |
| 747 EXPECT_FALSE(IsRowPaired(0)); |
619 EXPECT_TRUE(spinner_.hidden); | 748 EXPECT_TRUE(spinner_.hidden); |
620 EXPECT_TRUE(status_.hidden); | 749 EXPECT_TRUE(status_.hidden); |
621 EXPECT_TRUE(rescan_button_.hidden); | 750 EXPECT_TRUE(rescan_button_.hidden); |
622 // Since the adapter is turned off, the previously selected option | 751 // Since the adapter is turned off, the previously selected option |
623 // becomes invalid, the OK button is disabled. | 752 // becomes invalid, the OK button is disabled. |
624 EXPECT_EQ(0u, chooser_controller_->NumOptions()); | 753 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions()); |
625 ASSERT_FALSE(connect_button_.enabled); | 754 EXPECT_FALSE(connect_button_.enabled); |
626 ASSERT_TRUE(cancel_button_.enabled); | 755 EXPECT_TRUE(cancel_button_.enabled); |
627 | 756 |
628 chooser_controller_->OnAdapterPresenceChanged( | 757 mock_chooser_controller_->OnAdapterPresenceChanged( |
629 content::BluetoothChooser::AdapterPresence::POWERED_ON); | 758 content::BluetoothChooser::AdapterPresence::POWERED_ON); |
630 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 759 ExpectNoRowImage(0); |
631 ExpectRowTextIs( | 760 ExpectRowTextIs( |
632 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); | 761 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); |
633 EXPECT_EQ(0u, chooser_controller_->NumOptions()); | 762 EXPECT_FALSE(IsRowPaired(0)); |
634 ASSERT_FALSE(connect_button_.enabled); | 763 EXPECT_EQ(0u, mock_chooser_controller_->NumOptions()); |
635 ASSERT_TRUE(cancel_button_.enabled); | 764 EXPECT_FALSE(connect_button_.enabled); |
| 765 EXPECT_TRUE(cancel_button_.enabled); |
636 } | 766 } |
637 | 767 |
638 TEST_F(ChooserDialogCocoaControllerTest, DiscoveringAndNoOptionAddedAndIdle) { | 768 TEST_F(ChooserDialogCocoaControllerTest, DiscoveringAndNoOptionAddedAndIdle) { |
639 CreateChooserDialog(); | 769 CreateChooserDialog(); |
640 | 770 |
641 // Add options | 771 // Add options |
642 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 772 mock_chooser_controller_->OptionAdded( |
643 MockChooserController::kNoImage); | 773 base::ASCIIToUTF16("a"), |
644 chooser_controller_->OptionAdded( | 774 MockChooserController::kNoSignalStrengthLevelImage, |
645 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 775 MockChooserController::ConnectedPairedStatus::CONNECTED | |
646 chooser_controller_->OptionAdded( | 776 MockChooserController::ConnectedPairedStatus::PAIRED); |
647 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 777 mock_chooser_controller_->OptionAdded( |
| 778 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 779 MockChooserController::ConnectedPairedStatus::NONE); |
| 780 mock_chooser_controller_->OptionAdded( |
| 781 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 782 MockChooserController::ConnectedPairedStatus::NONE); |
648 EXPECT_FALSE(table_view_.hidden); | 783 EXPECT_FALSE(table_view_.hidden); |
649 ASSERT_TRUE(table_view_.enabled); | 784 EXPECT_TRUE(table_view_.enabled); |
650 EXPECT_EQ(3, table_view_.numberOfRows); | 785 EXPECT_EQ(3, table_view_.numberOfRows); |
651 // Select option 1. | 786 // Select option 1. |
652 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 787 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
653 byExtendingSelection:NO]; | 788 byExtendingSelection:NO]; |
654 EXPECT_EQ(1, table_view_.selectedRow); | 789 EXPECT_EQ(1, table_view_.selectedRow); |
655 EXPECT_TRUE(spinner_.hidden); | 790 EXPECT_TRUE(spinner_.hidden); |
656 EXPECT_TRUE(status_.hidden); | 791 EXPECT_TRUE(status_.hidden); |
657 EXPECT_TRUE(rescan_button_.hidden); | 792 EXPECT_TRUE(rescan_button_.hidden); |
658 ASSERT_TRUE(connect_button_.enabled); | 793 EXPECT_TRUE(connect_button_.enabled); |
659 ASSERT_TRUE(cancel_button_.enabled); | 794 EXPECT_TRUE(cancel_button_.enabled); |
660 | 795 |
661 chooser_controller_->OnDiscoveryStateChanged( | 796 mock_chooser_controller_->OnDiscoveryStateChanged( |
662 content::BluetoothChooser::DiscoveryState::DISCOVERING); | 797 content::BluetoothChooser::DiscoveryState::DISCOVERING); |
663 EXPECT_TRUE(table_view_.hidden); | 798 EXPECT_TRUE(table_view_.hidden); |
664 EXPECT_FALSE(spinner_.hidden); | 799 EXPECT_FALSE(spinner_.hidden); |
665 EXPECT_FALSE(status_.hidden); | 800 EXPECT_FALSE(status_.hidden); |
666 EXPECT_TRUE(rescan_button_.hidden); | 801 EXPECT_TRUE(rescan_button_.hidden); |
667 // OK button is disabled since the chooser is refreshing options. | 802 // OK button is disabled since the chooser is refreshing options. |
668 ASSERT_FALSE(connect_button_.enabled); | 803 EXPECT_FALSE(connect_button_.enabled); |
669 ASSERT_TRUE(cancel_button_.enabled); | 804 EXPECT_TRUE(cancel_button_.enabled); |
670 | 805 |
671 chooser_controller_->OnDiscoveryStateChanged( | 806 mock_chooser_controller_->OnDiscoveryStateChanged( |
672 content::BluetoothChooser::DiscoveryState::IDLE); | 807 content::BluetoothChooser::DiscoveryState::IDLE); |
673 EXPECT_FALSE(table_view_.hidden); | 808 EXPECT_FALSE(table_view_.hidden); |
674 // There is no option shown now. But since "No devices found." | 809 // There is no option shown now. But since "No devices found." |
675 // needs to be displayed on the |table_view_|, the number of rows is 1. | 810 // needs to be displayed on the |table_view_|, the number of rows is 1. |
676 EXPECT_EQ(1, table_view_.numberOfRows); | 811 EXPECT_EQ(1, table_view_.numberOfRows); |
677 // |table_view_| should be disabled since there is no option shown. | 812 // |table_view_| should be disabled since there is no option shown. |
678 ASSERT_FALSE(table_view_.enabled); | 813 EXPECT_FALSE(table_view_.enabled); |
679 // No option selected. | 814 // No option selected. |
680 EXPECT_EQ(-1, table_view_.selectedRow); | 815 EXPECT_EQ(-1, table_view_.selectedRow); |
681 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage); | 816 ExpectNoRowImage(0); |
682 ExpectRowTextIs( | 817 ExpectRowTextIs( |
683 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); | 818 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT)); |
| 819 EXPECT_FALSE(IsRowPaired(0)); |
684 EXPECT_TRUE(spinner_.hidden); | 820 EXPECT_TRUE(spinner_.hidden); |
685 EXPECT_TRUE(status_.hidden); | 821 EXPECT_TRUE(status_.hidden); |
686 EXPECT_FALSE(rescan_button_.hidden); | 822 EXPECT_FALSE(rescan_button_.hidden); |
687 // OK button is disabled since the chooser refreshed options. | 823 // OK button is disabled since the chooser refreshed options. |
688 ASSERT_FALSE(connect_button_.enabled); | 824 EXPECT_FALSE(connect_button_.enabled); |
689 ASSERT_TRUE(cancel_button_.enabled); | 825 EXPECT_TRUE(cancel_button_.enabled); |
690 } | 826 } |
691 | 827 |
692 TEST_F(ChooserDialogCocoaControllerTest, | 828 TEST_F(ChooserDialogCocoaControllerTest, |
693 DiscoveringAndOneOptionAddedAndSelectedAndIdle) { | 829 DiscoveringAndOneOptionAddedAndSelectedAndIdle) { |
694 CreateChooserDialog(); | 830 CreateChooserDialog(); |
695 | 831 |
696 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 832 mock_chooser_controller_->OptionAdded( |
697 MockChooserController::kNoImage); | 833 base::ASCIIToUTF16("a"), |
698 chooser_controller_->OptionAdded( | 834 MockChooserController::kNoSignalStrengthLevelImage, |
699 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 835 MockChooserController::ConnectedPairedStatus::CONNECTED | |
700 chooser_controller_->OptionAdded( | 836 MockChooserController::ConnectedPairedStatus::PAIRED); |
701 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 837 mock_chooser_controller_->OptionAdded( |
| 838 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 839 MockChooserController::ConnectedPairedStatus::NONE); |
| 840 mock_chooser_controller_->OptionAdded( |
| 841 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 842 MockChooserController::ConnectedPairedStatus::NONE); |
702 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] | 843 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] |
703 byExtendingSelection:NO]; | 844 byExtendingSelection:NO]; |
704 | 845 |
705 chooser_controller_->OnDiscoveryStateChanged( | 846 mock_chooser_controller_->OnDiscoveryStateChanged( |
706 content::BluetoothChooser::DiscoveryState::DISCOVERING); | 847 content::BluetoothChooser::DiscoveryState::DISCOVERING); |
707 chooser_controller_->OptionAdded( | 848 mock_chooser_controller_->OptionAdded( |
708 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar); | 849 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar, |
| 850 MockChooserController::ConnectedPairedStatus::NONE); |
709 EXPECT_FALSE(table_view_.hidden); | 851 EXPECT_FALSE(table_view_.hidden); |
710 // |table_view_| should be enabled since there is an option. | 852 // |table_view_| should be enabled since there is an option. |
711 ASSERT_TRUE(table_view_.enabled); | 853 EXPECT_TRUE(table_view_.enabled); |
712 EXPECT_EQ(1, table_view_.numberOfRows); | 854 EXPECT_EQ(1, table_view_.numberOfRows); |
713 // No option selected. | 855 // No option selected. |
714 EXPECT_EQ(-1, table_view_.selectedRow); | 856 EXPECT_EQ(-1, table_view_.selectedRow); |
715 ExpectSignalStrengthLevelImageIs( | 857 ExpectSignalStrengthLevelImageIs( |
716 0, MockChooserController::kSignalStrengthLevel2Bar); | 858 0, MockChooserController::kSignalStrengthLevel2Bar); |
717 ExpectRowTextIs(0, @"d"); | 859 ExpectRowTextIs(0, @"d"); |
| 860 EXPECT_FALSE(IsRowPaired(0)); |
718 EXPECT_TRUE(spinner_.hidden); | 861 EXPECT_TRUE(spinner_.hidden); |
719 EXPECT_FALSE(status_.hidden); | 862 EXPECT_FALSE(status_.hidden); |
720 EXPECT_TRUE(rescan_button_.hidden); | 863 EXPECT_TRUE(rescan_button_.hidden); |
721 // OK button is disabled since no option is selected. | 864 // OK button is disabled since no option is selected. |
722 ASSERT_FALSE(connect_button_.enabled); | 865 EXPECT_FALSE(connect_button_.enabled); |
723 ASSERT_TRUE(cancel_button_.enabled); | 866 EXPECT_TRUE(cancel_button_.enabled); |
724 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 867 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
725 byExtendingSelection:NO]; | 868 byExtendingSelection:NO]; |
726 EXPECT_EQ(0, table_view_.selectedRow); | 869 EXPECT_EQ(0, table_view_.selectedRow); |
727 ASSERT_TRUE(connect_button_.enabled); | 870 EXPECT_TRUE(connect_button_.enabled); |
728 ASSERT_TRUE(cancel_button_.enabled); | 871 EXPECT_TRUE(cancel_button_.enabled); |
729 | 872 |
730 chooser_controller_->OnDiscoveryStateChanged( | 873 mock_chooser_controller_->OnDiscoveryStateChanged( |
731 content::BluetoothChooser::DiscoveryState::IDLE); | 874 content::BluetoothChooser::DiscoveryState::IDLE); |
732 EXPECT_FALSE(table_view_.hidden); | 875 EXPECT_FALSE(table_view_.hidden); |
733 ASSERT_TRUE(table_view_.enabled); | 876 EXPECT_TRUE(table_view_.enabled); |
734 EXPECT_EQ(1, table_view_.numberOfRows); | 877 EXPECT_EQ(1, table_view_.numberOfRows); |
735 EXPECT_EQ(0, table_view_.selectedRow); | 878 EXPECT_EQ(0, table_view_.selectedRow); |
736 ExpectRowTextIs(0, @"d"); | 879 ExpectRowTextIs(0, @"d"); |
| 880 EXPECT_FALSE(IsRowPaired(0)); |
737 EXPECT_TRUE(spinner_.hidden); | 881 EXPECT_TRUE(spinner_.hidden); |
738 EXPECT_TRUE(status_.hidden); | 882 EXPECT_TRUE(status_.hidden); |
739 EXPECT_FALSE(rescan_button_.hidden); | 883 EXPECT_FALSE(rescan_button_.hidden); |
740 ASSERT_TRUE(connect_button_.enabled); | 884 EXPECT_TRUE(connect_button_.enabled); |
741 ASSERT_TRUE(cancel_button_.enabled); | 885 EXPECT_TRUE(cancel_button_.enabled); |
742 } | 886 } |
743 | 887 |
744 TEST_F(ChooserDialogCocoaControllerTest, PressRescanButton) { | 888 TEST_F(ChooserDialogCocoaControllerTest, PressRescanButton) { |
745 CreateChooserDialog(); | 889 CreateChooserDialog(); |
746 | 890 |
747 EXPECT_CALL(*chooser_controller_, RefreshOptions()).Times(1); | 891 EXPECT_CALL(*mock_chooser_controller_, RefreshOptions()).Times(1); |
748 [rescan_button_ performClick:chooser_dialog_controller_]; | 892 [rescan_button_ performClick:chooser_dialog_controller_]; |
749 } | 893 } |
750 | 894 |
751 TEST_F(ChooserDialogCocoaControllerTest, PressHelpButton) { | 895 TEST_F(ChooserDialogCocoaControllerTest, PressHelpButton) { |
752 CreateChooserDialog(); | 896 CreateChooserDialog(); |
753 | 897 |
754 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"), | 898 mock_chooser_controller_->OptionAdded( |
755 MockChooserController::kNoImage); | 899 base::ASCIIToUTF16("a"), |
756 chooser_controller_->OptionAdded( | 900 MockChooserController::kNoSignalStrengthLevelImage, |
757 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar); | 901 MockChooserController::ConnectedPairedStatus::CONNECTED | |
758 chooser_controller_->OptionAdded( | 902 MockChooserController::ConnectedPairedStatus::PAIRED); |
759 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar); | 903 mock_chooser_controller_->OptionAdded( |
| 904 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar, |
| 905 MockChooserController::ConnectedPairedStatus::NONE); |
| 906 mock_chooser_controller_->OptionAdded( |
| 907 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar, |
| 908 MockChooserController::ConnectedPairedStatus::NONE); |
760 | 909 |
761 // Select option 0 and press "Get help" button. | 910 // Select option 0 and press "Get help" button. |
762 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] | 911 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] |
763 byExtendingSelection:NO]; | 912 byExtendingSelection:NO]; |
764 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); | 913 EXPECT_CALL(*mock_chooser_controller_, Select(testing::_)).Times(0); |
765 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0); | 914 EXPECT_CALL(*mock_chooser_controller_, Cancel()).Times(0); |
766 EXPECT_CALL(*chooser_controller_, OpenHelpCenterUrl()).Times(1); | 915 EXPECT_CALL(*mock_chooser_controller_, OpenHelpCenterUrl()).Times(1); |
767 [help_button_ performClick:chooser_dialog_controller_]; | 916 [help_button_ performClick:chooser_dialog_controller_]; |
768 } | 917 } |
OLD | NEW |