| Index: chrome/browser/ui/android/autofill/password_generation_popup_view_android.cc
|
| diff --git a/chrome/browser/ui/android/autofill/password_generation_popup_view_android.cc b/chrome/browser/ui/android/autofill/password_generation_popup_view_android.cc
|
| index a0f48c64dd42dbb5412ee65323d26e9fada2def1..d14f1e563bf965bc925ec9b6da750008417b907e 100644
|
| --- a/chrome/browser/ui/android/autofill/password_generation_popup_view_android.cc
|
| +++ b/chrome/browser/ui/android/autofill/password_generation_popup_view_android.cc
|
| @@ -35,6 +35,10 @@ void PasswordGenerationPopupViewAndroid::SavedPasswordsLinkClicked(
|
| void PasswordGenerationPopupViewAndroid::Dismissed(
|
| JNIEnv* env,
|
| const JavaParamRef<jobject>& obj) {
|
| + DismissedInternal();
|
| +}
|
| +
|
| +void PasswordGenerationPopupViewAndroid::DismissedInternal() {
|
| if (controller_)
|
| controller_->ViewDestroyed();
|
|
|
| @@ -61,10 +65,13 @@ void PasswordGenerationPopupViewAndroid::Show() {
|
|
|
| DCHECK(view_android);
|
|
|
| + popup_ = view_android->AcquireAnchorView();
|
| + if (popup_.is_null())
|
| + return;
|
| java_object_.Reset(Java_PasswordGenerationPopupBridge_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();
|
| }
|
| @@ -72,7 +79,11 @@ void PasswordGenerationPopupViewAndroid::Show() {
|
| void PasswordGenerationPopupViewAndroid::Hide() {
|
| controller_ = NULL;
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
| - Java_PasswordGenerationPopupBridge_hide(env, java_object_.obj());
|
| + if (!java_object_.is_null()) {
|
| + Java_PasswordGenerationPopupBridge_hide(env, java_object_.obj());
|
| + } else {
|
| + DismissedInternal();
|
| + }
|
| }
|
|
|
| gfx::Size PasswordGenerationPopupViewAndroid::GetPreferredSizeOfPasswordView() {
|
| @@ -81,15 +92,14 @@ gfx::Size PasswordGenerationPopupViewAndroid::GetPreferredSizeOfPasswordView() {
|
| }
|
|
|
| void PasswordGenerationPopupViewAndroid::UpdateBoundsAndRedrawPopup() {
|
| + if (java_object_.is_null())
|
| + return;
|
| +
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
| - Java_PasswordGenerationPopupBridge_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(), controller_->element_bounds());
|
| ScopedJavaLocalRef<jstring> password =
|
| base::android::ConvertUTF16ToJavaString(env, controller_->password());
|
| ScopedJavaLocalRef<jstring> suggestion =
|
|
|