1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 package org.mozilla.gecko.background.testhelpers; 5 6 import android.content.SharedPreferences; 7 8 import java.util.HashMap; 9 import java.util.Map; 10 import java.util.Set; 11 12 /** 13 * A programmable mock content provider. 14 */ 15 public class MockSharedPreferences implements SharedPreferences, SharedPreferences.Editor { 16 private HashMap<String, Object> mValues; 17 private HashMap<String, Object> mTempValues; 18 MockSharedPreferences()19 public MockSharedPreferences() { 20 mValues = new HashMap<String, Object>(); 21 mTempValues = new HashMap<String, Object>(); 22 } 23 edit()24 public Editor edit() { 25 return this; 26 } 27 contains(String key)28 public boolean contains(String key) { 29 return mValues.containsKey(key); 30 } 31 getAll()32 public Map<String, ?> getAll() { 33 return new HashMap<String, Object>(mValues); 34 } 35 getBoolean(String key, boolean defValue)36 public boolean getBoolean(String key, boolean defValue) { 37 if (mValues.containsKey(key)) { 38 return ((Boolean)mValues.get(key)).booleanValue(); 39 } 40 return defValue; 41 } 42 getFloat(String key, float defValue)43 public float getFloat(String key, float defValue) { 44 if (mValues.containsKey(key)) { 45 return ((Float)mValues.get(key)).floatValue(); 46 } 47 return defValue; 48 } 49 getInt(String key, int defValue)50 public int getInt(String key, int defValue) { 51 if (mValues.containsKey(key)) { 52 return ((Integer)mValues.get(key)).intValue(); 53 } 54 return defValue; 55 } 56 getLong(String key, long defValue)57 public long getLong(String key, long defValue) { 58 if (mValues.containsKey(key)) { 59 return ((Long)mValues.get(key)).longValue(); 60 } 61 return defValue; 62 } 63 getString(String key, String defValue)64 public String getString(String key, String defValue) { 65 if (mValues.containsKey(key)) 66 return (String)mValues.get(key); 67 return defValue; 68 } 69 70 @SuppressWarnings("unchecked") getStringSet(String key, Set<String> defValues)71 public Set<String> getStringSet(String key, Set<String> defValues) { 72 if (mValues.containsKey(key)) { 73 return (Set<String>) mValues.get(key); 74 } 75 return defValues; 76 } 77 registerOnSharedPreferenceChangeListener( OnSharedPreferenceChangeListener listener)78 public void registerOnSharedPreferenceChangeListener( 79 OnSharedPreferenceChangeListener listener) { 80 throw new UnsupportedOperationException(); 81 } 82 unregisterOnSharedPreferenceChangeListener( OnSharedPreferenceChangeListener listener)83 public void unregisterOnSharedPreferenceChangeListener( 84 OnSharedPreferenceChangeListener listener) { 85 throw new UnsupportedOperationException(); 86 } 87 putBoolean(String key, boolean value)88 public Editor putBoolean(String key, boolean value) { 89 mTempValues.put(key, Boolean.valueOf(value)); 90 return this; 91 } 92 putFloat(String key, float value)93 public Editor putFloat(String key, float value) { 94 mTempValues.put(key, value); 95 return this; 96 } 97 putInt(String key, int value)98 public Editor putInt(String key, int value) { 99 mTempValues.put(key, value); 100 return this; 101 } 102 putLong(String key, long value)103 public Editor putLong(String key, long value) { 104 mTempValues.put(key, value); 105 return this; 106 } 107 putString(String key, String value)108 public Editor putString(String key, String value) { 109 mTempValues.put(key, value); 110 return this; 111 } 112 putStringSet(String key, Set<String> values)113 public Editor putStringSet(String key, Set<String> values) { 114 mTempValues.put(key, values); 115 return this; 116 } 117 remove(String key)118 public Editor remove(String key) { 119 mTempValues.remove(key); 120 return this; 121 } 122 clear()123 public Editor clear() { 124 mTempValues.clear(); 125 return this; 126 } 127 128 @SuppressWarnings("unchecked") commit()129 public boolean commit() { 130 mValues = (HashMap<String, Object>)mTempValues.clone(); 131 return true; 132 } 133 apply()134 public void apply() { 135 commit(); 136 } 137 } 138