OLD | NEW |
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/logging.h" | 10 #include "base/logging.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 { "visaCC", IDR_AUTOFILL_CC_VISA }, | 65 { "visaCC", IDR_AUTOFILL_CC_VISA }, |
66 }; | 66 }; |
67 | 67 |
68 } // namespace | 68 } // namespace |
69 | 69 |
70 // static | 70 // static |
71 WeakPtr<AutofillPopupControllerImpl> AutofillPopupControllerImpl::GetOrCreate( | 71 WeakPtr<AutofillPopupControllerImpl> AutofillPopupControllerImpl::GetOrCreate( |
72 WeakPtr<AutofillPopupControllerImpl> previous, | 72 WeakPtr<AutofillPopupControllerImpl> previous, |
73 WeakPtr<AutofillPopupDelegate> delegate, | 73 WeakPtr<AutofillPopupDelegate> delegate, |
74 gfx::NativeView container_view, | 74 gfx::NativeView container_view, |
75 const gfx::RectF& element_bounds) { | 75 const gfx::RectF& element_bounds, |
| 76 base::i18n::TextDirection text_direction) { |
76 DCHECK(!previous.get() || previous->delegate_.get() == delegate.get()); | 77 DCHECK(!previous.get() || previous->delegate_.get() == delegate.get()); |
77 | 78 |
78 if (previous.get() && previous->container_view() == container_view && | 79 if (previous.get() && previous->container_view() == container_view && |
79 previous->element_bounds() == element_bounds) { | 80 previous->element_bounds() == element_bounds) { |
80 previous->ClearState(); | 81 previous->ClearState(); |
81 return previous; | 82 return previous; |
82 } | 83 } |
83 | 84 |
84 if (previous.get()) | 85 if (previous.get()) |
85 previous->Hide(); | 86 previous->Hide(); |
86 | 87 |
87 AutofillPopupControllerImpl* controller = | 88 AutofillPopupControllerImpl* controller = |
88 new AutofillPopupControllerImpl(delegate, container_view, element_bounds); | 89 new AutofillPopupControllerImpl( |
| 90 delegate, container_view, element_bounds, text_direction); |
89 return controller->GetWeakPtr(); | 91 return controller->GetWeakPtr(); |
90 } | 92 } |
91 | 93 |
92 AutofillPopupControllerImpl::AutofillPopupControllerImpl( | 94 AutofillPopupControllerImpl::AutofillPopupControllerImpl( |
93 base::WeakPtr<AutofillPopupDelegate> delegate, | 95 base::WeakPtr<AutofillPopupDelegate> delegate, |
94 gfx::NativeView container_view, | 96 gfx::NativeView container_view, |
95 const gfx::RectF& element_bounds) | 97 const gfx::RectF& element_bounds, |
| 98 base::i18n::TextDirection text_direction) |
96 : view_(NULL), | 99 : view_(NULL), |
97 delegate_(delegate), | 100 delegate_(delegate), |
98 container_view_(container_view), | 101 container_view_(container_view), |
99 element_bounds_(element_bounds), | 102 element_bounds_(element_bounds), |
| 103 text_direction_(text_direction), |
100 weak_ptr_factory_(this) { | 104 weak_ptr_factory_(this) { |
101 ClearState(); | 105 ClearState(); |
102 #if !defined(OS_ANDROID) | 106 #if !defined(OS_ANDROID) |
103 subtext_font_ = name_font_.DeriveFont(kLabelFontSizeDelta); | 107 subtext_font_ = name_font_.DeriveFont(kLabelFontSizeDelta); |
104 warning_font_ = name_font_.DeriveFont(0, gfx::Font::ITALIC); | 108 warning_font_ = name_font_.DeriveFont(0, gfx::Font::ITALIC); |
105 #endif | 109 #endif |
106 } | 110 } |
107 | 111 |
108 AutofillPopupControllerImpl::~AutofillPopupControllerImpl() {} | 112 AutofillPopupControllerImpl::~AutofillPopupControllerImpl() {} |
109 | 113 |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 } | 293 } |
290 | 294 |
291 gfx::NativeView AutofillPopupControllerImpl::container_view() const { | 295 gfx::NativeView AutofillPopupControllerImpl::container_view() const { |
292 return container_view_; | 296 return container_view_; |
293 } | 297 } |
294 | 298 |
295 const gfx::RectF& AutofillPopupControllerImpl::element_bounds() const { | 299 const gfx::RectF& AutofillPopupControllerImpl::element_bounds() const { |
296 return element_bounds_; | 300 return element_bounds_; |
297 } | 301 } |
298 | 302 |
| 303 bool AutofillPopupControllerImpl::IsRTL() const { |
| 304 return text_direction_ == base::i18n::RIGHT_TO_LEFT; |
| 305 } |
| 306 |
299 const std::vector<string16>& AutofillPopupControllerImpl::names() const { | 307 const std::vector<string16>& AutofillPopupControllerImpl::names() const { |
300 return names_; | 308 return names_; |
301 } | 309 } |
302 | 310 |
303 const std::vector<string16>& AutofillPopupControllerImpl::subtexts() const { | 311 const std::vector<string16>& AutofillPopupControllerImpl::subtexts() const { |
304 return subtexts_; | 312 return subtexts_; |
305 } | 313 } |
306 | 314 |
307 const std::vector<string16>& AutofillPopupControllerImpl::icons() const { | 315 const std::vector<string16>& AutofillPopupControllerImpl::icons() const { |
308 return icons_; | 316 return icons_; |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
651 // The popup can appear below the field. | 659 // The popup can appear below the field. |
652 return std::make_pair(bottom_growth_start, popup_required_height); | 660 return std::make_pair(bottom_growth_start, popup_required_height); |
653 } else { | 661 } else { |
654 // The popup must appear above the field. | 662 // The popup must appear above the field. |
655 return std::make_pair(top_growth_end - popup_required_height, | 663 return std::make_pair(top_growth_end - popup_required_height, |
656 popup_required_height); | 664 popup_required_height); |
657 } | 665 } |
658 } | 666 } |
659 | 667 |
660 } // namespace autofill | 668 } // namespace autofill |
OLD | NEW |