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

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

Issue 1563853002: Revert of Enable GetValueFontListForRow and GetLabelFontList in AutofillPopupController for aura A.. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 (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 "chrome/browser/ui/autofill/autofill_popup_controller_impl.h" 5 #include "chrome/browser/ui/autofill/autofill_popup_controller_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 22 matching lines...) Expand all
33 33
34 // Used to indicate that no line is currently selected by the user. 34 // Used to indicate that no line is currently selected by the user.
35 const int kNoSelection = -1; 35 const int kNoSelection = -1;
36 36
37 // The vertical height of each row in pixels. 37 // The vertical height of each row in pixels.
38 const size_t kRowHeight = 24; 38 const size_t kRowHeight = 24;
39 39
40 // The vertical height of a separator in pixels. 40 // The vertical height of a separator in pixels.
41 const size_t kSeparatorHeight = 1; 41 const size_t kSeparatorHeight = 1;
42 42
43 #if !defined(OS_ANDROID) || defined(USE_AURA) 43 #if !defined(OS_ANDROID)
44 // Size difference between name and label in pixels. 44 // Size difference between name and label in pixels.
45 const int kLabelFontSizeDelta = -2; 45 const int kLabelFontSizeDelta = -2;
46 46
47 const size_t kNamePadding = AutofillPopupView::kNamePadding; 47 const size_t kNamePadding = AutofillPopupView::kNamePadding;
48 const size_t kIconPadding = AutofillPopupView::kIconPadding; 48 const size_t kIconPadding = AutofillPopupView::kIconPadding;
49 const size_t kEndPadding = AutofillPopupView::kEndPadding; 49 const size_t kEndPadding = AutofillPopupView::kEndPadding;
50 #endif 50 #endif
51 51
52 struct DataResource { 52 struct DataResource {
53 const char* name; 53 const char* name;
54 int id; 54 int id;
55 }; 55 };
56 56
57 const DataResource kDataResources[] = { 57 const DataResource kDataResources[] = {
58 { "americanExpressCC", IDR_AUTOFILL_CC_AMEX }, 58 { "americanExpressCC", IDR_AUTOFILL_CC_AMEX },
59 { "dinersCC", IDR_AUTOFILL_CC_GENERIC }, 59 { "dinersCC", IDR_AUTOFILL_CC_GENERIC },
60 { "discoverCC", IDR_AUTOFILL_CC_DISCOVER }, 60 { "discoverCC", IDR_AUTOFILL_CC_DISCOVER },
61 { "genericCC", IDR_AUTOFILL_CC_GENERIC }, 61 { "genericCC", IDR_AUTOFILL_CC_GENERIC },
62 { "jcbCC", IDR_AUTOFILL_CC_GENERIC }, 62 { "jcbCC", IDR_AUTOFILL_CC_GENERIC },
63 { "masterCardCC", IDR_AUTOFILL_CC_MASTERCARD }, 63 { "masterCardCC", IDR_AUTOFILL_CC_MASTERCARD },
64 { "visaCC", IDR_AUTOFILL_CC_VISA }, 64 { "visaCC", IDR_AUTOFILL_CC_VISA },
65 #if defined(OS_ANDROID) && !defined(USE_AURA) 65 #if defined(OS_ANDROID)
66 { "scanCreditCardIcon", IDR_AUTOFILL_CC_SCAN_NEW }, 66 { "scanCreditCardIcon", IDR_AUTOFILL_CC_SCAN_NEW },
67 { "settings", IDR_AUTOFILL_SETTINGS }, 67 { "settings", IDR_AUTOFILL_SETTINGS },
68 #endif 68 #endif
69 }; 69 };
70 70
71 } // namespace 71 } // namespace
72 72
73 // static 73 // static
74 WeakPtr<AutofillPopupControllerImpl> AutofillPopupControllerImpl::GetOrCreate( 74 WeakPtr<AutofillPopupControllerImpl> AutofillPopupControllerImpl::GetOrCreate(
75 WeakPtr<AutofillPopupControllerImpl> previous, 75 WeakPtr<AutofillPopupControllerImpl> previous,
(...skipping 30 matching lines...) Expand all
106 text_direction, 106 text_direction,
107 container_view, 107 container_view,
108 web_contents)), 108 web_contents)),
109 view_(NULL), 109 view_(NULL),
110 delegate_(delegate), 110 delegate_(delegate),
111 weak_ptr_factory_(this) { 111 weak_ptr_factory_(this) {
112 ClearState(); 112 ClearState();
113 controller_common_->SetKeyPressCallback( 113 controller_common_->SetKeyPressCallback(
114 base::Bind(&AutofillPopupControllerImpl::HandleKeyPressEvent, 114 base::Bind(&AutofillPopupControllerImpl::HandleKeyPressEvent,
115 base::Unretained(this))); 115 base::Unretained(this)));
116 #if !defined(OS_ANDROID) || defined(USE_AURA) 116 #if !defined(OS_ANDROID)
117 label_font_list_ = value_font_list_.DeriveWithSizeDelta(kLabelFontSizeDelta); 117 label_font_list_ = value_font_list_.DeriveWithSizeDelta(kLabelFontSizeDelta);
118 title_font_list_ = value_font_list_.DeriveWithStyle(gfx::Font::BOLD); 118 title_font_list_ = value_font_list_.DeriveWithStyle(gfx::Font::BOLD);
119 #if defined(OS_MACOSX) 119 #if defined(OS_MACOSX)
120 // There is no italic version of the system font. 120 // There is no italic version of the system font.
121 warning_font_list_ = value_font_list_; 121 warning_font_list_ = value_font_list_;
122 #else 122 #else
123 warning_font_list_ = value_font_list_.DeriveWithStyle(gfx::Font::ITALIC); 123 warning_font_list_ = value_font_list_.DeriveWithStyle(gfx::Font::ITALIC);
124 #endif 124 #endif
125 #endif 125 #endif
126 } 126 }
127 127
128 AutofillPopupControllerImpl::~AutofillPopupControllerImpl() {} 128 AutofillPopupControllerImpl::~AutofillPopupControllerImpl() {}
129 129
130 void AutofillPopupControllerImpl::Show( 130 void AutofillPopupControllerImpl::Show(
131 const std::vector<autofill::Suggestion>& suggestions) { 131 const std::vector<autofill::Suggestion>& suggestions) {
132 SetValues(suggestions); 132 SetValues(suggestions);
133 DCHECK_EQ(suggestions_.size(), elided_values_.size()); 133 DCHECK_EQ(suggestions_.size(), elided_values_.size());
134 DCHECK_EQ(suggestions_.size(), elided_labels_.size()); 134 DCHECK_EQ(suggestions_.size(), elided_labels_.size());
135 135
136 #if !defined(OS_ANDROID) || defined(USE_AURA) 136 #if !defined(OS_ANDROID)
137 // Android displays the long text with ellipsis using the view attributes. 137 // Android displays the long text with ellipsis using the view attributes.
138 138
139 UpdatePopupBounds(); 139 UpdatePopupBounds();
140 int popup_width = popup_bounds().width(); 140 int popup_width = popup_bounds().width();
141 141
142 // Elide the name and label strings so that the popup fits in the available 142 // Elide the name and label strings so that the popup fits in the available
143 // space. 143 // space.
144 for (size_t i = 0; i < suggestions_.size(); ++i) { 144 for (size_t i = 0; i < suggestions_.size(); ++i) {
145 int value_width = 145 int value_width =
146 gfx::GetStringWidth(suggestions_[i].value, GetValueFontListForRow(i)); 146 gfx::GetStringWidth(suggestions_[i].value, GetValueFontListForRow(i));
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 AcceptSelectedLine(); 303 AcceptSelectedLine();
304 return false; 304 return false;
305 case ui::VKEY_RETURN: 305 case ui::VKEY_RETURN:
306 return AcceptSelectedLine(); 306 return AcceptSelectedLine();
307 default: 307 default:
308 return false; 308 return false;
309 } 309 }
310 } 310 }
311 311
312 void AutofillPopupControllerImpl::UpdateBoundsAndRedrawPopup() { 312 void AutofillPopupControllerImpl::UpdateBoundsAndRedrawPopup() {
313 #if !defined(OS_ANDROID) || defined(USE_AURA) 313 #if !defined(OS_ANDROID)
314 // TODO(csharp): Since UpdatePopupBounds can change the position of the popup, 314 // TODO(csharp): Since UpdatePopupBounds can change the position of the popup,
315 // the popup could end up jumping from above the element to below it. 315 // the popup could end up jumping from above the element to below it.
316 // It is unclear if it is better to keep the popup where it was, or if it 316 // It is unclear if it is better to keep the popup where it was, or if it
317 // should try and move to its desired position. 317 // should try and move to its desired position.
318 UpdatePopupBounds(); 318 UpdatePopupBounds();
319 #endif 319 #endif
320 320
321 view_->UpdateBoundsAndRedrawPopup(); 321 view_->UpdateBoundsAndRedrawPopup();
322 } 322 }
323 323
(...skipping 28 matching lines...) Expand all
352 int AutofillPopupControllerImpl::GetIconResourceID( 352 int AutofillPopupControllerImpl::GetIconResourceID(
353 const base::string16& resource_name) const { 353 const base::string16& resource_name) const {
354 int result = -1; 354 int result = -1;
355 for (size_t i = 0; i < arraysize(kDataResources); ++i) { 355 for (size_t i = 0; i < arraysize(kDataResources); ++i) {
356 if (resource_name == base::ASCIIToUTF16(kDataResources[i].name)) { 356 if (resource_name == base::ASCIIToUTF16(kDataResources[i].name)) {
357 result = kDataResources[i].id; 357 result = kDataResources[i].id;
358 break; 358 break;
359 } 359 }
360 } 360 }
361 361
362 #if defined(OS_ANDROID) && !defined(USE_AURA) 362 #if defined(OS_ANDROID)
363 if (result == IDR_AUTOFILL_CC_SCAN_NEW && IsKeyboardAccessoryEnabled()) 363 if (result == IDR_AUTOFILL_CC_SCAN_NEW && IsKeyboardAccessoryEnabled())
364 result = IDR_AUTOFILL_CC_SCAN_NEW_KEYBOARD_ACCESSORY; 364 result = IDR_AUTOFILL_CC_SCAN_NEW_KEYBOARD_ACCESSORY;
365 #endif 365 #endif // OS_ANDROID
366 366
367 return result; 367 return result;
368 } 368 }
369 369
370 bool AutofillPopupControllerImpl::IsWarning(size_t index) const { 370 bool AutofillPopupControllerImpl::IsWarning(size_t index) const {
371 return suggestions_[index].frontend_id == POPUP_ITEM_ID_WARNING_MESSAGE; 371 return suggestions_[index].frontend_id == POPUP_ITEM_ID_WARNING_MESSAGE;
372 } 372 }
373 373
374 gfx::Rect AutofillPopupControllerImpl::GetRowBounds(size_t index) { 374 gfx::Rect AutofillPopupControllerImpl::GetRowBounds(size_t index) {
375 int top = kPopupBorderThickness; 375 int top = kPopupBorderThickness;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 if (HasSuggestions()) { 453 if (HasSuggestions()) {
454 delegate_->ClearPreviewedForm(); 454 delegate_->ClearPreviewedForm();
455 UpdateBoundsAndRedrawPopup(); 455 UpdateBoundsAndRedrawPopup();
456 } else { 456 } else {
457 Hide(); 457 Hide();
458 } 458 }
459 459
460 return true; 460 return true;
461 } 461 }
462 462
463 #if !defined(OS_ANDROID) || defined(USE_AURA) 463 #if !defined(OS_ANDROID)
464 const gfx::FontList& AutofillPopupControllerImpl::GetValueFontListForRow( 464 const gfx::FontList& AutofillPopupControllerImpl::GetValueFontListForRow(
465 size_t index) const { 465 size_t index) const {
466 if (suggestions_[index].frontend_id == POPUP_ITEM_ID_WARNING_MESSAGE) 466 if (suggestions_[index].frontend_id == POPUP_ITEM_ID_WARNING_MESSAGE)
467 return warning_font_list_; 467 return warning_font_list_;
468 468
469 if (suggestions_[index].frontend_id == POPUP_ITEM_ID_TITLE) 469 if (suggestions_[index].frontend_id == POPUP_ITEM_ID_TITLE)
470 return title_font_list_; 470 return title_font_list_;
471 471
472 return value_font_list_; 472 return value_font_list_;
473 } 473 }
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 void AutofillPopupControllerImpl::ShowView() { 596 void AutofillPopupControllerImpl::ShowView() {
597 view_->Show(); 597 view_->Show();
598 } 598 }
599 599
600 void AutofillPopupControllerImpl::InvalidateRow(size_t row) { 600 void AutofillPopupControllerImpl::InvalidateRow(size_t row) {
601 DCHECK(0 <= row); 601 DCHECK(0 <= row);
602 DCHECK(row < suggestions_.size()); 602 DCHECK(row < suggestions_.size());
603 view_->InvalidateRow(row); 603 view_->InvalidateRow(row);
604 } 604 }
605 605
606 #if !defined(OS_ANDROID) || defined(USE_AURA) 606 #if !defined(OS_ANDROID)
607 int AutofillPopupControllerImpl::GetDesiredPopupWidth() const { 607 int AutofillPopupControllerImpl::GetDesiredPopupWidth() const {
608 int popup_width = controller_common_->RoundedElementBounds().width(); 608 int popup_width = controller_common_->RoundedElementBounds().width();
609 for (size_t i = 0; i < GetLineCount(); ++i) { 609 for (size_t i = 0; i < GetLineCount(); ++i) {
610 int row_size = 610 int row_size =
611 gfx::GetStringWidth(GetElidedValueAt(i), value_font_list_) + 611 gfx::GetStringWidth(GetElidedValueAt(i), value_font_list_) +
612 gfx::GetStringWidth(GetElidedLabelAt(i), label_font_list_) + 612 gfx::GetStringWidth(GetElidedLabelAt(i), label_font_list_) +
613 RowWidthWithoutText(i); 613 RowWidthWithoutText(i);
614 614
615 popup_width = std::max(popup_width, row_size); 615 popup_width = std::max(popup_width, row_size);
616 } 616 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 650
651 return row_size; 651 return row_size;
652 } 652 }
653 653
654 void AutofillPopupControllerImpl::UpdatePopupBounds() { 654 void AutofillPopupControllerImpl::UpdatePopupBounds() {
655 int popup_width = GetDesiredPopupWidth(); 655 int popup_width = GetDesiredPopupWidth();
656 int popup_height = GetDesiredPopupHeight(); 656 int popup_height = GetDesiredPopupHeight();
657 657
658 popup_bounds_ = controller_common_->GetPopupBounds(popup_width, popup_height); 658 popup_bounds_ = controller_common_->GetPopupBounds(popup_width, popup_height);
659 } 659 }
660 #endif 660 #endif // !defined(OS_ANDROID)
661 661
662 WeakPtr<AutofillPopupControllerImpl> AutofillPopupControllerImpl::GetWeakPtr() { 662 WeakPtr<AutofillPopupControllerImpl> AutofillPopupControllerImpl::GetWeakPtr() {
663 return weak_ptr_factory_.GetWeakPtr(); 663 return weak_ptr_factory_.GetWeakPtr();
664 } 664 }
665 665
666 void AutofillPopupControllerImpl::ClearState() { 666 void AutofillPopupControllerImpl::ClearState() {
667 // Don't clear view_, because otherwise the popup will have to get regenerated 667 // Don't clear view_, because otherwise the popup will have to get regenerated
668 // and this will cause flickering. 668 // and this will cause flickering.
669 669
670 popup_bounds_ = gfx::Rect(); 670 popup_bounds_ = gfx::Rect();
671 671
672 suggestions_.clear(); 672 suggestions_.clear();
673 elided_values_.clear(); 673 elided_values_.clear();
674 elided_labels_.clear(); 674 elided_labels_.clear();
675 675
676 selected_line_ = kNoSelection; 676 selected_line_ = kNoSelection;
677 } 677 }
678 678
679 } // namespace autofill 679 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698