Upgradle 7.2-rc-2

- Rename all dependencies in libs.versions.toml that end in
  plugin to pluginz as plugin is a reserved naspace now.
- Suppress warning about AGP version in included builds b/195025261
- Gradle 7.2 ships kotlin 1.5, fix deprecations like toUpperCase.

Test: ./gradlew tasks jar assembleDebug
Change-Id: If2e7f52b92496fbf4cdbd067fd92a29e424d8b33
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index 05b0504..63908f2 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -6,7 +6,7 @@
     repos.addMavenRepositories(repositories)
 
     dependencies {
-        classpath(libs.kotlinGradlePlugin)
+        classpath(libs.kotlinGradlePluginz)
     }
 
     configurations.classpath.resolutionStrategy {
@@ -60,21 +60,21 @@
 }
 
 dependencies {
-    cacheableApi(libs.androidGradlePlugin)
+    cacheableApi(libs.androidGradlePluginz)
     cacheableImplementation(libs.dexMemberList)
-    cacheableApi(libs.kotlinGradlePlugin)
+    cacheableApi(libs.kotlinGradlePluginz)
     cacheableImplementation(gradleApi())
-    cacheableApi(libs.dokkaGradlePlugin)
+    cacheableApi(libs.dokkaGradlePluginz)
     // needed by inspection plugin
-    cacheableImplementation(libs.protobufGradlePlugin)
-    cacheableImplementation(libs.wireGradlePlugin)
+    cacheableImplementation(libs.protobufGradlePluginz)
+    cacheableImplementation(libs.wireGradlePluginz)
     cacheableImplementation(libs.shadow)
     // dependencies that aren't used by buildSrc directly but that we resolve here so that the
     // root project doesn't need to re-resolve them and their dependencies on every build
-    cacheableRuntimeOnly(libs.hiltAndroidGradlePlugin)
+    cacheableRuntimeOnly(libs.hiltAndroidGradlePluginz)
     // room kotlintestapp uses the ksp plugin but it does not publish a plugin marker yet
-    cacheableApi(libs.kspGradlePlugin)
-    cacheableApi(libs.japicmpPlugin)
+    cacheableApi(libs.kspGradlePluginz)
+    cacheableApi(libs.japicmpPluginz)
     // dependencies whose resolutions we don't need to cache
     compileOnly(findGradleKotlinDsl()) // Only one file in this configuration, no need to cache it
     implementation(project("jetpad-integration")) // Doesn't have a .pom, so not slow to load
diff --git a/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt b/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
index 1340650..a065882 100644
--- a/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
@@ -156,7 +156,9 @@
             val htmlReport = task.reports.html
 
             val zipHtmlTask = project.tasks.register(
-                "zipHtmlResultsOf${task.name.capitalize()}",
+                "zipHtmlResultsOf${task.name.replaceFirstChar {
+                    if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString()
+                }}",
                 Zip::class.java
             ) {
                 val destinationDirectory = File("$xmlReportDestDir-html")
@@ -180,7 +182,9 @@
             val xmlReport = task.reports.junitXml
             if (xmlReport.required.get()) {
                 val zipXmlTask = project.tasks.register(
-                    "zipXmlResultsOf${task.name.capitalize()}",
+                    "zipXmlResultsOf${task.name.replaceFirstChar {
+                        if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString()
+                    }}",
                     Zip::class.java
                 ) {
                     it.destinationDirectory.set(xmlReportDestDir)
@@ -482,7 +486,7 @@
         project.configurations.all { configuration ->
             // Gradle seems to crash on androidtest configurations
             // preferring project modules...
-            if (!configuration.name.toLowerCase(Locale.US).contains("androidtest")) {
+            if (!configuration.name.lowercase(Locale.US).contains("androidtest")) {
                 configuration.resolutionStrategy.preferProjectModules()
             }
         }
@@ -542,7 +546,7 @@
         // pre-release SDK.
         defaultConfig.aarMetadata.minCompileSdk = TARGET_SDK_VERSION
         project.configurations.all { config ->
-            val isTestConfig = config.name.toLowerCase(Locale.US).contains("test")
+            val isTestConfig = config.name.lowercase(Locale.US).contains("test")
 
             config.dependencyConstraints.configureEach { dependencyConstraint ->
                 dependencyConstraint.apply {
diff --git a/buildSrc/src/main/kotlin/androidx/build/AndroidXRootPlugin.kt b/buildSrc/src/main/kotlin/androidx/build/AndroidXRootPlugin.kt
index 845d077..706a9fb4 100644
--- a/buildSrc/src/main/kotlin/androidx/build/AndroidXRootPlugin.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/AndroidXRootPlugin.kt
@@ -39,6 +39,7 @@
 import org.gradle.kotlin.dsl.KotlinClosure1
 import org.gradle.kotlin.dsl.extra
 import java.io.File
+import java.util.Locale
 import java.util.concurrent.ConcurrentHashMap
 
 abstract class AndroidXRootPlugin : Plugin<Project> {
@@ -124,8 +125,14 @@
                         project.agpVariants.all { variant ->
                             // in AndroidX, release and debug variants are essentially the same,
                             // so we don't run the lintRelease task on the build server
-                            if (!variant.name.toLowerCase().contains("release")) {
-                                val taskName = "lint${variant.name.capitalize()}"
+                            if (!variant.name.lowercase(Locale.getDefault()).contains("release")) {
+                                val taskName = "lint${variant.name.replaceFirstChar {
+                                    if (it.isLowerCase()) {
+                                        it.titlecase(Locale.getDefault())
+                                    } else {
+                                        it.toString()
+                                    }
+                                }}"
                                 buildOnServerTask.dependsOn("${project.path}:$taskName")
                             }
                         }
diff --git a/buildSrc/src/main/kotlin/androidx/build/LintConfiguration.kt b/buildSrc/src/main/kotlin/androidx/build/LintConfiguration.kt
index 24b3049..1c91378 100644
--- a/buildSrc/src/main/kotlin/androidx/build/LintConfiguration.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/LintConfiguration.kt
@@ -90,10 +90,18 @@
     }
     afterEvaluate {
         for (variant in project.agpVariants) {
-            tasks.named("lint${variant.name.capitalize(Locale.US)}").configure { task ->
+            tasks.named(
+                "lint${variant.name.replaceFirstChar {
+                    if (it.isLowerCase()) it.titlecase(Locale.US) else it.toString()
+                }}"
+            ).configure { task ->
                 AffectedModuleDetector.configureTaskGuard(task)
             }
-            tasks.named("lintAnalyze${variant.name.capitalize(Locale.US)}").configure { task ->
+            tasks.named(
+                "lintAnalyze${variant.name.replaceFirstChar {
+                    if (it.isLowerCase()) it.titlecase(Locale.US) else it.toString()
+                }}"
+            ).configure { task ->
                 AffectedModuleDetector.configureTaskGuard(task)
             }
             /* TODO: uncomment when we upgrade to AGP 7.1.0-alpha04
@@ -110,8 +118,14 @@
     if (!variantNames.contains("debug")) {
         tasks.register("lintDebug") {
             for (variantName in variantNames) {
-                if (variantName.toLowerCase(Locale.US).contains("debug")) {
-                    it.dependsOn(tasks.named("lint${variantName.capitalize(Locale.US)}"))
+                if (variantName.lowercase(Locale.US).contains("debug")) {
+                    it.dependsOn(
+                        tasks.named(
+                            "lint${variantName.replaceFirstChar {
+                                if (it.isLowerCase()) it.titlecase(Locale.US) else it.toString()
+                            }}"
+                        )
+                    )
                 }
             }
         }
diff --git a/buildSrc/src/main/kotlin/androidx/build/OperatingSystem.kt b/buildSrc/src/main/kotlin/androidx/build/OperatingSystem.kt
index 8385eb8..867ade5 100644
--- a/buildSrc/src/main/kotlin/androidx/build/OperatingSystem.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/OperatingSystem.kt
@@ -26,7 +26,7 @@
 }
 
 fun getOperatingSystem(): OperatingSystem {
-    val os = System.getProperty("os.name").toLowerCase(Locale.US)
+    val os = System.getProperty("os.name").lowercase(Locale.US)
     return when {
         os.contains("mac os x") -> OperatingSystem.MAC
         os.contains("darwin") -> OperatingSystem.MAC
diff --git a/buildSrc/src/main/kotlin/androidx/build/Release.kt b/buildSrc/src/main/kotlin/androidx/build/Release.kt
index bbcd272..12a9037 100644
--- a/buildSrc/src/main/kotlin/androidx/build/Release.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/Release.kt
@@ -24,6 +24,7 @@
 import org.gradle.api.tasks.bundling.Zip
 import org.gradle.plugin.devel.GradlePluginDevelopmentExtension
 import java.io.File
+import java.util.Locale
 import java.util.TreeSet
 
 /**
@@ -336,7 +337,9 @@
     return group
         .split('.')
         .joinToString("") {
-            it.capitalize()
+            it.replaceFirstChar {
+                if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString()
+            }
         }
 }
 /**
@@ -346,7 +349,9 @@
     return project.path
         .split(":", "-")
         .joinToString("") {
-            it.capitalize()
+            it.replaceFirstChar {
+                if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString()
+            }
         }
 }
 
diff --git a/buildSrc/src/main/kotlin/androidx/build/SourceJarTaskHelper.kt b/buildSrc/src/main/kotlin/androidx/build/SourceJarTaskHelper.kt
index 9168290..2fa31fb 100644
--- a/buildSrc/src/main/kotlin/androidx/build/SourceJarTaskHelper.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/SourceJarTaskHelper.kt
@@ -32,13 +32,19 @@
 import org.gradle.kotlin.dsl.getByType
 import org.gradle.kotlin.dsl.named
 import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
+import java.util.Locale
 
 /**
  * Sets up a source jar task for an Android library project.
  */
 fun Project.configureSourceJarForAndroid(extension: LibraryExtension) {
     extension.defaultPublishVariant { variant ->
-        val sourceJar = tasks.register("sourceJar${variant.name.capitalize()}", Jar::class.java) {
+        val sourceJar = tasks.register(
+            "sourceJar${variant.name.replaceFirstChar {
+                if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString()
+            }}",
+            Jar::class.java
+        ) {
             it.archiveClassifier.set("sources")
             it.from(extension.sourceSets.getByName("main").java.srcDirs)
             // Do not allow source files with duplicate names, information would be lost otherwise.
@@ -52,7 +58,14 @@
             extension.defaultPublishVariant { variant ->
                 val kotlinExt = project.extensions.getByName("kotlin") as KotlinProjectExtension
                 val sourceJar =
-                    project.tasks.named("sourceJar${variant.name.capitalize()}", Jar::class.java)
+                    project.tasks.named(
+                        "sourceJar${variant.name.replaceFirstChar {
+                            if (it.isLowerCase()) {
+                                it.titlecase(Locale.getDefault())
+                            } else it.toString()
+                        }}",
+                        Jar::class.java
+                    )
                 // multiplatform projects use different source sets, so we need to modify the task
                 sourceJar.configure { sourceJarTask ->
                     // use an inclusion list of source sets, because that is the preferred policy
diff --git a/buildSrc/src/main/kotlin/androidx/build/Version.kt b/buildSrc/src/main/kotlin/androidx/build/Version.kt
index 570e7ad..040c90e 100644
--- a/buildSrc/src/main/kotlin/androidx/build/Version.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/Version.kt
@@ -18,6 +18,7 @@
 
 import org.gradle.api.Project
 import java.io.File
+import java.util.Locale
 import java.util.regex.Matcher
 import java.util.regex.Pattern
 
@@ -44,13 +45,13 @@
 
     fun isSnapshot(): Boolean = "-SNAPSHOT" == extra
 
-    fun isAlpha(): Boolean = extra?.toLowerCase()?.startsWith("-alpha") ?: false
+    fun isAlpha(): Boolean = extra?.lowercase(Locale.getDefault())?.startsWith("-alpha") ?: false
 
-    fun isBeta(): Boolean = extra?.toLowerCase()?.startsWith("-beta") ?: false
+    fun isBeta(): Boolean = extra?.lowercase(Locale.getDefault())?.startsWith("-beta") ?: false
 
-    fun isDev(): Boolean = extra?.toLowerCase()?.startsWith("-dev") ?: false
+    fun isDev(): Boolean = extra?.lowercase(Locale.getDefault())?.startsWith("-dev") ?: false
 
-    fun isRC(): Boolean = extra?.toLowerCase()?.startsWith("-rc") ?: false
+    fun isRC(): Boolean = extra?.lowercase(Locale.getDefault())?.startsWith("-rc") ?: false
 
     fun isStable(): Boolean = (extra == null)
 
diff --git a/buildSrc/src/main/kotlin/androidx/build/dokka/Dokka.kt b/buildSrc/src/main/kotlin/androidx/build/dokka/Dokka.kt
index be841d7..22e8d8e2 100644
--- a/buildSrc/src/main/kotlin/androidx/build/dokka/Dokka.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/dokka/Dokka.kt
@@ -26,10 +26,14 @@
 import org.jetbrains.dokka.gradle.PackageOptions
 import java.io.File
 import java.net.URL
+import java.util.Locale
 
 object Dokka {
     private fun generatorTaskNameForType(language: String = ""): String {
-        val formattedLangauage = language.toLowerCase().capitalize()
+        val formattedLangauage = language.lowercase(Locale.getDefault())
+            .replaceFirstChar {
+                if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString()
+            }
         return "dokka${formattedLangauage}Docs"
     }
 
diff --git a/buildSrc/src/main/kotlin/androidx/build/resources/ResourceTasks.kt b/buildSrc/src/main/kotlin/androidx/build/resources/ResourceTasks.kt
index 829a4768..296ada9 100644
--- a/buildSrc/src/main/kotlin/androidx/build/resources/ResourceTasks.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/resources/ResourceTasks.kt
@@ -41,7 +41,11 @@
     ) {
         @OptIn(ExperimentalStdlibApi::class)
         val packageResTask = project.tasks
-            .named("package${variantName.capitalize(Locale.US)}Resources")
+            .named(
+                "package${variantName.replaceFirstChar {
+                    if (it.isLowerCase()) it.titlecase(Locale.US) else it.toString()
+                }}Resources"
+            )
         @Suppress("UnstableApiUsage") // flatMap
         val builtApiFile = packageResTask.flatMap { task ->
             (task as com.android.build.gradle.tasks.MergeResources).publicFile
diff --git a/buildSrc/src/main/kotlin/androidx/build/studio/StudioPlatformUtilities.kt b/buildSrc/src/main/kotlin/androidx/build/studio/StudioPlatformUtilities.kt
index 799cc20..0bd6f66 100644
--- a/buildSrc/src/main/kotlin/androidx/build/studio/StudioPlatformUtilities.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/studio/StudioPlatformUtilities.kt
@@ -76,7 +76,7 @@
     protected val jvmHeapRegex = "-Xmx.*".toRegex()
 
     companion object {
-        val osName = if (System.getProperty("os.name").toLowerCase(Locale.ROOT).contains("linux")) {
+        val osName = if (System.getProperty("os.name").lowercase(Locale.ROOT).contains("linux")) {
             "linux"
         } else {
             "mac"