Index: chrome/android/java/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialog.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialog.java |
index dac7902b92883e08d5be85eeae254a9ad107cbf2..4ddd6861fbd881c717bc07355d287e1260af6bac 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialog.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialog.java |
@@ -4,6 +4,7 @@ |
package org.chromium.chrome.browser.locale; |
+import android.annotation.SuppressLint; |
import android.app.Activity; |
import android.content.DialogInterface; |
import android.os.Bundle; |
@@ -26,6 +27,9 @@ public class DefaultSearchEnginePromoDialog extends PromoDialog { |
} |
private static DefaultSearchEnginePromoDialogObserver sObserver; |
+ @SuppressLint("StaticFieldLeak") |
+ private static DefaultSearchEnginePromoDialog sCurrentDialog; |
+ |
/** Used to determine the promo dialog contents. */ |
@SearchEnginePromoType |
private final int mDialogType; |
@@ -90,6 +94,9 @@ public class DefaultSearchEnginePromoDialog extends PromoDialog { |
@Override |
public void show() { |
super.show(); |
+ if (sCurrentDialog != null) sCurrentDialog.dismiss(); |
+ setCurrentDialog(this); |
+ |
if (mDialogType == LocaleManager.SEARCH_ENGINE_PROMO_SHOW_NEW) { |
RecordUserAction.record("SearchEnginePromo.NewDevice.Shown.Dialog"); |
} else if (mDialogType == LocaleManager.SEARCH_ENGINE_PROMO_SHOW_EXISTING) { |
@@ -109,6 +116,8 @@ public class DefaultSearchEnginePromoDialog extends PromoDialog { |
if (mOnDismissed != null) { |
mOnDismissed.onResult(mHelper.getCurrentlySelectedKeyword() != null); |
} |
+ |
+ if (sCurrentDialog == this) setCurrentDialog(null); |
} |
/** See {@link #sObserver}. */ |
@@ -117,4 +126,13 @@ public class DefaultSearchEnginePromoDialog extends PromoDialog { |
public static void setObserverForTests(DefaultSearchEnginePromoDialogObserver observer) { |
sObserver = observer; |
} |
+ |
+ /** @return The current visible Default Search Engine dialog. */ |
+ static DefaultSearchEnginePromoDialog getCurrentDialog() { |
+ return sCurrentDialog; |
+ } |
+ |
+ private static void setCurrentDialog(DefaultSearchEnginePromoDialog dialog) { |
+ sCurrentDialog = dialog; |
+ } |
} |