Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1472)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java

Issue 2836833002: Change LocaleManager to accommodate more dialog flows (Closed)
Patch Set: retention policy Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java b/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java
index 4e6c623e5d97df9ab004753e81dd368b7c3fddf4..8a3b246393261a907c1314bbf108010fe2192804 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.locale;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.support.annotation.IntDef;
import org.chromium.base.ContextUtils;
import org.chromium.base.ThreadUtils;
@@ -19,6 +20,8 @@ import org.chromium.chrome.browser.snackbar.Snackbar;
import org.chromium.chrome.browser.snackbar.SnackbarManager;
import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.lang.ref.WeakReference;
/**
@@ -30,6 +33,17 @@ public class LocaleManager {
public static final String PREF_WAS_IN_SPECIAL_LOCALE = "LocaleManager_WAS_IN_SPECIAL_LOCALE";
public static final String SPECIAL_LOCALE_ID = "US";
+ /** The different types of search engine promo dialogs. */
+ @IntDef({SEARCH_ENGINE_PROMO_DONT_SHOW, SEARCH_ENGINE_PROMO_SHOW_SOGOU,
+ SEARCH_ENGINE_PROMO_SHOW_EXISTING, SEARCH_ENGINE_PROMO_SHOW_NEW})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface SearchEnginePromoType {}
+
+ public static final int SEARCH_ENGINE_PROMO_DONT_SHOW = -1;
+ public static final int SEARCH_ENGINE_PROMO_SHOW_SOGOU = 0;
+ public static final int SEARCH_ENGINE_PROMO_SHOW_EXISTING = 1;
+ public static final int SEARCH_ENGINE_PROMO_SHOW_NEW = 2;
+
private static final int SNACKBAR_DURATION_MS = 6000;
private static LocaleManager sInstance;
@@ -159,20 +173,19 @@ public class LocaleManager {
}
/**
- * Shows a promotion dialog saying the default search engine will be set to Sogou. No-op if
- * device is not in special locale.
+ * Shows a promotion dialog about search engines depending on Locale and other conditions.
+ * See {@link LocaleManager#getSearchEnginePromoShowType()} for possible types and logic.
*
* @return Whether such dialog is needed.
*/
public boolean showSearchEnginePromoIfNeeded(Context context) {
- if (!isSpecialLocaleEnabled()) return false;
- SharedPreferences preferences = ContextUtils.getAppSharedPreferences();
- if (preferences.getBoolean(PREF_PROMO_SHOWN, false)) {
- return false;
- }
+ int shouldShow = getSearchEnginePromoShowType();
- new SogouPromoDialog(context, this).show();
- return true;
+ if (shouldShow == SEARCH_ENGINE_PROMO_SHOW_SOGOU) {
+ new SogouPromoDialog(context, this).show();
+ return true;
+ }
+ return false;
}
/**
@@ -218,6 +231,19 @@ public class LocaleManager {
return inSpecialLocale;
}
+ /**
+ * @return Whether and which search engine promo should be shown.
+ */
+ @SearchEnginePromoType
+ protected int getSearchEnginePromoShowType() {
+ if (!isSpecialLocaleEnabled()) return SEARCH_ENGINE_PROMO_DONT_SHOW;
+ SharedPreferences preferences = ContextUtils.getAppSharedPreferences();
+ if (preferences.getBoolean(PREF_PROMO_SHOWN, false)) {
+ return SEARCH_ENGINE_PROMO_DONT_SHOW;
+ }
+ return SEARCH_ENGINE_PROMO_SHOW_SOGOU;
+ }
+
private SpecialLocaleHandler getSpecialLocaleHandler() {
if (mLocaleHandler == null) mLocaleHandler = new SpecialLocaleHandler(getSpecialLocaleId());
return mLocaleHandler;

Powered by Google App Engine
This is Rietveld 408576698