Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 84512d9b authored by Kshitij Gupta's avatar Kshitij Gupta Committed by Android (Google) Code Review
Browse files

Merge changes from topic "runBlockingLint" into main

* changes:
  SystemUI-lint: Update lint baseline for runBlocking deprecation
  RunBlockingDetector: Fully deprecate runBlocking(Traced)
parents 559b2b6a 2aaa3d83
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -79,6 +79,10 @@ class RunBlockingDetector : Detector(), SourceCodeScanner {
                    Implementation(RunBlockingDetector::class.java, Scope.JAVA_FILE_SCOPE),
            )

        val FORBIDDEN_IMPORTS = listOf("kotlinx.coroutines.runBlocking")
        val FORBIDDEN_IMPORTS =
            listOf(
                "kotlinx.coroutines.runBlocking",
                "com.android.app.tracing.coroutines.runBlockingTraced",
            )
    }
}
+53 −1
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ class RunBlockingDetectorTest : SystemUILintDetectorTest() {
    override fun getIssues(): List<Issue> = listOf(RunBlockingDetector.ISSUE)

    @Test
    fun testViolation() {
    fun testViolationRunBlocking() {
        lint()
            .files(
                kotlin(
@@ -61,6 +61,48 @@ src/com/example/MyClass.kt:4: Error: Importing kotlinx.coroutines.runBlocking is
            )
    }

    @Test
    fun testViolationRunBlockingTraced() {
        lint()
            .files(
                kotlin(
                    """
                    package com.example

                    import com.android.app.tracing.coroutines.runBlockingTraced
                    import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking

                    class MyClass {
                        fun myMethod() {
                            runBlockingTraced {
                                // Some code here
                            }

                            runBlocking {
                                // Some code here
                            }
                        }
                    }
                    """
                ),
                RUN_BLOCKING_TRACED_DEFINITION,
            )
            .issues(RunBlockingDetector.ISSUE)
            .run()
            .expect(
                """
src/com/example/MyClass.kt:4: Error: Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed. [RunBlockingUsage]
                    import com.android.app.tracing.coroutines.runBlockingTraced
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/com/example/MyClass.kt:5: Error: Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed. [RunBlockingUsage]
                    import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 errors, 0 warnings
"""
                    .trimIndent()
            )
    }

    // Verifies that the lint check does *not* flag calls to other methods.
    @Test
    fun testNotViolation() {
@@ -100,5 +142,15 @@ src/com/example/MyClass.kt:4: Error: Importing kotlinx.coroutines.runBlocking is
                    }
                    """
            )
        val RUN_BLOCKING_TRACED_DEFINITION =
            kotlin(
                """
                    package com.android.app.tracing.coroutines

                    fun runBlockingTraced(block: suspend () -> Unit) {
                        // Implementation details don't matter for this test.
                    }
                    """
            )
    }
}
+143 −0
Original line number Diff line number Diff line
@@ -24138,6 +24138,149 @@
            column="18"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/communal/data/backup/CommunalBackupUtils.kt"
            line="21"
            column="1"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/communal/CommunalMetricsStartable.kt"
            line="21"
            column="1"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/keyguard/CustomizationProvider.kt"
            line="33"
            column="1"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTileWithLevel.kt"
            line="27"
            column="1"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/util/kotlin/IpcSerializer.kt"
            line="19"
            column="1"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt"
            line="47"
            column="1"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardRemotePreviewManager.kt"
            line="29"
            column="1"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/Media3ActionFactory.kt"
            line="34"
            column="1"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tiles/ModesDndTile.kt"
            line="28"
            column="1"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tiles/ModesTile.kt"
            line="30"
            column="1"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationMemoryLogger.kt"
            line="24"
            column="1"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/inputdevice/tutorial/domain/interactor/TutorialSchedulerInteractor.kt"
            line="20"
            column="1"/>
    </issue>
    <issue
        id="RunBlockingUsage"
        message="Importing com.android.app.tracing.coroutines.runBlockingTraced is not allowed."
        errorLine1="import com.android.app.tracing.coroutines.runBlockingTraced as runBlocking"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt"
            line="34"
            column="1"/>
    </issue>
    <issue
        id="SharedFlowCreation"
        message="`MutableSharedFlow()` creates a new shared flow, which has poor performance characteristics"