summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorYigit Boyar <yboyar@google.com>2015-09-29 23:47:00 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-09-29 23:47:00 +0000
commit74c69a5dfad22472ceace07480e564610dc481e0 (patch)
tree279f8612e521b329aaedff6f2d7af7a8ca468025 /compiler
parenta128d1c99ea98bb48c45d648906652e3d618d513 (diff)
parentf01c66d7aaafd713de64b499c568f5870855dcd5 (diff)
downloaddata-binding-74c69a5dfad22472ceace07480e564610dc481e0.tar.gz
Merge "Load full SDK table" into studio-master-dev
Diffstat (limited to 'compiler')
-rw-r--r--compiler/src/main/java/android/databinding/tool/reflection/SdkUtil.java20
-rw-r--r--compiler/src/test/java/android/databinding/tool/reflection/SdkVersionTest.java8
2 files changed, 19 insertions, 9 deletions
diff --git a/compiler/src/main/java/android/databinding/tool/reflection/SdkUtil.java b/compiler/src/main/java/android/databinding/tool/reflection/SdkUtil.java
index 4b5e09fc..e8c962ef 100644
--- a/compiler/src/main/java/android/databinding/tool/reflection/SdkUtil.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/SdkUtil.java
@@ -64,7 +64,7 @@ public class SdkUtil {
int result = sApiChecker.getMinApi(classDesc, methodDesc);
L.d("checking method api for %s, class:%s method:%s. result: %d", modelMethod.getName(),
classDesc, methodDesc, result);
- if (result > 1) {
+ if (result > 0) {
return result;
}
declaringClass = declaringClass.getSuperclass();
@@ -74,7 +74,7 @@ public class SdkUtil {
static class ApiChecker {
- private Map<String, Integer> mFullLookup = new HashMap<String, Integer>();
+ private Map<String, Integer> mFullLookup;
private Document mDoc;
@@ -103,6 +103,7 @@ public class SdkUtil {
private void buildFullLookup() throws XPathExpressionException {
NodeList allClasses = mDoc.getChildNodes().item(0).getChildNodes();
+ mFullLookup = new HashMap<>(allClasses.getLength() * 4);
for (int j = 0; j < allClasses.getLength(); j++) {
Node node = allClasses.item(j);
if (node.getNodeType() != Node.ELEMENT_NODE || !"class"
@@ -122,16 +123,17 @@ public class SdkUtil {
}
int methodSince = getSince(child);
int since = Math.max(classSince, methodSince);
- if (since > SdkUtil.sMinSdk) {
- String methodDesc = child.getAttributes().getNamedItem("name")
- .getNodeValue();
- String key = cacheKey(classDesc, methodDesc);
- mFullLookup.put(key, since);
- }
+ String methodDesc = child.getAttributes().getNamedItem("name")
+ .getNodeValue();
+ String key = cacheKey(classDesc, methodDesc);
+ mFullLookup.put(key, since);
}
}
}
+ /**
+ * Returns 0 if we cannot find the API level for the method.
+ */
public int getMinApi(String classDesc, String methodOrFieldDesc) {
if (mDoc == null || mXPath == null) {
return 1;
@@ -141,7 +143,7 @@ public class SdkUtil {
}
final String key = cacheKey(classDesc, methodOrFieldDesc);
Integer since = mFullLookup.get(key);
- return since == null ? 1 : since;
+ return since == null ? 0 : since;
}
private static String cacheKey(String classDesc, String methodOrFieldDesc) {
diff --git a/compiler/src/test/java/android/databinding/tool/reflection/SdkVersionTest.java b/compiler/src/test/java/android/databinding/tool/reflection/SdkVersionTest.java
index 00456645..b4ecb019 100644
--- a/compiler/src/test/java/android/databinding/tool/reflection/SdkVersionTest.java
+++ b/compiler/src/test/java/android/databinding/tool/reflection/SdkVersionTest.java
@@ -56,4 +56,12 @@ public class SdkVersionTest {
ModelMethod setElevation = view.getMethods("testCustomCode", 0)[0];
assertEquals(1, SdkUtil.getMinApi(setElevation));
}
+
+ @Test
+ public void testSetForeground() {
+ ModelClass view = ModelAnalyzer.getInstance()
+ .findClass("android.widget.FrameLayout", null);
+ ModelMethod setForeground = view.getMethods("setForeground", 1)[0];
+ assertEquals(1, SdkUtil.getMinApi(setForeground));
+ }
}