1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 package org.chromium.base.test.util;
7 import android.content.ContentResolver;
8 import android.content.Context;
9 import android.content.ContextWrapper;
10 import android.content.SharedPreferences;
11 import android.test.mock.MockContentResolver;
12 import android.test.mock.MockContext;
14 import java.util.HashMap;
18 * ContextWrapper that adds functionality for SharedPreferences and a way to set and retrieve flags.
20 public class AdvancedMockContext extends ContextWrapper {
22 private final MockContentResolver mMockContentResolver = new MockContentResolver();
24 private final Map<String, SharedPreferences> mSharedPreferences =
25 new HashMap<String, SharedPreferences>();
27 private final Map<String, Boolean> flags = new HashMap<String, Boolean>();
29 public AdvancedMockContext(Context base) {
33 public AdvancedMockContext() {
34 super(new MockContext());
38 public String getPackageName() {
39 return getBaseContext().getPackageName();
43 public Context getApplicationContext() {
48 public ContentResolver getContentResolver() {
49 return mMockContentResolver;
52 public MockContentResolver getMockContentResolver() {
53 return mMockContentResolver;
57 public SharedPreferences getSharedPreferences(String name, int mode) {
58 synchronized (mSharedPreferences) {
59 if (!mSharedPreferences.containsKey(name)) {
60 // Auto-create shared preferences to mimic Android Context behavior
61 mSharedPreferences.put(name, new InMemorySharedPreferences());
63 return mSharedPreferences.get(name);
67 public void addSharedPreferences(String name, Map<String, Object> data) {
68 synchronized (mSharedPreferences) {
69 mSharedPreferences.put(name, new InMemorySharedPreferences(data));
73 public void setFlag(String key) {
77 public void clearFlag(String key) {
81 public boolean isFlagSet(String key) {
82 return flags.containsKey(key) && flags.get(key);
85 public static class MapBuilder {
87 private final Map<String, Object> mData = new HashMap<String, Object>();
89 public static MapBuilder create() {
90 return new MapBuilder();
93 public MapBuilder add(String key, Object value) {
94 mData.put(key, value);
98 public Map<String, Object> build() {