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

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

Powered by Google App Engine
This is Rietveld 408576698