API lint check for the ListenerLast is enabled for androidx

Existing issues are suppressed with updated baseline and the
ListenerLast is turned into an error in androidx configuration

Bug: 138602561

Test: ./gradlew checkApi
Change-Id: Ibc5ff8601a56c7d43793a1f0902d69468963c134
diff --git a/appcompat/api/api_lint.ignore b/appcompat/api/api_lint.ignore
index a41872a..73ad370 100644
--- a/appcompat/api/api_lint.ignore
+++ b/appcompat/api/api_lint.ignore
@@ -13,6 +13,10 @@
     AppCompatActivity should not extend `Activity`. Activity subclasses are impossible to compose. Expose a composable API instead.
 
 
+ListenerLast: androidx.appcompat.app.AlertDialog.Builder#setCursor(android.database.Cursor, android.content.DialogInterface.OnClickListener, String) parameter #2:
+    Listeners should always be at end of argument list (method `setCursor`)
+
+
 MissingNullability: androidx.appcompat.app.ActionBar#addOnMenuVisibilityListener(androidx.appcompat.app.ActionBar.OnMenuVisibilityListener) parameter #0:
     Missing nullability on parameter `listener` in method `addOnMenuVisibilityListener`
 MissingNullability: androidx.appcompat.app.ActionBar#addTab(androidx.appcompat.app.ActionBar.Tab) parameter #0:
diff --git a/browser/api/api_lint.ignore b/browser/api/api_lint.ignore
index a9dd73e..579f609 100644
--- a/browser/api/api_lint.ignore
+++ b/browser/api/api_lint.ignore
@@ -73,6 +73,10 @@
     Intent action constant name must be ACTION_FOO: KEY_ACTION
 
 
+ListenerLast: androidx.browser.customtabs.CustomTabsClient#newSession(androidx.browser.customtabs.CustomTabsCallback, int) parameter #1:
+    Listeners should always be at end of argument list (method `newSession`)
+
+
 MissingNullability: androidx.browser.browseractions.BrowserActionsIntent#launchIntent(android.content.Context, android.content.Intent) parameter #0:
     Missing nullability on parameter `context` in method `launchIntent`
 MissingNullability: androidx.browser.browseractions.BrowserActionsIntent#launchIntent(android.content.Context, android.content.Intent) parameter #1:
diff --git a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
index adcd8c4..48f1caa 100644
--- a/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/metalava/MetalavaRunner.kt
@@ -77,7 +77,6 @@
         "TopLevelBuilder",
         "MissingBuild",
         "BuilderSetStyle",
-        "ListenerLast",
         "ExecutorRegistration",
         "StreamFiles",
         "ParcelableList",
@@ -99,7 +98,8 @@
         "SetterReturnsThis",
         "PackageLayering",
         "OverlappingConstants",
-        "IllegalStateException"
+        "IllegalStateException",
+        "ListenerLast"
     ).joinToString()
 )
 
diff --git a/car/core/api/api_lint.ignore b/car/core/api/api_lint.ignore
index 0271a3a..2023fd4 100644
--- a/car/core/api/api_lint.ignore
+++ b/car/core/api/api_lint.ignore
@@ -3,6 +3,12 @@
     Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object)
 
 
+ListenerLast: androidx.car.widget.ActionListItem#setActions(String, boolean, android.view.View.OnClickListener, String, boolean, android.view.View.OnClickListener) parameter #3:
+    Listeners should always be at end of argument list (method `setActions`)
+ListenerLast: androidx.car.widget.ActionListItem#setActions(String, boolean, android.view.View.OnClickListener, String, boolean, android.view.View.OnClickListener) parameter #4:
+    Listeners should always be at end of argument list (method `setActions`)
+
+
 MissingNullability: androidx.car.app.CarAlertDialog#onCreate(android.os.Bundle) parameter #0:
     Missing nullability on parameter `savedInstanceState` in method `onCreate`
 MissingNullability: androidx.car.app.CarAlertDialog#setTitle(CharSequence) parameter #0:
diff --git a/core/core/api/api_lint.ignore b/core/core/api/api_lint.ignore
index 2174d3f..e881ff1 100644
--- a/core/core/api/api_lint.ignore
+++ b/core/core/api/api_lint.ignore
@@ -165,6 +165,16 @@
     Listeners should be an interface, or otherwise renamed Callback: OneShotPreDrawListener
 
 
