• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License
15  */
16 
17 package com.android.tv.common.feature;
18 
19 import android.content.Context;
20 import com.android.tv.common.BooleanSystemProperty;
21 
22 /**
23  * Feature controlled by system property.
24  *
25  * <p>See {@link BooleanSystemProperty} for instructions on how to set using adb.
26  */
27 public final class PropertyFeature implements Feature {
28 
create(String key, boolean defaultValue)29     public static PropertyFeature create(String key, boolean defaultValue) {
30         return new PropertyFeature(key, defaultValue);
31     }
32 
33     private final BooleanSystemProperty mProperty;
34 
35     /**
36      * Create System Property backed feature.
37      *
38      * @param key the system property key. Length must be <= 31 characters.
39      * @param defaultValue the value to return if the property is undefined or empty.
40      */
PropertyFeature(String key, boolean defaultValue)41     private PropertyFeature(String key, boolean defaultValue) {
42         if (key.length() > 31) {
43             // Since Features are initialized at startup and the keys are static go ahead and kill
44             // the application.
45             throw new IllegalArgumentException(
46                     "Property keys have a max length of 31 characters but '"
47                             + key
48                             + "' is "
49                             + key.length()
50                             + " characters.");
51         }
52         mProperty = new BooleanSystemProperty(key, defaultValue);
53     }
54 
55     @Override
isEnabled(Context context)56     public boolean isEnabled(Context context) {
57         return mProperty.getValue();
58     }
59 
60     @Override
toString()61     public String toString() {
62         return mProperty.toString();
63     }
64 }
65