| Index: base/test/android/javatests/src/org/chromium/base/test/util/InMemorySharedPreferences.java
|
| diff --git a/base/test/android/javatests/src/org/chromium/base/test/util/InMemorySharedPreferences.java b/base/test/android/javatests/src/org/chromium/base/test/util/InMemorySharedPreferences.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e42562b6b237f88598eb73f956900fdadadd8229
|
| --- /dev/null
|
| +++ b/base/test/android/javatests/src/org/chromium/base/test/util/InMemorySharedPreferences.java
|
| @@ -0,0 +1,187 @@
|
| +// Copyright (c) 2013 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.base.test.util;
|
| +
|
| +import android.content.SharedPreferences;
|
| +
|
| +import java.util.HashMap;
|
| +import java.util.Map;
|
| +import java.util.Set;
|
| +
|
| +/**
|
| + * An implementation of SharedPreferences that can be used in tests.
|
| + * <p/>
|
| + * It keeps all state in memory, and there is no difference between apply() and commit().
|
| + */
|
| +public class InMemorySharedPreferences implements SharedPreferences {
|
| +
|
| + private final Map<String, Object> mData;
|
| +
|
| + private final SharedPreferences.Editor mEditor = new InMemoryEditor();
|
| +
|
| + public InMemorySharedPreferences() {
|
| + mData = new HashMap<String, Object>();
|
| + }
|
| +
|
| + public InMemorySharedPreferences(Map<String, Object> data) {
|
| + mData = data;
|
| + }
|
| +
|
| + @Override
|
| + public Map<String, ?> getAll() {
|
| + return mData;
|
| + }
|
| +
|
| + @Override
|
| + public String getString(String key, String defValue) {
|
| + if (mData.containsKey(key)) {
|
| + return (String) mData.get(key);
|
| + }
|
| + return defValue;
|
| + }
|
| +
|
| + @SuppressWarnings("unchecked")
|
| + @Override
|
| + public Set<String> getStringSet(String key, Set<String> defValues) {
|
| + if (mData.containsKey(key)) {
|
| + return (Set<String>) mData.get(key);
|
| + }
|
| + return defValues;
|
| + }
|
| +
|
| + @Override
|
| + public int getInt(String key, int defValue) {
|
| + if (mData.containsKey(key)) {
|
| + return (Integer) mData.get(key);
|
| + }
|
| + return defValue;
|
| + }
|
| +
|
| + @Override
|
| + public long getLong(String key, long defValue) {
|
| + if (mData.containsKey(key)) {
|
| + return (Long) mData.get(key);
|
| + }
|
| + return defValue;
|
| + }
|
| +
|
| + @Override
|
| + public float getFloat(String key, float defValue) {
|
| + if (mData.containsKey(key)) {
|
| + return (Float) mData.get(key);
|
| + }
|
| + return defValue;
|
| + }
|
| +
|
| + @Override
|
| + public boolean getBoolean(String key, boolean defValue) {
|
| + if (mData.containsKey(key)) {
|
| + return (Boolean) mData.get(key);
|
| + }
|
| + return defValue;
|
| + }
|
| +
|
| + @Override
|
| + public boolean contains(String key) {
|
| + return mData.containsKey(key);
|
| + }
|
| +
|
| + @Override
|
| + public SharedPreferences.Editor edit() {
|
| + return mEditor;
|
| + }
|
| +
|
| + @Override
|
| + public void registerOnSharedPreferenceChangeListener(
|
| + SharedPreferences.OnSharedPreferenceChangeListener
|
| + listener) {
|
| + }
|
| +
|
| + @Override
|
| + public void unregisterOnSharedPreferenceChangeListener(
|
| + SharedPreferences.OnSharedPreferenceChangeListener listener) {
|
| + }
|
| +
|
| + private class InMemoryEditor implements SharedPreferences.Editor {
|
| +
|
| + private boolean mClearCalled;
|
| +
|
| + private final Map<String, Object> mChanges = new HashMap<String, Object>();
|
| +
|
| + @Override
|
| + public SharedPreferences.Editor putString(String key, String value) {
|
| + mChanges.put(key, value);
|
| + return this;
|
| + }
|
| +
|
| + @Override
|
| + public SharedPreferences.Editor putStringSet(String key, Set<String> values) {
|
| + mChanges.put(key, values);
|
| + return this;
|
| + }
|
| +
|
| + @Override
|
| + public SharedPreferences.Editor putInt(String key, int value) {
|
| + mChanges.put(key, value);
|
| + return this;
|
| + }
|
| +
|
| + @Override
|
| + public SharedPreferences.Editor putLong(String key, long value) {
|
| + mChanges.put(key, value);
|
| + return this;
|
| + }
|
| +
|
| + @Override
|
| + public SharedPreferences.Editor putFloat(String key, float value) {
|
| + mChanges.put(key, value);
|
| + return this;
|
| + }
|
| +
|
| + @Override
|
| + public SharedPreferences.Editor putBoolean(String key, boolean value) {
|
| + mChanges.put(key, value);
|
| + return this;
|
| + }
|
| +
|
| + @Override
|
| + public SharedPreferences.Editor remove(String key) {
|
| + // Magic value for removes
|
| + mChanges.put(key, this);
|
| + return this;
|
| + }
|
| +
|
| + @Override
|
| + public SharedPreferences.Editor clear() {
|
| + mClearCalled = true;
|
| + return this;
|
| + }
|
| +
|
| + @Override
|
| + public boolean commit() {
|
| + apply();
|
| + return true;
|
| + }
|
| +
|
| + @Override
|
| + public void apply() {
|
| + if (mClearCalled) {
|
| + mData.clear();
|
| + }
|
| + for (Map.Entry<String, Object> entry : mChanges.entrySet()) {
|
| + String key = entry.getKey();
|
| + Object value = entry.getValue();
|
| + if (value == this) {
|
| + // Special value for removal
|
| + mData.remove(key);
|
| + } else {
|
| + mData.put(key, value);
|
| + }
|
| + }
|
| + }
|
| +
|
| + }
|
| +
|
| +}
|
|
|