15ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee/* 25ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * Copyright (C) 2010 The Android Open Source Project 35ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * 45ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * Licensed under the Apache License, Version 2.0 (the "License"); 55ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * you may not use this file except in compliance with the License. 65ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * You may obtain a copy of the License at 75ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * 85ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * http://www.apache.org/licenses/LICENSE-2.0 95ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * 105ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * Unless required by applicable law or agreed to in writing, software 115ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * distributed under the License is distributed on an "AS IS" BASIS, 125ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * See the License for the specific language governing permissions and 145ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * limitations under the License. 155ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee */ 165ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 1788bede3df22a27296afcec83c2f2f430d1bc1372Yorke Leepackage com.android.contacts.common.testing; 185ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 195ade0bb1757b216ace2f50d2357409bf9876a07aYorke Leeimport android.content.ContentResolver; 205ade0bb1757b216ace2f50d2357409bf9876a07aYorke Leeimport android.content.SharedPreferences; 215ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 225ade0bb1757b216ace2f50d2357409bf9876a07aYorke Leeimport com.google.common.annotations.VisibleForTesting; 235ade0bb1757b216ace2f50d2357409bf9876a07aYorke Leeimport com.google.common.collect.Maps; 245ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 255ade0bb1757b216ace2f50d2357409bf9876a07aYorke Leeimport java.util.HashMap; 265ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 275ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee/** 285ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * A mechanism for providing alternative (mock) services to the application 295ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * while running tests. Activities, Services and the Application should check 305ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee * with this class to see if a particular service has been overridden. 315ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee */ 3288bede3df22a27296afcec83c2f2f430d1bc1372Yorke Lee@NeededForTesting 335ade0bb1757b216ace2f50d2357409bf9876a07aYorke Leepublic class InjectedServices { 345ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 355ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee private ContentResolver mContentResolver; 365ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee private SharedPreferences mSharedPreferences; 375ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee private HashMap<String, Object> mSystemServices; 385ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 3988bede3df22a27296afcec83c2f2f430d1bc1372Yorke Lee @NeededForTesting 405ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee public void setContentResolver(ContentResolver contentResolver) { 415ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee this.mContentResolver = contentResolver; 425ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee } 435ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 445ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee public ContentResolver getContentResolver() { 455ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee return mContentResolver; 465ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee } 475ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 4888bede3df22a27296afcec83c2f2f430d1bc1372Yorke Lee @NeededForTesting 495ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee public void setSharedPreferences(SharedPreferences sharedPreferences) { 505ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee this.mSharedPreferences = sharedPreferences; 515ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee } 525ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 535ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee public SharedPreferences getSharedPreferences() { 545ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee return mSharedPreferences; 555ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee } 565ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 5788bede3df22a27296afcec83c2f2f430d1bc1372Yorke Lee @NeededForTesting 585ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee public void setSystemService(String name, Object service) { 595ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee if (mSystemServices == null) { 605ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee mSystemServices = Maps.newHashMap(); 615ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee } 625ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 635ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee mSystemServices.put(name, service); 645ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee } 655ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee 665ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee public Object getSystemService(String name) { 675ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee if (mSystemServices != null) { 685ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee return mSystemServices.get(name); 695ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee } 705ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee return null; 715ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee } 725ade0bb1757b216ace2f50d2357409bf9876a07aYorke Lee} 73