Upgrade Room Gradle Plugin the latest version that is a HEAD.

Also updates the KMP test app to use the plugin.

Bug: 299168035
Test: Existing tests
Change-Id: Ib265171d9ce66d36682bb8f07738520f1521f8eb
diff --git a/buildSrc/imports/room-gradle-plugin/build.gradle b/buildSrc/imports/room-gradle-plugin/build.gradle
new file mode 100644
index 0000000..698ee14
--- /dev/null
+++ b/buildSrc/imports/room-gradle-plugin/build.gradle
@@ -0,0 +1,21 @@
+apply from: "../../shared.gradle"
+apply plugin: "java-gradle-plugin"
+
+sourceSets {
+    main.java.srcDirs += "${supportRootFolder}/room/room-gradle-plugin/src/main/java"
+    main.resources.srcDirs += "${supportRootFolder}/room/room-gradle-plugin/src/main" +
+            "/resources"
+}
+
+gradlePlugin {
+    plugins {
+        room {
+            id = "androidx.room"
+            implementationClass = "androidx.room.gradle.RoomGradlePlugin"
+        }
+    }
+}
+
+validatePlugins {
+    enableStricterValidation = true
+}
diff --git a/buildSrc/plugins/build.gradle b/buildSrc/plugins/build.gradle
index d09f782..38dc7de 100644
--- a/buildSrc/plugins/build.gradle
+++ b/buildSrc/plugins/build.gradle
@@ -8,6 +8,7 @@
     api project(":imports:compose-icons")
     api project(":imports:glance-layout-generator")
     api project(":imports:inspection-gradle-plugin")
+    api project(":imports:room-gradle-plugin")
     api project(":imports:stableaidl-gradle-plugin")
 }
 
diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle
index 68c8582..4abc377 100644
--- a/buildSrc/settings.gradle
+++ b/buildSrc/settings.gradle
@@ -22,6 +22,7 @@
 include ":imports:benchmark-darwin-plugin"
 include ":imports:baseline-profile-gradle-plugin"
 include ":imports:inspection-gradle-plugin"
+include ":imports:room-gradle-plugin"
 include ":imports:compose-icons"
 include ":imports:glance-layout-generator"
 include ":imports:stableaidl-gradle-plugin"
diff --git a/buildSrc/shared-dependencies.gradle b/buildSrc/shared-dependencies.gradle
index bd16885..85b9b6d 100644
--- a/buildSrc/shared-dependencies.gradle
+++ b/buildSrc/shared-dependencies.gradle
@@ -22,6 +22,9 @@
     implementation(libs.androidKotlinMultiplatform)
     implementation(libs.kotlinCompilerEmbeddable) // for clang compiler
 
+    // For Room Gradle Plugin
+    implementation(libs.kspGradlePluginz)
+
     // Force jsoup upgrade on spdx (b/309773103)
     implementation(libs.jsoup)
 
@@ -54,7 +57,5 @@
     // root project doesn't need to re-resolve them and their dependencies on every build
     runtimeOnly(libs.hiltAndroidGradlePluginz)
     runtimeOnly(libs.javapoet) // for hiltAndroidGradlePluginz to workaround https://github.com/google/dagger/issues/3068
-    runtimeOnly(libs.kspGradlePluginz)
     runtimeOnly(libs.wireGradlePluginz)
-    runtimeOnly(libs.roomGradlePlugin)
 }
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index f58e919..365eaae 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -252,7 +252,6 @@
 retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
 retrofitConverterWire = { module = "com.squareup.retrofit2:converter-wire", version.ref = "retrofit" }
 robolectric = { module = "org.robolectric:robolectric", version = "4.11.1" }
-roomGradlePlugin = { module = "androidx.room:room-gradle-plugin", version = "2.6.0" }
 rxjava2 = { module = "io.reactivex.rxjava2:rxjava", version = "2.2.9" }
 rxjava3 = { module = "io.reactivex.rxjava3:rxjava", version = "3.0.0" }
 shadow = { module = "com.github.johnrengelman.shadow:com.github.johnrengelman.shadow.gradle.plugin", version = "8.1.1" }
