From 0f49025998e1d70e3b71a4157c5bab7ae7f6167d Mon Sep 17 00:00:00 2001 From: Deepanshu Gupta Date: Wed, 9 Jul 2014 17:27:07 -0700 Subject: Fix style resolution for styles with '.' [DO NOT MERGE] Bug: b.android.com/72698 Change-Id: I96fb549cf5787d9e8cde2245524a8173471a60ca (cherry picked from commit f2fa79e9b56b71f8aa30e6675255df69f88a173d) --- .../android/layoutlib/bridge/android/BridgeContext.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'tools') diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java index f5d64ba..93a98a0 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java @@ -613,19 +613,16 @@ public final class BridgeContext extends Context { } if (value != null) { - if ((value.getFirst() == ResourceType.STYLE) - || (value.getFirst() == ResourceType.ATTR)) { - // look for the style in the current theme, and its parent: - ResourceValue item = mRenderResources.findItemInTheme(value.getSecond(), + if (value.getFirst() == ResourceType.STYLE) { + // look for the style in all resources: + StyleResourceValue item = mRenderResources.getStyle(value.getSecond(), isFrameworkRes); if (item != null) { - if (item instanceof StyleResourceValue) { - if (defaultPropMap != null) { - defaultPropMap.put("style", item.getName()); - } - - defStyleValues = (StyleResourceValue)item; + if (defaultPropMap != null) { + defaultPropMap.put("style", item.getName()); } + + defStyleValues = item; } else { Bridge.getLog().error(null, String.format( -- cgit v1.1 From da28101757e62602a743b95488f4670f9759bb26 Mon Sep 17 00:00:00 2001 From: Deepanshu Gupta Date: Wed, 9 Jul 2014 17:27:07 -0700 Subject: Fix style resolution for styles with '.' [DO NOT MERGE] Bug: b.android.com/72698 Change-Id: I96fb549cf5787d9e8cde2245524a8173471a60ca (cherry picked from commit f2fa79e9b56b71f8aa30e6675255df69f88a173d) --- .../android/layoutlib/bridge/android/BridgeContext.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'tools') diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java index efcb35c..736d2fa 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java @@ -613,19 +613,16 @@ public final class BridgeContext extends Context { } if (value != null) { - if ((value.getFirst() == ResourceType.STYLE) - || (value.getFirst() == ResourceType.ATTR)) { - // look for the style in the current theme, and its parent: - ResourceValue item = mRenderResources.findItemInTheme(value.getSecond(), + if (value.getFirst() == ResourceType.STYLE) { + // look for the style in all resources: + StyleResourceValue item = mRenderResources.getStyle(value.getSecond(), isFrameworkRes); if (item != null) { - if (item instanceof StyleResourceValue) { - if (defaultPropMap != null) { - defaultPropMap.put("style", item.getName()); - } - - defStyleValues = (StyleResourceValue)item; + if (defaultPropMap != null) { + defaultPropMap.put("style", item.getName()); } + + defStyleValues = item; } else { Bridge.getLog().error(null, String.format( -- cgit v1.1 From 5af7324ace4f318d7395b680beabec7a0f0e39b3 Mon Sep 17 00:00:00 2001 From: Deepanshu Gupta Date: Wed, 9 Jul 2014 17:27:07 -0700 Subject: Fix style resolution for styles with '.' [DO NOT MERGE] Bug: b.android.com/72698 Change-Id: I96fb549cf5787d9e8cde2245524a8173471a60ca (cherry picked from commit f2fa79e9b56b71f8aa30e6675255df69f88a173d) --- .../android/layoutlib/bridge/android/BridgeContext.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'tools') diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java index b857883..a2fd593 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java @@ -607,19 +607,16 @@ public final class BridgeContext extends Context { } if (value != null) { - if ((value.getFirst() == ResourceType.STYLE) - || (value.getFirst() == ResourceType.ATTR)) { - // look for the style in the current theme, and its parent: - ResourceValue item = mRenderResources.findItemInTheme(value.getSecond(), + if (value.getFirst() == ResourceType.STYLE) { + // look for the style in all resources: + StyleResourceValue item = mRenderResources.getStyle(value.getSecond(), isFrameworkRes); if (item != null) { - if (item instanceof StyleResourceValue) { - if (defaultPropMap != null) { - defaultPropMap.put("style", item.getName()); - } - - defStyleValues = (StyleResourceValue)item; + if (defaultPropMap != null) { + defaultPropMap.put("style", item.getName()); } + + defStyleValues = item; } else { Bridge.getLog().error(null, String.format( -- cgit v1.1 From 10395cbb5cdec35a0ebee1d0b18b58c4803092a1 Mon Sep 17 00:00:00 2001 From: Deepanshu Gupta Date: Wed, 9 Jul 2014 18:10:34 -0700 Subject: Fix default level flags for bidi. [DO NOT MERGE] Bug: b.android.com/69432 Change-Id: I26ff34a6d1f85c928a9a1cb3dfd739fc7d3a8fb6 (cherry picked from commit 95e636130dfc2c0203f16f5315a7fe14b03eb689) --- tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tools') diff --git a/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java b/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java index 973fa0e..d9f4764 100644 --- a/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java +++ b/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java @@ -40,10 +40,10 @@ public class AndroidBidi_Delegate { case 1: // Layout.DIR_REQUEST_RTL break; // No change. case -1: - dir = Bidi.LEVEL_DEFAULT_LTR; + dir = Bidi.LEVEL_DEFAULT_RTL; break; case -2: - dir = Bidi.LEVEL_DEFAULT_RTL; + dir = Bidi.LEVEL_DEFAULT_LTR; break; default: // Invalid code. Log error, assume LEVEL_DEFAULT_LTR and continue. -- cgit v1.1 From 357ebfc5e43ecb35da9207d78a9a8a6c117a1002 Mon Sep 17 00:00:00 2001 From: Deepanshu Gupta Date: Wed, 9 Jul 2014 18:10:34 -0700 Subject: Fix default level flags for bidi. [DO NOT MERGE] Bug: b.android.com/69432 Change-Id: I26ff34a6d1f85c928a9a1cb3dfd739fc7d3a8fb6 (cherry picked from commit 95e636130dfc2c0203f16f5315a7fe14b03eb689) --- tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tools') diff --git a/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java b/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java index 973fa0e..d9f4764 100644 --- a/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java +++ b/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java @@ -40,10 +40,10 @@ public class AndroidBidi_Delegate { case 1: // Layout.DIR_REQUEST_RTL break; // No change. case -1: - dir = Bidi.LEVEL_DEFAULT_LTR; + dir = Bidi.LEVEL_DEFAULT_RTL; break; case -2: - dir = Bidi.LEVEL_DEFAULT_RTL; + dir = Bidi.LEVEL_DEFAULT_LTR; break; default: // Invalid code. Log error, assume LEVEL_DEFAULT_LTR and continue. -- cgit v1.1 From 505c675c3a536ac7c6ad264eb62542537532119c Mon Sep 17 00:00:00 2001 From: Deepanshu Gupta Date: Tue, 5 Aug 2014 17:33:35 -0700 Subject: Fix SystemProperties in LayoutLib. Not all System Properties were used via Build class. Also, properties like SDK_INT which called SystemProperties directly were not initialized properly. This change is essentially cherry picking of the relevant parts from the following commits: 984749bf75c9ce9d3401b8410ea7d6276544b6ee 167bc25bceea9280bbe4858db4cb8233f86ce325 Bug: http://b.android.com/73046 Change-Id: Ia0fb467ee6d5fdedda500d57d02be20006f115df --- .../bridge/src/android/os/Build_Delegate.java | 48 ---------- .../src/android/os/SystemProperties_Delegate.java | 106 +++++++++++++++++++++ .../android/tools/layoutlib/create/CreateInfo.java | 2 +- 3 files changed, 107 insertions(+), 49 deletions(-) delete mode 100644 tools/layoutlib/bridge/src/android/os/Build_Delegate.java create mode 100644 tools/layoutlib/bridge/src/android/os/SystemProperties_Delegate.java (limited to 'tools') diff --git a/tools/layoutlib/bridge/src/android/os/Build_Delegate.java b/tools/layoutlib/bridge/src/android/os/Build_Delegate.java deleted file mode 100644 index ff82a5e..0000000 --- a/tools/layoutlib/bridge/src/android/os/Build_Delegate.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.os; - -import com.android.layoutlib.bridge.Bridge; -import com.android.layoutlib.bridge.impl.DelegateManager; -import com.android.tools.layoutlib.annotations.LayoutlibDelegate; - -import java.util.Map; - -/** - * Delegate implementing the native methods of android.os.Build - * - * Through the layoutlib_create tool, the original native methods of Build have been replaced - * by calls to methods of the same name in this delegate class. - * - * Because it's a stateless class to start with, there's no need to keep a {@link DelegateManager} - * around to map int to instance of the delegate. - * - */ -public class Build_Delegate { - - @LayoutlibDelegate - /*package*/ static String getString(String property) { - Map properties = Bridge.getPlatformProperties(); - String value = properties.get(property); - if (value != null) { - return value; - } - - return Build.UNKNOWN; - } - -} diff --git a/tools/layoutlib/bridge/src/android/os/SystemProperties_Delegate.java b/tools/layoutlib/bridge/src/android/os/SystemProperties_Delegate.java new file mode 100644 index 0000000..c278557 --- /dev/null +++ b/tools/layoutlib/bridge/src/android/os/SystemProperties_Delegate.java @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.os; + +import com.android.layoutlib.bridge.Bridge; +import com.android.tools.layoutlib.annotations.LayoutlibDelegate; + +import java.util.Map; + +/** + * Delegate implementing the native methods of android.os.SystemProperties. + * + * Through the layoutlib_create tool, the original native methods of SystemProperties have been + * replaced by calls to methods of the same name in this delegate class. + * + * Because it's a stateless class to start with, there's no need to keep a {@code DelegateManager} + * around to map int to instance of the delegate. + */ +public class SystemProperties_Delegate { + + @LayoutlibDelegate + /*package*/ static String native_get(String key) { + return native_get(key, null); + } + + @LayoutlibDelegate + /*package*/ static String native_get(String key, String def) { + Map properties = Bridge.getPlatformProperties(); + String value = properties.get(key); + if (value != null) { + return value; + } + + return def; + } + + @LayoutlibDelegate + /*package*/ static int native_get_int(String key, int def) { + Map properties = Bridge.getPlatformProperties(); + String value = properties.get(key); + if (value != null) { + return Integer.decode(value); + } + + return def; + } + + @LayoutlibDelegate + /*package*/ static long native_get_long(String key, long def) { + Map properties = Bridge.getPlatformProperties(); + String value = properties.get(key); + if (value != null) { + return Long.decode(value); + } + + return def; + } + + /** + * Values 'n', 'no', '0', 'false' or 'off' are considered false. + * Values 'y', 'yes', '1', 'true' or 'on' are considered true. + */ + @LayoutlibDelegate + /*package*/ static boolean native_get_boolean(String key, boolean def) { + Map properties = Bridge.getPlatformProperties(); + String value = properties.get(key); + + if ("n".equals(value) || "no".equals(value) || "0".equals(value) || "false".equals(value) + || "off".equals(value)) { + return false; + } + //noinspection SimplifiableIfStatement + if ("y".equals(value) || "yes".equals(value) || "1".equals(value) || "true".equals(value) + || "on".equals(value)) { + return true; + } + + return def; + } + + @LayoutlibDelegate + /*package*/ static void native_set(String key, String def) { + Map properties = Bridge.getPlatformProperties(); + properties.put(key, def); + } + + @LayoutlibDelegate + /*package*/ static void native_add_change_callback() { + // pass. + } +} + diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java index b65137c..ff1d82a 100644 --- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java +++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java @@ -132,7 +132,6 @@ public final class CreateInfo implements ICreateInfo { "android.graphics.BitmapFactory#finishDecode", "android.os.Handler#sendMessageAtTime", "android.os.HandlerThread#run", - "android.os.Build#getString", "android.view.Display#getWindowManager", "android.view.LayoutInflater#rInflate", "android.view.LayoutInflater#parseInclude", @@ -188,6 +187,7 @@ public final class CreateInfo implements ICreateInfo { "android.graphics.Typeface", "android.graphics.Xfermode", "android.os.SystemClock", + "android.os.SystemProperties", "android.text.AndroidBidi", "android.text.format.Time", "android.util.FloatMath", -- cgit v1.1