+ListenerLast: androidx.core.content.res.ResourcesCompat#getFont(android.content.Context, int, androidx.core.content.res.ResourcesCompat.FontCallback, android.os.Handler) parameter #3:
+    Listeners should always be at end of argument list (method `getFont`)
+ListenerLast: androidx.core.hardware.fingerprint.FingerprintManagerCompat#authenticate(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject, int, androidx.core.os.CancellationSignal, androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationCallback, android.os.Handler) parameter #4:
+    Listeners should always be at end of argument list (method `authenticate`)
+ListenerLast: androidx.core.provider.FontsContractCompat#requestFont(android.content.Context, androidx.core.provider.FontRequest, androidx.core.provider.FontsContractCompat.FontRequestCallback, android.os.Handler) parameter #3:
+    Listeners should always be at end of argument list (method `requestFont`)
+ListenerLast: androidx.core.view.GestureDetectorCompat#GestureDetectorCompat(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler) parameter #2:
+    Listeners should always be at end of argument list (method `GestureDetectorCompat`)
+
+
 MissingNullability: androidx.core.app.ActivityCompat#invalidateOptionsMenu(android.app.Activity) parameter #0:
     Missing nullability on parameter `activity` in method `invalidateOptionsMenu`
 MissingNullability: androidx.core.app.ActivityCompat#requestDragAndDropPermissions(android.app.Activity, android.view.DragEvent) parameter #0:
