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

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

Powered by Google App Engine
This is Rietveld 408576698