Fix include tag rendering. [DO NOT MERGE]

A missing catch clause caused rendering to be failed when there is an
include tag that doesn't specify layout_width and layout_height. Also
improve the error messages to make debugging easier next time.

Change-Id: I617762636973a010b34da167c7b5fcd328b7d178
(cherry picked from commit 21b5645733)
This commit is contained in:
Deepanshu Gupta
2015-05-19 11:55:15 -07:00
parent f6b0854745
commit 92480a9ad8
2 changed files with 11 additions and 11 deletions

View File

@@ -444,7 +444,7 @@ public final class BridgeTypedArray extends TypedArray {
@Override
public int getDimensionPixelSize(int index, int defValue) {
try {
return getDimension(index);
return getDimension(index, null);
} catch (RuntimeException e) {
String s = getString(index);
@@ -474,12 +474,12 @@ public final class BridgeTypedArray extends TypedArray {
@Override
public int getLayoutDimension(int index, String name) {
try {
// this will throw an exception
return getDimension(index);
// this will throw an exception if not found.
return getDimension(index, name);
} catch (RuntimeException e) {
if (LayoutInflater_Delegate.sIsInInclude) {
throw new RuntimeException();
throw new RuntimeException("Layout Dimension '" + name + "' not found.");
}
Bridge.getLog().warning(LayoutLog.TAG_RESOURCES_FORMAT,
@@ -494,9 +494,13 @@ public final class BridgeTypedArray extends TypedArray {
return getDimensionPixelSize(index, defValue);
}
private int getDimension(int index) {
/** @param name attribute name, used for error reporting. */
private int getDimension(int index, @Nullable String name) {
String s = getString(index);
if (s == null) {
if (name != null) {
throw new RuntimeException("Attribute '" + name + "' not found");
}
throw new RuntimeException();
}
// Check if the value is a magic constant that doesn't require a unit.

View File

@@ -134,12 +134,8 @@ public class LayoutInflater_Delegate {
params = group.generateLayoutParams(attrs);
} catch (RuntimeException e) {
// ---- START CHANGES
sIsInInclude = false;
// ---- END CHANGES
params = group.generateLayoutParams(childAttrs);
} catch (RuntimeException ignored) {
// Ignore, just fail over to child attrs.
} finally {
// ---- START CHANGES
sIsInInclude = false;