Merge "DO NOT MERGE - Merge RQ3A.210605.005"
This commit is contained in:
-12
@@ -91,9 +91,6 @@ LOCAL_FULL_LIBS_MANIFEST_FILES := $(LOCAL_PATH)/AndroidManifest-common.xml
|
||||
|
||||
LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
|
||||
|
||||
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
|
||||
LOCAL_LICENSE_CONDITIONS := notice
|
||||
LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE
|
||||
include $(BUILD_PACKAGE)
|
||||
|
||||
#
|
||||
@@ -127,9 +124,6 @@ LOCAL_FULL_LIBS_MANIFEST_FILES := \
|
||||
|
||||
LOCAL_MANIFEST_FILE := go/AndroidManifest.xml
|
||||
LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
|
||||
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
|
||||
LOCAL_LICENSE_CONDITIONS := notice
|
||||
LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE
|
||||
include $(BUILD_PACKAGE)
|
||||
|
||||
#
|
||||
@@ -206,9 +200,6 @@ LOCAL_FULL_LIBS_MANIFEST_FILES := \
|
||||
LOCAL_MANIFEST_FILE := quickstep/AndroidManifest.xml
|
||||
LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
|
||||
|
||||
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
|
||||
LOCAL_LICENSE_CONDITIONS := notice
|
||||
LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE
|
||||
include $(BUILD_PACKAGE)
|
||||
|
||||
|
||||
@@ -259,9 +250,6 @@ LOCAL_FULL_LIBS_MANIFEST_FILES := \
|
||||
|
||||
LOCAL_MANIFEST_FILE := quickstep/AndroidManifest.xml
|
||||
LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
|
||||
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
|
||||
LOCAL_LICENSE_CONDITIONS := notice
|
||||
LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE
|
||||
include $(BUILD_PACKAGE)
|
||||
|
||||
|
||||
|
||||
@@ -147,10 +147,10 @@ public class TaskOverlayFactory implements ResourceBasedOverride {
|
||||
public void initOverlay(Task task, ThumbnailData thumbnail, Matrix matrix,
|
||||
boolean rotated) {
|
||||
getActionsView().updateDisabledFlags(DISABLED_NO_THUMBNAIL, thumbnail == null);
|
||||
final boolean isAllowedByPolicy = mThumbnailView.isRealSnapshot();
|
||||
|
||||
if (thumbnail != null) {
|
||||
getActionsView().updateDisabledFlags(DISABLED_ROTATED, rotated);
|
||||
final boolean isAllowedByPolicy = thumbnail.isRealSnapshot;
|
||||
|
||||
getActionsView().setCallbacks(new OverlayUICallbacks() {
|
||||
@Override
|
||||
|
||||
@@ -73,7 +73,6 @@ import android.text.StaticLayout;
|
||||
import android.text.TextPaint;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.FloatProperty;
|
||||
import android.util.Property;
|
||||
import android.util.SparseBooleanArray;
|
||||
import android.view.HapticFeedbackConstants;
|
||||
import android.view.KeyEvent;
|
||||
@@ -1488,7 +1487,9 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView
|
||||
}
|
||||
int scrollDiff = newScroll[i] - oldScroll[i] + offset;
|
||||
if (scrollDiff != 0) {
|
||||
Property translationProperty = mOrientationHandler.getPrimaryViewTranslate();
|
||||
FloatProperty translationProperty = child instanceof TaskView
|
||||
? ((TaskView) child).getPrimaryFillDismissGapTranslationProperty()
|
||||
: mOrientationHandler.getPrimaryViewTranslate();
|
||||
|
||||
ResourceProvider rp = DynamicResource.provider(mActivity);
|
||||
SpringProperty sp = new SpringProperty(SpringProperty.FLAG_CAN_SPRING_ON_END)
|
||||
@@ -1883,7 +1884,11 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView
|
||||
? modalLeftOffsetSize
|
||||
: modalRightOffsetSize;
|
||||
float totalTranslation = translation + modalTranslation;
|
||||
mOrientationHandler.getPrimaryViewTranslate().set(getChildAt(i),
|
||||
View child = getChildAt(i);
|
||||
FloatProperty translationProperty = child instanceof TaskView
|
||||
? ((TaskView) child).getPrimaryTaskOffsetTranslationProperty()
|
||||
: mOrientationHandler.getPrimaryViewTranslate();
|
||||
translationProperty.set(child,
|
||||
totalTranslation * mOrientationHandler.getPrimaryTranslationDirectionFactor());
|
||||
}
|
||||
updateCurveProperties();
|
||||
|
||||
+3
-2
@@ -447,13 +447,14 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the snapshot is real.
|
||||
* Returns whether the snapshot is real. If the device is locked for the user of the task,
|
||||
* the snapshot used will be an app-theme generated snapshot instead of a real snapshot.
|
||||
*/
|
||||
public boolean isRealSnapshot() {
|
||||
if (mThumbnailData == null) {
|
||||
return false;
|
||||
}
|
||||
return mThumbnailData.isRealSnapshot;
|
||||
return mThumbnailData.isRealSnapshot && !mTask.isLocked;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -153,6 +153,58 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
}
|
||||
};
|
||||
|
||||
private static final FloatProperty<TaskView> FILL_DISMISS_GAP_TRANSLATION_X =
|
||||
new FloatProperty<TaskView>("fillDismissGapTranslationX") {
|
||||
@Override
|
||||
public void setValue(TaskView taskView, float v) {
|
||||
taskView.setFillDismissGapTranslationX(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Float get(TaskView taskView) {
|
||||
return taskView.mFillDismissGapTranslationX;
|
||||
}
|
||||
};
|
||||
|
||||
private static final FloatProperty<TaskView> FILL_DISMISS_GAP_TRANSLATION_Y =
|
||||
new FloatProperty<TaskView>("fillDismissGapTranslationY") {
|
||||
@Override
|
||||
public void setValue(TaskView taskView, float v) {
|
||||
taskView.setFillDismissGapTranslationY(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Float get(TaskView taskView) {
|
||||
return taskView.mFillDismissGapTranslationY;
|
||||
}
|
||||
};
|
||||
|
||||
private static final FloatProperty<TaskView> TASK_OFFSET_TRANSLATION_X =
|
||||
new FloatProperty<TaskView>("taskOffsetTranslationX") {
|
||||
@Override
|
||||
public void setValue(TaskView taskView, float v) {
|
||||
taskView.setTaskOffsetTranslationX(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Float get(TaskView taskView) {
|
||||
return taskView.mTaskOffsetTranslationX;
|
||||
}
|
||||
};
|
||||
|
||||
private static final FloatProperty<TaskView> TASK_OFFSET_TRANSLATION_Y =
|
||||
new FloatProperty<TaskView>("taskOffsetTranslationY") {
|
||||
@Override
|
||||
public void setValue(TaskView taskView, float v) {
|
||||
taskView.setTaskOffsetTranslationY(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Float get(TaskView taskView) {
|
||||
return taskView.mTaskOffsetTranslationY;
|
||||
}
|
||||
};
|
||||
|
||||
private final OnAttachStateChangeListener mTaskMenuStateListener =
|
||||
new OnAttachStateChangeListener() {
|
||||
@Override
|
||||
@@ -180,6 +232,13 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
private final FullscreenDrawParams mCurrentFullscreenParams;
|
||||
private final BaseDraggingActivity mActivity;
|
||||
|
||||
// Various causes of changing primary translation, which we aggregate to setTranslationX/Y().
|
||||
// TODO: We should do this for secondary translation properties as well.
|
||||
private float mFillDismissGapTranslationX;
|
||||
private float mFillDismissGapTranslationY;
|
||||
private float mTaskOffsetTranslationX;
|
||||
private float mTaskOffsetTranslationY;
|
||||
|
||||
private ObjectAnimator mIconAndDimAnimator;
|
||||
private float mIconScaleAnimStartProgress = 0;
|
||||
private float mFocusTransitionProgress = 1;
|
||||
@@ -619,6 +678,8 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
|
||||
protected void resetViewTransforms() {
|
||||
setCurveScale(1);
|
||||
mFillDismissGapTranslationX = mTaskOffsetTranslationX = 0f;
|
||||
mFillDismissGapTranslationY = mTaskOffsetTranslationY = 0f;
|
||||
setTranslationX(0f);
|
||||
setTranslationY(0f);
|
||||
setTranslationZ(0);
|
||||
@@ -835,6 +896,44 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
return mCurveScale;
|
||||
}
|
||||
|
||||
private void setFillDismissGapTranslationX(float x) {
|
||||
mFillDismissGapTranslationX = x;
|
||||
applyTranslationX();
|
||||
}
|
||||
|
||||
private void setFillDismissGapTranslationY(float y) {
|
||||
mFillDismissGapTranslationY = y;
|
||||
applyTranslationY();
|
||||
}
|
||||
|
||||
private void setTaskOffsetTranslationX(float x) {
|
||||
mTaskOffsetTranslationX = x;
|
||||
applyTranslationX();
|
||||
}
|
||||
|
||||
private void setTaskOffsetTranslationY(float y) {
|
||||
mTaskOffsetTranslationY = y;
|
||||
applyTranslationY();
|
||||
}
|
||||
|
||||
private void applyTranslationX() {
|
||||
setTranslationX(mFillDismissGapTranslationX + mTaskOffsetTranslationX);
|
||||
}
|
||||
|
||||
private void applyTranslationY() {
|
||||
setTranslationY(mFillDismissGapTranslationY + mTaskOffsetTranslationY);
|
||||
}
|
||||
|
||||
public FloatProperty<TaskView> getPrimaryFillDismissGapTranslationProperty() {
|
||||
return getPagedOrientationHandler().getPrimaryValue(
|
||||
FILL_DISMISS_GAP_TRANSLATION_X, FILL_DISMISS_GAP_TRANSLATION_Y);
|
||||
}
|
||||
|
||||
public FloatProperty<TaskView> getPrimaryTaskOffsetTranslationProperty() {
|
||||
return getPagedOrientationHandler().getPrimaryValue(
|
||||
TASK_OFFSET_TRANSLATION_X, TASK_OFFSET_TRANSLATION_Y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasOverlappingRendering() {
|
||||
// TODO: Clip-out the icon region from the thumbnail, since they are overlapping.
|
||||
|
||||
@@ -115,7 +115,7 @@ public class CheckLongPressHelper {
|
||||
private void triggerLongPress() {
|
||||
if ((mView.getParent() != null)
|
||||
&& mView.hasWindowFocus()
|
||||
&& (!mView.isPressed() || mListener == null)
|
||||
&& (!mView.isPressed() || mListener != null)
|
||||
&& !mHasPerformedLongPress) {
|
||||
boolean handled;
|
||||
if (mListener != null) {
|
||||
|
||||
@@ -42,12 +42,12 @@ import com.android.launcher3.util.OverScroller;
|
||||
public class LandscapePagedViewHandler implements PagedOrientationHandler {
|
||||
|
||||
@Override
|
||||
public int getPrimaryValue(int x, int y) {
|
||||
public <T> T getPrimaryValue(T x, T y) {
|
||||
return y;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSecondaryValue(int x, int y) {
|
||||
public <T> T getSecondaryValue(T x, T y) {
|
||||
return x;
|
||||
}
|
||||
|
||||
|
||||
@@ -83,8 +83,8 @@ public interface PagedOrientationHandler {
|
||||
boolean getRecentsRtlSetting(Resources resources);
|
||||
float getDegreesRotated();
|
||||
int getRotation();
|
||||
int getPrimaryValue(int x, int y);
|
||||
int getSecondaryValue(int x, int y);
|
||||
<T> T getPrimaryValue(T x, T y);
|
||||
<T> T getSecondaryValue(T x, T y);
|
||||
void delegateScrollTo(PagedView pagedView, int secondaryScroll, int primaryScroll);
|
||||
/** Uses {@params pagedView}.getScroll[X|Y]() method for the secondary amount*/
|
||||
void delegateScrollTo(PagedView pagedView, int primaryScroll);
|
||||
|
||||
@@ -40,12 +40,12 @@ import com.android.launcher3.util.OverScroller;
|
||||
public class PortraitPagedViewHandler implements PagedOrientationHandler {
|
||||
|
||||
@Override
|
||||
public int getPrimaryValue(int x, int y) {
|
||||
public <T> T getPrimaryValue(T x, T y) {
|
||||
return x;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSecondaryValue(int x, int y) {
|
||||
public <T> T getSecondaryValue(T x, T y) {
|
||||
return y;
|
||||
}
|
||||
|
||||
|
||||
@@ -210,6 +210,64 @@ public class Background extends LauncherInstrumentation.VisibleContainer {
|
||||
}
|
||||
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, TASK_START_EVENT);
|
||||
}
|
||||
/** Swipes left to switch to the previous app. */
|
||||
public Background quickSwitchToPreviousAppSwipeLeft() {
|
||||
try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
|
||||
LauncherInstrumentation.Closable c =
|
||||
mLauncher.addContextLayer("want to quick switch to the previous app")) {
|
||||
verifyActiveContainer();
|
||||
quickSwitchToPreviousAppSwipeLeft(getExpectedStateForQuickSwitch());
|
||||
return new Background(mLauncher);
|
||||
}
|
||||
}
|
||||
|
||||
protected void quickSwitchToPreviousAppSwipeLeft(int expectedState) {
|
||||
final boolean launcherWasVisible = mLauncher.isLauncherVisible();
|
||||
boolean transposeInLandscape = false;
|
||||
switch (mLauncher.getNavigationModel()) {
|
||||
case TWO_BUTTON:
|
||||
transposeInLandscape = true;
|
||||
// Fall through, zero button and two button modes behave the same.
|
||||
case ZERO_BUTTON: {
|
||||
final int startX;
|
||||
final int startY;
|
||||
final int endX;
|
||||
final int endY;
|
||||
if (mLauncher.getDevice().isNaturalOrientation() || !transposeInLandscape) {
|
||||
// Swipe from the bottom right to the bottom left of the screen.
|
||||
startX = mLauncher.getDevice().getDisplayWidth();
|
||||
startY = getSwipeStartY();
|
||||
endX = 0;
|
||||
endY = startY;
|
||||
} else {
|
||||
// Swipe from the bottom right to the top right of the screen.
|
||||
startX = getSwipeStartX();
|
||||
startY = mLauncher.getRealDisplaySize().y - 1;
|
||||
endX = startX;
|
||||
endY = 0;
|
||||
}
|
||||
final boolean isZeroButton =
|
||||
mLauncher.getNavigationModel()
|
||||
== LauncherInstrumentation.NavigationModel.ZERO_BUTTON;
|
||||
mLauncher.swipeToState(startX, startY, endX, endY, 20, expectedState,
|
||||
launcherWasVisible && isZeroButton
|
||||
? LauncherInstrumentation.GestureScope.INSIDE_TO_OUTSIDE
|
||||
: LauncherInstrumentation.GestureScope.OUTSIDE_WITH_PILFER);
|
||||
break;
|
||||
}
|
||||
|
||||
case THREE_BUTTON:
|
||||
// Double press the recents button.
|
||||
UiObject2 recentsButton = mLauncher.waitForSystemUiObject("recent_apps");
|
||||
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, SQUARE_BUTTON_EVENT);
|
||||
mLauncher.runToState(() -> recentsButton.click(), OVERVIEW_STATE_ORDINAL);
|
||||
mLauncher.getOverview();
|
||||
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, SQUARE_BUTTON_EVENT);
|
||||
recentsButton.click();
|
||||
break;
|
||||
}
|
||||
mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, TASK_START_EVENT);
|
||||
}
|
||||
|
||||
protected String getSwipeHeightRequestName() {
|
||||
return TestProtocol.REQUEST_BACKGROUND_TO_OVERVIEW_SWIPE_HEIGHT;
|
||||
|
||||
Reference in New Issue
Block a user