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

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

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

Powered by Google App Engine
This is Rietveld 408576698