135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki/* 235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * Copyright (C) 2010 The Android Open Source Project 335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * 435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * Licensed under the Apache License, Version 2.0 (the "License"); 535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * you may not use this file except in compliance with the License. 635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * You may obtain a copy of the License at 735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * 835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * http://www.apache.org/licenses/LICENSE-2.0 935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * 1035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * Unless required by applicable law or agreed to in writing, software 1135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * distributed under the License is distributed on an "AS IS" BASIS, 1235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * See the License for the specific language governing permissions and 1435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * limitations under the License. 1535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki */ 1635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 1735997f3fdee2984b6d5373326110eda26929001aMakoto Onukipackage com.android.providers.contacts.util; 1835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 1935997f3fdee2984b6d5373326110eda26929001aMakoto Onukiimport android.content.SharedPreferences; 2035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 2138210445730ee04c351c7cc1b3800cfe23e34325Makoto Onukiimport com.google.android.collect.Maps; 2238210445730ee04c351c7cc1b3800cfe23e34325Makoto Onuki 2335997f3fdee2984b6d5373326110eda26929001aMakoto Onukiimport java.util.HashMap; 2435997f3fdee2984b6d5373326110eda26929001aMakoto Onukiimport java.util.Map; 2535997f3fdee2984b6d5373326110eda26929001aMakoto Onukiimport java.util.Set; 2635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 2735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 2835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki/** 2935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki * A programmable mock content provider. 3035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki */ 3135997f3fdee2984b6d5373326110eda26929001aMakoto Onukipublic class MockSharedPreferences implements SharedPreferences, SharedPreferences.Editor { 3235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 3335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki private HashMap<String, Object> mValues = Maps.newHashMap(); 3435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki private HashMap<String, Object> mTempValues = Maps.newHashMap(); 3535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 3635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public Editor edit() { 3735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return this; 3835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 3935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 4035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public boolean contains(String key) { 4135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return mValues.containsKey(key); 4235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 4335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 4435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public Map<String, ?> getAll() { 4535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return new HashMap<String, Object>(mValues); 4635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 4735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 4835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public boolean getBoolean(String key, boolean defValue) { 4935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki if (mValues.containsKey(key)) { 5035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return ((Boolean)mValues.get(key)).booleanValue(); 5135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 5235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return defValue; 5335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 5435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 5535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public float getFloat(String key, float defValue) { 5635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki if (mValues.containsKey(key)) { 5735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return ((Float)mValues.get(key)).floatValue(); 5835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 5935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return defValue; 6035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 6135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 6235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public int getInt(String key, int defValue) { 6335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki if (mValues.containsKey(key)) { 6435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return ((Integer)mValues.get(key)).intValue(); 6535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 6635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return defValue; 6735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 6835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 6935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public long getLong(String key, long defValue) { 7035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki if (mValues.containsKey(key)) { 7135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return ((Long)mValues.get(key)).longValue(); 7235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 7335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return defValue; 7435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 7535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 7635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public String getString(String key, String defValue) { 7735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki if (mValues.containsKey(key)) 7835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return (String)mValues.get(key); 7935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return defValue; 8035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 8135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 8235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki @SuppressWarnings("unchecked") 8335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public Set<String> getStringSet(String key, Set<String> defValues) { 8435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki if (mValues.containsKey(key)) { 8535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return (Set<String>) mValues.get(key); 8635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 8735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return defValues; 8835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 8935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 9035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public void registerOnSharedPreferenceChangeListener( 9135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki OnSharedPreferenceChangeListener listener) { 9235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki throw new UnsupportedOperationException(); 9335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 9435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 9535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public void unregisterOnSharedPreferenceChangeListener( 9635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki OnSharedPreferenceChangeListener listener) { 9735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki throw new UnsupportedOperationException(); 9835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 9935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 10035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public Editor putBoolean(String key, boolean value) { 10135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki mTempValues.put(key, Boolean.valueOf(value)); 10235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return this; 10335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 10435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 10535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public Editor putFloat(String key, float value) { 10635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki mTempValues.put(key, value); 10735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return this; 10835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 10935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 11035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public Editor putInt(String key, int value) { 11135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki mTempValues.put(key, value); 11235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return this; 11335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 11435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 11535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public Editor putLong(String key, long value) { 11635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki mTempValues.put(key, value); 11735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return this; 11835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 11935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 12035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public Editor putString(String key, String value) { 12135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki mTempValues.put(key, value); 12235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return this; 12335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 12435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 12535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public Editor putStringSet(String key, Set<String> values) { 12635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki mTempValues.put(key, values); 12735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return this; 12835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 12935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 13035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public Editor remove(String key) { 13135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki mTempValues.remove(key); 13235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return this; 13335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 13435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 13535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public Editor clear() { 13635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki mTempValues.clear(); 13735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return this; 13835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 13935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 14035997f3fdee2984b6d5373326110eda26929001aMakoto Onuki @SuppressWarnings("unchecked") 14135997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public boolean commit() { 14235997f3fdee2984b6d5373326110eda26929001aMakoto Onuki mValues = (HashMap<String, Object>)mTempValues.clone(); 14335997f3fdee2984b6d5373326110eda26929001aMakoto Onuki return true; 14435997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 14535997f3fdee2984b6d5373326110eda26929001aMakoto Onuki 14635997f3fdee2984b6d5373326110eda26929001aMakoto Onuki public void apply() { 14735997f3fdee2984b6d5373326110eda26929001aMakoto Onuki commit(); 14835997f3fdee2984b6d5373326110eda26929001aMakoto Onuki } 14935997f3fdee2984b6d5373326110eda26929001aMakoto Onuki} 150