Home | History | Annotate | Download | only in feature
      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 
     21 import com.android.tv.common.BooleanSystemProperty;
     22 
     23 /**
     24  * Feature controlled by system property.
     25  *
     26  * <p>See {@link BooleanSystemProperty} for instructions on how to set using adb.
     27  */
     28 public final class PropertyFeature implements Feature {
     29     private final BooleanSystemProperty mProperty;
     30 
     31     /**
     32      * Create System Property backed feature.
     33      *
     34      * @param key the system property key.  Length must be <= 31 characters.
     35      * @param defaultValue the value to return if the property is undefined or empty.
     36      */
     37     public PropertyFeature(String key, boolean defaultValue) {
     38         if (key.length() > 31) {
     39             // Since Features are initialized at startup and the keys are static go ahead and kill
     40             // the application.
     41             throw new IllegalArgumentException(
     42                     "Property keys have a max length of 31 characters but '" + key + "' is " + key
     43                             .length() + " characters.");
     44         }
     45         mProperty = new BooleanSystemProperty(key, defaultValue);
     46     }
     47 
     48     @Override
     49     public boolean isEnabled(Context context) {
     50         return mProperty.getValue();
     51     }
     52 
     53     @Override
     54     public String toString() {
     55         return mProperty.toString();
     56     }
     57 }
     58