Apilint: lint for URL/URI
Test: python apilint_test.py
Change-Id: Iebe3b48df7ed69e0b5f5ff372b72f68ca9f8efec
diff --git a/tools/apilint/apilint.py b/tools/apilint/apilint.py
index 52707c2..ddfee62 100644
--- a/tools/apilint/apilint.py
+++ b/tools/apilint/apilint.py
@@ -1262,6 +1262,19 @@
if arg in bad:
error(clazz, m, "CL2", "Argument is concrete collection; must be higher-level interface")
+def verify_uris(clazz):
+ bad = ["java.net.URL", "java.net.URI", "android.net.URL"]
+
+ for f in clazz.fields:
+ if f.typ in bad:
+ error(clazz, f, None, "Field must be android.net.Uri instead of " + f.typ)
+
+ for m in clazz.methods + clazz.ctors:
+ if m.typ in bad:
+ error(clazz, m, None, "Must return android.net.Uri instead of " + m.typ)
+ for arg in m.args:
+ if arg in bad:
+ error(clazz, m, None, "Argument must take android.net.Uri instead of " + arg)
def verify_flags(clazz):
"""Verifies that flags are non-overlapping."""
@@ -1982,6 +1995,7 @@
verify_layering(clazz)
verify_boolean(clazz)
verify_collections(clazz)
+ verify_uris(clazz)
verify_flags(clazz)
verify_exception(clazz)
if not ALLOW_GOOGLE: verify_google(clazz)