diff options
author | android-build-prod (mdb) <android-build-team-robot@google.com> | 2021-04-21 23:21:53 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-04-21 23:21:53 +0000 |
commit | e3819d54ee713e80d0113f683c541e22a9e6a2a9 (patch) | |
tree | 9fb05402d0d7063f9a1ec6b40e4bb7d8cb758f02 | |
parent | 3c137bdd504cf84a1fc23f948d89ea197a6ac2cb (diff) | |
parent | dc68a0ff20f2bd949f4c85c259fda98df0aa1210 (diff) | |
download | support-snap-temp-L87300000874869724.tar.gz |
Merge "Merge cherrypicks of [1684166, 1684167] into androidx-activity-release" into androidx-activity-releasesnap-temp-L87300000874869724
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() ) |