Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae03afda authored by John Reck's avatar John Reck Committed by android code review
Browse files

Merge "onSavePassword dialog can leak when WebViewClassic is destroyed."

parents 7fecf5f4 8655e908
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -686,6 +686,10 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
    // It's used to dismiss the dialog in destroy if not done before.
    private AlertDialog mListBoxDialog = null;

    // Reference to the save password dialog so it can be dimissed in
    // destroy if not done before.
    private AlertDialog mSavePasswordDialog = null;

    static final String LOGTAG = "webview";

    private ZoomManager mZoomManager;
@@ -1811,7 +1815,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
            neverRemember.getData().putString("password", password);
            neverRemember.obj = resumeMsg;

            new AlertDialog.Builder(mContext)
            mSavePasswordDialog = new AlertDialog.Builder(mContext)
                    .setTitle(com.android.internal.R.string.save_password_label)
                    .setMessage(com.android.internal.R.string.save_password_message)
                    .setPositiveButton(com.android.internal.R.string.save_password_notnow,
@@ -1822,6 +1826,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
                                resumeMsg.sendToTarget();
                                mResumeMsg = null;
                            }
                            mSavePasswordDialog = null;
                        }
                    })
                    .setNeutralButton(com.android.internal.R.string.save_password_remember,
@@ -1832,6 +1837,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
                                remember.sendToTarget();
                                mResumeMsg = null;
                            }
                            mSavePasswordDialog = null;
                        }
                    })
                    .setNegativeButton(com.android.internal.R.string.save_password_never,
@@ -1842,6 +1848,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
                                neverRemember.sendToTarget();
                                mResumeMsg = null;
                            }
                            mSavePasswordDialog = null;
                        }
                    })
                    .setOnCancelListener(new OnCancelListener() {
@@ -1851,6 +1858,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
                                resumeMsg.sendToTarget();
                                mResumeMsg = null;
                            }
                            mSavePasswordDialog = null;
                        }
                    }).show();
            // Return true so that WebViewCore will pause while the dialog is
@@ -2090,6 +2098,10 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
            mListBoxDialog.dismiss();
            mListBoxDialog = null;
        }
        if (mSavePasswordDialog != null) {
            mSavePasswordDialog.dismiss();
            mSavePasswordDialog = null;
        }
        if (mWebViewCore != null) {
            // Tell WebViewCore to destroy itself
            synchronized (this) {