1ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/* 2ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Copyright (C) 2016 The Android Open Source Project 3ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 4ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Licensed under the Apache License, Version 2.0 (the "License"); 5ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * you may not use this file except in compliance with the License. 6ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * You may obtain a copy of the License at 7ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 8ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * http://www.apache.org/licenses/LICENSE-2.0 9ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 10ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Unless required by applicable law or agreed to in writing, software 11ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * distributed under the License is distributed on an "AS IS" BASIS, 12ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * See the License for the specific language governing permissions and 14ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * limitations under the License 15ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 16ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 172f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanianpackage com.android.dialer.configprovider; 18ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 19ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.content.Context; 20ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.support.annotation.NonNull; 21ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.support.annotation.Nullable; 22ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.support.annotation.VisibleForTesting; 23c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanianimport android.support.v4.os.UserManagerCompat; 242f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanianimport com.android.dialer.common.Assert; 25ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 26ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/** Accessor for getting a {@link ConfigProvider}. */ 27ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianpublic class ConfigProviderBindings { 28ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 29ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private static ConfigProvider configProvider; 30c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian private static ConfigProvider configProviderStub; 31ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 32ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public static ConfigProvider get(@NonNull Context context) { 33ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Assert.isNotNull(context); 34ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (configProvider != null) { 35ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return configProvider; 36ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 37c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian if (!UserManagerCompat.isUserUnlocked(context)) { 38c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian if (configProviderStub == null) { 39c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian configProviderStub = new ConfigProviderStub(); 40c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 41c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian return configProviderStub; 42c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 432f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian configProvider = ConfigProviderComponent.get(context).getConfigProvider(); 44ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return configProvider; 45ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 46ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 47ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @VisibleForTesting 48ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public static void setForTesting(@Nullable ConfigProvider configProviderForTesting) { 49ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian configProvider = configProviderForTesting; 50ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 51ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 52ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private static class ConfigProviderStub implements ConfigProvider { 53ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 54ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public String getString(String key, String defaultValue) { 55ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return defaultValue; 56ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 57ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 58ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 59ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public long getLong(String key, long defaultValue) { 60ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return defaultValue; 61ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 62ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 63ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 64ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public boolean getBoolean(String key, boolean defaultValue) { 65ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return defaultValue; 66ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 67ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 68ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian} 69