Snap for 7798846 from 6ab0d1e7be to sc-v2-release

Change-Id: I82e13e0d5bb36ba07731d4f0c1f4dc852b97fdaf
This commit is contained in:
Android Build Coastguard Worker
2021-10-06 23:16:27 +00:00
8 changed files with 96 additions and 50 deletions
@@ -53,14 +53,14 @@ public class QuickstepTestInformationHandler extends TestInformationHandler {
Bundle::putInt, PortraitStatesTouchController::getHotseatTop);
}
case TestProtocol.REQUEST_GET_FOCUSED_TASK_WIDTH_FOR_TABLET: {
case TestProtocol.REQUEST_GET_FOCUSED_TASK_HEIGHT_FOR_TABLET: {
if (!mDeviceProfile.isTablet) {
return null;
}
Rect focusedTaskRect = new Rect();
LauncherActivityInterface.INSTANCE.calculateTaskSize(mContext, mDeviceProfile,
focusedTaskRect);
response.putInt(TestProtocol.TEST_INFO_RESPONSE_FIELD, focusedTaskRect.width());
response.putInt(TestProtocol.TEST_INFO_RESPONSE_FIELD, focusedTaskRect.height());
return response;
}
}
@@ -163,10 +163,8 @@ public class SplitSelectStateController {
if (mSuccessCallback != null) {
mSuccessCallback.accept(true);
}
resetState();
}));
// After successful launch, call resetState
resetState();
}
@Override
@@ -175,9 +173,8 @@ public class SplitSelectStateController {
if (mSuccessCallback != null) {
mSuccessCallback.accept(false);
}
resetState();
});
resetState();
}
}
@@ -409,7 +409,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
private final float mFastFlingVelocity;
private final int mScrollHapticMinGapMillis;
private final RecentsModel mModel;
private final int mGridSideMargin;
private final int mSplitPlaceholderSize;
private final ClearAllButton mClearAllButton;
private final Rect mClearAllButtonDeadZoneRect = new Rect();
private final Rect mTaskViewDeadZoneRect = new Rect();
@@ -660,7 +660,8 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
mIsRtl = mOrientationHandler.getRecentsRtlSetting(getResources());
setLayoutDirection(mIsRtl ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR);
mGridSideMargin = getResources().getDimensionPixelSize(R.dimen.overview_grid_side_margin);
mSplitPlaceholderSize = getResources().getDimensionPixelSize(
R.dimen.split_placeholder_size);
mSquaredTouchSlop = squaredTouchSlop(context);
mEmptyIcon = context.getDrawable(R.drawable.ic_empty_recents);
@@ -3918,7 +3919,6 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
/** TODO(b/181707736) More gracefully handle exiting split selection state */
private void resetFromSplitSelectionState() {
mSplitHiddenTaskView.setTranslationY(0);
if (!showAsGrid()) {
int pageToSnapTo = mCurrentPage;
if (mSplitHiddenTaskViewIndex <= pageToSnapTo) {
@@ -3930,9 +3930,12 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
}
onLayout(false /* changed */, getLeft(), getTop(), getRight(), getBottom());
resetTaskVisuals();
mSplitHiddenTaskView.setVisibility(VISIBLE);
mSplitHiddenTaskView = null;
mSplitHiddenTaskViewIndex = -1;
if (mSplitHiddenTaskView != null) {
mSplitHiddenTaskView.setTranslationY(0);
mSplitHiddenTaskView.setVisibility(VISIBLE);
mSplitHiddenTaskView = null;
}
if (mFirstFloatingTaskView != null) {
mActivity.getRootView().removeView(mFirstFloatingTaskView);
mFirstFloatingTaskView = null;
@@ -4236,13 +4239,19 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
return;
}
if (mSyncTransactionApplier != null) {
recentsAnimationTargets.addReleaseCheck(mSyncTransactionApplier);
}
RemoteTargetGluer gluer = new RemoteTargetGluer(getContext(), getSizeStrategy());
mRemoteTargetHandles = gluer.assignTargetsForSplitScreen(recentsAnimationTargets);
mSplitBoundsConfig = gluer.getStagedSplitBounds();
if (mSyncTransactionApplier != null) {
// Add release check to the targets from the RemoteTargetGluer and not the targets
// passed in because in the event we're in split screen, we use the passed in targets
// to create new RemoteAnimationTargets in assignTargetsForSplitScreen(), and the
// mSyncTransactionApplier doesn't get transferred over
runActionOnRemoteHandles(remoteTargetHandle -> remoteTargetHandle
.getTransformParams().getTargetSet()
.addReleaseCheck(mSyncTransactionApplier));
}
TaskView runningTaskView = getRunningTaskView();
if (runningTaskView instanceof GroupedTaskView) {
// We initially create a GroupedTaskView in showCurrentTask() before launcher even
@@ -4349,16 +4358,24 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
@Override
protected int computeMinScroll() {
if (getTaskViewCount() > 0) {
int minScroll;
if (mIsRtl) {
// If we aren't showing the clear all button, use the rightmost task as the min
// scroll.
return getScrollForPage(mDisallowScrollToClearAll ? indexOfChild(
minScroll = getScrollForPage(mDisallowScrollToClearAll ? indexOfChild(
getTaskViewAt(getTaskViewCount() - 1)) : indexOfChild(mClearAllButton));
if (showAsGrid() && isSplitSelectionActive()
&& mSplitSelectStateController.getActiveSplitStagePosition()
== SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT) {
minScroll -= mSplitPlaceholderSize;
}
} else {
TaskView focusedTaskView = mShowAsGridLastOnLayout ? getFocusedTaskView() : null;
return getScrollForPage(focusedTaskView != null ? indexOfChild(focusedTaskView)
minScroll = getScrollForPage(focusedTaskView != null ? indexOfChild(focusedTaskView)
: 0);
// TODO(b/200537659): Adjust according to mSplitPlaceholderSize.
}
return minScroll;
}
return super.computeMinScroll();
}
@@ -4366,16 +4383,24 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
@Override
protected int computeMaxScroll() {
if (getTaskViewCount() > 0) {
int maxScroll;
if (mIsRtl) {
TaskView focusedTaskView = mShowAsGridLastOnLayout ? getFocusedTaskView() : null;
return getScrollForPage(focusedTaskView != null ? indexOfChild(focusedTaskView)
maxScroll = getScrollForPage(focusedTaskView != null ? indexOfChild(focusedTaskView)
: 0);
if (showAsGrid() && isSplitSelectionActive()
&& mSplitSelectStateController.getActiveSplitStagePosition()
== SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT) {
maxScroll += mSplitPlaceholderSize;
}
} else {
// If we aren't showing the clear all button, use the leftmost task as the min
// scroll.
return getScrollForPage(mDisallowScrollToClearAll ? indexOfChild(
maxScroll = getScrollForPage(mDisallowScrollToClearAll ? indexOfChild(
getTaskViewAt(getTaskViewCount() - 1)) : indexOfChild(mClearAllButton));
// TODO(b/200537659): Adjust according to mSplitPlaceholderSize.
}
return maxScroll;
}
return super.computeMaxScroll();
}
@@ -178,7 +178,7 @@ public abstract class BaseLoaderResults {
Log.d(TestProtocol.NULL_INT_SET, "bind (1) currentScreenIds: "
+ currentScreenIds
+ ", mCallBacks: "
+ mCallbacks.getClass().getSimpleName());
+ mCallbacks.getClass().getName());
}
filterCurrentWorkspaceItems(currentScreenIds, mWorkspaceItems, currentWorkspaceItems,
otherWorkspaceItems);
@@ -102,8 +102,8 @@ public final class TestProtocol {
public static final String REQUEST_GET_ACTIVITIES_CREATED_COUNT =
"get-activities-created-count";
public static final String REQUEST_GET_ACTIVITIES = "get-activities";
public static final String REQUEST_GET_FOCUSED_TASK_WIDTH_FOR_TABLET =
"get-focused-task-width-for-tablet";
public static final String REQUEST_GET_FOCUSED_TASK_HEIGHT_FOR_TABLET =
"get-focused-task-height-for-tablet";
public static Long sForcePauseTimeout;
public static final String REQUEST_SET_FORCE_PAUSE_TIMEOUT = "set-force-pause-timeout";
@@ -138,6 +138,10 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer {
}
}
int getTaskCount() {
return getTasks().size();
}
/**
* Returns whether Overview has tasks.
*/
@@ -169,7 +173,7 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer {
}
try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
"want to assert overview actions view visibility")) {
if (mLauncher.isTablet() && !isOverviewSnappedToFocusedTask()) {
if (mLauncher.isTablet() && !isOverviewSnappedToFocusedTaskForTablet()) {
mLauncher.waitUntilLauncherObjectGone("action_buttons");
} else {
mLauncher.waitForLauncherObject("action_buttons");
@@ -178,14 +182,10 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer {
}
/**
* Returns if focused task is currently snapped task in overview.
* Returns if focused task is currently snapped task in tablet grid overview.
*/
private boolean isOverviewSnappedToFocusedTask() {
if (!mLauncher.isTablet()) {
// Focused task only exists in tablet's grid-overview
return false;
}
UiObject2 focusedTask = getFocusedTask();
private boolean isOverviewSnappedToFocusedTaskForTablet() {
UiObject2 focusedTask = getFocusedTaskForTablet();
if (focusedTask == null) {
return false;
}
@@ -197,14 +197,14 @@ public class BaseOverview extends LauncherInstrumentation.VisibleContainer {
/**
* Returns Overview focused task if it exists.
*/
private UiObject2 getFocusedTask() {
UiObject2 getFocusedTaskForTablet() {
final List<UiObject2> taskViews = getTasks();
if (taskViews.size() == 0) {
return null;
}
int focusedTaskWidth = mLauncher.getFocusedTaskWidth();
int focusedTaskHeight = mLauncher.getFocusedTaskHeightForTablet();
for (UiObject2 task : taskViews) {
if (task.getVisibleBounds().width() == focusedTaskWidth) {
if (task.getVisibleBounds().height() == focusedTaskHeight) {
return task;
}
}
@@ -321,8 +321,8 @@ public final class LauncherInstrumentation {
.getBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD);
}
int getFocusedTaskWidth() {
return getTestInfo(TestProtocol.REQUEST_GET_FOCUSED_TASK_WIDTH_FOR_TABLET).getInt(
int getFocusedTaskHeightForTablet() {
return getTestInfo(TestProtocol.REQUEST_GET_FOCUSED_TASK_HEIGHT_FOR_TABLET).getInt(
TestProtocol.TEST_INFO_RESPONSE_FIELD);
}
@@ -47,29 +47,53 @@ public final class OverviewTask {
mOverview.verifyActiveContainer();
}
private int getVisibleHeight() {
return mTask.getVisibleBounds().height();
}
/**
* Swipes the task up.
* Dismisses the task by swiping up.
*/
public void dismiss() {
try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
"want to dismiss a task")) {
"want to dismiss an overview task")) {
verifyActiveContainer();
// Dismiss the task via flinging it up.
final Rect taskBounds = mLauncher.getVisibleBounds(mTask);
final int centerX = taskBounds.centerX();
final int centerY = taskBounds.centerY();
mLauncher.executeAndWaitForLauncherEvent(
() -> mLauncher.linearGesture(centerX, centerY, centerX, 0, 10, false,
LauncherInstrumentation.GestureScope.INSIDE),
event -> TestProtocol.DISMISS_ANIMATION_ENDS_MESSAGE.equals(
event.getClassName()),
() -> "Didn't receive a dismiss animation ends message: " + centerX + ", "
+ centerY,
"swiping to dismiss");
int taskCountBeforeDismiss = mOverview.getTaskCount();
mLauncher.assertNotEquals("Unable to find a task", 0, taskCountBeforeDismiss);
if (taskCountBeforeDismiss == 1) {
dismissBySwipingUp();
return;
}
boolean taskWasFocused = mLauncher.isTablet() && getVisibleHeight() == mLauncher
.getFocusedTaskHeightForTablet();
dismissBySwipingUp();
try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("dismissed")) {
if (taskWasFocused) {
mLauncher.assertNotNull("No task became focused",
mOverview.getFocusedTaskForTablet());
}
}
}
}
private void dismissBySwipingUp() {
verifyActiveContainer();
// Dismiss the task via flinging it up.
final Rect taskBounds = mLauncher.getVisibleBounds(mTask);
final int centerX = taskBounds.centerX();
final int centerY = taskBounds.centerY();
mLauncher.executeAndWaitForLauncherEvent(
() -> mLauncher.linearGesture(centerX, centerY, centerX, 0, 10, false,
LauncherInstrumentation.GestureScope.INSIDE),
event -> TestProtocol.DISMISS_ANIMATION_ENDS_MESSAGE.equals(event.getClassName()),
() -> "Didn't receive a dismiss animation ends message: " + centerX + ", "
+ centerY, "swiping to dismiss");
}
/**
* Clicks at the task.
*/