check-flagged-apis: add support for method with parameters

Teach check-flagged-apis to parse methods containing parameters.

Bug: 334870672
Test: atest --host check-flagged-apis-test
Change-Id: I171660b914b73fd85e03ed9300c2c81f33d80d61
diff --git a/tools/check-flagged-apis/src/com/android/checkflaggedapis/CheckFlaggedApisTest.kt b/tools/check-flagged-apis/src/com/android/checkflaggedapis/CheckFlaggedApisTest.kt
index 04c2f80..2f76b2a 100644
--- a/tools/check-flagged-apis/src/com/android/checkflaggedapis/CheckFlaggedApisTest.kt
+++ b/tools/check-flagged-apis/src/com/android/checkflaggedapis/CheckFlaggedApisTest.kt
@@ -34,6 +34,9 @@
           ctor @FlaggedApi("android.flag.foo") public Clazz();
           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 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 {
         }
@@ -49,6 +52,9 @@
           <method name="&lt;init>()V"/>
           <field name="FOO"/>
           <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 name="android/Clazz${"$"}Builder" since="2">
         </class>
@@ -93,6 +99,15 @@
             Pair(Symbol("android/Clazz/Clazz()"), 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/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")),
         )
     val actual = parseApiSignature("in-memory", API_SIGNATURE.byteInputStream())
@@ -115,6 +130,9 @@
             Symbol("android/Clazz/Clazz()"),
             Symbol("android/Clazz/FOO"),
             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"),
         )
     val actual = parseApiVersions(API_VERSIONS.byteInputStream())
@@ -143,6 +161,15 @@
             DisabledFlaggedApiIsPresentError(
                 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(
                 Symbol("android/Clazz/Builder"), Flag("android.flag.bar")),
         )
     val actual =
diff --git a/tools/check-flagged-apis/src/com/android/checkflaggedapis/Main.kt b/tools/check-flagged-apis/src/com/android/checkflaggedapis/Main.kt
index 0f2fbef..e15e7fa 100644
--- a/tools/check-flagged-apis/src/com/android/checkflaggedapis/Main.kt
+++ b/tools/check-flagged-apis/src/com/android/checkflaggedapis/Main.kt
@@ -178,7 +178,6 @@
 }
 
 internal fun parseApiSignature(path: String, input: InputStream): Set<Pair<Symbol, Flag>> {
-  // TODO(334870672): add support for metods
   val output = mutableSetOf<Pair<Symbol, Flag>>()
   val visitor =
       object : BaseItemVisitor() {
@@ -203,11 +202,7 @@
               append(".")
               append(method.name())
               append("(")
-              // TODO(334870672): replace this early return with proper parsing of the command line
-              // arguments, followed by translation to Lname/of/class; + III format
-              if (!method.parameters().isEmpty()) {
-                return
-              }
+              method.parameters().joinTo(this, separator = "") { it.type().internalName() }
               append(")")
             }
             val symbol = Symbol.create(name)