From 31fa653ef34ca655c4ea1d1a5931f5be49b80b50 Mon Sep 17 00:00:00 2001 From: vadimt Date: Tue, 14 Apr 2020 19:21:07 -0700 Subject: [PATCH 01/45] Manually marking widgets recycler as non-scrollable of frozen There was hope that freezing automatically marks it as non-scrollable, but this happened to be not true. Sending accessibility event per pweaver@'s instructions. Bug: 152354290 Change-Id: Idd04c69cef9e8e621775ef86112f35e3d9d9d2da --- .../android/launcher3/BaseRecyclerView.java | 28 +++++++++++++++++++ .../launcher3/widget/WidgetsRecyclerView.java | 21 -------------- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/com/android/launcher3/BaseRecyclerView.java b/src/com/android/launcher3/BaseRecyclerView.java index 9e8441a0dd..41eeb78bc7 100644 --- a/src/com/android/launcher3/BaseRecyclerView.java +++ b/src/com/android/launcher3/BaseRecyclerView.java @@ -16,17 +16,21 @@ package com.android.launcher3; +import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED; + import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import androidx.recyclerview.widget.RecyclerView; import com.android.launcher3.compat.AccessibilityManagerCompat; import com.android.launcher3.testing.TestProtocol; +import com.android.launcher3.views.ActivityContext; import com.android.launcher3.views.RecyclerViewFastScroller; @@ -187,4 +191,28 @@ public abstract class BaseRecyclerView extends RecyclerView { AccessibilityManagerCompat.sendScrollFinishedEventToTest(getContext()); } } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + if (isLayoutSuppressed()) info.setScrollable(false); + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, + "onInitializeAccessibilityNodeInfo, scrollable: " + info.isScrollable()); + } + } + + @Override + public void setLayoutFrozen(boolean frozen) { + final boolean changing = frozen != isLayoutSuppressed(); + super.setLayoutFrozen(frozen); + if (changing) { + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "setLayoutFrozen " + frozen + + " @ " + Log.getStackTraceString(new Throwable())); + ActivityContext.lookupContext(getContext()).getDragLayer() + .sendAccessibilityEvent(TYPE_WINDOW_CONTENT_CHANGED); + } + } + } } \ No newline at end of file diff --git a/src/com/android/launcher3/widget/WidgetsRecyclerView.java b/src/com/android/launcher3/widget/WidgetsRecyclerView.java index 63e063f59e..17baa271e2 100644 --- a/src/com/android/launcher3/widget/WidgetsRecyclerView.java +++ b/src/com/android/launcher3/widget/WidgetsRecyclerView.java @@ -22,7 +22,6 @@ import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; -import android.view.accessibility.AccessibilityNodeInfo; import com.android.launcher3.BaseRecyclerView; import com.android.launcher3.R; @@ -210,24 +209,4 @@ public class WidgetsRecyclerView extends BaseRecyclerView implements OnItemTouch } super.stopNestedScroll(); } - - @Override - public void setLayoutFrozen(boolean frozen) { - if (frozen != isLayoutSuppressed()) { - if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { - Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "setLayoutFrozen " + frozen - + " @ " + android.util.Log.getStackTraceString(new Throwable())); - } - } - super.setLayoutFrozen(frozen); - } - - @Override - public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { - super.onInitializeAccessibilityNodeInfo(info); - if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { - Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, - "onInitializeAccessibilityNodeInfo, scrollable: " + info.isScrollable()); - } - } } \ No newline at end of file From 28095168e960094ab687861f99f76071e0b418f1 Mon Sep 17 00:00:00 2001 From: Andy Wickham Date: Tue, 14 Apr 2020 23:08:46 +0000 Subject: [PATCH 02/45] Refactors Sandbox to more easily add new tutorials. - Extracts abstract classes for common functionality - Renames some layouts, etc. to not be back-specific - Consolidates more logic in the controllers rather than classes like BackGestureTutorialTypeInfo - Removes redundant TutorialStep enum (combining it with TutorialType) Still considering removing additional layers of abstraction like the Fragment itself (instead keeping UI within the Activity, which would still be controlled by a TutorialController). Test: Built and went through the Back tutorial to confirm existing funcitonality was not disrupted. Bug: 148542211 Merged-In: Id893869cb59609141dcdbdca01744d0f5952b546 Change-Id: Id893869cb59609141dcdbdca01744d0f5952b546 --- ...ure_tutorial_action_button_background.xml} | 2 +- ...ure_tutorial_action_button_background.xml} | 2 +- ....xml => gesture_tutorial_close_button.xml} | 0 ...vity.xml => gesture_tutorial_activity.xml} | 2 +- ...ment.xml => gesture_tutorial_fragment.xml} | 40 ++-- quickstep/res/values/dimens.xml | 6 +- quickstep/res/values/strings.xml | 6 +- quickstep/res/values/styles.xml | 8 +- .../BackGestureTutorialConfirmController.java | 64 ------ .../BackGestureTutorialController.java | 199 ++++++------------ .../BackGestureTutorialEngagedController.java | 64 ------ .../BackGestureTutorialFragment.java | 153 ++------------ .../BackGestureTutorialTypeInfo.java | 109 ---------- .../BackGestureTutorialTypeInfoProvider.java | 59 ------ .../interaction/EdgeBackGestureHandler.java | 8 +- .../interaction/GestureSandboxActivity.java | 21 +- .../interaction/TutorialController.java | 135 ++++++++++++ .../interaction/TutorialFragment.java | 153 ++++++++++++++ ...mation.java => TutorialHandAnimation.java} | 16 +- res/values/colors.xml | 10 +- 20 files changed, 429 insertions(+), 628 deletions(-) rename quickstep/res/drawable-v28/{back_gesture_tutorial_action_button_background.xml => gesture_tutorial_action_button_background.xml} (90%) rename quickstep/res/drawable/{back_gesture_tutorial_action_button_background.xml => gesture_tutorial_action_button_background.xml} (90%) rename quickstep/res/drawable/{back_gesture_tutorial_close_button.xml => gesture_tutorial_close_button.xml} (100%) rename quickstep/res/layout/{back_gesture_tutorial_activity.xml => gesture_tutorial_activity.xml} (87%) rename quickstep/res/layout/{back_gesture_tutorial_fragment.xml => gesture_tutorial_fragment.xml} (70%) delete mode 100644 quickstep/src/com/android/quickstep/interaction/BackGestureTutorialConfirmController.java delete mode 100644 quickstep/src/com/android/quickstep/interaction/BackGestureTutorialEngagedController.java delete mode 100644 quickstep/src/com/android/quickstep/interaction/BackGestureTutorialTypeInfo.java delete mode 100644 quickstep/src/com/android/quickstep/interaction/BackGestureTutorialTypeInfoProvider.java create mode 100644 quickstep/src/com/android/quickstep/interaction/TutorialController.java create mode 100644 quickstep/src/com/android/quickstep/interaction/TutorialFragment.java rename quickstep/src/com/android/quickstep/interaction/{BackGestureTutorialHandAnimation.java => TutorialHandAnimation.java} (85%) diff --git a/quickstep/res/drawable-v28/back_gesture_tutorial_action_button_background.xml b/quickstep/res/drawable-v28/gesture_tutorial_action_button_background.xml similarity index 90% rename from quickstep/res/drawable-v28/back_gesture_tutorial_action_button_background.xml rename to quickstep/res/drawable-v28/gesture_tutorial_action_button_background.xml index cd30ef7075..57423c2ffc 100644 --- a/quickstep/res/drawable-v28/back_gesture_tutorial_action_button_background.xml +++ b/quickstep/res/drawable-v28/gesture_tutorial_action_button_background.xml @@ -16,5 +16,5 @@ - + \ No newline at end of file diff --git a/quickstep/res/drawable/back_gesture_tutorial_action_button_background.xml b/quickstep/res/drawable/gesture_tutorial_action_button_background.xml similarity index 90% rename from quickstep/res/drawable/back_gesture_tutorial_action_button_background.xml rename to quickstep/res/drawable/gesture_tutorial_action_button_background.xml index d7b910273a..3f3b288e2d 100644 --- a/quickstep/res/drawable/back_gesture_tutorial_action_button_background.xml +++ b/quickstep/res/drawable/gesture_tutorial_action_button_background.xml @@ -16,5 +16,5 @@ - + \ No newline at end of file diff --git a/quickstep/res/drawable/back_gesture_tutorial_close_button.xml b/quickstep/res/drawable/gesture_tutorial_close_button.xml similarity index 100% rename from quickstep/res/drawable/back_gesture_tutorial_close_button.xml rename to quickstep/res/drawable/gesture_tutorial_close_button.xml diff --git a/quickstep/res/layout/back_gesture_tutorial_activity.xml b/quickstep/res/layout/gesture_tutorial_activity.xml similarity index 87% rename from quickstep/res/layout/back_gesture_tutorial_activity.xml rename to quickstep/res/layout/gesture_tutorial_activity.xml index e894e893c3..4dc8913ef5 100644 --- a/quickstep/res/layout/back_gesture_tutorial_activity.xml +++ b/quickstep/res/layout/gesture_tutorial_activity.xml @@ -14,6 +14,6 @@ limitations under the License. --> \ No newline at end of file diff --git a/quickstep/res/layout/back_gesture_tutorial_fragment.xml b/quickstep/res/layout/gesture_tutorial_fragment.xml similarity index 70% rename from quickstep/res/layout/back_gesture_tutorial_fragment.xml rename to quickstep/res/layout/gesture_tutorial_fragment.xml index d8c25bd4d0..0bc062af35 100644 --- a/quickstep/res/layout/back_gesture_tutorial_fragment.xml +++ b/quickstep/res/layout/gesture_tutorial_fragment.xml @@ -16,27 +16,27 @@ + android:background="@color/gesture_tutorial_background_color"> + android:accessibilityTraversalAfter="@id/gesture_tutorial_fragment_titles_container" + android:contentDescription="@string/gesture_tutorial_close_button_content_description" + android:src="@drawable/gesture_tutorial_close_button"/> @@ -91,21 +91,21 @@ android:layout_gravity="center_horizontal">