| Index: chrome/android/java/src/org/chromium/chrome/browser/WebsiteSettingsPopup.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WebsiteSettingsPopup.java b/chrome/android/java/src/org/chromium/chrome/browser/WebsiteSettingsPopup.java
|
| index 77a1bd55f84d588fa8270214721931e1b20e78f0..887ea4a3047adc5958d18360f800856810c73741 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/WebsiteSettingsPopup.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/WebsiteSettingsPopup.java
|
| @@ -24,6 +24,7 @@ import android.widget.TextView;
|
|
|
| import org.chromium.base.CalledByNative;
|
| import org.chromium.chrome.R;
|
| +import org.chromium.content.browser.WebContentsObserverAndroid;
|
| import org.chromium.content_public.browser.WebContents;
|
|
|
| import java.net.URISyntaxException;
|
| @@ -56,10 +57,20 @@ public class WebsiteSettingsPopup implements OnClickListener {
|
| mDialog.setCanceledOnTouchOutside(true);
|
| // This needs to come after other member initialization.
|
| final long nativeWebsiteSettingsPopup = nativeInit(this, webContents);
|
| + final WebContentsObserverAndroid webContentsObserver =
|
| + new WebContentsObserverAndroid(mWebContents) {
|
| + @Override
|
| + public void navigationEntryCommitted() {
|
| + // If a navigation is committed (e.g. from in-page redirect), the data we're
|
| + // showing is stale so dismiss the dialog.
|
| + mDialog.dismiss();
|
| + }
|
| + };
|
| mDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
|
| @Override
|
| public void onDismiss(DialogInterface dialog) {
|
| assert nativeWebsiteSettingsPopup != 0;
|
| + webContentsObserver.detachFromWebContents();
|
| nativeDestroy(nativeWebsiteSettingsPopup);
|
| }
|
| });
|
|
|