Revert "Add hover state border line to overview task item by usi..."

Revert submission 23378417-cherrypick-overview-border-249859410-786docmioso

Reason for revert: flaky implementation

Reverted changes: /q/submissionid:23378417-cherrypick-overview-border-249859410-786docmioso

Change-Id: I6792fc25dbbd80db24df93ebd7a974b0dc0ba5d5
This commit is contained in:
Sunny Goyal
2023-06-01 21:29:13 +00:00
committed by Android (Google) Code Review
parent 64975ae992
commit 8dbdd3d702
6 changed files with 19 additions and 155 deletions

View File

@@ -79,13 +79,6 @@ public class QuickstepTestInformationHandler extends TestInformationHandler {
return response;
}
case TestProtocol.REQUEST_GET_OVERVIEW_TASK_BORDER_WIDTH: {
Resources res = mContext.getResources();
response.putInt(TestProtocol.TEST_INFO_RESPONSE_FIELD,
res.getDimensionPixelSize(R.dimen.keyboard_quick_switch_border_width));
return response;
}
case TestProtocol.REQUEST_HAS_TIS: {
response.putBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD, true);
return response;

View File

@@ -28,7 +28,6 @@ import android.view.animation.Interpolator;
import androidx.annotation.NonNull;
import androidx.annotation.Px;
import androidx.annotation.VisibleForTesting;
import com.android.launcher3.anim.AnimatedFloat;
import com.android.launcher3.anim.AnimatorListeners;
@@ -176,12 +175,6 @@ public final class BorderAnimator {
}
}
@NonNull
@VisibleForTesting
public AnimatedFloat getBorderAnimationProgress() {
return mBorderAnimationProgress;
}
/**
* Callback to update the border bounds when building this animation.
*/

View File

