summaryrefslogtreecommitdiffstats
path: root/chrome/android
diff options
context:
space:
mode:
authoraruslan@chromium.org <aruslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-27 02:16:18 +0000
committeraruslan@chromium.org <aruslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-27 02:16:18 +0000
commit804a2a7e28d1d7a1d8f73e2097ca425c8c56e44b (patch)
tree2d23d7863a1f06604dd9e9a7e6f8a839801576b4 /chrome/android
parentd66734cf5898f1277ee4e057390a8783385eaad7 (diff)
downloadchromium_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.java14
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogGlue.java13
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