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

Commit ab5bdc3a authored by Miranda Kephart's avatar Miranda Kephart
Browse files

Add accessibility event when saving screenshot

Send an accessibility event with "Saving screenshot" as the
screenshot is saved, so that it can be read out through e.g.
TalkBack.

Bug: 149832748
Test: manual; turned on talkback and ensured that the text was
read out when saving the screenshot from keychord/overview.

Change-Id: Ibe237a81cec0961065bf741eb5f3bb9dc9d14712
parent e2b1b3b9
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -218,7 +218,7 @@


    <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
    <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
    <string name="screenshot_saving_ticker">Saving screenshot\u2026</string>
    <string name="screenshot_saving_ticker">Saving screenshot\u2026</string>
    <!-- Notification title displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=50] -->
    <!-- Informs the user that a screenshot is being saved. [CHAR LIMIT=50] -->
    <string name="screenshot_saving_title">Saving screenshot\u2026</string>
    <string name="screenshot_saving_title">Saving screenshot\u2026</string>
    <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
    <!-- Notification title displayed when a screenshot is saved to the Gallery. [CHAR LIMIT=50] -->
    <string name="screenshot_saved_title">Screenshot saved</string>
    <string name="screenshot_saved_title">Screenshot saved</string>
+11 −0
Original line number Original line Diff line number Diff line
@@ -69,6 +69,7 @@ import android.view.ViewOutlineProvider;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver;
import android.view.WindowInsets;
import android.view.WindowInsets;
import android.view.WindowManager;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityManager;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.AnimationUtils;
import android.view.animation.AnimationUtils;
@@ -184,6 +185,7 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset
    private final WindowManager.LayoutParams mWindowLayoutParams;
    private final WindowManager.LayoutParams mWindowLayoutParams;
    private final Display mDisplay;
    private final Display mDisplay;
    private final DisplayMetrics mDisplayMetrics;
    private final DisplayMetrics mDisplayMetrics;
    private final AccessibilityManager mAccessibilityManager;


    private View mScreenshotLayout;
    private View mScreenshotLayout;
    private ScreenshotSelectorView mScreenshotSelectorView;
    private ScreenshotSelectorView mScreenshotSelectorView;
@@ -242,6 +244,7 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset
        mScreenshotSmartActions = screenshotSmartActions;
        mScreenshotSmartActions = screenshotSmartActions;
        mNotificationsController = screenshotNotificationsController;
        mNotificationsController = screenshotNotificationsController;
        mUiEventLogger = uiEventLogger;
        mUiEventLogger = uiEventLogger;
        mAccessibilityManager = AccessibilityManager.getInstance(mContext);


        reloadAssets();
        reloadAssets();
        Configuration config = mContext.getResources().getConfiguration();
        Configuration config = mContext.getResources().getConfiguration();
@@ -573,6 +576,14 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset


    private void saveScreenshot(Bitmap screenshot, Consumer<Uri> finisher, Rect screenRect,
    private void saveScreenshot(Bitmap screenshot, Consumer<Uri> finisher, Rect screenRect,
            Insets screenInsets, boolean showFlash) {
            Insets screenInsets, boolean showFlash) {
        if (mAccessibilityManager.isEnabled()) {
            AccessibilityEvent event =
                    new AccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
            event.setContentDescription(
                    mContext.getResources().getString(R.string.screenshot_saving_title));
            mAccessibilityManager.sendAccessibilityEvent(event);
        }

        if (mScreenshotLayout.isAttachedToWindow()) {
        if (mScreenshotLayout.isAttachedToWindow()) {
            // if we didn't already dismiss for another reason
            // if we didn't already dismiss for another reason
            if (mDismissAnimation == null || !mDismissAnimation.isRunning()) {
            if (mDismissAnimation == null || !mDismissAnimation.isRunning()) {