Snap for 7695339 from fc88784f8d to sc-v2-release

Change-Id: Ic52f4fd2515167a63e6df53f6ca402f2c7a41a11
This commit is contained in:
Android Build Coastguard Worker
2021-09-01 23:08:39 +00:00
11 changed files with 73 additions and 41 deletions
@@ -1124,6 +1124,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
if (target.mode == mode && target.taskInfo != null
// Compare component name instead of task-id because transitions will promote
// the target up to the root task while getTaskId returns the leaf.
&& target.taskInfo.topActivity != null
&& target.taskInfo.topActivity.equals(mLauncher.getComponentName())) {
return true;
}
@@ -243,7 +243,19 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
if (!mTouchEnabled) {
return true;
}
mControllerCallbacks.onTouchEvent(event);
if (mIconLayoutBounds.contains((int) event.getX(), (int) event.getY())) {
// Don't allow long pressing between icons.
return true;
}
if (mControllerCallbacks.onTouchEvent(event)) {
int oldAction = event.getAction();
try {
event.setAction(MotionEvent.ACTION_CANCEL);
return super.onTouchEvent(event);
} finally {
event.setAction(oldAction);
}
}
return super.onTouchEvent(event);
}
@@ -223,7 +223,11 @@ public class TaskbarViewController {
return view -> mControllers.taskbarStashController.updateAndAnimateIsStashedInApp(true);
}
public void onTouchEvent(MotionEvent motionEvent) {
/**
* Get the first chance to handle TaskbarView#onTouchEvent, and return whether we want to
* consume the touch so TaskbarView treats it as an ACTION_CANCEL.
*/
public boolean onTouchEvent(MotionEvent motionEvent) {
final float x = motionEvent.getRawX();
final float y = motionEvent.getRawY();
switch (motionEvent.getAction()) {
@@ -239,6 +243,7 @@ public class TaskbarViewController {
mControllers.taskbarStashController.startStashHint(
/* animateForward= */ false);
mCanceledStashHint = true;
return true;
}
break;
case MotionEvent.ACTION_UP:
@@ -249,6 +254,7 @@ public class TaskbarViewController {
}
break;
}
return false;
}
}
}
@@ -805,7 +805,9 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
mActivityInitListener.unregister();
mStateCallback.setStateOnUiThread(STATE_GESTURE_CANCELLED | STATE_HANDLER_INVALIDATED);
TaskViewUtils.setDividerBarShown(mRecentsAnimationTargets.nonApps, true);
if (mRecentsAnimationTargets != null) {
TaskViewUtils.setDividerBarShown(mRecentsAnimationTargets.nonApps, true);
}
// Defer clearing the controller and the targets until after we've updated the state
mRecentsAnimationController = null;
@@ -33,11 +33,8 @@ import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.SystemClock;
import android.util.Log;
import android.util.SparseIntArray;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.tracing.OverviewComponentObserverProto;
import com.android.launcher3.tracing.TouchInteractionServiceProto;
import com.android.launcher3.util.SimpleBroadcastReceiver;
@@ -132,16 +129,6 @@ public final class OverviewComponentObserver {
private void updateOverviewTargets() {
ComponentName defaultHome = PackageManagerWrapper.getInstance()
.getHomeActivities(new ArrayList<>());
if (TestProtocol.sDebugTracing && defaultHome == null) {
Log.d(TestProtocol.THIRD_PARTY_LAUNCHER_NOT_SET, "getHomeActivities returned null");
while ((defaultHome =
PackageManagerWrapper.getInstance().getHomeActivities(new ArrayList<>()))
== null) {
SystemClock.sleep(10);
}
Log.d(TestProtocol.THIRD_PARTY_LAUNCHER_NOT_SET,
"getHomeActivities returned non-null: " + defaultHome);
}
mIsHomeDisabled = mDeviceState.isHomeDisabled();
mIsDefaultHome = Objects.equals(mMyHomeIntent.getComponent(), defaultHome);
@@ -1351,8 +1351,10 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
}
Log.d(TASK_VIEW_ID_CRASH, "taskViewCount: " + getTaskViewCount()
+ " " + sb.toString());
mRunningTaskViewId = -1;
} else {
mRunningTaskViewId = newRunningTaskView.getTaskViewId();
}
mRunningTaskViewId = newRunningTaskView.getTaskViewId();
}
if (mNextPage == INVALID_PAGE) {
@@ -1365,7 +1367,10 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
} else if (currentTaskId != -1) {
currentTaskView = getTaskViewByTaskId(currentTaskId);
if (currentTaskView != null) {
setCurrentPage(indexOfChild(currentTaskView));
int currentTaskViewIndex = indexOfChild(currentTaskView);
if (mCurrentPage != currentTaskViewIndex) {
setCurrentPage(currentTaskViewIndex);
}
}
}
@@ -409,6 +409,10 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
* Returns true if the touch down at the provided position be ignored
*/
protected boolean shouldIgnoreTouchDown(float x, float y) {
if (mDisplay == DISPLAY_TASKBAR) {
// Allow touching within padding on taskbar, given icon sizes are smaller.
return false;
}
return y < getPaddingTop()
|| x < getPaddingLeft()
|| y > getHeight() - getPaddingBottom()
+12 -6
View File
@@ -554,6 +554,14 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
AbstractFloatingView.closeOpenViews(this, false, TYPE_ICON_SURFACE);
}
@Override
public void onMultiWindowModeChanged(boolean isInMultiWindowMode, Configuration newConfig) {
super.onMultiWindowModeChanged(isInMultiWindowMode, newConfig);
// Always update device profile when multi window mode changed.
initDeviceProfile(mDeviceProfile.inv);
dispatchDeviceProfileChanged();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
int diff = newConfig.diff(mOldConfig);
@@ -592,11 +600,9 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
private void initDeviceProfile(InvariantDeviceProfile idp) {
// Load configuration-specific DeviceProfile
mDeviceProfile = idp.getDeviceProfile(this);
if (isInMultiWindowMode()) {
mDeviceProfile = mDeviceProfile.getMultiWindowProfile(
this, getMultiWindowDisplaySize());
}
mDeviceProfile = isInMultiWindowMode()
? mDeviceProfile.getMultiWindowProfile(this, getMultiWindowDisplaySize())
: idp.getDeviceProfile(this);
onDeviceProfileInitiated();
mModelWriter = mModel.getWriter(getDeviceProfile().isVerticalBarLayout(), true, this);
@@ -1195,7 +1201,7 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
// Until the workspace is bound, ensure that we keep the wallpaper offset locked to the
// default state, otherwise we will update to the wrong offsets in RTL
mWorkspace.lockWallpaperToDefaultPage();
mWorkspace.bindAndInitFirstWorkspaceScreen(null /* recycled qsb */);
mWorkspace.bindAndInitFirstWorkspaceScreen();
mDragController.addDragListener(mWorkspace);
// Get the search/delete/uninstall bar
+1 -1
View File
@@ -1046,7 +1046,7 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
/**
* If being flinged and user touches the screen, initiate drag; otherwise don't.
*/
private void updateIsBeingDraggedOnTouchDown(MotionEvent ev) {
protected void updateIsBeingDraggedOnTouchDown(MotionEvent ev) {
// mScroller.isFinished should be false when being flinged.
final int xDist = Math.abs(mScroller.getFinalX() - mScroller.getCurrX());
final boolean finishedScrolling = (mScroller.isFinished() || xDist < mPageSlop / 3);
+25 -15
View File
@@ -223,6 +223,9 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
// Variables relating to touch disambiguation (scrolling workspace vs. scrolling a widget)
private float mXDown;
private float mYDown;
private View mQsb;
private boolean mIsEventOverQsb;
final static float START_DAMPING_TOUCH_SLOP_ANGLE = (float) Math.PI / 6;
final static float MAX_SWIPE_ANGLE = (float) Math.PI / 3;
final static float TOUCH_SLOP_DAMPING_FACTOR = 4;
@@ -548,9 +551,8 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
/**
* Initializes and binds the first page
* @param qsb an existing qsb to recycle or null.
*/
public void bindAndInitFirstWorkspaceScreen(View qsb) {
public void bindAndInitFirstWorkspaceScreen() {
if (!FeatureFlags.QSB_ON_FIRST_SCREEN) {
return;
}
@@ -558,10 +560,10 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
// Add the first page
CellLayout firstPage = insertNewWorkspaceScreen(Workspace.FIRST_SCREEN_ID, getChildCount());
// Always add a QSB on the first screen.
if (qsb == null) {
if (mQsb == null) {
// In transposed layout, we add the QSB in the Grid. As workspace does not touch the
// edges, we do not need a full width QSB.
qsb = LayoutInflater.from(getContext())
mQsb = LayoutInflater.from(getContext())
.inflate(R.layout.search_container_workspace, firstPage, false);
}
@@ -570,8 +572,9 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
CellLayout.LayoutParams lp = new CellLayout.LayoutParams(0, 0, firstPage.getCountX(),
cellVSpan);
lp.canReorder = false;
if (!firstPage.addViewToCellLayout(qsb, 0, R.id.search_container_workspace, lp, true)) {
if (!firstPage.addViewToCellLayout(mQsb, 0, R.id.search_container_workspace, lp, true)) {
Log.e(TAG, "Failed to add to item at (0, 0) to CellLayout");
mQsb = null;
}
}
@@ -581,9 +584,8 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
disableLayoutTransitions();
// Recycle the QSB widget
View qsb = findViewById(R.id.search_container_workspace);
if (qsb != null) {
((ViewGroup) qsb.getParent()).removeView(qsb);
if (mQsb != null) {
((ViewGroup) mQsb.getParent()).removeView(mQsb);
}
// Remove the pages and clear the screen models
@@ -596,7 +598,7 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
mLauncher.mHandler.removeCallbacksAndMessages(DeferredWidgetRefresh.class);
// Ensure that the first page is always present
bindAndInitFirstWorkspaceScreen(qsb);
bindAndInitFirstWorkspaceScreen();
// Re-enable the layout transitions
enableLayoutTransitions();
@@ -922,17 +924,25 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) {
mXDown = ev.getX();
mYDown = ev.getY();
protected void updateIsBeingDraggedOnTouchDown(MotionEvent ev) {
super.updateIsBeingDraggedOnTouchDown(ev);
mXDown = ev.getX();
mYDown = ev.getY();
if (mQsb != null) {
mTempFXY[0] = mXDown + getScrollX();
mTempFXY[1] = mYDown + getScrollY();
Utilities.mapCoordInSelfToDescendant(mQsb, this, mTempFXY);
mIsEventOverQsb = mQsb.getLeft() <= mTempFXY[0] && mQsb.getRight() >= mTempFXY[0]
&& mQsb.getTop() <= mTempFXY[1] && mQsb.getBottom() >= mTempFXY[1];
} else {
mIsEventOverQsb = false;
}
return super.onInterceptTouchEvent(ev);
}
@Override
protected void determineScrollingStart(MotionEvent ev) {
if (!isFinishedSwitchingState()) return;
if (!isFinishedSwitchingState() || mIsEventOverQsb) return;
float deltaX = ev.getX() - mXDown;
float absDeltaX = Math.abs(deltaX);
@@ -117,7 +117,6 @@ public final class TestProtocol {
public static final String PERMANENT_DIAG_TAG = "TaplTarget";
public static final String WORK_PROFILE_REMOVED = "b/159671700";
public static final String FALLBACK_ACTIVITY_NO_SET = "b/181019015";
public static final String THIRD_PARTY_LAUNCHER_NOT_SET = "b/187080582";
public static final String TASK_VIEW_ID_CRASH = "b/195430732";
public static final String L3_SWIPE_TO_HOME = "b/192018189";
}