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

Commit dfa2752d authored by Alina Zaidi's avatar Alina Zaidi
Browse files

Add accessibility announcement when user clicks on 'Add automatically to

home screen' button

Test: Tested manually with talkback on
Bug: 192808036
Bug: 192811245
Change-Id: I1c02738e0e4755b3bbdde12dad96ac2ed1996e6c
parent 1fe5fda3
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -62,8 +62,7 @@
                android:text="@string/add_item_request_drag_hint"
                android:textSize="14sp"
                android:textColor="?android:attr/textColorSecondary"
                android:alpha="0.7"
                android:importantForAccessibility="no"/>
                android:alpha="0.7"/>

            <include layout="@layout/widget_cell"
                android:id="@+id/widget_cell"
+3 −0
Original line number Diff line number Diff line
@@ -63,6 +63,9 @@
    <string name="add_item_request_drag_hint">Touch &amp; hold the widget to move it around the Home screen</string>
    <!-- Button label to automatically add a widget to home screen [CHAR_LIMIT=50] -->
    <string name="add_to_home_screen">Add to Home screen</string>
    <!-- Accessibility spoken message announced when a widget gets added to the home screen using a
         button in a dialog. [CHAR_LIMIT=none] -->
    <string name="added_to_home_screen_accessibility_text"><xliff:g id="widget_name" example="Calendar month view">%1$s</xliff:g> widget added to home screen</string>
    <!-- Label for showing the number of widgets an app has in the full widgets picker.
         [CHAR_LIMIT=25] -->
    <plurals name="widgets_count">
+29 −2
Original line number Diff line number Diff line
@@ -27,10 +27,12 @@ import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
import android.annotation.TargetApi;
import android.app.ActivityOptions;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProviderInfo;
import android.content.ClipData;
import android.content.ClipDescription;
import android.content.Intent;
import android.content.pm.LauncherApps.PinItemRequest;
import android.content.pm.ShortcutInfo;
import android.content.res.Configuration;
import android.graphics.Canvas;
import android.graphics.Point;
@@ -39,12 +41,15 @@ import android.graphics.Rect;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.DragShadowBuilder;
import android.view.View.OnLongClickListener;
import android.view.View.OnTouchListener;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.widget.TextView;

import com.android.launcher3.BaseActivity;
@@ -92,6 +97,7 @@ public class AddItemActivity extends BaseActivity
    private InvariantDeviceProfile mIdp;
    private BaseDragLayer<AddItemActivity> mDragLayer;
    private AddItemWidgetsBottomSheet mSlideInView;
    private AccessibilityManager mAccessibilityManager;

    private WidgetCell mWidgetCell;

@@ -127,6 +133,8 @@ public class AddItemActivity extends BaseActivity
        mDragLayer = findViewById(R.id.add_item_drag_layer);
        mDragLayer.recreateControllers();
        mWidgetCell = findViewById(R.id.widget_cell);
        mAccessibilityManager =
                getApplicationContext().getSystemService(AccessibilityManager.class);

        if (mRequest.getRequestType() == PinItemRequest.REQUEST_TYPE_SHORTCUT) {
            setupShortcut();
@@ -291,17 +299,25 @@ public class AddItemActivity extends BaseActivity
     */
    public void onPlaceAutomaticallyClick(View v) {
        if (mRequest.getRequestType() == PinItemRequest.REQUEST_TYPE_SHORTCUT) {
            ItemInstallQueue.INSTANCE.get(this).queueItem(mRequest.getShortcutInfo());
            ShortcutInfo shortcutInfo = mRequest.getShortcutInfo();
            ItemInstallQueue.INSTANCE.get(this).queueItem(shortcutInfo);
            logCommand(LAUNCHER_ADD_EXTERNAL_ITEM_PLACED_AUTOMATICALLY);
            mRequest.accept();
            CharSequence label = shortcutInfo.getLongLabel();
            if (TextUtils.isEmpty(label)) {
                label = shortcutInfo.getShortLabel();
            }
            sendWidgetAddedToScreenAccessibilityEvent(label.toString());
            mSlideInView.close(/* animate= */ true);
            return;
        }

        mPendingBindWidgetId = mAppWidgetHost.allocateAppWidgetId();
        AppWidgetProviderInfo widgetProviderInfo = mRequest.getAppWidgetProviderInfo(this);
        boolean success = mAppWidgetManager.bindAppWidgetIdIfAllowed(
                mPendingBindWidgetId, mRequest.getAppWidgetProviderInfo(this), mWidgetOptions);
                mPendingBindWidgetId, widgetProviderInfo, mWidgetOptions);
        if (success) {
            sendWidgetAddedToScreenAccessibilityEvent(widgetProviderInfo.label);
            acceptWidget(mPendingBindWidgetId);
            return;
        }
@@ -375,6 +391,17 @@ public class AddItemActivity extends BaseActivity
                isSheetDark ? SystemUiController.FLAG_DARK_NAV : SystemUiController.FLAG_LIGHT_NAV);
    }

    private void sendWidgetAddedToScreenAccessibilityEvent(String widgetName) {
        if (mAccessibilityManager.isEnabled()) {
            AccessibilityEvent event =
                    AccessibilityEvent.obtain(AccessibilityEvent.TYPE_ANNOUNCEMENT);
            event.setContentDescription(
                    getApplicationContext().getResources().getString(
                            R.string.added_to_home_screen_accessibility_text, widgetName));
            mAccessibilityManager.sendAccessibilityEvent(event);
        }
    }

    private void logCommand(StatsLogManager.EventEnum command) {
        getStatsLogManager().logger()
                .withItemInfo((ItemInfo) mWidgetCell.getWidgetView().getTag())