Merge "Accessibility fixes for clipboard overlay" into tm-dev

This commit is contained in:
Matt Casey 2022-06-04 01:48:10 +00:00 committed by Android (Google) Code Review
commit 6e3282ca56
5 changed files with 35 additions and 1 deletions

View File

@ -788,6 +788,7 @@
android:theme="@style/EditTextActivity"
android:exported="false"
android:excludeFromRecents="true"
android:label="@string/clipboard_editor"
/>
<activity android:name=".controls.management.ControlsProviderSelectorActivity"

View File

@ -22,7 +22,8 @@
android:theme="@style/FloatingOverlay"
android:alpha="0"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:contentDescription="@string/clipboard_overlay_window_name">
<ImageView
android:id="@+id/actions_container_background"
android:visibility="gone"
@ -121,6 +122,7 @@
android:id="@+id/image_preview"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:contentDescription="@string/clipboard_image_preview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView

View File

@ -2507,6 +2507,14 @@
<string name="clipboard_image_copied">Image copied</string>
<!-- Accessibility announcement informing user that something has been copied [CHAR LIMIT=NONE] -->
<string name="clipboard_content_copied">Content copied</string>
<!-- Name of the screen that lets the user edit the context of the clipboard (copy/paste) [CHAR LIMIT=NONE] -->
<string name="clipboard_editor">Clipboard Editor</string>
<!-- Name for the window showing the clipboard (copy/paste) preview and controls [CHAR LIMIT=NONE] -->
<string name="clipboard_overlay_window_name">Clipboard</string>
<!-- Accessibility label for an image preview [CHAR LIMIT=NONE] -->
<string name="clipboard_image_preview">Image preview</string>
<!-- Accessibility string describing what will happen when the user selects the clipboard preview. Completing the sentence "Double tap to ..." [CHAR LIMIT=NONE] -->
<string name="clipboard_edit">edit</string>
<!-- Generic "add" string [CHAR LIMIT=NONE] -->
<string name="add">Add</string>

View File

@ -97,6 +97,9 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.policy.PhoneWindow;
import com.android.systemui.R;
@ -218,6 +221,7 @@ public class ClipboardOverlayController {
mRemoteCopyChip.setAlpha(1);
mDismissButton = requireNonNull(mView.findViewById(R.id.dismiss_button));
mShareChip.setContentDescription(mContext.getString(com.android.internal.R.string.share));
mView.setCallbacks(new DraggableConstraintLayout.SwipeDismissCallbacks() {
@Override
public void onInteraction() {
@ -367,6 +371,8 @@ public class ClipboardOverlayController {
PackageManager packageManager = mContext.getPackageManager();
if (packageManager.resolveActivity(
remoteCopyIntent, PackageManager.ResolveInfoFlags.of(0)) != null) {
mRemoteCopyChip.setContentDescription(
mContext.getString(R.string.clipboard_send_nearby_description));
mRemoteCopyChip.setVisibility(View.VISIBLE);
mRemoteCopyChip.setOnClickListener((v) -> {
mUiEventLogger.log(CLIPBOARD_OVERLAY_REMOTE_COPY_TAPPED);
@ -581,6 +587,7 @@ public class ClipboardOverlayController {
TextView textView = hidden ? mHiddenPreview : mTextPreview;
showTextPreview(text, textView);
View.OnClickListener listener = v -> editText();
setAccessibilityActionToEdit(textView);
if (DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI,
CLIPBOARD_OVERLAY_SHOW_EDIT_BUTTON, false)) {
mEditChip.setVisibility(View.VISIBLE);
@ -602,6 +609,7 @@ public class ClipboardOverlayController {
showSinglePreview(mHiddenPreview);
if (isEditableImage) {
mHiddenPreview.setOnClickListener(listener);
setAccessibilityActionToEdit(mHiddenPreview);
}
} else if (isEditableImage) { // if the MIMEtype is image, try to load
try {
@ -612,6 +620,7 @@ public class ClipboardOverlayController {
showSinglePreview(mImagePreview);
mImagePreview.setImageBitmap(thumbnail);
mImagePreview.setOnClickListener(listener);
setAccessibilityActionToEdit(mImagePreview);
} catch (IOException e) {
Log.e(TAG, "Thumbnail loading failed", e);
showTextPreview(
@ -635,6 +644,12 @@ public class ClipboardOverlayController {
return isEditableImage;
}
private void setAccessibilityActionToEdit(View view) {
ViewCompat.replaceAccessibilityAction(view,
AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CLICK,
mContext.getString(R.string.clipboard_edit), null);
}
private Intent getRemoteCopyIntent(ClipData clipData) {
Intent nearbyIntent = new Intent(REMOTE_COPY_ACTION);

View File

@ -117,6 +117,14 @@ public class DraggableConstraintLayout extends ConstraintLayout
mCallbacks = callbacks;
}
@Override
public boolean onInterceptHoverEvent(MotionEvent event) {
if (mCallbacks != null) {
mCallbacks.onInteraction();
}
return super.onInterceptHoverEvent(event);
}
@Override // View
protected void onFinishInflate() {
mActionsContainer = findViewById(R.id.actions_container);