Fixing some missing swipecancelled events

Updating NavBarPosition to expose more constructor and getters

Flag: com.android.launcher3.use_activity_overlay
Test: atest SwipeTransitionTest
Bug: 340432854
Change-Id: I86193fa26c0337d50e366cecb2d7debf37940fe1
This commit is contained in:
Sunny Goyal
2024-05-23 16:09:45 -07:00
parent 59fd8cbfaf
commit 97ceed42e6
10 changed files with 57 additions and 64 deletions
@@ -1275,7 +1275,7 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer
if ((flags & CHANGE_NAVIGATION_MODE) != 0) {
getDragLayer().recreateControllers();
if (mActionsView != null) {
mActionsView.updateVerticalMargin(info.navigationMode);
mActionsView.updateVerticalMargin(info.getNavigationMode());
}
}
}
@@ -157,7 +157,7 @@ public class RotationTouchHelper implements DisplayInfoChangeListener, SafeClose
// Register for navigation mode changes
mDisplayController.addChangeListener(this);
DisplayController.Info info = mDisplayController.getInfo();
onDisplayInfoChangedInternal(info, CHANGE_ALL, info.navigationMode.hasGestures);
onDisplayInfoChangedInternal(info, CHANGE_ALL, info.getNavigationMode().hasGestures);
runOnDestroy(() -> mDisplayController.removeChangeListener(this));
mOrientationListener = new OrientationEventListener(mContext) {
@@ -291,7 +291,7 @@ public class RotationTouchHelper implements DisplayInfoChangeListener, SafeClose
}
if ((flags & CHANGE_NAVIGATION_MODE) != 0) {
NavigationMode newMode = info.navigationMode;
NavigationMode newMode = info.getNavigationMode();
mOrientationTouchTransformer.setNavigationMode(newMode, mDisplayController.getInfo(),
mContext.getResources());
@@ -148,7 +148,7 @@ public class SettingsChangeLogger implements
@Override
public void onDisplayInfoChanged(Context context, Info info, int flags) {
if ((flags & CHANGE_NAVIGATION_MODE) != 0) {
mNavMode = info.navigationMode;
mNavMode = info.getNavigationMode();
mStatsLogManager.logger().log(mNavMode.launcherEvent);
}
}
@@ -1,51 +0,0 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.quickstep.util;
import static com.android.launcher3.util.NavigationMode.NO_BUTTON;
import android.view.Surface;
import com.android.launcher3.util.DisplayController.Info;
import com.android.launcher3.util.NavigationMode;
/**
* Utility class to check nav bar position.
*/
public class NavBarPosition {
private final boolean mIsTablet;
private final NavigationMode mMode;
private final int mDisplayRotation;
public NavBarPosition(NavigationMode mode, Info info) {
mIsTablet = info.isTablet(info.realBounds);
mMode = mode;
mDisplayRotation = info.rotation;
}
public boolean isRightEdge() {
return mMode != NO_BUTTON && mDisplayRotation == Surface.ROTATION_90 && !mIsTablet;
}
public boolean isLeftEdge() {
return mMode != NO_BUTTON && mDisplayRotation == Surface.ROTATION_270 && !mIsTablet;
}
public float getRotation() {
return isLeftEdge() ? 90 : (isRightEdge() ? -90 : 0);
}
}
@@ -0,0 +1,41 @@
/*
* Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.quickstep.util
import android.view.Surface
import com.android.launcher3.util.DisplayController.Info
import com.android.launcher3.util.NavigationMode
import com.android.launcher3.util.NavigationMode.NO_BUTTON
/** Utility class to check nav bar position. */
data class NavBarPosition(
val isTablet: Boolean,
val displayRotation: Int,
val mode: NavigationMode
) {
constructor(
mode: NavigationMode,
info: Info
) : this(info.isTablet(info.realBounds), info.rotation, mode)
val isRightEdge: Boolean
get() = mode != NO_BUTTON && displayRotation == Surface.ROTATION_90 && !isTablet
val isLeftEdge: Boolean
get() = mode != NO_BUTTON && displayRotation == Surface.ROTATION_270 && !isTablet
val rotation: Float
get() = if (isLeftEdge) 90f else if (isRightEdge) -90f else 0f
}
@@ -99,6 +99,7 @@ public class TriggerSwipeUpTouchTracker {
if (mDisableHorizontalSwipe
&& Math.abs(displacementX) > Math.abs(displacementY)) {
// Horizontal gesture is not allowed in this region
mOnSwipeUp.onSwipeUpCancelled();
endTouchTracking();
break;
}
@@ -111,6 +112,7 @@ public class TriggerSwipeUpTouchTracker {
}
case ACTION_CANCEL:
mOnSwipeUp.onSwipeUpCancelled();
endTouchTracking();
break;