mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-18 10:18:20 +00:00
Merge changes from topic "a11y-minus-one" into ub-launcher3-qt-future-dev
* changes: fix test for a11y change in supporting -1 page Revert "Revert "support scroll backward to minus one screen via voice/switch access""
This commit is contained in:
committed by
Android (Google) Code Review
commit
ff4977d42d
@@ -1548,7 +1548,7 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
||||
snapToPage(getNextPage() - 1);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return onOverscroll(-getMeasuredWidth());
|
||||
}
|
||||
|
||||
public boolean scrollRight() {
|
||||
@@ -1556,7 +1556,15 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
||||
snapToPage(getNextPage() + 1);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return onOverscroll(getMeasuredWidth());
|
||||
}
|
||||
|
||||
protected boolean onOverscroll(int amount) {
|
||||
if (!mAllowOverScroll) return false;
|
||||
onScrollInteractionBegin();
|
||||
overScroll(amount);
|
||||
onScrollInteractionEnd();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1576,8 +1584,9 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
||||
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
|
||||
super.onInitializeAccessibilityNodeInfo(info);
|
||||
final boolean pagesFlipped = isPageOrderFlipped();
|
||||
info.setScrollable(getPageCount() > 1);
|
||||
if (getCurrentPage() < getPageCount() - 1) {
|
||||
int offset = (mAllowOverScroll ? 0 : 1);
|
||||
info.setScrollable(getPageCount() > offset);
|
||||
if (getCurrentPage() < getPageCount() - offset) {
|
||||
info.addAction(pagesFlipped ?
|
||||
AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_BACKWARD
|
||||
: AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD);
|
||||
@@ -1585,7 +1594,7 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
||||
AccessibilityNodeInfo.AccessibilityAction.ACTION_PAGE_LEFT
|
||||
: AccessibilityNodeInfo.AccessibilityAction.ACTION_PAGE_RIGHT);
|
||||
}
|
||||
if (getCurrentPage() > 0) {
|
||||
if (getCurrentPage() >= offset) {
|
||||
info.addAction(pagesFlipped ?
|
||||
AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD
|
||||
: AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_BACKWARD);
|
||||
@@ -1593,7 +1602,6 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
||||
AccessibilityNodeInfo.AccessibilityAction.ACTION_PAGE_RIGHT
|
||||
: AccessibilityNodeInfo.AccessibilityAction.ACTION_PAGE_LEFT);
|
||||
}
|
||||
|
||||
// Accessibility-wise, PagedView doesn't support long click, so disabling it.
|
||||
// Besides disabling the accessibility long-click, this also prevents this view from getting
|
||||
// accessibility focus.
|
||||
@@ -1612,7 +1620,7 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
||||
@Override
|
||||
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
|
||||
super.onInitializeAccessibilityEvent(event);
|
||||
event.setScrollable(getPageCount() > 1);
|
||||
event.setScrollable(mAllowOverScroll || getPageCount() > 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1700,4 +1708,11 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
||||
mTmpIntPair[1] = rightChild;
|
||||
return mTmpIntPair;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if overscroll is allowed, otherwise false.
|
||||
*/
|
||||
public boolean allowOverScroll() {
|
||||
return mAllowOverScroll;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1034,6 +1034,13 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean onOverscroll(int amount) {
|
||||
// Enforce overscroll on -1 direction
|
||||
if ((amount > 0 && !mIsRtl) || (amount < 0 && mIsRtl)) return false;
|
||||
return super.onOverscroll(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean shouldFlingForVelocity(int velocityX) {
|
||||
// When the overlay is moving, the fling or settle transition is controlled by the overlay.
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
*/
|
||||
package com.android.launcher3.testing;
|
||||
|
||||
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
|
||||
import static android.graphics.Bitmap.Config.ARGB_8888;
|
||||
|
||||
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Color;
|
||||
@@ -81,6 +82,14 @@ public class TestInformationHandler implements ResourceBasedOverride {
|
||||
break;
|
||||
}
|
||||
|
||||
case TestProtocol.REQUEST_DOES_WORKSPACE_HAVE_SECOND_PAGE: {
|
||||
if (mLauncher == null) return null;
|
||||
|
||||
response.putBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD,
|
||||
mLauncher.getWorkspace().getPageCount() > 1);
|
||||
break;
|
||||
}
|
||||
|
||||
case TestProtocol.REQUEST_IS_LAUNCHER_INITIALIZED: {
|
||||
response.putBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD, true);
|
||||
break;
|
||||
|
||||
@@ -66,6 +66,8 @@ public final class TestProtocol {
|
||||
"all-apps-to-overview-swipe-height";
|
||||
public static final String REQUEST_HOME_TO_ALL_APPS_SWIPE_HEIGHT =
|
||||
"home-to-all-apps-swipe-height";
|
||||
public static final String REQUEST_DOES_WORKSPACE_HAVE_SECOND_PAGE =
|
||||
"does-workspace-have-second-page";
|
||||
public static final String REQUEST_HOTSEAT_TOP = "hotseat-top";
|
||||
public static final String REQUEST_IS_LAUNCHER_INITIALIZED = "is-launcher-initialized";
|
||||
public static final String REQUEST_FREEZE_APP_LIST = "freeze-app-list";
|
||||
|
||||
@@ -22,6 +22,7 @@ import static junit.framework.TestCase.assertTrue;
|
||||
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Bundle;
|
||||
import android.os.SystemClock;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
@@ -125,7 +126,7 @@ public final class Workspace extends Home {
|
||||
*/
|
||||
public void ensureWorkspaceIsScrollable() {
|
||||
final UiObject2 workspace = verifyActiveContainer();
|
||||
if (!isWorkspaceScrollable(workspace)) {
|
||||
if (!isWorkspaceScrollable()) {
|
||||
try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
|
||||
"dragging icon to a second page of workspace to make it scrollable")) {
|
||||
dragIconToWorkspace(
|
||||
@@ -137,12 +138,12 @@ public final class Workspace extends Home {
|
||||
verifyActiveContainer();
|
||||
}
|
||||
}
|
||||
assertTrue("Home screen workspace didn't become scrollable",
|
||||
isWorkspaceScrollable(workspace));
|
||||
assertTrue("Home screen workspace didn't become scrollable", isWorkspaceScrollable());
|
||||
}
|
||||
|
||||
private boolean isWorkspaceScrollable(UiObject2 workspace) {
|
||||
return workspace.isScrollable();
|
||||
private boolean isWorkspaceScrollable() {
|
||||
Bundle result = mLauncher.getTestInfo(TestProtocol.REQUEST_DOES_WORKSPACE_HAVE_SECOND_PAGE);
|
||||
return result.getBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD, false);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
||||
Reference in New Issue
Block a user