Home | History | Annotate | Download | only in os
      1 /*
      2  * Copyright (C) 2014 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 android.os;
     18 
     19 import com.android.layoutlib.bridge.Bridge;
     20 import com.android.layoutlib.bridge.impl.DelegateManager;
     21 import com.android.tools.layoutlib.annotations.LayoutlibDelegate;
     22 
     23 import java.util.Map;
     24 
     25 /**
     26  * Delegate implementing the native methods of android.os.SystemProperties
     27  *
     28  * Through the layoutlib_create tool, the original native methods of SystemProperties have been
     29  * replaced by calls to methods of the same name in this delegate class.
     30  *
     31  * Because it's a stateless class to start with, there's no need to keep a {@link DelegateManager}
     32  * around to map int to instance of the delegate.
     33  */
     34 public class SystemProperties_Delegate {
     35 
     36     @LayoutlibDelegate
     37     /*package*/ static String native_get(String key) {
     38         return native_get(key, "");
     39     }
     40 
     41     @LayoutlibDelegate
     42     /*package*/ static String native_get(String key, String def) {
     43         Map<String, String> properties = Bridge.getPlatformProperties();
     44         String value = properties.get(key);
     45         if (value != null) {
     46             return value;
     47         }
     48 
     49         return def;
     50     }
     51     @LayoutlibDelegate
     52     /*package*/ static int native_get_int(String key, int def) {
     53         Map<String, String> properties = Bridge.getPlatformProperties();
     54         String value = properties.get(key);
     55         if (value != null) {
     56             return Integer.decode(value);
     57         }
     58 
     59         return def;
     60     }
     61 
     62     @LayoutlibDelegate
     63     /*package*/ static long native_get_long(String key, long def) {
     64         Map<String, String> properties = Bridge.getPlatformProperties();
     65         String value = properties.get(key);
     66         if (value != null) {
     67             return Long.decode(value);
     68         }
     69 
     70         return def;
     71     }
     72 
     73     /**
     74      * Values 'n', 'no', '0', 'false' or 'off' are considered false.
     75      * Values 'y', 'yes', '1', 'true' or 'on' are considered true.
     76      */
     77     @LayoutlibDelegate
     78     /*package*/ static boolean native_get_boolean(String key, boolean def) {
     79         Map<String, String> properties = Bridge.getPlatformProperties();
     80         String value = properties.get(key);
     81 
     82         if ("n".equals(value) || "no".equals(value) || "0".equals(value) || "false".equals(value)
     83                 || "off".equals(value)) {
     84             return false;
     85         }
     86         //noinspection SimplifiableIfStatement
     87         if ("y".equals(value) || "yes".equals(value) || "1".equals(value) || "true".equals(value)
     88                 || "on".equals(value)) {
     89             return true;
     90         }
     91 
     92         return def;
     93     }
     94 
     95     @LayoutlibDelegate
     96     /*package*/ static void native_set(String key, String def) {
     97         Map<String, String> properties = Bridge.getPlatformProperties();
     98         properties.put(key, def);
     99     }
    100 
    101     @LayoutlibDelegate
    102     /*package*/ static void native_add_change_callback() {
    103         // pass.
    104     }
    105 }
    106