| Index: chrome/browser/ui/android/autofill/autofill_popup_view_android.cc
|
| diff --git a/chrome/browser/ui/android/autofill/autofill_popup_view_android.cc b/chrome/browser/ui/android/autofill/autofill_popup_view_android.cc
|
| index 663bd8b4192cd476f878eb1a6532e5e2d65692fb..c41a974fbb7e7e36cf77de6b60e937926c877bcc 100644
|
| --- a/chrome/browser/ui/android/autofill/autofill_popup_view_android.cc
|
| +++ b/chrome/browser/ui/android/autofill/autofill_popup_view_android.cc
|
| @@ -36,11 +36,11 @@ void AutofillPopupViewAndroid::Show() {
|
| ui::ViewAndroid* view_android = controller_->container_view();
|
|
|
| DCHECK(view_android);
|
| -
|
| + popup_view_.Reset(view_android->AcquireAnchorView());
|
| java_object_.Reset(Java_AutofillPopupBridge_create(
|
| - env, reinterpret_cast<intptr_t>(this),
|
| - view_android->GetWindowAndroid()->GetJavaObject().obj(),
|
| - view_android->GetViewAndroidDelegate().obj()));
|
| + env, popup_view_.obj(), controller_->element_bounds().width(),
|
| + reinterpret_cast<intptr_t>(this),
|
| + view_android->GetWindowAndroid()->GetJavaObject().obj()));
|
|
|
| UpdateBoundsAndRedrawPopup();
|
| }
|
| @@ -52,15 +52,12 @@ void AutofillPopupViewAndroid::Hide() {
|
| }
|
|
|
| void AutofillPopupViewAndroid::UpdateBoundsAndRedrawPopup() {
|
| - JNIEnv* env = base::android::AttachCurrentThread();
|
| - Java_AutofillPopupBridge_setAnchorRect(
|
| - env,
|
| - java_object_.obj(),
|
| - controller_->element_bounds().x(),
|
| - controller_->element_bounds().y(),
|
| - controller_->element_bounds().width(),
|
| - controller_->element_bounds().height());
|
| + ui::ViewAndroid* view_android = controller_->container_view();
|
|
|
| + DCHECK(view_android);
|
| + view_android->SetAnchorRect(popup_view_.obj(), controller_->element_bounds());
|
| +
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| size_t count = controller_->GetLineCount();
|
| ScopedJavaLocalRef<jobjectArray> data_array =
|
| Java_AutofillPopupBridge_createAutofillSuggestionArray(env, count);
|
| @@ -137,8 +134,13 @@ void AutofillPopupViewAndroid::DeletionConfirmed(
|
| void AutofillPopupViewAndroid::PopupDismissed(
|
| JNIEnv* env,
|
| const JavaParamRef<jobject>& obj) {
|
| - if (controller_)
|
| + if (controller_) {
|
| + ui::ViewAndroid* view_android = controller_->container_view();
|
| +
|
| + DCHECK(view_android);
|
| + view_android->RemoveAnchorView(popup_view_.obj());
|
| controller_->ViewDestroyed();
|
| + }
|
|
|
| delete this;
|
| }
|
|
|