summaryrefslogtreecommitdiffstats
path: root/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/Prefs.java
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /mobile/android/stumbler/java/org/mozilla/mozstumbler/service/Prefs.java
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'mobile/android/stumbler/java/org/mozilla/mozstumbler/service/Prefs.java')
-rw-r--r--mobile/android/stumbler/java/org/mozilla/mozstumbler/service/Prefs.java205
1 files changed, 205 insertions, 0 deletions
diff --git a/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/Prefs.java b/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/Prefs.java
new file mode 100644
index 000000000..fa00f29e9
--- /dev/null
+++ b/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/Prefs.java
@@ -0,0 +1,205 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.mozstumbler.service;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.location.Location;
+import android.os.Build.VERSION;
+import android.text.TextUtils;
+import android.util.Log;
+
+public final class Prefs {
+ private static final String LOG_TAG = AppGlobals.makeLogTag(Prefs.class.getSimpleName());
+ private static final String NICKNAME_PREF = "nickname";
+ private static final String USER_AGENT_PREF = "user-agent";
+ private static final String VALUES_VERSION_PREF = "values_version";
+ private static final String WIFI_ONLY = "wifi_only";
+ private static final String LAT_PREF = "lat_pref";
+ private static final String LON_PREF = "lon_pref";
+ private static final String GEOFENCE_HERE = "geofence_here";
+ private static final String GEOFENCE_SWITCH = "geofence_switch";
+ private static final String FIREFOX_SCAN_ENABLED = "firefox_scan_on";
+ private static final String MOZ_API_KEY = "moz_api_key";
+ private static final String WIFI_SCAN_ALWAYS = "wifi_scan_always";
+ private static final String LAST_ATTEMPTED_UPLOAD_TIME = "last_attempted_upload_time";
+ // Public for MozStumbler to use for manual upgrade of old prefs.
+ public static final String PREFS_FILE = Prefs.class.getSimpleName();
+
+ private final SharedPreferences mSharedPrefs;
+ static private Prefs sInstance;
+
+ private Prefs(Context context) {
+ mSharedPrefs = context.getSharedPreferences(PREFS_FILE, Context.MODE_PRIVATE);
+ if (getPrefs().getInt(VALUES_VERSION_PREF, -1) != AppGlobals.appVersionCode) {
+ Log.i(LOG_TAG, "Version of the application has changed. Updating default values.");
+ // Remove old keys
+ getPrefs().edit()
+ .remove("reports")
+ .remove("power_saving_mode")
+ .commit();
+
+ getPrefs().edit().putInt(VALUES_VERSION_PREF, AppGlobals.appVersionCode).commit();
+ getPrefs().edit().commit();
+ }
+ }
+
+ public static Prefs getInstance(Context c) {
+ if (sInstance == null) {
+ sInstance = new Prefs(c);
+ }
+ return sInstance;
+ }
+
+ // Allows code without a context handle to grab the prefs. The caller must null check the return value.
+ public static Prefs getInstanceWithoutContext() {
+ return sInstance;
+ }
+
+ ///
+ /// Setters
+ ///
+ public synchronized void setUserAgent(String userAgent) {
+ setStringPref(USER_AGENT_PREF, userAgent);
+ }
+
+ public synchronized void setUseWifiOnly(boolean state) {
+ setBoolPref(WIFI_ONLY, state);
+ }
+
+ public synchronized void setGeofenceEnabled(boolean state) {
+ setBoolPref(GEOFENCE_SWITCH, state);
+ }
+
+ public synchronized void setGeofenceHere(boolean flag) {
+ setBoolPref(GEOFENCE_HERE, flag);
+ }
+
+ public synchronized void setGeofenceLocation(Location location) {
+ SharedPreferences.Editor editor = getPrefs().edit();
+ editor.putFloat(LAT_PREF, (float) location.getLatitude());
+ editor.putFloat(LON_PREF, (float) location.getLongitude());
+ apply(editor);
+ }
+
+ public synchronized void setMozApiKey(String s) {
+ setStringPref(MOZ_API_KEY, s);
+ }
+
+ ///
+ /// Getters
+ ///
+ public synchronized String getUserAgent() {
+ String s = getStringPref(USER_AGENT_PREF);
+ return (s == null)? AppGlobals.appName + "/" + AppGlobals.appVersionName : s;
+ }
+
+ public synchronized boolean getFirefoxScanEnabled() {
+ return getBoolPrefWithDefault(FIREFOX_SCAN_ENABLED, false);
+ }
+
+ public synchronized String getMozApiKey() {
+ String s = getStringPref(MOZ_API_KEY);
+ return (s == null)? "no-mozilla-api-key" : s;
+ }
+
+ public synchronized boolean getGeofenceEnabled() {
+ return getBoolPrefWithDefault(GEOFENCE_SWITCH, false);
+ }
+
+ public synchronized boolean getGeofenceHere() {
+ return getBoolPrefWithDefault(GEOFENCE_HERE, false);
+ }
+
+ public synchronized Location getGeofenceLocation() {
+ Location loc = new Location(AppGlobals.LOCATION_ORIGIN_INTERNAL);
+ loc.setLatitude(getPrefs().getFloat(LAT_PREF, 0));
+ loc.setLongitude(getPrefs().getFloat(LON_PREF,0));
+ return loc;
+ }
+
+ // This is the time an upload was last attempted, not necessarily successful.
+ // Used to ensure upload attempts aren't happening too frequently.
+ public synchronized long getLastAttemptedUploadTime() {
+ return getPrefs().getLong(LAST_ATTEMPTED_UPLOAD_TIME, 0);
+ }
+
+ public synchronized String getNickname() {
+ String nickname = getStringPref(NICKNAME_PREF);
+ if (nickname != null) {
+ nickname = nickname.trim();
+ }
+ return TextUtils.isEmpty(nickname) ? null : nickname;
+ }
+
+ public synchronized void setFirefoxScanEnabled(boolean on) {
+ setBoolPref(FIREFOX_SCAN_ENABLED, on);
+ }
+
+ public synchronized void setLastAttemptedUploadTime(long time) {
+ SharedPreferences.Editor editor = getPrefs().edit();
+ editor.putLong(LAST_ATTEMPTED_UPLOAD_TIME, time);
+ apply(editor);
+ }
+
+ public synchronized void setNickname(String nick) {
+ if (nick != null) {
+ nick = nick.trim();
+ if (nick.length() > 0) {
+ setStringPref(NICKNAME_PREF, nick);
+ }
+ }
+ }
+
+ public synchronized boolean getUseWifiOnly() {
+ return getBoolPrefWithDefault(WIFI_ONLY, true);
+ }
+
+ public synchronized boolean getWifiScanAlways() {
+ return getBoolPrefWithDefault(WIFI_SCAN_ALWAYS, false);
+ }
+
+ public synchronized void setWifiScanAlways(boolean b) {
+ setBoolPref(WIFI_SCAN_ALWAYS, b);
+ }
+
+ ///
+ /// Privates
+ ///
+
+ private String getStringPref(String key) {
+ return getPrefs().getString(key, null);
+ }
+
+ private boolean getBoolPrefWithDefault(String key, boolean def) {
+ return getPrefs().getBoolean(key, def);
+ }
+
+ private void setBoolPref(String key, Boolean state) {
+ SharedPreferences.Editor editor = getPrefs().edit();
+ editor.putBoolean(key,state);
+ apply(editor);
+ }
+
+ private void setStringPref(String key, String value) {
+ SharedPreferences.Editor editor = getPrefs().edit();
+ editor.putString(key, value);
+ apply(editor);
+ }
+
+ @TargetApi(9)
+ private static void apply(SharedPreferences.Editor editor) {
+ if (VERSION.SDK_INT >= 9) {
+ editor.apply();
+ } else if (!editor.commit()) {
+ Log.e(LOG_TAG, "", new IllegalStateException("commit() failed?!"));
+ }
+ }
+
+ private SharedPreferences getPrefs() {
+ return mSharedPrefs;
+ }
+}