diff --git a/room/integration-tests/multiplatformtestapp/build.gradle b/room/integration-tests/multiplatformtestapp/build.gradle
index 9b66b89..dfd48c4 100644
--- a/room/integration-tests/multiplatformtestapp/build.gradle
+++ b/room/integration-tests/multiplatformtestapp/build.gradle
@@ -20,6 +20,7 @@
     id("AndroidXPlugin")
     id("com.android.library")
     id("com.google.devtools.ksp")
+    id("androidx.room")
 }
 
 // Disabled due to https://youtrack.jetbrains.com/issue/KT-65761
@@ -83,10 +84,13 @@
     }
 }
 
-ksp {
-    arg("room.generateKotlin", "true")
-}
-
 android {
     namespace "androidx.room.integration.multiplatformtestapp"
 }
+
+room {
+    schemaDirectory(
+            provider { layout.projectDirectory.dir("schemas-ksp").getAsFile().getAbsolutePath() }
+    )
+    generateKotlin = true
+}
diff --git a/room/room-gradle-plugin/src/main/java/androidx/room/gradle/RoomArgumentProvider.kt b/room/room-gradle-plugin/src/main/java/androidx/room/gradle/RoomArgumentProvider.kt
index 8d474b8..f5f8521 100644
--- a/room/room-gradle-plugin/src/main/java/androidx/room/gradle/RoomArgumentProvider.kt
+++ b/room/room-gradle-plugin/src/main/java/androidx/room/gradle/RoomArgumentProvider.kt
@@ -21,6 +21,7 @@
 import org.gradle.api.tasks.Input
 import org.gradle.api.tasks.InputFiles
 import org.gradle.api.tasks.Nested
+import org.gradle.api.tasks.Optional
 import org.gradle.api.tasks.OutputDirectory
 import org.gradle.api.tasks.PathSensitive
 import org.gradle.api.tasks.PathSensitivity
@@ -41,13 +42,16 @@
         val prefix = if (forKsp) "" else "-A"
         add("${prefix}room.internal.schemaInput=${schemaInputDir.get().asFile.path}")
         add("${prefix}room.internal.schemaOutput=${schemaOutputDir.get().asFile.path}")
-        add("${prefix}room.generateKotlin=${options.generateKotlin}")
+        if (options.generateKotlin != null) {
+            add("${prefix}room.generateKotlin=${options.generateKotlin}")
+        }
     }
 }
 
 class RoomOptions(
+    @Optional
     @get:Input
-    val generateKotlin: Boolean
+    val generateKotlin: Boolean?
 )
 
 internal fun RoomExtension.toOptions(): RoomOptions {
diff --git a/room/room-gradle-plugin/src/main/java/androidx/room/gradle/RoomExtension.kt b/room/room-gradle-plugin/src/main/java/androidx/room/gradle/RoomExtension.kt
index 5fd9944..6965972 100644
--- a/room/room-gradle-plugin/src/main/java/androidx/room/gradle/RoomExtension.kt
+++ b/room/room-gradle-plugin/src/main/java/androidx/room/gradle/RoomExtension.kt
@@ -146,7 +146,7 @@
     /**
      * Causes Room annotation processor to generate Kotlin code instead of Java.
      */
-    open var generateKotlin: Boolean = false
+    open var generateKotlin: Boolean? = null
 
     /**
      * Represent a full Android variant name (demoDebug), flavor name (demo), build type
diff --git a/room/room-gradle-plugin/src/main/java/androidx/room/gradle/integration/AndroidPluginIntegration.kt b/room/room-gradle-plugin/src/main/java/androidx/room/gradle/integration/AndroidPluginIntegration.kt
index 7238157..fddb68a 100644
--- a/room/room-gradle-plugin/src/main/java/androidx/room/gradle/integration/AndroidPluginIntegration.kt
+++ b/room/room-gradle-plugin/src/main/java/androidx/room/gradle/integration/AndroidPluginIntegration.kt
@@ -65,6 +65,8 @@
                     "Use the `room { schemaDirectory(...) }` DSL to specify one."
             }
             configureAndroidVariant(project, roomExtension, variant)
+            @Suppress("DEPRECATION")
+            // TODO(b/328835662): Remove usage of deprecated API
             variant.unitTest?.let { configureAndroidVariant(project, roomExtension, it) }
             if (variant is HasAndroidTest) {
                 variant.androidTest?.let { configureAndroidVariant(project, roomExtension, it) }