diff --git a/media/api/api_lint.ignore b/media/api/api_lint.ignore
index 1fa7b87..c6e2b88 100644
--- a/media/api/api_lint.ignore
+++ b/media/api/api_lint.ignore
@@ -39,6 +39,10 @@
     Inconsistent interface constant; expected 'MediaBrowserServiceCompat'`
 
 
+ListenerLast: android.support.v4.media.MediaBrowserCompat#MediaBrowserCompat(android.content.Context, android.content.ComponentName, android.support.v4.media.MediaBrowserCompat.ConnectionCallback, android.os.Bundle) parameter #3:
+    Listeners should always be at end of argument list (method `MediaBrowserCompat`)
+
+
 MissingNullability: android.support.v4.media.MediaBrowserCompat#MediaBrowserCompat(android.content.Context, android.content.ComponentName, android.support.v4.media.MediaBrowserCompat.ConnectionCallback, android.os.Bundle) parameter #0:
     Missing nullability on parameter `context` in method `MediaBrowserCompat`
 MissingNullability: android.support.v4.media.MediaBrowserCompat#MediaBrowserCompat(android.content.Context, android.content.ComponentName, android.support.v4.media.MediaBrowserCompat.ConnectionCallback, android.os.Bundle) parameter #1:
diff --git a/paging/runtime/api/api_lint.ignore b/paging/runtime/api/api_lint.ignore
index 117293a..296374f 100644
--- a/paging/runtime/api/api_lint.ignore
+++ b/paging/runtime/api/api_lint.ignore
@@ -5,5 +5,9 @@
     Method AsyncPagedListDiffer.submitList appears to be throwing java.lang.IllegalStateException; this should be listed in the documentation; see https://android.github.io/kotlin-guides/interop.html#document-exceptions
 
 
+ListenerLast: androidx.paging.AsyncPagedListDiffer#AsyncPagedListDiffer(androidx.recyclerview.widget.ListUpdateCallback, androidx.recyclerview.widget.AsyncDifferConfig<T>) parameter #1:
+    Listeners should always be at end of argument list (method `AsyncPagedListDiffer`)
+
+
 SetterReturnsThis: androidx.paging.LivePagedListBuilder:
     Methods must return the builder object (return type LivePagedListBuilder instead of androidx.paging.LivePagedListBuilder<Key,Value>): method androidx.paging.LivePagedListBuilder.setCoroutineScope(kotlinx.coroutines.CoroutineScope)
diff --git a/recyclerview/recyclerview/api/api_lint.ignore b/recyclerview/recyclerview/api/api_lint.ignore
index b7865b2..052c90a 100644
--- a/recyclerview/recyclerview/api/api_lint.ignore
+++ b/recyclerview/recyclerview/api/api_lint.ignore
@@ -57,6 +57,12 @@
     Listeners should be an interface, or otherwise renamed Callback: SimpleOnItemTouchListener
 
 
+ListenerLast: androidx.recyclerview.widget.AsyncListDiffer#AsyncListDiffer(androidx.recyclerview.widget.ListUpdateCallback, androidx.recyclerview.widget.AsyncDifferConfig<T>) parameter #1:
+    Listeners should always be at end of argument list (method `AsyncListDiffer`)
+ListenerLast: androidx.recyclerview.widget.DiffUtil#calculateDiff(androidx.recyclerview.widget.DiffUtil.Callback, boolean) parameter #1:
+    Listeners should always be at end of argument list (method `calculateDiff`)
+
+
 MethodNameUnits: androidx.recyclerview.widget.OrientationHelper#getTotalSpace():
     Expected method name units to be `Bytes`, was `Space` in `getTotalSpace`
 
diff --git a/slices/builders/api/api_lint.ignore b/slices/builders/api/api_lint.ignore
index 4f32b59..bbbc77e 100644
--- a/slices/builders/api/api_lint.ignore
+++ b/slices/builders/api/api_lint.ignore
@@ -1,4 +1,28 @@
 // Baseline format: 1.0
+ListenerLast: androidx.slice.builders.SliceAction#create(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, int, CharSequence) parameter #1:
+    Listeners should always be at end of argument list (method `create`)
+ListenerLast: androidx.slice.builders.SliceAction#create(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, int, CharSequence) parameter #2:
+    Listeners should always be at end of argument list (method `create`)
+ListenerLast: androidx.slice.builders.SliceAction#create(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, int, CharSequence) parameter #3:
+    Listeners should always be at end of argument list (method `create`)
+ListenerLast: androidx.slice.builders.SliceAction#createDeeplink(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, int, CharSequence) parameter #1:
+    Listeners should always be at end of argument list (method `createDeeplink`)
+ListenerLast: androidx.slice.builders.SliceAction#createDeeplink(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, int, CharSequence) parameter #2:
+    Listeners should always be at end of argument list (method `createDeeplink`)
+ListenerLast: androidx.slice.builders.SliceAction#createDeeplink(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, int, CharSequence) parameter #3:
+    Listeners should always be at end of argument list (method `createDeeplink`)
+ListenerLast: androidx.slice.builders.SliceAction#createToggle(androidx.remotecallback.RemoteCallback, CharSequence, boolean) parameter #1:
+    Listeners should always be at end of argument list (method `createToggle`)
+ListenerLast: androidx.slice.builders.SliceAction#createToggle(androidx.remotecallback.RemoteCallback, CharSequence, boolean) parameter #2:
+    Listeners should always be at end of argument list (method `createToggle`)
+ListenerLast: androidx.slice.builders.SliceAction#createToggle(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, CharSequence, boolean) parameter #1:
+    Listeners should always be at end of argument list (method `createToggle`)
+ListenerLast: androidx.slice.builders.SliceAction#createToggle(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, CharSequence, boolean) parameter #2:
+    Listeners should always be at end of argument list (method `createToggle`)
+ListenerLast: androidx.slice.builders.SliceAction#createToggle(androidx.remotecallback.RemoteCallback, androidx.core.graphics.drawable.IconCompat, CharSequence, boolean) parameter #3:
+    Listeners should always be at end of argument list (method `createToggle`)
+
+
 MissingNullability: androidx.slice.builders.ListBuilder#setKeywords(java.util.Set<java.lang.String>) parameter #0:
     Missing nullability on parameter `keywords` in method `setKeywords`
 MissingNullability: androidx.slice.builders.ListBuilder.RowBuilder#RowBuilder(android.net.Uri) parameter #0:
diff --git a/ui/ui-foundation/api/api_lint.ignore b/ui/ui-foundation/api/api_lint.ignore
index aa6815f..befa742 100644
--- a/ui/ui-foundation/api/api_lint.ignore
+++ b/ui/ui-foundation/api/api_lint.ignore
@@ -1,4 +1,8 @@
 // Baseline format: 1.0
+ListenerLast: androidx.ui.foundation.gestures.DraggableKt#Draggable(androidx.ui.foundation.gestures.DragDirection, float, float, androidx.ui.foundation.gestures.DragValueController, androidx.ui.foundation.gestures.DraggableCallback, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>) parameter #5:
+    Listeners should always be at end of argument list (method `Draggable`)
+
+
 MissingNullability: androidx.ui.foundation.Strings#INSTANCE:
     Missing nullability on field `INSTANCE` in class `class androidx.ui.foundation.Strings`
 MissingNullability: androidx.ui.foundation.gestures.DragDirection.Horizontal#INSTANCE: