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