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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java

Issue 839663003: Upstream partner customizations. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed tests Created 5 years, 11 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/partnercustomizations/HomepageManager.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..5d8a60cbd1c10f3798b25055ef21fda635dd86a9
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
@@ -0,0 +1,159 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.partnercustomizations;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.text.TextUtils;
+
+import org.chromium.base.ObserverList;
+
+/**
+ * Provides information regarding homepage enabled states and URI.
+ *
+ * This class serves as a single homepage logic gateway.
+ */
+public class HomepageManager {
+
+ /**
+ * An interface to use for getting homepage related updates.
+ */
+ public interface HomepageStateListener {
+ /**
+ * Called when the homepage is enabled or disabled or the homepage URL changes.
+ */
+ void onHomepageStateUpdated();
+ }
+
+ private static final String PREF_HOMEPAGE_ENABLED = "homepage";
+ private static final String PREF_HOMEPAGE_CUSTOM_URI = "homepage_custom_uri";
+ private static final String PREF_HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled";
+
+ private static HomepageManager sInstance;
+
+ private final SharedPreferences mSharedPreferences;
+ private final ObserverList<HomepageStateListener> mHomepageStateListeners;
+
+ private HomepageManager(Context context) {
+ mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+ mHomepageStateListeners = new ObserverList<HomepageManager.HomepageStateListener>();
+ }
+
+ /**
+ * Returns the singleton instance of HomepageManager, creating it if needed.
+ * @param context Any old Context.
+ */
+ public static HomepageManager getInstance(Context context) {
+ if (sInstance == null) {
+ sInstance = new HomepageManager(context);
+ }
+ return sInstance;
+ }
+
+ /**
+ * Adds a HomepageStateListener to receive updates when the homepage state changes.
+ */
+ public void addListener(HomepageStateListener listener) {
+ mHomepageStateListeners.addObserver(listener);
+ }
+
+ /**
+ * Removes the given listener from the state listener list.
+ * @param listener The listener to remove.
+ */
+ public void removeListener(HomepageStateListener listener) {
+ mHomepageStateListeners.removeObserver(listener);
+ }
+
+ /**
+ * Notify any listeners about a homepage state change.
+ */
+ public void notifyHomepageUpdated() {
+ for (HomepageStateListener listener : mHomepageStateListeners) {
+ listener.onHomepageStateUpdated();
+ }
+ }
+
+ /**
+ * @return Whether or not homepage is enabled.
+ */
+ public static boolean isHomepageEnabled(Context context) {
+ return PartnerBrowserCustomizations.isHomepageProviderAvailableAndEnabled()
+ && getInstance(context).getPrefHomepageEnabled();
+ }
+
+ /**
+ * @return Whether or not homepage setting should be shown.
+ */
+ public static boolean shouldShowHomepageSetting() {
+ return PartnerBrowserCustomizations.isHomepageProviderAvailableAndEnabled();
+ }
+
+ /**
+ * @return Homepage URI string, if it's enabled. Null otherwise or uninitialized.
+ */
+ public static String getHomepageUri(Context context) {
+ if (!isHomepageEnabled(context)) return null;
+
+ HomepageManager manager = getInstance(context);
+ String homepageUri = manager.getPrefHomepageUseDefaultUri()
+ ? PartnerBrowserCustomizations.getHomePageUrl()
+ : manager.getPrefHomepageCustomUri();
+ return TextUtils.isEmpty(homepageUri) ? null : homepageUri;
+ }
+
+ /**
+ * Returns the user preference for whether the homepage is enabled. This doesn't take into
+ * account whether the device supports having a homepage.
+ *
+ * @see #isHomepageEnabled
+ */
+ public boolean getPrefHomepageEnabled() {
+ return mSharedPreferences.getBoolean(PREF_HOMEPAGE_ENABLED, true);
+ }
+
+ /**
+ * Sets the user preference for whether the homepage is enabled.
+ */
+ public void setPrefHomepageEnabled(boolean enabled) {
+ SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
+ sharedPreferencesEditor.putBoolean(PREF_HOMEPAGE_ENABLED, enabled);
+ sharedPreferencesEditor.apply();
+ notifyHomepageUpdated();
+ }
+
+ /**
+ * @return User specified homepage custom URI string.
+ */
+ public String getPrefHomepageCustomUri() {
+ return mSharedPreferences.getString(PREF_HOMEPAGE_CUSTOM_URI, "");
+ }
+
+ /**
+ * Sets custom homepage URI
+ */
+ public void setPrefHomepageCustomUri(String customUri) {
+ SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
+ sharedPreferencesEditor.putString(PREF_HOMEPAGE_CUSTOM_URI, customUri);
+ sharedPreferencesEditor.apply();
+ }
+
+ /**
+ * @return Whether the homepage URL is the default value.
+ */
+ public boolean getPrefHomepageUseDefaultUri() {
+ return mSharedPreferences.getBoolean(PREF_HOMEPAGE_USE_DEFAULT_URI, true);
+ }
+
+ /**
+ * Sets whether the homepage URL is the default value.
+ */
+ public void setPrefHomepageUseDefaultUri(boolean useDefaultUri) {
+ SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
+ sharedPreferencesEditor.putBoolean(PREF_HOMEPAGE_USE_DEFAULT_URI, useDefaultUri);
+ sharedPreferencesEditor.apply();
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698