diff options
author | aruslan@chromium.org <aruslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-27 02:16:18 +0000 |
---|---|---|
committer | aruslan@chromium.org <aruslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-27 02:16:18 +0000 |
commit | 804a2a7e28d1d7a1d8f73e2097ca425c8c56e44b (patch) | |
tree | 2d23d7863a1f06604dd9e9a7e6f8a839801576b4 /chrome/android | |
parent | d66734cf5898f1277ee4e057390a8783385eaad7 (diff) | |
download | chromium_src-804a2a7e28d1d7a1d8f73e2097ca425c8c56e44b.zip chromium_src-804a2a7e28d1d7a1d8f73e2097ca425c8c56e44b.tar.gz chromium_src-804a2a7e28d1d7a1d8f73e2097ca425c8c56e44b.tar.bz2 |
[rAc Android dialog] Don't call ViewClosed() from within Hide().
Controller doesn't survive it.
BUG=235493
NOTRY=True
Review URL: https://chromiumcodereview.appspot.com/14307018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@196922 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/android')
-rw-r--r-- | chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialog.java | 14 | ||||
-rw-r--r-- | chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogGlue.java | 13 |
2 files changed, 25 insertions, 2 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialog.java index 658c3cc..1194ebc 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialog.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialog.java @@ -286,8 +286,8 @@ public class AutofillDialog extends AlertDialog * Dismisses the dialog. **/ private void internalDismiss() { - mDelegate.dialogDismissed(); super.dismiss(); + mDelegate.dialogDismissed(); } /** @@ -301,6 +301,9 @@ public class AutofillDialog extends AlertDialog @Override public void onClick(DialogInterface dialog, int which) { + // The buttons will be updated as the result of a controller callback or a layout change. + disableButtons(); + // Note that the dialog will NOT be dismissed automatically. if (!mContentView.isInEditingMode()) { if (which == AlertDialog.BUTTON_POSITIVE) { @@ -367,6 +370,15 @@ public class AutofillDialog extends AlertDialog } /** + * Disables the dialog buttons. + */ + private void disableButtons() { + getButton(BUTTON_NEGATIVE).setEnabled(false); + getButton(BUTTON_POSITIVE).setEnabled(false); + mTitleView.setAccountChooserEnabled(false); + } + + /** * Updates the buttons state for the given mode. * @param mode The layout mode. */ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogGlue.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogGlue.java index 20d1a17..8f3b196 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogGlue.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogGlue.java @@ -5,6 +5,7 @@ package org.chromium.chrome.browser.autofill; import android.graphics.Bitmap; +import android.os.Handler; import org.chromium.base.CalledByNative; import org.chromium.base.JNINamespace; @@ -214,7 +215,17 @@ public class AutofillDialogGlue implements AutofillDialogDelegate, @Override public void dialogDismissed() { - if (mNativeDialogPopup != 0) nativeDialogDismissed(mNativeDialogPopup); + if (mNativeDialogPopup == 0) return; + + // The controller doesn't expect to get deleted synchronously, so + // we postpone the call. onDestroy might be called before, so we + // need to check if the native side is still alive. + new Handler().post(new Runnable() { + @Override + public void run() { + if (mNativeDialogPopup != 0) nativeDialogDismissed(mNativeDialogPopup); + } + }); } @Override |