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

Commit f05bf472 authored by Miranda Kephart's avatar Miranda Kephart Committed by Android (Google) Code Review
Browse files

Merge "Use live region for 'saving screenshot' announcement" into main

parents f0df0aa3 66e24f9f
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -777,6 +777,16 @@ flag {
    }
}

flag {
    name: "screenshot_announce_live_region"
    namespace: "systemui"
    description: "Use live region for screenshot saving announcement"
    bug: "383642111"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}

flag {
    name: "screenshot_action_dismiss_system_windows"
    namespace: "systemui"
+7 −0
Original line number Diff line number Diff line
@@ -29,6 +29,13 @@
        android:layout_height="match_parent"
        android:clipChildren="false"
        android:clipToPadding="false">
        <View
            android:id="@+id/screenshot_saving_live_region"
            android:layout_width="1dp"
            android:layout_height="1dp"
            android:accessibilityLiveRegion="polite"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"/>
        <View
            android:id="@+id/screenshot_preview_border"
            android:layout_width="0dp"
+6 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.window.WindowContext
import androidx.core.animation.doOnEnd
import com.android.internal.logging.UiEventLogger
import com.android.settingslib.applications.InterestingConfigChanges
import com.android.systemui.Flags.screenshotAnnounceLiveRegion
import com.android.systemui.broadcast.BroadcastDispatcher
import com.android.systemui.broadcast.BroadcastSender
import com.android.systemui.clipboardoverlay.ClipboardOverlayController
@@ -254,9 +255,13 @@ internal constructor(
    private fun prepareViewForNewScreenshot(screenshot: ScreenshotData, oldPackageName: String?) {
        window.whenWindowAttached {
            announcementResolver.getScreenshotAnnouncement(screenshot.userHandle.identifier) {
                if (screenshotAnnounceLiveRegion()) {
                    viewProxy.setSavingAnnouncement(it)
                } else {
                    viewProxy.announceForAccessibility(it)
                }
            }
        }

        viewProxy.reset()

+14 −1
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import androidx.appcompat.content.res.AppCompatResources
import androidx.core.animation.doOnEnd
import androidx.core.animation.doOnStart
import com.android.internal.logging.UiEventLogger
import com.android.systemui.Flags.screenshotAnnounceLiveRegion
import com.android.systemui.log.DebugLogger.debugLog
import com.android.systemui.res.R
import com.android.systemui.screenshot.LogConfig.DEBUG_DISMISS
@@ -208,6 +209,9 @@ constructor(
        screenshotTakenInPortrait: Boolean,
        onTransitionPrepared: Runnable,
    ) {
        if (screenshotAnnounceLiveRegion()) {
            setSavingAnnouncement("")
        }
        viewModel.setScrollingScrimBitmap(newScreenshot)
        viewModel.setScrollableRect(scrollableAreaOnScreen(response))
        animationController.fadeForLongScreenshotTransition()
@@ -262,7 +266,13 @@ constructor(
        view.requestFocus()
    }

    fun announceForAccessibility(string: String) = view.announceForAccessibility(string)
    fun setSavingAnnouncement(string: String) {
        view.setSavingAnnouncement(string)
    }

    fun announceForAccessibility(string: String) {
        view.announceForAccessibility(string)
    }

    fun prepareEntranceAnimation(runnable: Runnable) {
        view.viewTreeObserver.addOnPreDrawListener(
@@ -278,6 +288,9 @@ constructor(
    }

    fun fadeForSharedTransition() {
        if (screenshotAnnounceLiveRegion()) {
            setSavingAnnouncement("")
        }
        animationController.fadeForSharedTransition()
    }

+7 −0
Original line number Diff line number Diff line
@@ -197,6 +197,13 @@ class ScreenshotShelfView(context: Context, attrs: AttributeSet? = null) :
        }
    }

    fun setSavingAnnouncement(string: String) {
        val announceRegion = findViewById<View>(R.id.screenshot_saving_live_region)
        // clear the description to make sure we announce for successive screenshots
        announceRegion.contentDescription = ""
        announceRegion.contentDescription = string
    }

    // Max function for two or more params.
    private fun max(first: Int, second: Int, vararg items: Int): Int {
        var largest = if (first > second) first else second