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

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

Issue 2257743003: Add signal strength indicator icon to WebBluetooth chooser on Mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth_signal_strength
Patch Set: address more comments Created 4 years, 3 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller.h" 5 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa_controller.h"
6 6
7 #import <Cocoa/Cocoa.h> 7 #import <Cocoa/Cocoa.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "chrome/browser/chooser_controller/mock_chooser_controller.h" 13 #include "chrome/browser/chooser_controller/mock_chooser_controller.h"
14 #import "chrome/browser/ui/cocoa/chooser_content_view_cocoa.h" 14 #import "chrome/browser/ui/cocoa/chooser_content_view_cocoa.h"
15 #import "chrome/browser/ui/cocoa/cocoa_profile_test.h" 15 #import "chrome/browser/ui/cocoa/cocoa_profile_test.h"
16 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h" 16 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
17 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h" 17 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h"
18 #include "chrome/browser/ui/cocoa/spinner_view.h" 18 #include "chrome/browser/ui/cocoa/spinner_view.h"
19 #include "chrome/grit/generated_resources.h" 19 #include "chrome/grit/generated_resources.h"
20 #include "grit/ui_resources.h"
20 #include "testing/gmock/include/gmock/gmock.h" 21 #include "testing/gmock/include/gmock/gmock.h"
21 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
22 #include "testing/gtest_mac.h" 23 #include "testing/gtest_mac.h"
23 #include "ui/base/l10n/l10n_util_mac.h" 24 #include "ui/base/l10n/l10n_util_mac.h"
25 #include "ui/base/resource/resource_bundle.h"
26
27 namespace {
28
29 // The lookup table for signal strength level image.
30 const int kSignalStrengthLevelImageIds[5] = {IDR_SIGNAL_0_BAR, IDR_SIGNAL_1_BAR,
31 IDR_SIGNAL_2_BAR, IDR_SIGNAL_3_BAR,
32 IDR_SIGNAL_4_BAR};
33
34 } // namespace
24 35
25 class ChooserDialogCocoaControllerTest : public CocoaProfileTest { 36 class ChooserDialogCocoaControllerTest : public CocoaProfileTest {
26 protected: 37 protected:
27 ChooserDialogCocoaControllerTest() {} 38 ChooserDialogCocoaControllerTest()
39 : rb_(ui::ResourceBundle::GetSharedInstance()) {}
28 ~ChooserDialogCocoaControllerTest() override {} 40 ~ChooserDialogCocoaControllerTest() override {}
29 41
30 void SetUp() override { 42 void SetUp() override {
31 CocoaProfileTest::SetUp(); 43 CocoaProfileTest::SetUp();
32 ASSERT_TRUE(browser()); 44 ASSERT_TRUE(browser());
33 } 45 }
34 46
35 // Create a ChooserDialogCocoa. 47 // Create a ChooserDialogCocoa.
36 void CreateChooserDialog() { 48 void CreateChooserDialog() {
37 content::WebContents* web_contents = 49 content::WebContents* web_contents =
(...skipping 21 matching lines...) Expand all
59 rescan_button_ = [chooser_content_view_ rescanButton]; 71 rescan_button_ = [chooser_content_view_ rescanButton];
60 ASSERT_TRUE(rescan_button_); 72 ASSERT_TRUE(rescan_button_);
61 connect_button_ = [chooser_content_view_ connectButton]; 73 connect_button_ = [chooser_content_view_ connectButton];
62 ASSERT_TRUE(connect_button_); 74 ASSERT_TRUE(connect_button_);
63 cancel_button_ = [chooser_content_view_ cancelButton]; 75 cancel_button_ = [chooser_content_view_ cancelButton];
64 ASSERT_TRUE(cancel_button_); 76 ASSERT_TRUE(cancel_button_);
65 help_button_ = [chooser_content_view_ helpButton]; 77 help_button_ = [chooser_content_view_ helpButton];
66 ASSERT_TRUE(help_button_); 78 ASSERT_TRUE(help_button_);
67 } 79 }
68 80
81 void ExpectSignalStrengthLevelImageIs(int row,
82 int expected_signal_strength_level) {
83 NSImageView* image_view =
84 [chooser_content_view_ tableRowViewImage:static_cast<NSInteger>(row)];
85
86 if (expected_signal_strength_level == -1) {
87 ASSERT_FALSE(image_view);
88 } else {
89 ASSERT_TRUE(image_view);
90 EXPECT_NSEQ(
91 rb_.GetNativeImageNamed(
92 kSignalStrengthLevelImageIds[expected_signal_strength_level])
93 .ToNSImage(),
94 [image_view image]);
95 }
96 }
97
98 void ExpectRowTextIs(int row, NSString* expected_text) {
99 EXPECT_NSEQ(expected_text,
100 [[chooser_content_view_
101 tableRowViewText:static_cast<NSInteger>(row)] stringValue]);
102 }
103
104 ui::ResourceBundle& rb_;
105
69 std::unique_ptr<ChooserDialogCocoa> chooser_dialog_; 106 std::unique_ptr<ChooserDialogCocoa> chooser_dialog_;
70 107
71 MockChooserController* chooser_controller_; 108 MockChooserController* chooser_controller_;
72 ChooserDialogCocoaController* chooser_dialog_controller_; 109 ChooserDialogCocoaController* chooser_dialog_controller_;
73 ChooserContentViewCocoa* chooser_content_view_; 110 ChooserContentViewCocoa* chooser_content_view_;
74 NSTableView* table_view_; 111 NSTableView* table_view_;
75 SpinnerView* spinner_; 112 SpinnerView* spinner_;
76 NSTextField* status_; 113 NSTextField* status_;
77 NSButton* rescan_button_; 114 NSButton* rescan_button_;
78 NSButton* connect_button_; 115 NSButton* connect_button_;
79 NSButton* cancel_button_; 116 NSButton* cancel_button_;
80 NSButton* help_button_; 117 NSButton* help_button_;
81 118
82 private: 119 private:
83 DISALLOW_COPY_AND_ASSIGN(ChooserDialogCocoaControllerTest); 120 DISALLOW_COPY_AND_ASSIGN(ChooserDialogCocoaControllerTest);
84 }; 121 };
85 122
86 TEST_F(ChooserDialogCocoaControllerTest, InitialState) { 123 TEST_F(ChooserDialogCocoaControllerTest, InitialState) {
87 CreateChooserDialog(); 124 CreateChooserDialog();
88 125
89 // Since "No devices found." needs to be displayed on the |table_view_|, 126 // Since "No devices found." needs to be displayed on the |table_view_|,
90 // the number of rows is 1. 127 // the number of rows is 1.
91 EXPECT_EQ(1, table_view_.numberOfRows); 128 EXPECT_EQ(1, table_view_.numberOfRows);
92 EXPECT_EQ(1, table_view_.numberOfColumns); 129 EXPECT_EQ(1, table_view_.numberOfColumns);
93 EXPECT_NSEQ( 130 // No signal strength level image shown.
94 l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT), 131 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage);
95 [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 132 ExpectRowTextIs(
133 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT));
96 // |table_view_| should be disabled since there is no option shown. 134 // |table_view_| should be disabled since there is no option shown.
97 ASSERT_FALSE(table_view_.enabled); 135 ASSERT_FALSE(table_view_.enabled);
98 // No option selected. 136 // No option selected.
99 EXPECT_EQ(-1, table_view_.selectedRow); 137 EXPECT_EQ(-1, table_view_.selectedRow);
100 // |connect_button_| should be disabled since no option selected. 138 // |connect_button_| should be disabled since no option selected.
101 ASSERT_FALSE(connect_button_.enabled); 139 ASSERT_FALSE(connect_button_.enabled);
102 ASSERT_TRUE(cancel_button_.enabled); 140 ASSERT_TRUE(cancel_button_.enabled);
103 ASSERT_TRUE(help_button_.enabled); 141 ASSERT_TRUE(help_button_.enabled);
104 } 142 }
105 143
106 TEST_F(ChooserDialogCocoaControllerTest, AddOption) { 144 TEST_F(ChooserDialogCocoaControllerTest, AddOption) {
107 CreateChooserDialog(); 145 CreateChooserDialog();
108 146
109 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 147 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
148 MockChooserController::kNoImage);
110 EXPECT_EQ(1, table_view_.numberOfRows); 149 EXPECT_EQ(1, table_view_.numberOfRows);
111 EXPECT_EQ(1, table_view_.numberOfColumns); 150 EXPECT_EQ(1, table_view_.numberOfColumns);
112 // |table_view_| should be enabled since there is an option. 151 // |table_view_| should be enabled since there is an option.
113 ASSERT_TRUE(table_view_.enabled); 152 ASSERT_TRUE(table_view_.enabled);
114 EXPECT_EQ(-1, table_view_.selectedRow); 153 EXPECT_EQ(-1, table_view_.selectedRow);
115 EXPECT_NSEQ(@"a", [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 154 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage);
155 ExpectRowTextIs(0, @"a");
116 ASSERT_FALSE(connect_button_.enabled); 156 ASSERT_FALSE(connect_button_.enabled);
117 ASSERT_TRUE(cancel_button_.enabled); 157 ASSERT_TRUE(cancel_button_.enabled);
118 ASSERT_TRUE(help_button_.enabled); 158 ASSERT_TRUE(help_button_.enabled);
119 159
120 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 160 chooser_controller_->OptionAdded(
161 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
121 EXPECT_EQ(2, table_view_.numberOfRows); 162 EXPECT_EQ(2, table_view_.numberOfRows);
122 EXPECT_EQ(1, table_view_.numberOfColumns); 163 EXPECT_EQ(1, table_view_.numberOfColumns);
123 ASSERT_TRUE(table_view_.enabled); 164 ASSERT_TRUE(table_view_.enabled);
124 EXPECT_EQ(-1, table_view_.selectedRow); 165 EXPECT_EQ(-1, table_view_.selectedRow);
125 EXPECT_NSEQ(@"b", [[table_view_ preparedCellAtColumn:0 row:1] stringValue]); 166 ExpectSignalStrengthLevelImageIs(
167 1, MockChooserController::kSignalStrengthLevel0Bar);
168 ExpectRowTextIs(1, @"b");
126 169
127 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 170 chooser_controller_->OptionAdded(
171 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
128 EXPECT_EQ(3, table_view_.numberOfRows); 172 EXPECT_EQ(3, table_view_.numberOfRows);
129 EXPECT_EQ(1, table_view_.numberOfColumns); 173 EXPECT_EQ(1, table_view_.numberOfColumns);
130 ASSERT_TRUE(table_view_.enabled); 174 ASSERT_TRUE(table_view_.enabled);
131 EXPECT_EQ(-1, table_view_.selectedRow); 175 EXPECT_EQ(-1, table_view_.selectedRow);
132 EXPECT_NSEQ(@"c", [[table_view_ preparedCellAtColumn:0 row:2] stringValue]); 176 ExpectSignalStrengthLevelImageIs(
177 2, MockChooserController::kSignalStrengthLevel1Bar);
178 ExpectRowTextIs(2, @"c");
179
180 chooser_controller_->OptionAdded(
181 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar);
182 ExpectSignalStrengthLevelImageIs(
183 3, MockChooserController::kSignalStrengthLevel2Bar);
184 ExpectRowTextIs(3, @"d");
185
186 chooser_controller_->OptionAdded(
187 base::ASCIIToUTF16("e"), MockChooserController::kSignalStrengthLevel3Bar);
188 ExpectSignalStrengthLevelImageIs(
189 4, MockChooserController::kSignalStrengthLevel3Bar);
190 ExpectRowTextIs(4, @"e");
191
192 chooser_controller_->OptionAdded(
193 base::ASCIIToUTF16("f"), MockChooserController::kSignalStrengthLevel4Bar);
194 ExpectSignalStrengthLevelImageIs(
195 5, MockChooserController::kSignalStrengthLevel4Bar);
196 ExpectRowTextIs(5, @"f");
133 } 197 }
134 198
135 TEST_F(ChooserDialogCocoaControllerTest, RemoveOption) { 199 TEST_F(ChooserDialogCocoaControllerTest, RemoveOption) {
136 CreateChooserDialog(); 200 CreateChooserDialog();
137 201
138 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 202 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
139 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 203 MockChooserController::kNoImage);
140 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 204 chooser_controller_->OptionAdded(
205 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
206 chooser_controller_->OptionAdded(
207 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
141 208
142 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); 209 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
143 EXPECT_EQ(2, table_view_.numberOfRows); 210 EXPECT_EQ(2, table_view_.numberOfRows);
144 EXPECT_EQ(1, table_view_.numberOfColumns); 211 EXPECT_EQ(1, table_view_.numberOfColumns);
145 ASSERT_TRUE(table_view_.enabled); 212 ASSERT_TRUE(table_view_.enabled);
146 EXPECT_EQ(-1, table_view_.selectedRow); 213 EXPECT_EQ(-1, table_view_.selectedRow);
147 EXPECT_NSEQ(@"a", [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 214 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage);
148 EXPECT_NSEQ(@"c", [[table_view_ preparedCellAtColumn:0 row:1] stringValue]); 215 ExpectRowTextIs(0, @"a");
216 ExpectSignalStrengthLevelImageIs(
217 1, MockChooserController::kSignalStrengthLevel1Bar);
218 ExpectRowTextIs(1, @"c");
149 219
150 // Remove a non-existent option, the number of rows should not change. 220 // Remove a non-existent option, the number of rows should not change.
151 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("non-existent")); 221 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("non-existent"));
152 EXPECT_EQ(2, table_view_.numberOfRows); 222 EXPECT_EQ(2, table_view_.numberOfRows);
153 EXPECT_EQ(1, table_view_.numberOfColumns); 223 EXPECT_EQ(1, table_view_.numberOfColumns);
154 ASSERT_TRUE(table_view_.enabled); 224 ASSERT_TRUE(table_view_.enabled);
155 EXPECT_EQ(-1, table_view_.selectedRow); 225 EXPECT_EQ(-1, table_view_.selectedRow);
156 EXPECT_NSEQ(@"a", [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 226 ExpectRowTextIs(0, @"a");
157 EXPECT_NSEQ(@"c", [[table_view_ preparedCellAtColumn:0 row:1] stringValue]); 227 ExpectRowTextIs(1, @"c");
158 228
159 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); 229 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
160 EXPECT_EQ(1, table_view_.numberOfRows); 230 EXPECT_EQ(1, table_view_.numberOfRows);
161 EXPECT_EQ(1, table_view_.numberOfColumns); 231 EXPECT_EQ(1, table_view_.numberOfColumns);
162 ASSERT_TRUE(table_view_.enabled); 232 ASSERT_TRUE(table_view_.enabled);
163 EXPECT_EQ(-1, table_view_.selectedRow); 233 EXPECT_EQ(-1, table_view_.selectedRow);
164 EXPECT_NSEQ(@"a", [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 234 ExpectRowTextIs(0, @"a");
165 235
166 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); 236 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
167 // There is no option shown now. But since "No devices found." 237 // There is no option shown now. But since "No devices found."
168 // needs to be displayed on the |table_view_|, the number of rows is 1. 238 // needs to be displayed on the |table_view_|, the number of rows is 1.
169 EXPECT_EQ(1, table_view_.numberOfRows); 239 EXPECT_EQ(1, table_view_.numberOfRows);
170 EXPECT_EQ(1, table_view_.numberOfColumns); 240 EXPECT_EQ(1, table_view_.numberOfColumns);
171 // |table_view_| should be disabled since all options are removed. 241 // |table_view_| should be disabled since all options are removed.
172 ASSERT_FALSE(table_view_.enabled); 242 ASSERT_FALSE(table_view_.enabled);
173 EXPECT_EQ(-1, table_view_.selectedRow); 243 EXPECT_EQ(-1, table_view_.selectedRow);
174 EXPECT_NSEQ( 244 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage);
175 l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT), 245 ExpectRowTextIs(
176 [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 246 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT));
177 } 247 }
178 248
179 TEST_F(ChooserDialogCocoaControllerTest, UpdateOption) { 249 TEST_F(ChooserDialogCocoaControllerTest, UpdateOption) {
180 CreateChooserDialog(); 250 CreateChooserDialog();
181 251
182 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 252 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
183 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 253 MockChooserController::kNoImage);
184 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 254 chooser_controller_->OptionAdded(
255 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
256 chooser_controller_->OptionAdded(
257 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
185 258
186 chooser_controller_->OptionUpdated(base::ASCIIToUTF16("b"), 259 chooser_controller_->OptionUpdated(
187 base::ASCIIToUTF16("d")); 260 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"),
261 MockChooserController::kSignalStrengthLevel2Bar);
188 262
189 EXPECT_EQ(3, table_view_.numberOfRows); 263 EXPECT_EQ(3, table_view_.numberOfRows);
190 EXPECT_EQ(1, table_view_.numberOfColumns); 264 EXPECT_EQ(1, table_view_.numberOfColumns);
191 ASSERT_TRUE(table_view_.enabled); 265 ASSERT_TRUE(table_view_.enabled);
192 EXPECT_EQ(-1, table_view_.selectedRow); 266 EXPECT_EQ(-1, table_view_.selectedRow);
193 EXPECT_NSEQ(@"a", [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 267 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage);
194 EXPECT_NSEQ(@"d", [[table_view_ preparedCellAtColumn:0 row:1] stringValue]); 268 ExpectRowTextIs(0, @"a");
195 EXPECT_NSEQ(@"c", [[table_view_ preparedCellAtColumn:0 row:2] stringValue]); 269 ExpectSignalStrengthLevelImageIs(
270 1, MockChooserController::kSignalStrengthLevel2Bar);
271 ExpectRowTextIs(1, @"d");
272 ExpectSignalStrengthLevelImageIs(
273 2, MockChooserController::kSignalStrengthLevel1Bar);
274 ExpectRowTextIs(2, @"c");
196 } 275 }
197 276
198 TEST_F(ChooserDialogCocoaControllerTest, AddAndRemoveOption) { 277 TEST_F(ChooserDialogCocoaControllerTest, AddAndRemoveOption) {
199 CreateChooserDialog(); 278 CreateChooserDialog();
200 279
201 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 280 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
281 MockChooserController::kNoImage);
202 EXPECT_EQ(1, table_view_.numberOfRows); 282 EXPECT_EQ(1, table_view_.numberOfRows);
203 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 283 chooser_controller_->OptionAdded(
284 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
204 EXPECT_EQ(2, table_view_.numberOfRows); 285 EXPECT_EQ(2, table_view_.numberOfRows);
205 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); 286 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
206 EXPECT_EQ(1, table_view_.numberOfRows); 287 EXPECT_EQ(1, table_view_.numberOfRows);
207 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 288 chooser_controller_->OptionAdded(
289 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
208 EXPECT_EQ(2, table_view_.numberOfRows); 290 EXPECT_EQ(2, table_view_.numberOfRows);
209 chooser_controller_->OptionAdded(base::ASCIIToUTF16("d")); 291 chooser_controller_->OptionAdded(
292 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar);
210 EXPECT_EQ(3, table_view_.numberOfRows); 293 EXPECT_EQ(3, table_view_.numberOfRows);
211 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d")); 294 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d"));
212 EXPECT_EQ(2, table_view_.numberOfRows); 295 EXPECT_EQ(2, table_view_.numberOfRows);
213 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); 296 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
214 EXPECT_EQ(1, table_view_.numberOfRows); 297 EXPECT_EQ(1, table_view_.numberOfRows);
215 } 298 }
216 299
217 TEST_F(ChooserDialogCocoaControllerTest, UpdateAndRemoveTheUpdatedOption) { 300 TEST_F(ChooserDialogCocoaControllerTest, UpdateAndRemoveTheUpdatedOption) {
218 CreateChooserDialog(); 301 CreateChooserDialog();
219 302
220 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 303 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
221 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 304 MockChooserController::kNoImage);
222 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 305 chooser_controller_->OptionAdded(
306 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
307 chooser_controller_->OptionAdded(
308 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
223 309
224 chooser_controller_->OptionUpdated(base::ASCIIToUTF16("b"), 310 chooser_controller_->OptionUpdated(
225 base::ASCIIToUTF16("d")); 311 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"),
312 MockChooserController::kSignalStrengthLevel2Bar);
226 313
227 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d")); 314 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d"));
228 315
229 EXPECT_EQ(2, table_view_.numberOfRows); 316 EXPECT_EQ(2, table_view_.numberOfRows);
230 EXPECT_EQ(1, table_view_.numberOfColumns); 317 EXPECT_EQ(1, table_view_.numberOfColumns);
231 ASSERT_TRUE(table_view_.enabled); 318 ASSERT_TRUE(table_view_.enabled);
232 EXPECT_EQ(-1, table_view_.selectedRow); 319 EXPECT_EQ(-1, table_view_.selectedRow);
233 EXPECT_NSEQ(@"a", [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 320 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage);
234 EXPECT_NSEQ(@"c", [[table_view_ preparedCellAtColumn:0 row:1] stringValue]); 321 ExpectRowTextIs(0, @"a");
322 ExpectSignalStrengthLevelImageIs(
323 1, MockChooserController::kSignalStrengthLevel1Bar);
324 ExpectRowTextIs(1, @"c");
235 } 325 }
236 326
237 TEST_F(ChooserDialogCocoaControllerTest, SelectAndDeselectAnOption) { 327 TEST_F(ChooserDialogCocoaControllerTest, SelectAndDeselectAnOption) {
238 CreateChooserDialog(); 328 CreateChooserDialog();
239 329
240 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 330 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
241 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 331 MockChooserController::kNoImage);
242 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 332 chooser_controller_->OptionAdded(
333 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
334 chooser_controller_->OptionAdded(
335 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
243 336
244 // Select option 0. 337 // Select option 0.
245 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 338 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
246 byExtendingSelection:NO]; 339 byExtendingSelection:NO];
247 EXPECT_EQ(0, table_view_.selectedRow); 340 EXPECT_EQ(0, table_view_.selectedRow);
248 ASSERT_TRUE(connect_button_.enabled); 341 ASSERT_TRUE(connect_button_.enabled);
249 342
250 // Deselect option 0. 343 // Deselect option 0.
251 [table_view_ deselectRow:0]; 344 [table_view_ deselectRow:0];
252 EXPECT_EQ(-1, table_view_.selectedRow); 345 EXPECT_EQ(-1, table_view_.selectedRow);
253 ASSERT_FALSE(connect_button_.enabled); 346 ASSERT_FALSE(connect_button_.enabled);
254 347
255 // Select option 1. 348 // Select option 1.
256 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] 349 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
257 byExtendingSelection:NO]; 350 byExtendingSelection:NO];
258 EXPECT_EQ(1, table_view_.selectedRow); 351 EXPECT_EQ(1, table_view_.selectedRow);
259 ASSERT_TRUE(connect_button_.enabled); 352 ASSERT_TRUE(connect_button_.enabled);
260 353
261 // Deselect option 1. 354 // Deselect option 1.
262 [table_view_ deselectRow:1]; 355 [table_view_ deselectRow:1];
263 EXPECT_EQ(-1, table_view_.selectedRow); 356 EXPECT_EQ(-1, table_view_.selectedRow);
264 ASSERT_FALSE(connect_button_.enabled); 357 ASSERT_FALSE(connect_button_.enabled);
265 } 358 }
266 359
267 TEST_F(ChooserDialogCocoaControllerTest, 360 TEST_F(ChooserDialogCocoaControllerTest,
268 SelectAnOptionAndThenSelectAnotherOption) { 361 SelectAnOptionAndThenSelectAnotherOption) {
269 CreateChooserDialog(); 362 CreateChooserDialog();
270 363
271 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 364 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
272 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 365 MockChooserController::kNoImage);
273 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 366 chooser_controller_->OptionAdded(
367 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
368 chooser_controller_->OptionAdded(
369 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
274 370
275 // Select option 0. 371 // Select option 0.
276 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 372 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
277 byExtendingSelection:NO]; 373 byExtendingSelection:NO];
278 EXPECT_EQ(0, table_view_.selectedRow); 374 EXPECT_EQ(0, table_view_.selectedRow);
279 ASSERT_TRUE(connect_button_.enabled); 375 ASSERT_TRUE(connect_button_.enabled);
280 376
281 // Select option 1. 377 // Select option 1.
282 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] 378 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
283 byExtendingSelection:NO]; 379 byExtendingSelection:NO];
284 EXPECT_EQ(1, table_view_.selectedRow); 380 EXPECT_EQ(1, table_view_.selectedRow);
285 ASSERT_TRUE(connect_button_.enabled); 381 ASSERT_TRUE(connect_button_.enabled);
286 382
287 // Select option 2. 383 // Select option 2.
288 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2] 384 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2]
289 byExtendingSelection:NO]; 385 byExtendingSelection:NO];
290 EXPECT_EQ(2, table_view_.selectedRow); 386 EXPECT_EQ(2, table_view_.selectedRow);
291 ASSERT_TRUE(connect_button_.enabled); 387 ASSERT_TRUE(connect_button_.enabled);
292 } 388 }
293 389
294 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndRemoveAnotherOption) { 390 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndRemoveAnotherOption) {
295 CreateChooserDialog(); 391 CreateChooserDialog();
296 392
297 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 393 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
298 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 394 MockChooserController::kNoImage);
299 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 395 chooser_controller_->OptionAdded(
396 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
397 chooser_controller_->OptionAdded(
398 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
300 399
301 // Select option 1. 400 // Select option 1.
302 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] 401 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
303 byExtendingSelection:NO]; 402 byExtendingSelection:NO];
304 EXPECT_EQ(3, table_view_.numberOfRows); 403 EXPECT_EQ(3, table_view_.numberOfRows);
305 EXPECT_EQ(1, table_view_.selectedRow); 404 EXPECT_EQ(1, table_view_.selectedRow);
306 ASSERT_TRUE(connect_button_.enabled); 405 ASSERT_TRUE(connect_button_.enabled);
307 406
308 // Remove option 0. The list becomes: b c. And the index of the previously 407 // Remove option 0. The list becomes: b c. And the index of the previously
309 // selected item "b" becomes 0. 408 // selected item "b" becomes 0.
310 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); 409 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
311 EXPECT_EQ(2, table_view_.numberOfRows); 410 EXPECT_EQ(2, table_view_.numberOfRows);
312 EXPECT_EQ(0, table_view_.selectedRow); 411 EXPECT_EQ(0, table_view_.selectedRow);
313 ASSERT_TRUE(connect_button_.enabled); 412 ASSERT_TRUE(connect_button_.enabled);
314 413
315 // Remove option 1. The list becomes: b. 414 // Remove option 1. The list becomes: b.
316 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); 415 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
317 EXPECT_EQ(1, table_view_.numberOfRows); 416 EXPECT_EQ(1, table_view_.numberOfRows);
318 EXPECT_EQ(0, table_view_.selectedRow); 417 EXPECT_EQ(0, table_view_.selectedRow);
319 ASSERT_TRUE(connect_button_.enabled); 418 ASSERT_TRUE(connect_button_.enabled);
320 } 419 }
321 420
322 TEST_F(ChooserDialogCocoaControllerTest, 421 TEST_F(ChooserDialogCocoaControllerTest,
323 SelectAnOptionAndRemoveTheSelectedOption) { 422 SelectAnOptionAndRemoveTheSelectedOption) {
324 CreateChooserDialog(); 423 CreateChooserDialog();
325 424
326 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 425 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
327 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 426 MockChooserController::kNoImage);
328 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 427 chooser_controller_->OptionAdded(
428 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
429 chooser_controller_->OptionAdded(
430 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
329 431
330 // Select option 1. 432 // Select option 1.
331 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] 433 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
332 byExtendingSelection:NO]; 434 byExtendingSelection:NO];
333 EXPECT_EQ(3, table_view_.numberOfRows); 435 EXPECT_EQ(3, table_view_.numberOfRows);
334 EXPECT_EQ(1, table_view_.selectedRow); 436 EXPECT_EQ(1, table_view_.selectedRow);
335 ASSERT_TRUE(connect_button_.enabled); 437 ASSERT_TRUE(connect_button_.enabled);
336 438
337 // Remove option 1 439 // Remove option 1
338 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); 440 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
339 EXPECT_EQ(2, table_view_.numberOfRows); 441 EXPECT_EQ(2, table_view_.numberOfRows);
340 // No option selected. 442 // No option selected.
341 EXPECT_EQ(-1, table_view_.selectedRow); 443 EXPECT_EQ(-1, table_view_.selectedRow);
342 // Since no option selected, the "Connect" button should be disabled. 444 // Since no option selected, the "Connect" button should be disabled.
343 ASSERT_FALSE(connect_button_.enabled); 445 ASSERT_FALSE(connect_button_.enabled);
344 } 446 }
345 447
346 TEST_F(ChooserDialogCocoaControllerTest, 448 TEST_F(ChooserDialogCocoaControllerTest,
347 SelectAnOptionAndUpdateTheSelectedOption) { 449 SelectAnOptionAndUpdateTheSelectedOption) {
348 CreateChooserDialog(); 450 CreateChooserDialog();
349 451
350 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 452 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
351 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 453 MockChooserController::kNoImage);
352 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 454 chooser_controller_->OptionAdded(
455 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
456 chooser_controller_->OptionAdded(
457 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
353 458
354 // Select option 1. 459 // Select option 1.
355 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] 460 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
356 byExtendingSelection:NO]; 461 byExtendingSelection:NO];
357 462
358 // Update option 1. 463 // Update option 1.
359 chooser_controller_->OptionUpdated(base::ASCIIToUTF16("b"), 464 chooser_controller_->OptionUpdated(
360 base::ASCIIToUTF16("d")); 465 base::ASCIIToUTF16("b"), base::ASCIIToUTF16("d"),
466 MockChooserController::kSignalStrengthLevel2Bar);
361 467
362 EXPECT_EQ(1, table_view_.selectedRow); 468 EXPECT_EQ(1, table_view_.selectedRow);
363 EXPECT_NSEQ(@"a", [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 469 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage);
364 EXPECT_NSEQ(@"d", [[table_view_ preparedCellAtColumn:0 row:1] stringValue]); 470 ExpectRowTextIs(0, @"a");
365 EXPECT_NSEQ(@"c", [[table_view_ preparedCellAtColumn:0 row:2] stringValue]); 471 ExpectSignalStrengthLevelImageIs(
472 1, MockChooserController::kSignalStrengthLevel2Bar);
473 ExpectRowTextIs(1, @"d");
474 ExpectSignalStrengthLevelImageIs(
475 2, MockChooserController::kSignalStrengthLevel1Bar);
476 ExpectRowTextIs(2, @"c");
366 ASSERT_TRUE(connect_button_.enabled); 477 ASSERT_TRUE(connect_button_.enabled);
367 } 478 }
368 479
369 TEST_F(ChooserDialogCocoaControllerTest, 480 TEST_F(ChooserDialogCocoaControllerTest,
370 AddAnOptionAndSelectItAndRemoveTheSelectedOption) { 481 AddAnOptionAndSelectItAndRemoveTheSelectedOption) {
371 CreateChooserDialog(); 482 CreateChooserDialog();
372 483
373 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 484 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
485 MockChooserController::kNoImage);
374 486
375 // Select option 0. 487 // Select option 0.
376 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 488 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
377 byExtendingSelection:NO]; 489 byExtendingSelection:NO];
378 EXPECT_EQ(1, table_view_.numberOfRows); 490 EXPECT_EQ(1, table_view_.numberOfRows);
379 EXPECT_EQ(0, table_view_.selectedRow); 491 EXPECT_EQ(0, table_view_.selectedRow);
380 ASSERT_TRUE(connect_button_.enabled); 492 ASSERT_TRUE(connect_button_.enabled);
381 493
382 // Remove option 0. 494 // Remove option 0.
383 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); 495 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
384 // There is no option shown now. But since "No devices found." 496 // There is no option shown now. But since "No devices found."
385 // needs to be displayed on the |table_view_|, the number of rows is 1. 497 // needs to be displayed on the |table_view_|, the number of rows is 1.
386 EXPECT_EQ(1, table_view_.numberOfRows); 498 EXPECT_EQ(1, table_view_.numberOfRows);
387 // No option selected. 499 // No option selected.
388 EXPECT_EQ(-1, table_view_.selectedRow); 500 EXPECT_EQ(-1, table_view_.selectedRow);
389 // |table_view_| should be disabled since there is no option shown. 501 // |table_view_| should be disabled since there is no option shown.
390 ASSERT_FALSE(table_view_.enabled); 502 ASSERT_FALSE(table_view_.enabled);
391 EXPECT_NSEQ( 503 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage);
392 l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT), 504 ExpectRowTextIs(
393 [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 505 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT));
394 // Since no option selected, the "Connect" button should be disabled. 506 // Since no option selected, the "Connect" button should be disabled.
395 ASSERT_FALSE(connect_button_.enabled); 507 ASSERT_FALSE(connect_button_.enabled);
396 } 508 }
397 509
398 TEST_F(ChooserDialogCocoaControllerTest, NoOptionSelectedAndPressCancelButton) { 510 TEST_F(ChooserDialogCocoaControllerTest, NoOptionSelectedAndPressCancelButton) {
399 CreateChooserDialog(); 511 CreateChooserDialog();
400 512
401 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 513 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
402 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 514 MockChooserController::kNoImage);
403 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 515 chooser_controller_->OptionAdded(
516 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
517 chooser_controller_->OptionAdded(
518 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
404 519
405 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); 520 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0);
406 EXPECT_CALL(*chooser_controller_, Cancel()).Times(1); 521 EXPECT_CALL(*chooser_controller_, Cancel()).Times(1);
407 [cancel_button_ performClick:chooser_dialog_controller_]; 522 [cancel_button_ performClick:chooser_dialog_controller_];
408 } 523 }
409 524
410 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressConnectButton) { 525 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressConnectButton) {
411 CreateChooserDialog(); 526 CreateChooserDialog();
412 527
413 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 528 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
414 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 529 MockChooserController::kNoImage);
415 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 530 chooser_controller_->OptionAdded(
531 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
532 chooser_controller_->OptionAdded(
533 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
416 534
417 // Select option 0 and press "Connect" button. 535 // Select option 0 and press "Connect" button.
418 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 536 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
419 byExtendingSelection:NO]; 537 byExtendingSelection:NO];
420 EXPECT_CALL(*chooser_controller_, Select(0)).Times(1); 538 EXPECT_CALL(*chooser_controller_, Select(0)).Times(1);
421 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0); 539 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0);
422 [connect_button_ performClick:chooser_dialog_controller_]; 540 [connect_button_ performClick:chooser_dialog_controller_];
423 541
424 // Select option 2 and press "Connect" button. 542 // Select option 2 and press "Connect" button.
425 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2] 543 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2]
426 byExtendingSelection:NO]; 544 byExtendingSelection:NO];
427 EXPECT_CALL(*chooser_controller_, Select(2)).Times(1); 545 EXPECT_CALL(*chooser_controller_, Select(2)).Times(1);
428 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0); 546 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0);
429 [connect_button_ performClick:chooser_dialog_controller_]; 547 [connect_button_ performClick:chooser_dialog_controller_];
430 } 548 }
431 549
432 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressCancelButton) { 550 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndPressCancelButton) {
433 CreateChooserDialog(); 551 CreateChooserDialog();
434 552
435 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 553 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
436 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 554 MockChooserController::kNoImage);
437 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 555 chooser_controller_->OptionAdded(
556 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
557 chooser_controller_->OptionAdded(
558 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
438 559
439 // Select option 0 and press "Cancel" button. 560 // Select option 0 and press "Cancel" button.
440 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 561 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
441 byExtendingSelection:NO]; 562 byExtendingSelection:NO];
442 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); 563 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0);
443 EXPECT_CALL(*chooser_controller_, Cancel()).Times(1); 564 EXPECT_CALL(*chooser_controller_, Cancel()).Times(1);
444 [cancel_button_ performClick:chooser_dialog_controller_]; 565 [cancel_button_ performClick:chooser_dialog_controller_];
445 } 566 }
446 567
447 TEST_F(ChooserDialogCocoaControllerTest, AdapterOnAndOffAndOn) { 568 TEST_F(ChooserDialogCocoaControllerTest, AdapterOnAndOffAndOn) {
448 CreateChooserDialog(); 569 CreateChooserDialog();
449 570
450 chooser_controller_->OnAdapterPresenceChanged( 571 chooser_controller_->OnAdapterPresenceChanged(
451 content::BluetoothChooser::AdapterPresence::POWERED_ON); 572 content::BluetoothChooser::AdapterPresence::POWERED_ON);
452 EXPECT_FALSE(table_view_.hidden); 573 EXPECT_FALSE(table_view_.hidden);
453 // There is no option shown now. But since "No devices found." 574 // There is no option shown now. But since "No devices found."
454 // needs to be displayed on the |table_view_|, the number of rows is 1. 575 // needs to be displayed on the |table_view_|, the number of rows is 1.
455 EXPECT_EQ(1, table_view_.numberOfRows); 576 EXPECT_EQ(1, table_view_.numberOfRows);
456 // |table_view_| should be disabled since there is no option shown. 577 // |table_view_| should be disabled since there is no option shown.
457 ASSERT_FALSE(table_view_.enabled); 578 ASSERT_FALSE(table_view_.enabled);
458 // No option selected. 579 // No option selected.
459 EXPECT_EQ(-1, table_view_.selectedRow); 580 EXPECT_EQ(-1, table_view_.selectedRow);
460 EXPECT_NSEQ( 581 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage);
461 l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT), 582 ExpectRowTextIs(
462 [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 583 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT));
463 EXPECT_TRUE(spinner_.hidden); 584 EXPECT_TRUE(spinner_.hidden);
464 EXPECT_TRUE(status_.hidden); 585 EXPECT_TRUE(status_.hidden);
465 EXPECT_FALSE(rescan_button_.hidden); 586 EXPECT_FALSE(rescan_button_.hidden);
466 ASSERT_FALSE(connect_button_.enabled); 587 ASSERT_FALSE(connect_button_.enabled);
467 ASSERT_TRUE(cancel_button_.enabled); 588 ASSERT_TRUE(cancel_button_.enabled);
468 589
469 // Add options 590 // Add options
470 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 591 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
471 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 592 MockChooserController::kNoImage);
472 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 593 chooser_controller_->OptionAdded(
594 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
595 chooser_controller_->OptionAdded(
596 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
473 ASSERT_TRUE(table_view_.enabled); 597 ASSERT_TRUE(table_view_.enabled);
474 EXPECT_EQ(3, table_view_.numberOfRows); 598 EXPECT_EQ(3, table_view_.numberOfRows);
475 // Select option 1. 599 // Select option 1.
476 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] 600 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
477 byExtendingSelection:NO]; 601 byExtendingSelection:NO];
478 EXPECT_EQ(1, table_view_.selectedRow); 602 EXPECT_EQ(1, table_view_.selectedRow);
479 ASSERT_TRUE(connect_button_.enabled); 603 ASSERT_TRUE(connect_button_.enabled);
480 ASSERT_TRUE(cancel_button_.enabled); 604 ASSERT_TRUE(cancel_button_.enabled);
481 605
482 chooser_controller_->OnAdapterPresenceChanged( 606 chooser_controller_->OnAdapterPresenceChanged(
483 content::BluetoothChooser::AdapterPresence::POWERED_OFF); 607 content::BluetoothChooser::AdapterPresence::POWERED_OFF);
484 EXPECT_FALSE(table_view_.hidden); 608 EXPECT_FALSE(table_view_.hidden);
485 // Since "Bluetooth turned off." needs to be displayed on the |table_view_|, 609 // Since "Bluetooth turned off." needs to be displayed on the |table_view_|,
486 // the number of rows is 1. 610 // the number of rows is 1.
487 EXPECT_EQ(1, table_view_.numberOfRows); 611 EXPECT_EQ(1, table_view_.numberOfRows);
488 // |table_view_| should be disabled since there is no option shown. 612 // |table_view_| should be disabled since there is no option shown.
489 EXPECT_FALSE(table_view_.enabled); 613 EXPECT_FALSE(table_view_.enabled);
490 // No option selected. 614 // No option selected.
491 EXPECT_EQ(-1, table_view_.selectedRow); 615 EXPECT_EQ(-1, table_view_.selectedRow);
492 EXPECT_NSEQ(l10n_util::GetNSString(IDS_BLUETOOTH_DEVICE_CHOOSER_ADAPTER_OFF), 616 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage);
493 [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 617 ExpectRowTextIs(
618 0, l10n_util::GetNSString(IDS_BLUETOOTH_DEVICE_CHOOSER_ADAPTER_OFF));
494 EXPECT_TRUE(spinner_.hidden); 619 EXPECT_TRUE(spinner_.hidden);
495 EXPECT_TRUE(status_.hidden); 620 EXPECT_TRUE(status_.hidden);
496 EXPECT_TRUE(rescan_button_.hidden); 621 EXPECT_TRUE(rescan_button_.hidden);
497 // Since the adapter is turned off, the previously selected option 622 // Since the adapter is turned off, the previously selected option
498 // becomes invalid, the OK button is disabled. 623 // becomes invalid, the OK button is disabled.
499 EXPECT_EQ(0u, chooser_controller_->NumOptions()); 624 EXPECT_EQ(0u, chooser_controller_->NumOptions());
500 ASSERT_FALSE(connect_button_.enabled); 625 ASSERT_FALSE(connect_button_.enabled);
501 ASSERT_TRUE(cancel_button_.enabled); 626 ASSERT_TRUE(cancel_button_.enabled);
502 627
503 chooser_controller_->OnAdapterPresenceChanged( 628 chooser_controller_->OnAdapterPresenceChanged(
504 content::BluetoothChooser::AdapterPresence::POWERED_ON); 629 content::BluetoothChooser::AdapterPresence::POWERED_ON);
505 EXPECT_NSEQ( 630 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage);
506 l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT), 631 ExpectRowTextIs(
507 [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 632 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT));
508 EXPECT_EQ(0u, chooser_controller_->NumOptions()); 633 EXPECT_EQ(0u, chooser_controller_->NumOptions());
509 ASSERT_FALSE(connect_button_.enabled); 634 ASSERT_FALSE(connect_button_.enabled);
510 ASSERT_TRUE(cancel_button_.enabled); 635 ASSERT_TRUE(cancel_button_.enabled);
511 } 636 }
512 637
513 TEST_F(ChooserDialogCocoaControllerTest, DiscoveringAndNoOptionAddedAndIdle) { 638 TEST_F(ChooserDialogCocoaControllerTest, DiscoveringAndNoOptionAddedAndIdle) {
514 CreateChooserDialog(); 639 CreateChooserDialog();
515 640
516 // Add options 641 // Add options
517 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 642 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
518 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 643 MockChooserController::kNoImage);
519 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 644 chooser_controller_->OptionAdded(
645 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
646 chooser_controller_->OptionAdded(
647 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
520 EXPECT_FALSE(table_view_.hidden); 648 EXPECT_FALSE(table_view_.hidden);
521 ASSERT_TRUE(table_view_.enabled); 649 ASSERT_TRUE(table_view_.enabled);
522 EXPECT_EQ(3, table_view_.numberOfRows); 650 EXPECT_EQ(3, table_view_.numberOfRows);
523 // Select option 1. 651 // Select option 1.
524 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] 652 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
525 byExtendingSelection:NO]; 653 byExtendingSelection:NO];
526 EXPECT_EQ(1, table_view_.selectedRow); 654 EXPECT_EQ(1, table_view_.selectedRow);
527 EXPECT_TRUE(spinner_.hidden); 655 EXPECT_TRUE(spinner_.hidden);
528 EXPECT_TRUE(status_.hidden); 656 EXPECT_TRUE(status_.hidden);
529 EXPECT_TRUE(rescan_button_.hidden); 657 EXPECT_TRUE(rescan_button_.hidden);
(...skipping 13 matching lines...) Expand all
543 chooser_controller_->OnDiscoveryStateChanged( 671 chooser_controller_->OnDiscoveryStateChanged(
544 content::BluetoothChooser::DiscoveryState::IDLE); 672 content::BluetoothChooser::DiscoveryState::IDLE);
545 EXPECT_FALSE(table_view_.hidden); 673 EXPECT_FALSE(table_view_.hidden);
546 // There is no option shown now. But since "No devices found." 674 // There is no option shown now. But since "No devices found."
547 // needs to be displayed on the |table_view_|, the number of rows is 1. 675 // needs to be displayed on the |table_view_|, the number of rows is 1.
548 EXPECT_EQ(1, table_view_.numberOfRows); 676 EXPECT_EQ(1, table_view_.numberOfRows);
549 // |table_view_| should be disabled since there is no option shown. 677 // |table_view_| should be disabled since there is no option shown.
550 ASSERT_FALSE(table_view_.enabled); 678 ASSERT_FALSE(table_view_.enabled);
551 // No option selected. 679 // No option selected.
552 EXPECT_EQ(-1, table_view_.selectedRow); 680 EXPECT_EQ(-1, table_view_.selectedRow);
553 EXPECT_NSEQ( 681 ExpectSignalStrengthLevelImageIs(0, MockChooserController::kNoImage);
554 l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT), 682 ExpectRowTextIs(
555 [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 683 0, l10n_util::GetNSString(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT));
556 EXPECT_TRUE(spinner_.hidden); 684 EXPECT_TRUE(spinner_.hidden);
557 EXPECT_TRUE(status_.hidden); 685 EXPECT_TRUE(status_.hidden);
558 EXPECT_FALSE(rescan_button_.hidden); 686 EXPECT_FALSE(rescan_button_.hidden);
559 // OK button is disabled since the chooser refreshed options. 687 // OK button is disabled since the chooser refreshed options.
560 ASSERT_FALSE(connect_button_.enabled); 688 ASSERT_FALSE(connect_button_.enabled);
561 ASSERT_TRUE(cancel_button_.enabled); 689 ASSERT_TRUE(cancel_button_.enabled);
562 } 690 }
563 691
564 TEST_F(ChooserDialogCocoaControllerTest, 692 TEST_F(ChooserDialogCocoaControllerTest,
565 DiscoveringAndOneOptionAddedAndSelectedAndIdle) { 693 DiscoveringAndOneOptionAddedAndSelectedAndIdle) {
566 CreateChooserDialog(); 694 CreateChooserDialog();
567 695
568 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 696 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
569 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 697 MockChooserController::kNoImage);
570 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 698 chooser_controller_->OptionAdded(
699 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
700 chooser_controller_->OptionAdded(
701 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
571 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] 702 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
572 byExtendingSelection:NO]; 703 byExtendingSelection:NO];
573 704
574 chooser_controller_->OnDiscoveryStateChanged( 705 chooser_controller_->OnDiscoveryStateChanged(
575 content::BluetoothChooser::DiscoveryState::DISCOVERING); 706 content::BluetoothChooser::DiscoveryState::DISCOVERING);
576 chooser_controller_->OptionAdded(base::ASCIIToUTF16("d")); 707 chooser_controller_->OptionAdded(
708 base::ASCIIToUTF16("d"), MockChooserController::kSignalStrengthLevel2Bar);
577 EXPECT_FALSE(table_view_.hidden); 709 EXPECT_FALSE(table_view_.hidden);
578 // |table_view_| should be enabled since there is an option. 710 // |table_view_| should be enabled since there is an option.
579 ASSERT_TRUE(table_view_.enabled); 711 ASSERT_TRUE(table_view_.enabled);
580 EXPECT_EQ(1, table_view_.numberOfRows); 712 EXPECT_EQ(1, table_view_.numberOfRows);
581 // No option selected. 713 // No option selected.
582 EXPECT_EQ(-1, table_view_.selectedRow); 714 EXPECT_EQ(-1, table_view_.selectedRow);
583 EXPECT_NSEQ(@"d", [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 715 ExpectSignalStrengthLevelImageIs(
716 0, MockChooserController::kSignalStrengthLevel2Bar);
717 ExpectRowTextIs(0, @"d");
584 EXPECT_TRUE(spinner_.hidden); 718 EXPECT_TRUE(spinner_.hidden);
585 EXPECT_FALSE(status_.hidden); 719 EXPECT_FALSE(status_.hidden);
586 EXPECT_TRUE(rescan_button_.hidden); 720 EXPECT_TRUE(rescan_button_.hidden);
587 // OK button is disabled since no option is selected. 721 // OK button is disabled since no option is selected.
588 ASSERT_FALSE(connect_button_.enabled); 722 ASSERT_FALSE(connect_button_.enabled);
589 ASSERT_TRUE(cancel_button_.enabled); 723 ASSERT_TRUE(cancel_button_.enabled);
590 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 724 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
591 byExtendingSelection:NO]; 725 byExtendingSelection:NO];
592 EXPECT_EQ(0, table_view_.selectedRow); 726 EXPECT_EQ(0, table_view_.selectedRow);
593 ASSERT_TRUE(connect_button_.enabled); 727 ASSERT_TRUE(connect_button_.enabled);
594 ASSERT_TRUE(cancel_button_.enabled); 728 ASSERT_TRUE(cancel_button_.enabled);
595 729
596 chooser_controller_->OnDiscoveryStateChanged( 730 chooser_controller_->OnDiscoveryStateChanged(
597 content::BluetoothChooser::DiscoveryState::IDLE); 731 content::BluetoothChooser::DiscoveryState::IDLE);
598 EXPECT_FALSE(table_view_.hidden); 732 EXPECT_FALSE(table_view_.hidden);
599 ASSERT_TRUE(table_view_.enabled); 733 ASSERT_TRUE(table_view_.enabled);
600 EXPECT_EQ(1, table_view_.numberOfRows); 734 EXPECT_EQ(1, table_view_.numberOfRows);
601 EXPECT_EQ(0, table_view_.selectedRow); 735 EXPECT_EQ(0, table_view_.selectedRow);
602 EXPECT_NSEQ(@"d", [[table_view_ preparedCellAtColumn:0 row:0] stringValue]); 736 ExpectRowTextIs(0, @"d");
603 EXPECT_TRUE(spinner_.hidden); 737 EXPECT_TRUE(spinner_.hidden);
604 EXPECT_TRUE(status_.hidden); 738 EXPECT_TRUE(status_.hidden);
605 EXPECT_FALSE(rescan_button_.hidden); 739 EXPECT_FALSE(rescan_button_.hidden);
606 ASSERT_TRUE(connect_button_.enabled); 740 ASSERT_TRUE(connect_button_.enabled);
607 ASSERT_TRUE(cancel_button_.enabled); 741 ASSERT_TRUE(cancel_button_.enabled);
608 } 742 }
609 743
610 TEST_F(ChooserDialogCocoaControllerTest, PressRescanButton) { 744 TEST_F(ChooserDialogCocoaControllerTest, PressRescanButton) {
611 CreateChooserDialog(); 745 CreateChooserDialog();
612 746
613 EXPECT_CALL(*chooser_controller_, RefreshOptions()).Times(1); 747 EXPECT_CALL(*chooser_controller_, RefreshOptions()).Times(1);
614 [rescan_button_ performClick:chooser_dialog_controller_]; 748 [rescan_button_ performClick:chooser_dialog_controller_];
615 } 749 }
616 750
617 TEST_F(ChooserDialogCocoaControllerTest, PressHelpButton) { 751 TEST_F(ChooserDialogCocoaControllerTest, PressHelpButton) {
618 CreateChooserDialog(); 752 CreateChooserDialog();
619 753
620 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 754 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"),
621 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 755 MockChooserController::kNoImage);
622 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 756 chooser_controller_->OptionAdded(
757 base::ASCIIToUTF16("b"), MockChooserController::kSignalStrengthLevel0Bar);
758 chooser_controller_->OptionAdded(
759 base::ASCIIToUTF16("c"), MockChooserController::kSignalStrengthLevel1Bar);
623 760
624 // Select option 0 and press "Get help" button. 761 // Select option 0 and press "Get help" button.
625 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 762 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
626 byExtendingSelection:NO]; 763 byExtendingSelection:NO];
627 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); 764 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0);
628 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0); 765 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0);
629 EXPECT_CALL(*chooser_controller_, OpenHelpCenterUrl()).Times(1); 766 EXPECT_CALL(*chooser_controller_, OpenHelpCenterUrl()).Times(1);
630 [help_button_ performClick:chooser_dialog_controller_]; 767 [help_button_ performClick:chooser_dialog_controller_];
631 } 768 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698