1f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal/*
2f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal * Copyright (C) 2016 The Android Open Source Project
3f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal *
4f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal * Licensed under the Apache License, Version 2.0 (the "License");
5f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal * you may not use this file except in compliance with the License.
6f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal * You may obtain a copy of the License at
7f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal *
8f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal *      http://www.apache.org/licenses/LICENSE-2.0
9f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal *
10f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal * Unless required by applicable law or agreed to in writing, software
11f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal * distributed under the License is distributed on an "AS IS" BASIS,
12f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal * See the License for the specific language governing permissions and
14f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal * limitations under the License.
15f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal */
16f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal
17f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawalpackage com.android.server.wifi;
18f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal
19f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawalimport android.annotation.NonNull;
20f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal
21f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawalimport com.android.internal.annotations.VisibleForTesting;
22f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal
23f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal/** Abstraction of android.os.SystemProperties, to enable mocking out its static methods. */
24f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal@VisibleForTesting
25f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawalpublic interface PropertyService {
26f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal    /**
27f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal     * Get the current value of |key|.
28f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal     * @return value of |key|, if key exists; |defaultValue| or empty string otherwise
29f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal     */
30f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal    @NonNull
31f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal    String get(String key, String defaultValue);
32f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal
33f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal    /**
34f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal     * Set the value for |key|.
35f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal     * @throws IllegalArgumentException if the key exceeds 32 characters
36f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal     * @throws IllegalArgumentException if the value exceeds 92 characters
37f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal     */
38f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal    void set(String key, String val);
39e18d6159cfdfa9416386836d7b18249c82df0750Paul Stewart
40e18d6159cfdfa9416386836d7b18249c82df0750Paul Stewart    /**
41e18d6159cfdfa9416386836d7b18249c82df0750Paul Stewart     * Get the current value of |key|.
42e18d6159cfdfa9416386836d7b18249c82df0750Paul Stewart     * @return value of |key|, if key exists; |defaultValue| otherwise
43e18d6159cfdfa9416386836d7b18249c82df0750Paul Stewart     */
44e18d6159cfdfa9416386836d7b18249c82df0750Paul Stewart    boolean getBoolean(String key, boolean defaultValue);
45e18d6159cfdfa9416386836d7b18249c82df0750Paul Stewart
461d4d6b7b1fe4d95ad04c8f0c501e233be4160f90Roshan Pius    /**
471d4d6b7b1fe4d95ad04c8f0c501e233be4160f90Roshan Pius     * Get the current value of |key|.
481d4d6b7b1fe4d95ad04c8f0c501e233be4160f90Roshan Pius     * @return value of |key|, if key exists; |defaultValue| otherwise
491d4d6b7b1fe4d95ad04c8f0c501e233be4160f90Roshan Pius     */
501d4d6b7b1fe4d95ad04c8f0c501e233be4160f90Roshan Pius    String getString(String key, String defaultValue);
51f74a1cfd50d7b44aa7e4b598eb229cd464983dfemukesh agrawal}
52