Merge "check-flagged-apis: add support for method with parameters" into main
This commit is contained in:
@@ -34,6 +34,9 @@ private val API_SIGNATURE =
|
|||||||
ctor @FlaggedApi("android.flag.foo") public Clazz();
|
ctor @FlaggedApi("android.flag.foo") public Clazz();
|
||||||
field @FlaggedApi("android.flag.foo") public static final int FOO = 1; // 0x1
|
field @FlaggedApi("android.flag.foo") public static final int FOO = 1; // 0x1
|
||||||
method @FlaggedApi("android.flag.foo") public int getErrorCode();
|
method @FlaggedApi("android.flag.foo") public int getErrorCode();
|
||||||
|
method @FlaggedApi("android.flag.foo") public boolean setData(int, int[][], @NonNull android.util.Utility<T, U>);
|
||||||
|
method @FlaggedApi("android.flag.foo") public boolean setVariableData(int, android.util.Atom...);
|
||||||
|
method @FlaggedApi("android.flag.foo") public boolean innerClassArg(android.Clazz.Builder);
|
||||||
}
|
}
|
||||||
@FlaggedApi("android.flag.bar") public static class Clazz.Builder {
|
@FlaggedApi("android.flag.bar") public static class Clazz.Builder {
|
||||||
}
|
}
|
||||||
@@ -49,6 +52,9 @@ private val API_VERSIONS =
|
|||||||
<method name="<init>()V"/>
|
<method name="<init>()V"/>
|
||||||
<field name="FOO"/>
|
<field name="FOO"/>
|
||||||
<method name="getErrorCode()I"/>
|
<method name="getErrorCode()I"/>
|
||||||
|
<method name="setData(I[[ILandroid/util/Utility;)Z"/>
|
||||||
|
<method name="setVariableData(I[Landroid/util/Atom;)Z"/>
|
||||||
|
<method name="innerClassArg(Landroid/Clazz${"$"}Builder;)"/>
|
||||||
</class>
|
</class>
|
||||||
<class name="android/Clazz${"$"}Builder" since="2">
|
<class name="android/Clazz${"$"}Builder" since="2">
|
||||||
</class>
|
</class>
|
||||||
@@ -93,6 +99,15 @@ class CheckFlaggedApisTest {
|
|||||||
Pair(Symbol("android/Clazz/Clazz()"), Flag("android.flag.foo")),
|
Pair(Symbol("android/Clazz/Clazz()"), Flag("android.flag.foo")),
|
||||||
Pair(Symbol("android/Clazz/FOO"), Flag("android.flag.foo")),
|
Pair(Symbol("android/Clazz/FOO"), Flag("android.flag.foo")),
|
||||||
Pair(Symbol("android/Clazz/getErrorCode()"), Flag("android.flag.foo")),
|
Pair(Symbol("android/Clazz/getErrorCode()"), Flag("android.flag.foo")),
|
||||||
|
Pair(
|
||||||
|
Symbol("android/Clazz/setData(I[[ILandroid/util/Utility;)"),
|
||||||
|
Flag("android.flag.foo")),
|
||||||
|
Pair(
|
||||||
|
Symbol("android/Clazz/setVariableData(I[Landroid/util/Atom;)"),
|
||||||
|
Flag("android.flag.foo")),
|
||||||
|
Pair(
|
||||||
|
Symbol("android/Clazz/innerClassArg(Landroid/Clazz/Builder;)"),
|
||||||
|
Flag("android.flag.foo")),
|
||||||
Pair(Symbol("android/Clazz/Builder"), Flag("android.flag.bar")),
|
Pair(Symbol("android/Clazz/Builder"), Flag("android.flag.bar")),
|
||||||
)
|
)
|
||||||
val actual = parseApiSignature("in-memory", API_SIGNATURE.byteInputStream())
|
val actual = parseApiSignature("in-memory", API_SIGNATURE.byteInputStream())
|
||||||
@@ -115,6 +130,9 @@ class CheckFlaggedApisTest {
|
|||||||
Symbol("android/Clazz/Clazz()"),
|
Symbol("android/Clazz/Clazz()"),
|
||||||
Symbol("android/Clazz/FOO"),
|
Symbol("android/Clazz/FOO"),
|
||||||
Symbol("android/Clazz/getErrorCode()"),
|
Symbol("android/Clazz/getErrorCode()"),
|
||||||
|
Symbol("android/Clazz/setData(I[[ILandroid/util/Utility;)"),
|
||||||
|
Symbol("android/Clazz/setVariableData(I[Landroid/util/Atom;)"),
|
||||||
|
Symbol("android/Clazz/innerClassArg(Landroid/Clazz/Builder;)"),
|
||||||
Symbol("android/Clazz/Builder"),
|
Symbol("android/Clazz/Builder"),
|
||||||
)
|
)
|
||||||
val actual = parseApiVersions(API_VERSIONS.byteInputStream())
|
val actual = parseApiVersions(API_VERSIONS.byteInputStream())
|
||||||
@@ -142,6 +160,15 @@ class CheckFlaggedApisTest {
|
|||||||
DisabledFlaggedApiIsPresentError(Symbol("android/Clazz/FOO"), Flag("android.flag.foo")),
|
DisabledFlaggedApiIsPresentError(Symbol("android/Clazz/FOO"), Flag("android.flag.foo")),
|
||||||
DisabledFlaggedApiIsPresentError(
|
DisabledFlaggedApiIsPresentError(
|
||||||
Symbol("android/Clazz/getErrorCode()"), Flag("android.flag.foo")),
|
Symbol("android/Clazz/getErrorCode()"), Flag("android.flag.foo")),
|
||||||
|
DisabledFlaggedApiIsPresentError(
|
||||||
|
Symbol("android/Clazz/setData(I[[ILandroid/util/Utility;)"),
|
||||||
|
Flag("android.flag.foo")),
|
||||||
|
DisabledFlaggedApiIsPresentError(
|
||||||
|
Symbol("android/Clazz/setVariableData(I[Landroid/util/Atom;)"),
|
||||||
|
Flag("android.flag.foo")),
|
||||||
|
DisabledFlaggedApiIsPresentError(
|
||||||
|
Symbol("android/Clazz/innerClassArg(Landroid/Clazz/Builder;)"),
|
||||||
|
Flag("android.flag.foo")),
|
||||||
DisabledFlaggedApiIsPresentError(
|
DisabledFlaggedApiIsPresentError(
|
||||||
Symbol("android/Clazz/Builder"), Flag("android.flag.bar")),
|
Symbol("android/Clazz/Builder"), Flag("android.flag.bar")),
|
||||||
)
|
)
|
||||||
|
@@ -178,7 +178,6 @@ The tool will exit with a non-zero exit code if any flagged APIs are found to be
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal fun parseApiSignature(path: String, input: InputStream): Set<Pair<Symbol, Flag>> {
|
internal fun parseApiSignature(path: String, input: InputStream): Set<Pair<Symbol, Flag>> {
|
||||||
// TODO(334870672): add support for metods
|
|
||||||
val output = mutableSetOf<Pair<Symbol, Flag>>()
|
val output = mutableSetOf<Pair<Symbol, Flag>>()
|
||||||
val visitor =
|
val visitor =
|
||||||
object : BaseItemVisitor() {
|
object : BaseItemVisitor() {
|
||||||
@@ -203,11 +202,7 @@ internal fun parseApiSignature(path: String, input: InputStream): Set<Pair<Symbo
|
|||||||
append(".")
|
append(".")
|
||||||
append(method.name())
|
append(method.name())
|
||||||
append("(")
|
append("(")
|
||||||
// TODO(334870672): replace this early return with proper parsing of the command line
|
method.parameters().joinTo(this, separator = "") { it.type().internalName() }
|
||||||
// arguments, followed by translation to Lname/of/class; + III format
|
|
||||||
if (!method.parameters().isEmpty()) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
append(")")
|
append(")")
|
||||||
}
|
}
|
||||||
val symbol = Symbol.create(name)
|
val symbol = Symbol.create(name)
|
||||||
|
Reference in New Issue
Block a user