tenfourfox/mobile/android/base/java/org/mozilla/gecko/preferences/DistroSharedPrefsImport.java
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

62 lines
2.4 KiB
Java

/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
* 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.gecko.preferences;
import org.mozilla.gecko.GeckoSharedPrefs;
import org.mozilla.gecko.distribution.Distribution;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Iterator;
public class DistroSharedPrefsImport {
public static final String LOGTAG = DistroSharedPrefsImport.class.getSimpleName();
public static void importPreferences(final Context context, final Distribution distribution) {
if (distribution == null) {
return;
}
final JSONObject preferences = distribution.getAndroidPreferences();
if (preferences.length() == 0) {
return;
}
final Iterator<?> keys = preferences.keys();
final SharedPreferences.Editor sharedPreferences = GeckoSharedPrefs.forProfile(context).edit();
while (keys.hasNext()) {
final String key = (String) keys.next();
final Object value;
try {
value = preferences.get(key);
} catch (JSONException e) {
Log.e(LOGTAG, "Unable to completely process Android Preferences JSON.", e);
continue;
}
// We currently don't support Float preferences.
if (value instanceof String) {
sharedPreferences.putString(GeckoPreferences.NON_PREF_PREFIX + key, (String) value);
} else if (value instanceof Boolean) {
sharedPreferences.putBoolean(GeckoPreferences.NON_PREF_PREFIX + key, (boolean) value);
} else if (value instanceof Integer) {
sharedPreferences.putInt(GeckoPreferences.NON_PREF_PREFIX + key, (int) value);
} else if (value instanceof Long) {
sharedPreferences.putLong(GeckoPreferences.NON_PREF_PREFIX + key, (long) value);
} else {
Log.d(LOGTAG, "Unknown preference value type whilst importing android preferences from distro file.");
}
}
sharedPreferences.apply();
}
}