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