Index: chrome/browser/ui/autofill/autofill_popup_controller_impl.cc |
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc |
index 6a81ddf9f18cf6b749086936e4052bbae825677b..edca9387dbc942532886a7e7cf749254636fe0b9 100644 |
--- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc |
+++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc |
@@ -8,12 +8,14 @@ |
#include <utility> |
#include "base/command_line.h" |
+#include "base/i18n/rtl.h" |
#include "base/logging.h" |
#include "base/macros.h" |
#include "base/optional.h" |
#include "base/strings/utf_string_conversions.h" |
#include "build/build_config.h" |
#include "chrome/browser/ui/autofill/autofill_popup_view.h" |
+#include "components/autofill/content/browser/content_autofill_driver.h" |
#include "components/autofill/core/browser/autofill_popup_delegate.h" |
#include "components/autofill/core/browser/popup_item_ids.h" |
#include "components/autofill/core/browser/suggestion.h" |
@@ -35,8 +37,7 @@ WeakPtr<AutofillPopupControllerImpl> AutofillPopupControllerImpl::GetOrCreate( |
gfx::NativeView container_view, |
const gfx::RectF& element_bounds, |
base::i18n::TextDirection text_direction) { |
- if (previous.get() && previous->web_contents() == web_contents && |
- previous->delegate_.get() == delegate.get() && |
+ if (previous.get() && previous->delegate_.get() == delegate.get() && |
previous->container_view() == container_view && |
previous->element_bounds() == element_bounds) { |
previous->ClearState(); |
@@ -59,18 +60,12 @@ AutofillPopupControllerImpl::AutofillPopupControllerImpl( |
gfx::NativeView container_view, |
const gfx::RectF& element_bounds, |
base::i18n::TextDirection text_direction) |
- : controller_common_(new PopupControllerCommon(element_bounds, |
- text_direction, |
- container_view, |
- web_contents)), |
+ : controller_common_(element_bounds, text_direction, container_view), |
view_(NULL), |
layout_model_(this, delegate->IsCreditCardPopup()), |
delegate_(delegate), |
weak_ptr_factory_(this) { |
ClearState(); |
- controller_common_->SetKeyPressCallback( |
- base::Bind(&AutofillPopupControllerImpl::HandleKeyPressEvent, |
- base::Unretained(this))); |
} |
AutofillPopupControllerImpl::~AutofillPopupControllerImpl() {} |
@@ -117,7 +112,10 @@ void AutofillPopupControllerImpl::Show( |
OnSuggestionsChanged(); |
} |
- controller_common_->RegisterKeyPressCallback(); |
+ static_cast<ContentAutofillDriver*>(delegate_->GetAutofillDriver()) |
+ ->RegisterKeyPressHandler( |
+ base::Bind(&AutofillPopupControllerImpl::HandleKeyPressEvent, |
+ base::Unretained(this))); |
delegate_->OnPopupShown(); |
DCHECK_EQ(suggestions_.size(), elided_values_.size()); |
@@ -189,9 +187,11 @@ void AutofillPopupControllerImpl::UpdateDataListValues( |
} |
void AutofillPopupControllerImpl::Hide() { |
- controller_common_->RemoveKeyPressCallback(); |
- if (delegate_) |
+ if (delegate_) { |
delegate_->OnPopupHidden(); |
+ static_cast<ContentAutofillDriver*>(delegate_->GetAutofillDriver()) |
+ ->RemoveKeyPressHandler(); |
+ } |
if (view_) |
view_->Hide(); |
@@ -287,20 +287,16 @@ gfx::Rect AutofillPopupControllerImpl::popup_bounds() const { |
return layout_model_.popup_bounds(); |
} |
-content::WebContents* AutofillPopupControllerImpl::web_contents() { |
- return controller_common_->web_contents(); |
-} |
- |
gfx::NativeView AutofillPopupControllerImpl::container_view() { |
- return controller_common_->container_view(); |
+ return controller_common_.container_view; |
} |
const gfx::RectF& AutofillPopupControllerImpl::element_bounds() const { |
- return controller_common_->element_bounds(); |
+ return controller_common_.element_bounds; |
} |
bool AutofillPopupControllerImpl::IsRTL() const { |
- return controller_common_->is_rtl(); |
+ return controller_common_.text_direction == base::i18n::RIGHT_TO_LEFT; |
} |
const std::vector<autofill::Suggestion> |