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

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

Issue 2054333002: Modify chooser controller to correctly handle removing item on Mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: modified chooser controller to correctly handle removing item on Mac Created 4 years, 6 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 #import "chrome/browser/ui/cocoa/chooser_content_view.h" 13 #import "chrome/browser/ui/cocoa/chooser_content_view.h"
14 #import "chrome/browser/ui/cocoa/cocoa_profile_test.h" 14 #import "chrome/browser/ui/cocoa/cocoa_profile_test.h"
15 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h" 15 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
16 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h" 16 #import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h"
17 #include "components/chooser_controller/mock_chooser_controller.h"
17 #include "testing/gmock/include/gmock/gmock.h" 18 #include "testing/gmock/include/gmock/gmock.h"
18 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
19 #include "testing/gtest_mac.h" 20 #include "testing/gtest_mac.h"
20 21
21 namespace {
22
23 class MockChooserController : public ChooserController {
24 public:
25 explicit MockChooserController(content::RenderFrameHost* owner)
26 : ChooserController(owner) {}
27 ~MockChooserController() override {}
28
29 // ChooserController:
30 size_t NumOptions() const override { return option_names_.size(); }
31
32 // ChooserController:
33 const base::string16& GetOption(size_t index) const override {
34 return option_names_[index];
35 }
36
37 // ChooserController:
38 MOCK_METHOD1(Select, void(size_t index));
39
40 // ChooserController:
41 MOCK_METHOD0(Cancel, void());
42
43 // ChooserController:
44 MOCK_METHOD0(Close, void());
45
46 // ChooserController:
47 MOCK_CONST_METHOD0(OpenHelpCenterUrl, void());
48
49 void OptionAdded(const base::string16 option_name) {
50 option_names_.push_back(option_name);
51 if (observer())
52 observer()->OnOptionAdded(option_names_.size() - 1);
53 }
54
55 void OptionRemoved(const base::string16 option_name) {
56 for (auto it = option_names_.begin(); it != option_names_.end(); ++it) {
57 if (*it == option_name) {
58 size_t index = it - option_names_.begin();
59 option_names_.erase(it);
60 if (observer())
61 observer()->OnOptionRemoved(index);
62 return;
63 }
64 }
65 }
66
67 private:
68 std::vector<base::string16> option_names_;
69
70 DISALLOW_COPY_AND_ASSIGN(MockChooserController);
71 };
72
73 } // namespace
74
75 class ChooserDialogCocoaControllerTest : public CocoaProfileTest { 22 class ChooserDialogCocoaControllerTest : public CocoaProfileTest {
76 protected: 23 protected:
77 ChooserDialogCocoaControllerTest() {} 24 ChooserDialogCocoaControllerTest() {}
78 ~ChooserDialogCocoaControllerTest() override {} 25 ~ChooserDialogCocoaControllerTest() override {}
79 26
80 void SetUp() override { 27 void SetUp() override {
81 CocoaProfileTest::SetUp(); 28 CocoaProfileTest::SetUp();
82 ASSERT_TRUE(browser()); 29 ASSERT_TRUE(browser());
83 } 30 }
84 31
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 68
122 private: 69 private:
123 DISALLOW_COPY_AND_ASSIGN(ChooserDialogCocoaControllerTest); 70 DISALLOW_COPY_AND_ASSIGN(ChooserDialogCocoaControllerTest);
124 }; 71 };
125 72
126 TEST_F(ChooserDialogCocoaControllerTest, InitialState) { 73 TEST_F(ChooserDialogCocoaControllerTest, InitialState) {
127 CreateChooserDialog(); 74 CreateChooserDialog();
128 75
129 // Since "No devices found." needs to be displayed on the |table_view_|, 76 // Since "No devices found." needs to be displayed on the |table_view_|,
130 // the number of rows is 1. 77 // the number of rows is 1.
131 EXPECT_EQ(table_view_.numberOfRows, 1); 78 EXPECT_EQ(1, table_view_.numberOfRows);
132 EXPECT_EQ(table_view_.numberOfColumns, 1); 79 EXPECT_EQ(1, table_view_.numberOfColumns);
133 // |table_view_| should be disabled since there is no option shown. 80 // |table_view_| should be disabled since there is no option shown.
134 ASSERT_FALSE(table_view_.enabled); 81 ASSERT_FALSE(table_view_.enabled);
135 // No option selected. 82 // No option selected.
136 EXPECT_EQ(table_view_.selectedRow, -1); 83 EXPECT_EQ(-1, table_view_.selectedRow);
137 // |connect_button_| should be disabled since no option selected. 84 // |connect_button_| should be disabled since no option selected.
138 ASSERT_FALSE(connect_button_.enabled); 85 ASSERT_FALSE(connect_button_.enabled);
139 ASSERT_TRUE(cancel_button_.enabled); 86 ASSERT_TRUE(cancel_button_.enabled);
140 ASSERT_TRUE(help_button_.enabled); 87 ASSERT_TRUE(help_button_.enabled);
141 } 88 }
142 89
143 TEST_F(ChooserDialogCocoaControllerTest, AddOption) { 90 TEST_F(ChooserDialogCocoaControllerTest, AddOption) {
144 CreateChooserDialog(); 91 CreateChooserDialog();
145 92
146 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 93 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
147 EXPECT_EQ(table_view_.numberOfRows, 1); 94 EXPECT_EQ(1, table_view_.numberOfRows);
148 EXPECT_EQ(table_view_.numberOfColumns, 1); 95 EXPECT_EQ(1, table_view_.numberOfColumns);
149 // |table_view_| should be enabled since there is an option. 96 // |table_view_| should be enabled since there is an option.
150 ASSERT_TRUE(table_view_.enabled); 97 ASSERT_TRUE(table_view_.enabled);
151 EXPECT_EQ(table_view_.selectedRow, -1); 98 EXPECT_EQ(-1, table_view_.selectedRow);
152 ASSERT_FALSE(connect_button_.enabled); 99 ASSERT_FALSE(connect_button_.enabled);
153 ASSERT_TRUE(cancel_button_.enabled); 100 ASSERT_TRUE(cancel_button_.enabled);
154 ASSERT_TRUE(help_button_.enabled); 101 ASSERT_TRUE(help_button_.enabled);
155 102
156 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 103 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
157 EXPECT_EQ(table_view_.numberOfRows, 2); 104 EXPECT_EQ(2, table_view_.numberOfRows);
158 EXPECT_EQ(table_view_.numberOfColumns, 1); 105 EXPECT_EQ(1, table_view_.numberOfColumns);
159 ASSERT_TRUE(table_view_.enabled); 106 ASSERT_TRUE(table_view_.enabled);
160 EXPECT_EQ(table_view_.selectedRow, -1); 107 EXPECT_EQ(-1, table_view_.selectedRow);
161 108
162 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 109 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
163 EXPECT_EQ(table_view_.numberOfRows, 3); 110 EXPECT_EQ(3, table_view_.numberOfRows);
164 EXPECT_EQ(table_view_.numberOfColumns, 1); 111 EXPECT_EQ(1, table_view_.numberOfColumns);
165 ASSERT_TRUE(table_view_.enabled); 112 ASSERT_TRUE(table_view_.enabled);
166 EXPECT_EQ(table_view_.selectedRow, -1); 113 EXPECT_EQ(-1, table_view_.selectedRow);
167 } 114 }
168 115
169 TEST_F(ChooserDialogCocoaControllerTest, RemoveOption) { 116 TEST_F(ChooserDialogCocoaControllerTest, RemoveOption) {
170 CreateChooserDialog(); 117 CreateChooserDialog();
171 118
172 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 119 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
173 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 120 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
174 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 121 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
175 122
176 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); 123 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
177 EXPECT_EQ(table_view_.numberOfRows, 2); 124 EXPECT_EQ(2, table_view_.numberOfRows);
178 EXPECT_EQ(table_view_.numberOfColumns, 1); 125 EXPECT_EQ(1, table_view_.numberOfColumns);
179 ASSERT_TRUE(table_view_.enabled); 126 ASSERT_TRUE(table_view_.enabled);
180 EXPECT_EQ(table_view_.selectedRow, -1); 127 EXPECT_EQ(-1, table_view_.selectedRow);
181 128
182 // Remove a non-existent option, the number of rows should not change. 129 // Remove a non-existent option, the number of rows should not change.
183 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("non-existent")); 130 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("non-existent"));
184 EXPECT_EQ(table_view_.numberOfRows, 2); 131 EXPECT_EQ(2, table_view_.numberOfRows);
185 EXPECT_EQ(table_view_.numberOfColumns, 1); 132 EXPECT_EQ(1, table_view_.numberOfColumns);
186 ASSERT_TRUE(table_view_.enabled); 133 ASSERT_TRUE(table_view_.enabled);
187 EXPECT_EQ(table_view_.selectedRow, -1); 134 EXPECT_EQ(-1, table_view_.selectedRow);
188 135
189 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); 136 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
190 EXPECT_EQ(table_view_.numberOfRows, 1); 137 EXPECT_EQ(1, table_view_.numberOfRows);
191 EXPECT_EQ(table_view_.numberOfColumns, 1); 138 EXPECT_EQ(1, table_view_.numberOfColumns);
192 ASSERT_TRUE(table_view_.enabled); 139 ASSERT_TRUE(table_view_.enabled);
193 EXPECT_EQ(table_view_.selectedRow, -1); 140 EXPECT_EQ(-1, table_view_.selectedRow);
194 141
195 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a")); 142 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
196 // There is no option shown now. But since "No devices found." 143 // There is no option shown now. But since "No devices found."
197 // needs to be displayed on the |table_view_|, the number of rows is 1. 144 // needs to be displayed on the |table_view_|, the number of rows is 1.
198 EXPECT_EQ(table_view_.numberOfRows, 1); 145 EXPECT_EQ(1, table_view_.numberOfRows);
199 EXPECT_EQ(table_view_.numberOfColumns, 1); 146 EXPECT_EQ(1, table_view_.numberOfColumns);
200 // |table_view_| should be disabled since all options are removed. 147 // |table_view_| should be disabled since all options are removed.
201 ASSERT_FALSE(table_view_.enabled); 148 ASSERT_FALSE(table_view_.enabled);
202 EXPECT_EQ(table_view_.selectedRow, -1); 149 EXPECT_EQ(-1, table_view_.selectedRow);
203 } 150 }
204 151
205 TEST_F(ChooserDialogCocoaControllerTest, AddAndRemoveOption) { 152 TEST_F(ChooserDialogCocoaControllerTest, AddAndRemoveOption) {
206 CreateChooserDialog(); 153 CreateChooserDialog();
207 154
208 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 155 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
209 EXPECT_EQ(table_view_.numberOfRows, 1); 156 EXPECT_EQ(1, table_view_.numberOfRows);
210 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 157 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
211 EXPECT_EQ(table_view_.numberOfRows, 2); 158 EXPECT_EQ(2, table_view_.numberOfRows);
212 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); 159 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
213 EXPECT_EQ(table_view_.numberOfRows, 1); 160 EXPECT_EQ(1, table_view_.numberOfRows);
214 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 161 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
215 EXPECT_EQ(table_view_.numberOfRows, 2); 162 EXPECT_EQ(2, table_view_.numberOfRows);
216 chooser_controller_->OptionAdded(base::ASCIIToUTF16("d")); 163 chooser_controller_->OptionAdded(base::ASCIIToUTF16("d"));
217 EXPECT_EQ(table_view_.numberOfRows, 3); 164 EXPECT_EQ(3, table_view_.numberOfRows);
218 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d")); 165 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("d"));
219 EXPECT_EQ(table_view_.numberOfRows, 2); 166 EXPECT_EQ(2, table_view_.numberOfRows);
220 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c")); 167 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
221 // There is no option shown now. But since "No devices found." 168 EXPECT_EQ(1, table_view_.numberOfRows);
222 // needs to be displayed on the |table_view_|, the number of rows is 1.
223 EXPECT_EQ(table_view_.numberOfRows, 1);
224 } 169 }
225 170
226 TEST_F(ChooserDialogCocoaControllerTest, SelectAndDeselectAnOption) { 171 TEST_F(ChooserDialogCocoaControllerTest, SelectAndDeselectAnOption) {
227 CreateChooserDialog(); 172 CreateChooserDialog();
228 173
229 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 174 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
230 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 175 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
231 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 176 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
232 177
233 // Select option 0. 178 // Select option 0.
234 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 179 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
235 byExtendingSelection:NO]; 180 byExtendingSelection:NO];
236 EXPECT_EQ(table_view_.selectedRow, 0); 181 EXPECT_EQ(0, table_view_.selectedRow);
237 ASSERT_TRUE(connect_button_.enabled); 182 ASSERT_TRUE(connect_button_.enabled);
238 183
239 // Disselect option 0. 184 // Deselect option 0.
240 [table_view_ deselectRow:0]; 185 [table_view_ deselectRow:0];
241 EXPECT_EQ(table_view_.selectedRow, -1); 186 EXPECT_EQ(-1, table_view_.selectedRow);
242 ASSERT_FALSE(connect_button_.enabled); 187 ASSERT_FALSE(connect_button_.enabled);
243 188
244 // Select option 1. 189 // Select option 1.
245 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] 190 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
246 byExtendingSelection:NO]; 191 byExtendingSelection:NO];
247 EXPECT_EQ(table_view_.selectedRow, 1); 192 EXPECT_EQ(1, table_view_.selectedRow);
248 ASSERT_TRUE(connect_button_.enabled); 193 ASSERT_TRUE(connect_button_.enabled);
249 194
250 // Disselect option 1. 195 // Deselect option 1.
251 [table_view_ deselectRow:1]; 196 [table_view_ deselectRow:1];
252 EXPECT_EQ(table_view_.selectedRow, -1); 197 EXPECT_EQ(-1, table_view_.selectedRow);
253 ASSERT_FALSE(connect_button_.enabled); 198 ASSERT_FALSE(connect_button_.enabled);
254 } 199 }
255 200
256 TEST_F(ChooserDialogCocoaControllerTest, 201 TEST_F(ChooserDialogCocoaControllerTest,
257 SelectAnOptionAndThenSelectAnotherOption) { 202 SelectAnOptionAndThenSelectAnotherOption) {
258 CreateChooserDialog(); 203 CreateChooserDialog();
259 204
260 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 205 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
261 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 206 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
262 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 207 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
263 208
264 // Select option 0. 209 // Select option 0.
265 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 210 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
266 byExtendingSelection:NO]; 211 byExtendingSelection:NO];
267 EXPECT_EQ(table_view_.selectedRow, 0); 212 EXPECT_EQ(0, table_view_.selectedRow);
268 ASSERT_TRUE(connect_button_.enabled); 213 ASSERT_TRUE(connect_button_.enabled);
269 214
270 // Select option 1. 215 // Select option 1.
271 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] 216 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
272 byExtendingSelection:NO]; 217 byExtendingSelection:NO];
273 EXPECT_EQ(table_view_.selectedRow, 1); 218 EXPECT_EQ(1, table_view_.selectedRow);
274 ASSERT_TRUE(connect_button_.enabled); 219 ASSERT_TRUE(connect_button_.enabled);
275 220
276 // Select option 2. 221 // Select option 2.
277 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2] 222 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:2]
278 byExtendingSelection:NO]; 223 byExtendingSelection:NO];
279 EXPECT_EQ(table_view_.selectedRow, 2); 224 EXPECT_EQ(2, table_view_.selectedRow);
280 ASSERT_TRUE(connect_button_.enabled); 225 ASSERT_TRUE(connect_button_.enabled);
281 } 226 }
282 227
228 TEST_F(ChooserDialogCocoaControllerTest, SelectAnOptionAndRemoveAnotherOption) {
229 CreateChooserDialog();
230
231 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
232 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
233 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
234
235 // Select option 1.
236 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
237 byExtendingSelection:NO];
238 EXPECT_EQ(3, table_view_.numberOfRows);
239 EXPECT_EQ(1, table_view_.selectedRow);
240 ASSERT_TRUE(connect_button_.enabled);
241
242 // Remove option 0. The list becomes: b c. And the index of the previously
243 // selected item "b" becomes 0.
244 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
245 EXPECT_EQ(2, table_view_.numberOfRows);
246 EXPECT_EQ(0, table_view_.selectedRow);
247 ASSERT_TRUE(connect_button_.enabled);
248
249 // Remove option 1. The list becomes: b.
250 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("c"));
251 EXPECT_EQ(1, table_view_.numberOfRows);
252 EXPECT_EQ(0, table_view_.selectedRow);
253 ASSERT_TRUE(connect_button_.enabled);
254 }
255
283 TEST_F(ChooserDialogCocoaControllerTest, 256 TEST_F(ChooserDialogCocoaControllerTest,
284 SelectAnOptionAndRemoveTheSelectedOption) { 257 SelectAnOptionAndRemoveTheSelectedOption) {
285 CreateChooserDialog(); 258 CreateChooserDialog();
286 259
287 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 260 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
288 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 261 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
289 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 262 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
290 263
291 // Select option 1. 264 // Select option 1.
292 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1] 265 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:1]
293 byExtendingSelection:NO]; 266 byExtendingSelection:NO];
294 EXPECT_EQ(table_view_.numberOfRows, 3); 267 EXPECT_EQ(3, table_view_.numberOfRows);
295 EXPECT_EQ(table_view_.selectedRow, 1); 268 EXPECT_EQ(1, table_view_.selectedRow);
296 ASSERT_TRUE(connect_button_.enabled); 269 ASSERT_TRUE(connect_button_.enabled);
297 270
298 // Remove option 1 271 // Remove option 1
299 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b")); 272 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("b"));
300 EXPECT_EQ(table_view_.numberOfRows, 2); 273 EXPECT_EQ(2, table_view_.numberOfRows);
301 // No option selected. 274 // No option selected.
302 EXPECT_EQ(table_view_.selectedRow, -1); 275 EXPECT_EQ(-1, table_view_.selectedRow);
303 // Since no option selected, the "Connect" button should be disabled. 276 // Since no option selected, the "Connect" button should be disabled.
304 ASSERT_FALSE(connect_button_.enabled); 277 ASSERT_FALSE(connect_button_.enabled);
305 } 278 }
279
280 TEST_F(ChooserDialogCocoaControllerTest,
281 AddAnOptionAndSelectItAndRemoveTheSelectedOption) {
282 CreateChooserDialog();
283
284 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
285
286 // Select option 0.
287 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
288 byExtendingSelection:NO];
289 EXPECT_EQ(1, table_view_.numberOfRows);
290 EXPECT_EQ(0, table_view_.selectedRow);
291 ASSERT_TRUE(connect_button_.enabled);
292
293 // Remove option 0.
294 chooser_controller_->OptionRemoved(base::ASCIIToUTF16("a"));
295 // There is no option shown now. But since "No devices found."
296 // needs to be displayed on the |table_view_|, the number of rows is 1.
297 EXPECT_EQ(1, table_view_.numberOfRows);
298 // No option selected.
299 EXPECT_EQ(-1, table_view_.selectedRow);
300 // |table_view_| should be disabled since there is no option shown.
301 ASSERT_FALSE(table_view_.enabled);
302 // Since no option selected, the "Connect" button should be disabled.
303 ASSERT_FALSE(connect_button_.enabled);
304 }
306 305
307 TEST_F(ChooserDialogCocoaControllerTest, NoOptionSelectedAndPressCancelButton) { 306 TEST_F(ChooserDialogCocoaControllerTest, NoOptionSelectedAndPressCancelButton) {
308 CreateChooserDialog(); 307 CreateChooserDialog();
309 308
310 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a")); 309 chooser_controller_->OptionAdded(base::ASCIIToUTF16("a"));
311 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b")); 310 chooser_controller_->OptionAdded(base::ASCIIToUTF16("b"));
312 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 311 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
313 312
314 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); 313 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0);
315 EXPECT_CALL(*chooser_controller_, Cancel()).Times(1); 314 EXPECT_CALL(*chooser_controller_, Cancel()).Times(1);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c")); 360 chooser_controller_->OptionAdded(base::ASCIIToUTF16("c"));
362 361
363 // Select option 0 and press "Get help" button. 362 // Select option 0 and press "Get help" button.
364 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0] 363 [table_view_ selectRowIndexes:[NSIndexSet indexSetWithIndex:0]
365 byExtendingSelection:NO]; 364 byExtendingSelection:NO];
366 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0); 365 EXPECT_CALL(*chooser_controller_, Select(testing::_)).Times(0);
367 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0); 366 EXPECT_CALL(*chooser_controller_, Cancel()).Times(0);
368 EXPECT_CALL(*chooser_controller_, OpenHelpCenterUrl()).Times(1); 367 EXPECT_CALL(*chooser_controller_, OpenHelpCenterUrl()).Times(1);
369 [help_button_ performClick:chooser_dialog_controller_]; 368 [help_button_ performClick:chooser_dialog_controller_];
370 } 369 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698