diff options
Diffstat (limited to 'java')
| -rw-r--r-- | java/src/com/android/intentresolver/widget/ResolverDrawerLayout.java | 37 | ||||
| -rw-r--r-- | java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java | 34 |
2 files changed, 34 insertions, 37 deletions
diff --git a/java/src/com/android/intentresolver/widget/ResolverDrawerLayout.java b/java/src/com/android/intentresolver/widget/ResolverDrawerLayout.java index a2c5afc6..f5e20510 100644 --- a/java/src/com/android/intentresolver/widget/ResolverDrawerLayout.java +++ b/java/src/com/android/intentresolver/widget/ResolverDrawerLayout.java @@ -89,8 +89,8 @@ public class ResolverDrawerLayout extends ViewGroup { * out of sync due to frequently dropping fractions of a pixel from '(int) dy' casts. */ private float mDragRemainder = 0.0f; + private int mHeightUsed; private int mCollapsibleHeight; - private int mUncollapsibleHeight; private int mAlwaysShowHeight; /** @@ -244,9 +244,7 @@ public class ResolverDrawerLayout extends ViewGroup { mLastTouchY -= dReserved; } - final int oldCollapsibleHeight = mCollapsibleHeight; - mCollapsibleHeight = Math.min(mCollapsibleHeight, getMaxCollapsedHeight()); - + final int oldCollapsibleHeight = updateCollapsibleHeight(); if (updateCollapseOffset(oldCollapsibleHeight, !isDragging())) { return; } @@ -485,7 +483,7 @@ public class ResolverDrawerLayout extends ViewGroup { } else { if (isDismissable() && yvel > 0 && mCollapseOffset > mCollapsibleHeight) { - smoothScrollTo(mCollapsibleHeight + mUncollapsibleHeight, yvel); + smoothScrollTo(mHeightUsed, yvel); mDismissOnScrollerFinished = true; } else { scrollNestedScrollableChildBackToTop(); @@ -575,8 +573,7 @@ public class ResolverDrawerLayout extends ViewGroup { return 0; } - final float newPos = Math.max(0, Math.min(mCollapseOffset + dy, - mCollapsibleHeight + mUncollapsibleHeight)); + final float newPos = Math.max(0, Math.min(mCollapseOffset + dy, mHeightUsed)); if (newPos != mCollapseOffset) { dy = newPos - mCollapseOffset; @@ -855,7 +852,7 @@ public class ResolverDrawerLayout extends ViewGroup { } else { if (isDismissable() && velocityY < 0 && mCollapseOffset > mCollapsibleHeight) { - smoothScrollTo(mCollapsibleHeight + mUncollapsibleHeight, velocityY); + smoothScrollTo(mHeightUsed, velocityY); mDismissOnScrollerFinished = true; } else { smoothScrollTo(velocityY > 0 ? 0 : mCollapsibleHeight, velocityY); @@ -883,9 +880,8 @@ public class ResolverDrawerLayout extends ViewGroup { } break; case AccessibilityNodeInfo.ACTION_DISMISS: - if ((mCollapseOffset < mCollapsibleHeight + mUncollapsibleHeight) - && isDismissable()) { - smoothScrollTo(mCollapsibleHeight + mUncollapsibleHeight, 0); + if ((mCollapseOffset < mHeightUsed) && isDismissable()) { + smoothScrollTo(mHeightUsed, 0); mDismissOnScrollerFinished = true; return true; } @@ -923,7 +919,7 @@ public class ResolverDrawerLayout extends ViewGroup { info.addAction(AccessibilityAction.ACTION_SCROLL_DOWN); info.setScrollable(true); } - if ((mCollapseOffset < mCollapsibleHeight + mUncollapsibleHeight) + if ((mCollapseOffset < mHeightUsed) && ((mCollapseOffset < mCollapsibleHeight) || isDismissable())) { info.addAction(AccessibilityAction.ACTION_SCROLL_UP); info.setScrollable(true); @@ -931,7 +927,7 @@ public class ResolverDrawerLayout extends ViewGroup { if (mCollapseOffset < mCollapsibleHeight) { info.addAction(AccessibilityAction.ACTION_COLLAPSE); } - if (mCollapseOffset < mCollapsibleHeight + mUncollapsibleHeight && isDismissable()) { + if (mCollapseOffset < mHeightUsed && isDismissable()) { info.addAction(AccessibilityAction.ACTION_DISMISS); } } @@ -1022,22 +1018,25 @@ public class ResolverDrawerLayout extends ViewGroup { } } - final int oldCollapsibleHeight = mCollapsibleHeight; - mCollapsibleHeight = Math.max(0, - heightUsed - mAlwaysShowHeight - getMaxCollapsedHeight()); - mUncollapsibleHeight = heightUsed - mCollapsibleHeight; - + mHeightUsed = heightUsed; + int oldCollapsibleHeight = updateCollapsibleHeight(); updateCollapseOffset(oldCollapsibleHeight, !isDragging()); if (getShowAtTop()) { mTopOffset = 0; } else { - mTopOffset = Math.max(0, heightSize - heightUsed) + (int) mCollapseOffset; + mTopOffset = Math.max(0, heightSize - mHeightUsed) + (int) mCollapseOffset; } setMeasuredDimension(sourceWidth, heightSize); } + private int updateCollapsibleHeight() { + final int oldCollapsibleHeight = mCollapsibleHeight; + mCollapsibleHeight = Math.max(0, mHeightUsed - mAlwaysShowHeight - getMaxCollapsedHeight()); + return oldCollapsibleHeight; + } + /** * @return The space reserved by views with 'alwaysShow=true' */ diff --git a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java index 5a65ec1e..f1febed2 100644 --- a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java +++ b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java @@ -27,6 +27,7 @@ import static androidx.test.espresso.matcher.ViewMatchers.isSelected; import static androidx.test.espresso.matcher.ViewMatchers.withId; import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static com.android.intentresolver.ChooserWrapperActivity.sOverrides; import static com.android.intentresolver.UnbundledChooserActivityWorkProfileTest.TestCase.ExpectedBlocker.NO_BLOCKER; import static com.android.intentresolver.UnbundledChooserActivityWorkProfileTest.TestCase.ExpectedBlocker.PERSONAL_PROFILE_ACCESS_BLOCKER; import static com.android.intentresolver.UnbundledChooserActivityWorkProfileTest.TestCase.ExpectedBlocker.PERSONAL_PROFILE_SHARE_BLOCKER; @@ -34,7 +35,6 @@ import static com.android.intentresolver.UnbundledChooserActivityWorkProfileTest import static com.android.intentresolver.UnbundledChooserActivityWorkProfileTest.TestCase.ExpectedBlocker.WORK_PROFILE_SHARE_BLOCKER; import static com.android.intentresolver.UnbundledChooserActivityWorkProfileTest.TestCase.Tab.PERSONAL; import static com.android.intentresolver.UnbundledChooserActivityWorkProfileTest.TestCase.Tab.WORK; -import static com.android.intentresolver.ChooserWrapperActivity.sOverrides; import static org.hamcrest.CoreMatchers.not; import static org.mockito.ArgumentMatchers.eq; @@ -48,9 +48,9 @@ import androidx.test.InstrumentationRegistry; import androidx.test.espresso.NoMatchingViewException; import androidx.test.rule.ActivityTestRule; -import com.android.internal.R; import com.android.intentresolver.ResolverActivity.ResolvedComponentInfo; import com.android.intentresolver.UnbundledChooserActivityWorkProfileTest.TestCase.Tab; +import com.android.internal.R; import junit.framework.AssertionFailedError; @@ -134,14 +134,13 @@ public class UnbundledChooserActivityWorkProfileTest { /* tab= */ WORK, /* expectedBlocker= */ NO_BLOCKER ), -// TODO(b/256869196) ChooserActivity goes into requestLayout loop -// new TestCase( -// /* isSendAction= */ true, -// /* hasCrossProfileIntents= */ false, -// /* myUserHandle= */ WORK_USER_HANDLE, -// /* tab= */ WORK, -// /* expectedBlocker= */ NO_BLOCKER -// ), + new TestCase( + /* isSendAction= */ true, + /* hasCrossProfileIntents= */ false, + /* myUserHandle= */ WORK_USER_HANDLE, + /* tab= */ WORK, + /* expectedBlocker= */ NO_BLOCKER + ), new TestCase( /* isSendAction= */ true, /* hasCrossProfileIntents= */ true, @@ -163,14 +162,13 @@ public class UnbundledChooserActivityWorkProfileTest { /* tab= */ PERSONAL, /* expectedBlocker= */ NO_BLOCKER ), -// TODO(b/256869196) ChooserActivity goes into requestLayout loop -// new TestCase( -// /* isSendAction= */ true, -// /* hasCrossProfileIntents= */ false, -// /* myUserHandle= */ WORK_USER_HANDLE, -// /* tab= */ PERSONAL, -// /* expectedBlocker= */ PERSONAL_PROFILE_SHARE_BLOCKER -// ), + new TestCase( + /* isSendAction= */ true, + /* hasCrossProfileIntents= */ false, + /* myUserHandle= */ WORK_USER_HANDLE, + /* tab= */ PERSONAL, + /* expectedBlocker= */ PERSONAL_PROFILE_SHARE_BLOCKER + ), new TestCase( /* isSendAction= */ true, /* hasCrossProfileIntents= */ true, |