@@ -70,7 +70,6 @@ import android.widget.Toast;
import androidx.annotation.IntDef;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.LauncherSettings;
@@ -412,11 +411,7 @@ public class TaskView extends FrameLayout implements Reusable {
private boolean mIsClickableAsLiveTile = true;
@Nullable private BorderAnimator mBorderAnimator;
private final boolean mCursorHoverStatesEnabled;
private final boolean mKeyboardFocusHighlightEnabled;
@Nullable private final BorderAnimator mBorderAnimator;
public TaskView(Context context) {
this(context, null);
@@ -439,29 +434,26 @@ public class TaskView extends FrameLayout implements Reusable {
mCurrentFullscreenParams = new FullscreenDrawParams(context);
mDigitalWellBeingToast = new DigitalWellBeingToast(mActivity, this);
mKeyboardFocusHighlightEnabled = FeatureFlags.ENABLE_KEYBOARD_QUICK_SWITCH.get()
boolean keyboardFocusHighlightEnabled = FeatureFlags.ENABLE_KEYBOARD_QUICK_SWITCH.get()
|| DesktopTaskView.DESKTOP_MODE_SUPPORTED;
mCursorHoverStatesEnabled = FeatureFlags.ENABLE_CURSOR_HOVER_STATES.get();
if (mCursorHoverStatesEnabled) {
setOnHoverListener(this::onHover);
}
setWillNotDraw(!mKeyboardFocusHighlightEnabled && !mCursorHoverStatesEnabled);
setWillNotDraw(!keyboardFocusHighlightEnabled);
if (mKeyboardFocusHighlightEnabled || mCursorHoverStatesEnabled) {
TypedArray ta = context.obtainStyledAttributes(
attrs, R.styleable.TaskView, defStyleAttr, defStyleRes);
mBorderAnimator = new BorderAnimator(
/* borderRadiusPx= */ (int) mCurrentFullscreenParams.mCornerRadius,
/* borderColor= */ ta.getColor(
R.styleable.TaskView_borderColor, DEFAULT_BORDER_COLOR),
/* borderAnimationParams= */ new BorderAnimator.SimpleParams(
/* borderWidthPx= */ context.getResources().getDimensionPixelSize(
R.dimen.keyboard_quick_switch_border_width),
/* boundsBuilder= */ this::updateBorderBounds,
/* targetView= */ this));
ta.recycle();
}
TypedArray ta = context.obtainStyledAttributes(
attrs, R.styleable.TaskView, defStyleAttr, defStyleRes);
mBorderAnimator = !keyboardFocusHighlightEnabled
? null
: new BorderAnimator(
/* borderRadiusPx= */ (int) mCurrentFullscreenParams.mCornerRadius,
/* borderColor= */ ta.getColor(
R.styleable.TaskView_borderColor, DEFAULT_BORDER_COLOR),
/* borderAnimationParams= */ new BorderAnimator.SimpleParams(
/* borderWidthPx= */ context.getResources().getDimensionPixelSize(
R.dimen.keyboard_quick_switch_border_width),
/* boundsBuilder= */ this::updateBorderBounds,
/* targetView= */ this));
ta.recycle();
}
protected void updateBorderBounds(Rect bounds) {
@@ -504,12 +496,6 @@ public class TaskView extends FrameLayout implements Reusable {
return stubInfo;
}
@Nullable
@VisibleForTesting
public BorderAnimator getBorderAnimator() {
return mBorderAnimator;
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
@@ -521,22 +507,11 @@ public class TaskView extends FrameLayout implements Reusable {
@Override
protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
if (mKeyboardFocusHighlightEnabled) {
if (mBorderAnimator != null) {
mBorderAnimator.buildAnimator(gainFocus).start();
}
}
@Override
public boolean onInterceptHoverEvent(MotionEvent event) {
if (mCursorHoverStatesEnabled) {
// avoid triggering hover event on child elements which would cause HOVER_EXIT for this
// task view
return true;
} else {
return super.onInterceptHoverEvent(event);
}
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
@@ -775,57 +750,6 @@ public class TaskView extends FrameLayout implements Reusable {
.log(LAUNCHER_TASK_LAUNCH_TAP);
}
private boolean onHover(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_HOVER_MOVE:
if (mKeyboardFocusHighlightEnabled && !isFocused()) {
// existing focus is on another task selected by keyboard,
// cursor then moves inside this task thumbnail and steals the focus
requestFocusAndExitTouchMode(v);
}
return true;
case MotionEvent.ACTION_HOVER_ENTER:
if (mKeyboardFocusHighlightEnabled) {
if (isFocused()) {
// the task is already focused with border, no action is needed
return true;
} else {
requestFocusAndExitTouchMode(v);
}
} else {
// mKeyboardFocusHighlightEnabled is turned off so it only shows hover
// state animation but not steals the focus
mBorderAnimator.buildAnimator(true).start();
}
return true;
case MotionEvent.ACTION_HOVER_EXIT:
if (mKeyboardFocusHighlightEnabled) {
// clearFocus() does not work here because parent element is not focusable
// so it changes to touch mode to clear focus
v.getViewRootImpl().touchModeChanged(true);
} else {
// just show the disappearing animation but not change the focus when
// mKeyboardFocusHighlightEnabled is off
mBorderAnimator.buildAnimator(false).start();
}
return true;
default:
return false;
}
}
private void requestFocusAndExitTouchMode(View v) {
if (isInTouchMode()) {
// Tasks are not focusable in touch mode by default. As hover state would steal focus
// when both mKeyboardFocusHighlightEnabled and mCursorHoverStatesEnabled are on,
// touch mode needs to be set to false when hovering so it can steal focus to current
// task and show border animation as hover state
v.getViewRootImpl().touchModeChanged(false);
}
requestFocus();
}
/**
* @return {@code true} if user is already in split select mode and this tap was to choose the
* second app. {@code false} otherwise

View File

@@ -140,10 +140,6 @@ public final class TestProtocol {
public static final String REQUEST_GET_GRID_TASK_SIZE_RECT_FOR_TABLET =
"get-grid-task-size-rect-for-tablet";
public static final String REQUEST_GET_OVERVIEW_PAGE_SPACING = "get-overview-page-spacing";
public static final String REQUEST_GET_OVERVIEW_TASK_BORDER_WIDTH =
"get-overview-task-border-width";
public static final String REQUEST_ENABLE_ROTATION = "enable_rotation";
public static final String REQUEST_ENABLE_SUGGESTION = "enable-suggestion";
public static final String REQUEST_MODEL_QUEUE_CLEARED = "model-queue-cleared";

View File

@@ -375,11 +375,6 @@ public final class LauncherInstrumentation {
.getBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD);
}
public int getOverviewTaskBorderWidth() {
return getTestInfo(TestProtocol.REQUEST_GET_OVERVIEW_TASK_BORDER_WIDTH)
.getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD);
}
int getFocusedTaskHeightForTablet() {
return getTestInfo(TestProtocol.REQUEST_GET_FOCUSED_TASK_HEIGHT_FOR_TABLET).getInt(
TestProtocol.TEST_INFO_RESPONSE_FIELD);

View File

@@ -18,13 +18,7 @@ package com.android.launcher3.tapl;
import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
import static com.android.launcher3.tapl.LauncherInstrumentation.CALLBACK_RUN_POINT.CALLBACK_HOVER_ENTER;
import static com.android.launcher3.tapl.LauncherInstrumentation.CALLBACK_RUN_POINT.CALLBACK_HOVER_EXIT;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.SystemClock;
import android.view.MotionEvent;
import androidx.annotation.NonNull;
import androidx.test.uiautomator.By;
@@ -193,35 +187,4 @@ public final class OverviewTask {
boolean isTaskSplit() {
return mLauncher.findObjectInContainer(mTask.getParent(), "bottomright_snapshot") != null;
}
/**
* Returns this task's visible bounds.
*/
public Rect getVisibleBounds() {
return mTask.getVisibleBounds();
}
/**
* Emulate the cursor entering and exiting a hover over this task.
*/
public void hoverCursor() {
try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
"cursor hover entering task")) {
long downTime = SystemClock.uptimeMillis();
mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_HOVER_ENTER,
new Point(mTask.getVisibleCenter().x, mTask.getVisibleCenter().y),
null);
mLauncher.runCallbackIfActive(CALLBACK_HOVER_ENTER);
try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
"cursor hover exiting task")) {
downTime = SystemClock.uptimeMillis();
mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_HOVER_EXIT,
new Point(mTask.getVisibleCenter().x, mTask.getVisibleCenter().y),
null);
mLauncher.runCallbackIfActive(CALLBACK_HOVER_EXIT);
}
}
}
}