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 native_get(String key)37 /*package*/ static String native_get(String key) { 38 return native_get(key, ""); 39 } 40 41 @LayoutlibDelegate native_get(String key, String def)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 native_get_int(String key, int def)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 native_get_long(String key, long def)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 native_get_boolean(String key, boolean def)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 native_set(String key, String def)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 native_add_change_callback()102 /*package*/ static void native_add_change_callback() { 103 // pass. 104 } 105 106 @LayoutlibDelegate native_report_sysprop_change()107 /*package*/ static void native_report_sysprop_change() { 108 // pass. 109 } 110 } 111