summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autofill
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-20 03:35:51 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-20 03:35:51 +0000
commit61f6cee64ce4c4271e7a4652a908490f48e028fb (patch)
treedba77d19e08901c8d7bb10e38602f4acd13320d4 /chrome/browser/autofill
parentac7cc2b66e7d5668a4b97d4c2726c5c88cc94583 (diff)
downloadchromium_src-61f6cee64ce4c4271e7a4652a908490f48e028fb.zip
chromium_src-61f6cee64ce4c4271e7a4652a908490f48e028fb.tar.gz
chromium_src-61f6cee64ce4c4271e7a4652a908490f48e028fb.tar.bz2
AutofillDialogControllerImpl refinements
1) merge Hide() and DelegateDestroyed() 2) remove possible hide/show race condition BUG=none Review URL: https://chromiumcodereview.appspot.com/11570057 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@174098 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autofill')
-rw-r--r--chrome/browser/autofill/autofill_external_delegate.cc11
1 files changed, 6 insertions, 5 deletions
diff --git a/chrome/browser/autofill/autofill_external_delegate.cc b/chrome/browser/autofill/autofill_external_delegate.cc
index 4afc3d6..c20ad81 100644
--- a/chrome/browser/autofill/autofill_external_delegate.cc
+++ b/chrome/browser/autofill/autofill_external_delegate.cc
@@ -65,7 +65,7 @@ AutofillExternalDelegate::AutofillExternalDelegate(
AutofillExternalDelegate::~AutofillExternalDelegate() {
if (controller_)
- controller_->DelegateDestroyed();
+ controller_->Hide();
}
void AutofillExternalDelegate::SelectAutofillSuggestionAtIndex(int unique_id) {
@@ -172,11 +172,9 @@ void AutofillExternalDelegate::OnShowPasswordSuggestions(
void AutofillExternalDelegate::EnsurePopupForElement(
const gfx::Rect& element_bounds) {
- if (controller_)
- return;
-
// |controller_| owns itself.
- controller_ = new AutofillPopupControllerImpl(
+ controller_ = AutofillPopupControllerImpl::GetOrCreate(
+ controller_,
this,
// web_contents() may be NULL during testing.
web_contents() ? web_contents()->GetView()->GetContentNativeView() : NULL,
@@ -281,6 +279,9 @@ void AutofillExternalDelegate::HideAutofillPopup() {
if (controller_) {
ClearPreviewedForm();
controller_->Hide();
+ // Go ahead and invalidate |controller_|. After calling Hide(), it won't
+ // inform |this| of its destruction.
+ ControllerDestroyed();
}
}