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

Side by Side Diff: chrome/browser/ui/autofill/autofill_popup_controller_unittest.cc

Issue 44543002: Enable touch for autofill popup view (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed Gtk and Cocoa compile errors Created 7 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/memory/weak_ptr.h" 6 #include "base/memory/weak_ptr.h"
7 #include "base/prefs/testing_pref_service.h" 7 #include "base/prefs/testing_pref_service.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/ui/autofill/autofill_popup_controller_impl.h" 9 #include "chrome/browser/ui/autofill/autofill_popup_controller_impl.h"
10 #include "chrome/browser/ui/autofill/autofill_popup_view.h" 10 #include "chrome/browser/ui/autofill/autofill_popup_view.h"
(...skipping 21 matching lines...) Expand all
32 32
33 class MockAutofillExternalDelegate : public AutofillExternalDelegate { 33 class MockAutofillExternalDelegate : public AutofillExternalDelegate {
34 public: 34 public:
35 MockAutofillExternalDelegate(content::WebContents* web_contents, 35 MockAutofillExternalDelegate(content::WebContents* web_contents,
36 AutofillManager* autofill_manager, 36 AutofillManager* autofill_manager,
37 AutofillDriver* autofill_driver) 37 AutofillDriver* autofill_driver)
38 : AutofillExternalDelegate(web_contents, autofill_manager, 38 : AutofillExternalDelegate(web_contents, autofill_manager,
39 autofill_driver) {} 39 autofill_driver) {}
40 virtual ~MockAutofillExternalDelegate() {} 40 virtual ~MockAutofillExternalDelegate() {}
41 41
42 virtual void DidSelectSuggestion(int identifier) OVERRIDE {} 42 virtual void DidPreselectSuggestion(int identifier) OVERRIDE {}
43 virtual void RemoveSuggestion(const string16& value, int identifier) OVERRIDE 43 virtual void RemoveSuggestion(const string16& value, int identifier) OVERRIDE
44 {} 44 {}
45 virtual void ClearPreviewedForm() OVERRIDE {} 45 virtual void ClearPreviewedForm() OVERRIDE {}
46 base::WeakPtr<AutofillExternalDelegate> GetWeakPtr() { 46 base::WeakPtr<AutofillExternalDelegate> GetWeakPtr() {
47 return AutofillExternalDelegate::GetWeakPtr(); 47 return AutofillExternalDelegate::GetWeakPtr();
48 } 48 }
49 }; 49 };
50 50
51 class MockAutofillManagerDelegate 51 class MockAutofillManagerDelegate
52 : public autofill::TestAutofillManagerDelegate { 52 : public autofill::TestAutofillManagerDelegate {
(...skipping 25 matching lines...) Expand all
78 virtual gfx::Display GetDisplayNearestPoint(const gfx::Point& point) const 78 virtual gfx::Display GetDisplayNearestPoint(const gfx::Point& point) const
79 OVERRIDE { 79 OVERRIDE {
80 return display_; 80 return display_;
81 } 81 }
82 82
83 // Making protected functions public for testing 83 // Making protected functions public for testing
84 using AutofillPopupControllerImpl::SetPopupBounds; 84 using AutofillPopupControllerImpl::SetPopupBounds;
85 using AutofillPopupControllerImpl::names; 85 using AutofillPopupControllerImpl::names;
86 using AutofillPopupControllerImpl::subtexts; 86 using AutofillPopupControllerImpl::subtexts;
87 using AutofillPopupControllerImpl::identifiers; 87 using AutofillPopupControllerImpl::identifiers;
88 using AutofillPopupControllerImpl::selected_line; 88 using AutofillPopupControllerImpl::preselected_line;
89 using AutofillPopupControllerImpl::SetSelectedLine; 89 using AutofillPopupControllerImpl::SetPreselectedLine;
90 using AutofillPopupControllerImpl::SelectNextLine; 90 using AutofillPopupControllerImpl::PreselectNextLine;
91 using AutofillPopupControllerImpl::SelectPreviousLine; 91 using AutofillPopupControllerImpl::PreselectPreviousLine;
92 using AutofillPopupControllerImpl::RemoveSelectedLine; 92 using AutofillPopupControllerImpl::RemovePreselectedLine;
93 using AutofillPopupControllerImpl::popup_bounds; 93 using AutofillPopupControllerImpl::popup_bounds;
94 using AutofillPopupControllerImpl::element_bounds; 94 using AutofillPopupControllerImpl::element_bounds;
95 #if !defined(OS_ANDROID) 95 #if !defined(OS_ANDROID)
96 using AutofillPopupControllerImpl::GetNameFontForRow; 96 using AutofillPopupControllerImpl::GetNameFontForRow;
97 using AutofillPopupControllerImpl::subtext_font; 97 using AutofillPopupControllerImpl::subtext_font;
98 using AutofillPopupControllerImpl::RowWidthWithoutText; 98 using AutofillPopupControllerImpl::RowWidthWithoutText;
99 #endif 99 #endif
100 using AutofillPopupControllerImpl::SetValues; 100 using AutofillPopupControllerImpl::SetValues;
101 using AutofillPopupControllerImpl::GetDesiredPopupWidth; 101 using AutofillPopupControllerImpl::GetDesiredPopupWidth;
102 using AutofillPopupControllerImpl::GetDesiredPopupHeight; 102 using AutofillPopupControllerImpl::GetDesiredPopupHeight;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 gfx::Rect popup_bounds(10, 10, 100, 100); 174 gfx::Rect popup_bounds(10, 10, 100, 100);
175 175
176 EXPECT_CALL(*autofill_popup_controller_, 176 EXPECT_CALL(*autofill_popup_controller_,
177 UpdateBoundsAndRedrawPopup()); 177 UpdateBoundsAndRedrawPopup());
178 178
179 popup_controller()->SetPopupBounds(popup_bounds); 179 popup_controller()->SetPopupBounds(popup_bounds);
180 180
181 EXPECT_EQ(popup_bounds, popup_controller()->popup_bounds()); 181 EXPECT_EQ(popup_bounds, popup_controller()->popup_bounds());
182 } 182 }
183 183
184 TEST_F(AutofillPopupControllerUnitTest, ChangeSelectedLine) { 184 TEST_F(AutofillPopupControllerUnitTest, ChangePreselectedLine) {
185 // Set up the popup. 185 // Set up the popup.
186 std::vector<string16> names(2, string16()); 186 std::vector<string16> names(2, string16());
187 std::vector<int> autofill_ids(2, 0); 187 std::vector<int> autofill_ids(2, 0);
188 autofill_popup_controller_->Show(names, names, names, autofill_ids); 188 autofill_popup_controller_->Show(names, names, names, autofill_ids);
189 189
190 EXPECT_LT(autofill_popup_controller_->selected_line(), 0); 190 EXPECT_LT(autofill_popup_controller_->preselected_line(), 0);
191 // Check that there are at least 2 values so that the first and last selection 191 // Check that there are at least 2 values so that the first and last selection
192 // are different. 192 // are different.
193 EXPECT_GE(2, 193 EXPECT_GE(2,
194 static_cast<int>(autofill_popup_controller_->subtexts().size())); 194 static_cast<int>(autofill_popup_controller_->subtexts().size()));
195 195
196 // Test wrapping before the front. 196 // Test wrapping before the front.
197 autofill_popup_controller_->SelectPreviousLine(); 197 autofill_popup_controller_->PreselectPreviousLine();
198 EXPECT_EQ(static_cast<int>( 198 EXPECT_EQ(static_cast<int>(
199 autofill_popup_controller_->subtexts().size() - 1), 199 autofill_popup_controller_->subtexts().size() - 1),
200 autofill_popup_controller_->selected_line()); 200 autofill_popup_controller_->preselected_line());
201 201
202 // Test wrapping after the end. 202 // Test wrapping after the end.
203 autofill_popup_controller_->SelectNextLine(); 203 autofill_popup_controller_->PreselectNextLine();
204 EXPECT_EQ(0, autofill_popup_controller_->selected_line()); 204 EXPECT_EQ(0, autofill_popup_controller_->preselected_line());
205 } 205 }
206 206
207 TEST_F(AutofillPopupControllerUnitTest, RedrawSelectedLine) { 207 TEST_F(AutofillPopupControllerUnitTest, RedrawPreselectedLine) {
208 // Set up the popup. 208 // Set up the popup.
209 std::vector<string16> names(2, string16()); 209 std::vector<string16> names(2, string16());
210 std::vector<int> autofill_ids(2, 0); 210 std::vector<int> autofill_ids(2, 0);
211 autofill_popup_controller_->Show(names, names, names, autofill_ids); 211 autofill_popup_controller_->Show(names, names, names, autofill_ids);
212 212
213 // Make sure that when a new line is selected, it is invalidated so it can 213 // Make sure that when a new line is preselected, it is invalidated so it can
214 // be updated to show it is selected. 214 // be updated to show it is preselected.
215 int selected_line = 0; 215 int preselected_line = 0;
216 EXPECT_CALL(*autofill_popup_controller_, InvalidateRow(selected_line)); 216 EXPECT_CALL(*autofill_popup_controller_, InvalidateRow(preselected_line));
217 autofill_popup_controller_->SetSelectedLine(selected_line); 217 autofill_popup_controller_->SetPreselectedLine(preselected_line);
218 218
219 // Ensure that the row isn't invalidated if it didn't change. 219 // Ensure that the row isn't invalidated if it didn't change.
220 EXPECT_CALL(*autofill_popup_controller_, 220 EXPECT_CALL(*autofill_popup_controller_,
221 InvalidateRow(selected_line)).Times(0); 221 InvalidateRow(preselected_line)).Times(0);
222 autofill_popup_controller_->SetSelectedLine(selected_line); 222 autofill_popup_controller_->SetPreselectedLine(preselected_line);
223 223
224 // Change back to no selection. 224 // Change back to no preselection.
225 EXPECT_CALL(*autofill_popup_controller_, InvalidateRow(selected_line)); 225 EXPECT_CALL(*autofill_popup_controller_, InvalidateRow(preselected_line));
226 autofill_popup_controller_->SetSelectedLine(-1); 226 autofill_popup_controller_->SetPreselectedLine(-1);
227 } 227 }
228 228
229 TEST_F(AutofillPopupControllerUnitTest, RemoveLine) { 229 TEST_F(AutofillPopupControllerUnitTest, RemoveLine) {
230 // Set up the popup. 230 // Set up the popup.
231 std::vector<string16> names(3, string16()); 231 std::vector<string16> names(3, string16());
232 std::vector<int> autofill_ids; 232 std::vector<int> autofill_ids;
233 autofill_ids.push_back(1); 233 autofill_ids.push_back(1);
234 autofill_ids.push_back(1); 234 autofill_ids.push_back(1);
235 autofill_ids.push_back(WebAutofillClient::MenuItemIDAutofillOptions); 235 autofill_ids.push_back(WebAutofillClient::MenuItemIDAutofillOptions);
236 autofill_popup_controller_->Show(names, names, names, autofill_ids); 236 autofill_popup_controller_->Show(names, names, names, autofill_ids);
237 237
238 // Generate a popup, so it can be hidden later. It doesn't matter what the 238 // Generate a popup, so it can be hidden later. It doesn't matter what the
239 // external_delegate thinks is being shown in the process, since we are just 239 // external_delegate thinks is being shown in the process, since we are just
240 // testing the popup here. 240 // testing the popup here.
241 autofill::GenerateTestAutofillPopup(external_delegate_.get()); 241 autofill::GenerateTestAutofillPopup(external_delegate_.get());
242 242
243 // No line is selected so the removal should fail. 243 // No line is preselected so the removal should fail.
244 EXPECT_FALSE(autofill_popup_controller_->RemoveSelectedLine()); 244 EXPECT_FALSE(autofill_popup_controller_->RemovePreselectedLine());
245 245
246 // Try to remove the last entry and ensure it fails (it is an option). 246 // Try to remove the last entry and ensure it fails (it is an option).
247 autofill_popup_controller_->SetSelectedLine( 247 autofill_popup_controller_->SetPreselectedLine(
248 autofill_popup_controller_->subtexts().size() - 1); 248 autofill_popup_controller_->subtexts().size() - 1);
249 EXPECT_FALSE(autofill_popup_controller_->RemoveSelectedLine()); 249 EXPECT_FALSE(autofill_popup_controller_->RemovePreselectedLine());
250 EXPECT_LE(0, autofill_popup_controller_->selected_line()); 250 EXPECT_LE(0, autofill_popup_controller_->preselected_line());
251 251
252 // Remove the first entry. The popup should be redrawn since its size has 252 // Remove the first entry. The popup should be redrawn since its size has
253 // changed. 253 // changed.
254 EXPECT_CALL(*autofill_popup_controller_, UpdateBoundsAndRedrawPopup()); 254 EXPECT_CALL(*autofill_popup_controller_, UpdateBoundsAndRedrawPopup());
255 autofill_popup_controller_->SetSelectedLine(0); 255 autofill_popup_controller_->SetPreselectedLine(0);
256 EXPECT_TRUE(autofill_popup_controller_->RemoveSelectedLine()); 256 EXPECT_TRUE(autofill_popup_controller_->RemovePreselectedLine());
257 257
258 // Remove the last entry. The popup should then be hidden since there are 258 // Remove the last entry. The popup should then be hidden since there are
259 // no Autofill entries left. 259 // no Autofill entries left.
260 EXPECT_CALL(*autofill_popup_controller_, Hide()); 260 EXPECT_CALL(*autofill_popup_controller_, Hide());
261 autofill_popup_controller_->SetSelectedLine(0); 261 autofill_popup_controller_->SetPreselectedLine(0);
262 EXPECT_TRUE(autofill_popup_controller_->RemoveSelectedLine()); 262 EXPECT_TRUE(autofill_popup_controller_->RemovePreselectedLine());
263 } 263 }
264 264
265 TEST_F(AutofillPopupControllerUnitTest, RemoveOnlyLine) { 265 TEST_F(AutofillPopupControllerUnitTest, RemoveOnlyLine) {
266 // Set up the popup. 266 // Set up the popup.
267 std::vector<string16> names(1, string16()); 267 std::vector<string16> names(1, string16());
268 std::vector<int> autofill_ids; 268 std::vector<int> autofill_ids;
269 autofill_ids.push_back(1); 269 autofill_ids.push_back(1);
270 autofill_popup_controller_->Show(names, names, names, autofill_ids); 270 autofill_popup_controller_->Show(names, names, names, autofill_ids);
271 271
272 // Generate a popup. 272 // Generate a popup.
273 autofill::GenerateTestAutofillPopup(external_delegate_.get()); 273 autofill::GenerateTestAutofillPopup(external_delegate_.get());
274 274
275 // Select the only line. 275 // Preselect the only line.
276 autofill_popup_controller_->SetSelectedLine(0); 276 autofill_popup_controller_->SetPreselectedLine(0);
277 277
278 // Remove the only line. There should be no row invalidation and the popup 278 // Remove the only line. There should be no row invalidation and the popup
279 // should then be hidden since there are no Autofill entries left. 279 // should then be hidden since there are no Autofill entries left.
280 EXPECT_CALL(*autofill_popup_controller_, Hide()); 280 EXPECT_CALL(*autofill_popup_controller_, Hide());
281 EXPECT_CALL(*autofill_popup_controller_, InvalidateRow(_)).Times(0); 281 EXPECT_CALL(*autofill_popup_controller_, InvalidateRow(_)).Times(0);
282 EXPECT_TRUE(autofill_popup_controller_->RemoveSelectedLine()); 282 EXPECT_TRUE(autofill_popup_controller_->RemovePreselectedLine());
283 } 283 }
284 284
285 TEST_F(AutofillPopupControllerUnitTest, SkipSeparator) { 285 TEST_F(AutofillPopupControllerUnitTest, SkipSeparator) {
286 // Set up the popup. 286 // Set up the popup.
287 std::vector<string16> names(3, string16()); 287 std::vector<string16> names(3, string16());
288 std::vector<int> autofill_ids; 288 std::vector<int> autofill_ids;
289 autofill_ids.push_back(1); 289 autofill_ids.push_back(1);
290 autofill_ids.push_back(WebAutofillClient::MenuItemIDSeparator); 290 autofill_ids.push_back(WebAutofillClient::MenuItemIDSeparator);
291 autofill_ids.push_back(WebAutofillClient::MenuItemIDAutofillOptions); 291 autofill_ids.push_back(WebAutofillClient::MenuItemIDAutofillOptions);
292 autofill_popup_controller_->Show(names, names, names, autofill_ids); 292 autofill_popup_controller_->Show(names, names, names, autofill_ids);
293 293
294 autofill_popup_controller_->SetSelectedLine(0); 294 autofill_popup_controller_->SetPreselectedLine(0);
295 295
296 // Make sure next skips the unselectable separator. 296 // Make sure next skips the unselectable separator.
297 autofill_popup_controller_->SelectNextLine(); 297 autofill_popup_controller_->PreselectNextLine();
298 EXPECT_EQ(2, autofill_popup_controller_->selected_line()); 298 EXPECT_EQ(2, autofill_popup_controller_->preselected_line());
299 299
300 // Make sure previous skips the unselectable separator. 300 // Make sure previous skips the unselectable separator.
301 autofill_popup_controller_->SelectPreviousLine(); 301 autofill_popup_controller_->PreselectPreviousLine();
302 EXPECT_EQ(0, autofill_popup_controller_->selected_line()); 302 EXPECT_EQ(0, autofill_popup_controller_->preselected_line());
303 } 303 }
304 304
305 TEST_F(AutofillPopupControllerUnitTest, RowWidthWithoutText) { 305 TEST_F(AutofillPopupControllerUnitTest, RowWidthWithoutText) {
306 std::vector<string16> names(4); 306 std::vector<string16> names(4);
307 std::vector<string16> subtexts(4); 307 std::vector<string16> subtexts(4);
308 std::vector<string16> icons(4); 308 std::vector<string16> icons(4);
309 std::vector<int> ids(4); 309 std::vector<int> ids(4);
310 310
311 // Set up some visible display so the text values are kept. 311 // Set up some visible display so the text values are kept.
312 gfx::Display display(0, gfx::Rect(0, 0, 100, 100)); 312 gfx::Display display(0, gfx::Rect(0, 0, 100, 100));
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 controller3->Hide(); 469 controller3->Hide();
470 470
471 // Hide the test_controller to delete it. 471 // Hide the test_controller to delete it.
472 test_controller->DoHide(); 472 test_controller->DoHide();
473 } 473 }
474 474
475 TEST_F(AutofillPopupControllerUnitTest, ProperlyResetController) { 475 TEST_F(AutofillPopupControllerUnitTest, ProperlyResetController) {
476 std::vector<string16> names(2); 476 std::vector<string16> names(2);
477 std::vector<int> ids(2); 477 std::vector<int> ids(2);
478 popup_controller()->SetValues(names, names, names, ids); 478 popup_controller()->SetValues(names, names, names, ids);
479 popup_controller()->SetSelectedLine(0); 479 popup_controller()->SetPreselectedLine(0);
480 480
481 // Now show a new popup with the same controller, but with fewer items. 481 // Now show a new popup with the same controller, but with fewer items.
482 WeakPtr<AutofillPopupControllerImpl> controller = 482 WeakPtr<AutofillPopupControllerImpl> controller =
483 AutofillPopupControllerImpl::GetOrCreate( 483 AutofillPopupControllerImpl::GetOrCreate(
484 popup_controller()->GetWeakPtr(), 484 popup_controller()->GetWeakPtr(),
485 delegate()->GetWeakPtr(), 485 delegate()->GetWeakPtr(),
486 NULL, 486 NULL,
487 gfx::Rect(), 487 gfx::Rect(),
488 base::i18n::UNKNOWN_DIRECTION); 488 base::i18n::UNKNOWN_DIRECTION);
489 EXPECT_NE(0, controller->selected_line()); 489 EXPECT_NE(0, controller->preselected_line());
490 EXPECT_TRUE(controller->names().empty()); 490 EXPECT_TRUE(controller->names().empty());
491 } 491 }
492 492
493 #if !defined(OS_ANDROID) 493 #if !defined(OS_ANDROID)
494 TEST_F(AutofillPopupControllerUnitTest, ElideText) { 494 TEST_F(AutofillPopupControllerUnitTest, ElideText) {
495 std::vector<string16> names; 495 std::vector<string16> names;
496 names.push_back(ASCIIToUTF16("Text that will need to be trimmed")); 496 names.push_back(ASCIIToUTF16("Text that will need to be trimmed"));
497 names.push_back(ASCIIToUTF16("Untrimmed")); 497 names.push_back(ASCIIToUTF16("Untrimmed"));
498 498
499 std::vector<string16> subtexts; 499 std::vector<string16> subtexts;
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 EXPECT_EQ(expected_popup_bounds[i].ToString(), 595 EXPECT_EQ(expected_popup_bounds[i].ToString(),
596 autofill_popup_controller->popup_bounds().ToString()) << 596 autofill_popup_controller->popup_bounds().ToString()) <<
597 "Popup bounds failed to match for test " << i; 597 "Popup bounds failed to match for test " << i;
598 598
599 // Hide the controller to delete it. 599 // Hide the controller to delete it.
600 autofill_popup_controller->DoHide(); 600 autofill_popup_controller->DoHide();
601 } 601 }
602 } 602 }
603 603
604 } // namespace autofill 604 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698