aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-prod (mdb) <android-build-team-robot@google.com>2021-04-21 23:21:53 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-04-21 23:21:53 +0000
commite3819d54ee713e80d0113f683c541e22a9e6a2a9 (patch)
tree9fb05402d0d7063f9a1ec6b40e4bb7d8cb758f02
parent3c137bdd504cf84a1fc23f948d89ea197a6ac2cb (diff)
parentdc68a0ff20f2bd949f4c85c259fda98df0aa1210 (diff)
downloadsupport-snap-temp-L87300000874869724.tar.gz
Merge "Merge cherrypicks of [1684166, 1684167] into androidx-activity-release" into androidx-activity-releasesnap-temp-L87300000874869724
-rw-r--r--activity/activity-ktx/src/androidTest/java/androidx/activity/result/ActivityResultLauncherTest.kt63
-rw-r--r--activity/activity-ktx/src/main/java/androidx/activity/result/ActivityResultLauncher.kt2
-rw-r--r--activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt11
-rw-r--r--activity/activity-lint/src/test/java/androidx/activity/lint/ActivityResultFragmentVersionDetectorTest.kt84
4 files changed, 144 insertions, 16 deletions
diff --git a/activity/activity-ktx/src/androidTest/java/androidx/activity/result/ActivityResultLauncherTest.kt b/activity/activity-ktx/src/androidTest/java/androidx/activity/result/ActivityResultLauncherTest.kt
new file mode 100644
index 00000000000..5f110c5ffbf
--- /dev/null
+++ b/activity/activity-ktx/src/androidTest/java/androidx/activity/result/ActivityResultLauncherTest.kt
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.activity.result
+
+import android.content.Context
+import android.content.Intent
+import androidx.activity.result.contract.ActivityResultContract
+import androidx.core.app.ActivityOptionsCompat
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class ActivityResultLauncherTest {
+
+ @Test
+ fun testUnitLaunch() {
+ val expectedResult = "result"
+ val registry = object : ActivityResultRegistry() {
+ override fun <I : Any?, O : Any?> onLaunch(
+ requestCode: Int,
+ contract: ActivityResultContract<I, O>,
+ input: I,
+ options: ActivityOptionsCompat?
+ ) {
+ contract.createIntent(InstrumentationRegistry.getInstrumentation().context, input)
+ dispatchResult(requestCode, expectedResult)
+ }
+ }
+
+ val contract = object : ActivityResultContract<Unit, String?>() {
+ override fun createIntent(context: Context, input: Unit) = Intent()
+ override fun parseResult(resultCode: Int, intent: Intent?) = ""
+ }
+
+ var actualResult: String? = null
+
+ val launcher = registry.register("key", contract) {
+ actualResult = it
+ }
+
+ launcher.launch()
+ assertThat(actualResult).isEqualTo(expectedResult)
+ }
+} \ No newline at end of file
diff --git a/activity/activity-ktx/src/main/java/androidx/activity/result/ActivityResultLauncher.kt b/activity/activity-ktx/src/main/java/androidx/activity/result/ActivityResultLauncher.kt
index 0b3d759979f..69ec900a1a6 100644
--- a/activity/activity-ktx/src/main/java/androidx/activity/result/ActivityResultLauncher.kt
+++ b/activity/activity-ktx/src/main/java/androidx/activity/result/ActivityResultLauncher.kt
@@ -30,5 +30,5 @@ public fun ActivityResultLauncher<Void?>.launch(options: ActivityOptionsCompat?
*/
@JvmName("launchUnit")
public fun ActivityResultLauncher<Unit>.launch(options: ActivityOptionsCompat? = null) {
- launch(null, options)
+ launch(Unit, options)
} \ No newline at end of file
diff --git a/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt b/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
index 989efba41a7..2b809b3e177 100644
--- a/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
+++ b/activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
@@ -195,7 +195,8 @@ class ActivityResultFragmentVersionDetector : Detector(), UastScanner, GradleSca
if (library.isNotEmpty()) {
val currentVersion = library.substringAfter("androidx.fragment:fragment:")
- if (library != currentVersion && FRAGMENT_VERSION.compareVersions(currentVersion)) {
+ .substringBeforeLast("-")
+ if (library != currentVersion && currentVersion < FRAGMENT_VERSION) {
locations.forEach { location ->
context.report(
ISSUE, expression, location,
@@ -221,12 +222,4 @@ class ActivityResultFragmentVersionDetector : Detector(), UastScanner, GradleSca
}
return ""
}
-
- private fun String.compareVersions(other: String): Boolean {
- return when {
- length < other.length -> true
- length > other.length -> false
- else -> this > other
- }
- }
}
diff --git a/activity/activity-lint/src/test/java/androidx/activity/lint/ActivityResultFragmentVersionDetectorTest.kt b/activity/activity-lint/src/test/java/androidx/activity/lint/ActivityResultFragmentVersionDetectorTest.kt
index 5686ef3fa49..9c2cc3b180d 100644
--- a/activity/activity-lint/src/test/java/androidx/activity/lint/ActivityResultFragmentVersionDetectorTest.kt
+++ b/activity/activity-lint/src/test/java/androidx/activity/lint/ActivityResultFragmentVersionDetectorTest.kt
@@ -82,6 +82,78 @@ class ActivityResultFragmentVersionDetectorTest : LintDetectorTest() {
}
@Test
+ fun expectPassNewerStableVersion() {
+ lint().files(
+ kotlin(
+ """
+ package com.example
+
+ import androidx.activity.result.ActivityResultCaller
+ import androidx.activity.result.contract.ActivityResultContract
+
+ val launcher = ActivityResultCaller().registerForActivityResult(ActivityResultContract())
+ """
+ ),
+ gradle(
+ "build.gradle",
+ """
+ dependencies {
+ api("androidx.fragment:fragment:1.4.0")
+ }
+ """
+ ).indented()
+ ).run().expectClean()
+ }
+
+ @Test
+ fun expectPassNewerSnapshotVersions() {
+ lint().files(
+ kotlin(
+ """
+ package com.example
+
+ import androidx.activity.result.ActivityResultCaller
+ import androidx.activity.result.contract.ActivityResultContract
+
+ val launcher = ActivityResultCaller().registerForActivityResult(ActivityResultContract())
+ """
+ ),
+ gradle(
+ "build.gradle",
+ """
+ dependencies {
+ api("androidx.fragment:fragment:1.4.0-SNAPSHOT")
+ }
+ """
+ ).indented()
+ ).run().expectClean()
+ }
+
+ @Test
+ fun expectPassNewerAlphaVersions() {
+ lint().files(
+ kotlin(
+ """
+ package com.example
+
+ import androidx.activity.result.ActivityResultCaller
+ import androidx.activity.result.contract.ActivityResultContract
+
+ val launcher = ActivityResultCaller().registerForActivityResult(ActivityResultContract())
+ """
+ ),
+ gradle(
+ "build.gradle",
+ """
+ dependencies {
+ api("androidx.fragment:fragment:1.4.0-alpha01")
+ }
+ """
+ ).indented()
+ ).run().expectClean()
+ }
+
+ @Test
fun expectPassRegisterForActivityResultProject() {
lint().files(
kotlin(
@@ -112,7 +184,7 @@ class ActivityResultFragmentVersionDetectorTest : LintDetectorTest() {
gradle(
"""
dependencies {
- api("androidx.fragment:fragment:1.3.0-alpha05")
+ api("androidx.fragment:fragment:1.2.4")
}
"""
),
@@ -144,7 +216,7 @@ class ActivityResultFragmentVersionDetectorTest : LintDetectorTest() {
gradle(
"""
dependencies {
- api("androidx.fragment:fragment:1.3.0-alpha05")
+ api("androidx.fragment:fragment:1.2.4")
}
"""
),
@@ -180,7 +252,7 @@ class ActivityResultFragmentVersionDetectorTest : LintDetectorTest() {
gradle(
"""
dependencies {
- api("androidx.fragment:fragment:1.3.0-alpha05")
+ api("androidx.fragment:fragment:1.2.4")
}
"""
),
@@ -232,14 +304,14 @@ class ActivityResultFragmentVersionDetectorTest : LintDetectorTest() {
"build.gradle",
"""
dependencies {
- implementation("androidx.fragment:fragment-ktx:1.3.0-alpha05")
+ implementation("androidx.fragment:fragment-ktx:1.2.4")
}
"""
).indented()
).withDependencyGraph(
"""
- +--- androidx.fragment:fragment-ktx:1.3.0-alpha05
- \--- androidx.fragment:fragment:1.3.0-alpha05
+ +--- androidx.fragment:fragment-ktx:1.2.4
+ \--- androidx.fragment:fragment:1.2.4
""".trimIndent()
)