Merge changes from topic "am-e105c9a980354a1590d80fe0d5a3450d" into tm-qpr-dev-plus-aosp
* changes:
Merge changes from topic "am-c3479d1074da4f49a5c817b8ee7f386a" into stage-aosp-master am: 5d12fe84c7 -s ours
[automerger skipped] Merge "Merge Android 13 QPR1" am: e3c1707e36 -s ours am: 7b0e393ca5 -s ours
diff --git a/quickstep/res/layout/taskbar_edu.xml b/quickstep/res/layout/taskbar_edu.xml
index 10444f1..d7daea3 100644
--- a/quickstep/res/layout/taskbar_edu.xml
+++ b/quickstep/res/layout/taskbar_edu.xml
@@ -46,7 +46,7 @@
android:id="@+id/edu_start_button"
android:layout_width="wrap_content"
android:layout_height="36dp"
- android:layout_marginBottom="92dp"
+ android:layout_marginBottom="18dp"
android:layout_marginTop="32dp"
app:layout_constraintTop_toBottomOf="@id/content"
app:layout_constraintBottom_toBottomOf="parent"
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
index 01ec5f3..83b8d83 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
@@ -877,6 +877,16 @@
mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(false);
}
+ /** Called when we want to hide the overlay window when user performs swipe up gesture. */
+ public void onSwipeToHideOverlay() {
+ mControllers.taskbarOverlayController.hideWindow();
+ }
+
+ /** Returns {@code true} if taskbar is stashed. */
+ public boolean isTaskbarStashed() {
+ return mControllers.taskbarStashController.isStashed();
+ }
+
/**
* Called to start the taskbar translation spring to its settled translation (0).
*/
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduController.java
index 2cb05ff..d3f1b2f 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduController.java
@@ -15,11 +15,11 @@
*/
package com.android.launcher3.taskbar;
-import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_STASHED_IN_APP_EDU;
-import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
-
import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import com.android.launcher3.DeviceProfile;
import com.android.launcher3.R;
import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext;
import com.android.launcher3.taskbar.overlay.TaskbarOverlayController;
@@ -62,20 +62,21 @@
: R.layout.taskbar_edu_pages_persistent,
mPagedView,
true);
+
+ // Provide enough room for taskbar.
+ View startButton = mTaskbarEduView.findViewById(R.id.edu_start_button);
+ ViewGroup.MarginLayoutParams layoutParams =
+ (ViewGroup.MarginLayoutParams) startButton.getLayoutParams();
+ DeviceProfile dp = overlayContext.getDeviceProfile();
+ layoutParams.bottomMargin += DisplayController.isTransientTaskbar(overlayContext)
+ ? dp.taskbarSize + dp.transientTaskbarMargin
+ : dp.taskbarSize;
+
mTaskbarEduView.init(new TaskbarEduCallbacks());
mControllers.navbarButtonsViewController.setSlideInViewVisible(true);
- TaskbarStashController stashController = mControllers.taskbarStashController;
- stashController.updateStateForFlag(FLAG_STASHED_IN_APP_EDU, true);
- stashController.applyState(overlayController.getOpenDuration());
-
- mTaskbarEduView.setOnCloseBeginListener(() -> {
- mControllers.navbarButtonsViewController.setSlideInViewVisible(false);
- // Post in case view is closing due to gesture navigation. If a gesture is in progress,
- // wait to unstash until after the gesture is finished.
- MAIN_EXECUTOR.post(() -> stashController.resetFlagIfNoGestureInProgress(
- FLAG_STASHED_IN_APP_EDU));
- });
+ mTaskbarEduView.setOnCloseBeginListener(
+ () -> mControllers.navbarButtonsViewController.setSlideInViewVisible(false));
mTaskbarEduView.addOnCloseListener(() -> mTaskbarEduView = null);
mTaskbarEduView.show();
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
index 6d7b2ff..95337ce 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
@@ -82,7 +82,6 @@
public static final int FLAG_IN_SETUP = 1 << 8; // In the Setup Wizard
public static final int FLAG_STASHED_SMALL_SCREEN = 1 << 9; // phone screen gesture nav, stashed
public static final int FLAG_STASHED_IN_APP_AUTO = 1 << 10; // Autohide (transient taskbar).
- public static final int FLAG_STASHED_IN_APP_EDU = 1 << 11; // EDU is visible.
// If any of these flags are enabled, isInApp should return true.
private static final int FLAGS_IN_APP = FLAG_IN_APP | FLAG_IN_SETUP;
@@ -91,7 +90,7 @@
private static final int FLAGS_STASHED_IN_APP = FLAG_STASHED_IN_APP_MANUAL
| FLAG_STASHED_IN_SYSUI_STATE | FLAG_STASHED_IN_APP_EMPTY | FLAG_STASHED_IN_APP_SETUP
| FLAG_STASHED_IN_APP_IME | FLAG_STASHED_IN_TASKBAR_ALL_APPS
- | FLAG_STASHED_SMALL_SCREEN | FLAG_STASHED_IN_APP_AUTO | FLAG_STASHED_IN_APP_EDU;
+ | FLAG_STASHED_SMALL_SCREEN | FLAG_STASHED_IN_APP_AUTO;
private static final int FLAGS_STASHED_IN_APP_IGNORING_IME =
FLAGS_STASHED_IN_APP & ~FLAG_STASHED_IN_APP_IME;
@@ -101,8 +100,7 @@
// Currently any flag that causes us to stash in an app is included, except for IME or All Apps
// since those cover the underlying app anyway and thus the app shouldn't change insets.
private static final int FLAGS_REPORT_STASHED_INSETS_TO_APP = FLAGS_STASHED_IN_APP
- & ~FLAG_STASHED_IN_APP_IME & ~FLAG_STASHED_IN_TASKBAR_ALL_APPS
- & ~FLAG_STASHED_IN_APP_EDU;
+ & ~FLAG_STASHED_IN_APP_IME & ~FLAG_STASHED_IN_TASKBAR_ALL_APPS;
/**
* How long to stash/unstash when manually invoked via long press.
@@ -728,7 +726,6 @@
// Only update the following flags when system gesture is not in progress.
boolean shouldStashForIme = shouldStashForIme();
updateStateForFlag(FLAG_STASHED_IN_TASKBAR_ALL_APPS, false);
- updateStateForFlag(FLAG_STASHED_IN_APP_EDU, false);
if (hasAnyFlag(FLAG_STASHED_IN_APP_IME) != shouldStashForIme) {
updateStateForFlag(FLAG_STASHED_IN_APP_IME, shouldStashForIme);
applyState(TASKBAR_STASH_DURATION_FOR_IME, getTaskbarStashStartDelayForIme());
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
index a059295..b3b53c2 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
@@ -25,6 +25,7 @@
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.ItemInfoWithIcon;
+import com.android.launcher3.util.DisplayController;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView;
@@ -84,7 +85,9 @@
* Manually closes the overlay window.
*/
public void hideOverlayWindow() {
- mControllers.taskbarOverlayController.hideWindow();
+ if (!DisplayController.isTransientTaskbar(mControllers.taskbarActivityContext)) {
+ mControllers.taskbarOverlayController.hideWindow();
+ }
}
/**
diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsViewController.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsViewController.java
index 4165486..721f816 100644
--- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsViewController.java
@@ -16,6 +16,7 @@
package com.android.launcher3.taskbar.allapps;
import static com.android.launcher3.LauncherState.ALL_APPS;
+import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_STASHED_IN_APP_AUTO;
import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_STASHED_IN_TASKBAR_ALL_APPS;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.OnboardingPrefs.ALL_APPS_VISITED_COUNT;
@@ -28,6 +29,7 @@
import com.android.launcher3.taskbar.TaskbarStashController;
import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext;
import com.android.launcher3.taskbar.overlay.TaskbarOverlayController;
+import com.android.launcher3.util.DisplayController;
/**
* Handles the {@link TaskbarAllAppsContainerView} behavior and synchronizes its transitions with
@@ -88,18 +90,25 @@
}
private void setUpTaskbarStashing() {
- mTaskbarStashController.updateStateForFlag(FLAG_STASHED_IN_TASKBAR_ALL_APPS, true);
+ mTaskbarStashController.updateStateForFlag(
+ DisplayController.isTransientTaskbar(mContext)
+ ? FLAG_STASHED_IN_APP_AUTO
+ : FLAG_STASHED_IN_TASKBAR_ALL_APPS,
+ true);
mTaskbarStashController.applyState(
ALL_APPS.getTransitionDuration(mContext, true /* isToState */));
+
mNavbarButtonsViewController.setSlideInViewVisible(true);
mSlideInView.setOnCloseBeginListener(() -> {
mNavbarButtonsViewController.setSlideInViewVisible(false);
AbstractFloatingView.closeOpenContainer(
mContext, AbstractFloatingView.TYPE_ACTION_POPUP);
- // Post in case view is closing due to gesture navigation. If a gesture is in progress,
- // wait to unstash until after the gesture is finished.
- MAIN_EXECUTOR.post(() -> mTaskbarStashController.resetFlagIfNoGestureInProgress(
- FLAG_STASHED_IN_TASKBAR_ALL_APPS));
+ if (!DisplayController.isTransientTaskbar(mContext)) {
+ // Post in case view is closing due to gesture navigation. If a gesture is in
+ // progress, wait to unstash until after the gesture is finished.
+ MAIN_EXECUTOR.post(() -> mTaskbarStashController.resetFlagIfNoGestureInProgress(
+ FLAG_STASHED_IN_TASKBAR_ALL_APPS));
+ }
});
}
diff --git a/quickstep/src/com/android/quickstep/OverviewComponentObserver.java b/quickstep/src/com/android/quickstep/OverviewComponentObserver.java
index 8e07376..83f2a0a 100644
--- a/quickstep/src/com/android/quickstep/OverviewComponentObserver.java
+++ b/quickstep/src/com/android/quickstep/OverviewComponentObserver.java
@@ -34,6 +34,7 @@
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
+import android.util.Log;
import android.util.SparseIntArray;
import androidx.annotation.NonNull;
@@ -54,6 +55,8 @@
* and provide callers the relevant classes.
*/
public final class OverviewComponentObserver {
+ private static final String TAG = "OverviewComponentObserver";
+
private final BroadcastReceiver mUserPreferenceChangeReceiver =
new SimpleBroadcastReceiver(this::updateOverviewTargets);
private final BroadcastReceiver mOtherHomeAppUpdateReceiver =
@@ -146,7 +149,12 @@
}
}
- if (!mDeviceState.isHomeDisabled() && (defaultHome == null || mIsDefaultHome)) {
+ // TODO(b/258022658): Remove temporary logging.
+ Log.i(TAG, "updateOverviewTargets: mIsHomeDisabled=" + mIsHomeDisabled
+ + ", isDefaultHomeNull=" + (defaultHome == null)
+ + ", mIsDefaultHome=" + mIsDefaultHome);
+
+ if (!mIsHomeDisabled && (defaultHome == null || mIsDefaultHome)) {
// User default home is same as out home app. Use Overview integrated in Launcher.
mActivityInterface = LauncherActivityInterface.INSTANCE;
mIsHomeAndOverviewSame = true;
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/TaskbarStashInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/TaskbarStashInputConsumer.java
index 3a09490..c8326c4 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/TaskbarStashInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/TaskbarStashInputConsumer.java
@@ -53,8 +53,11 @@
private final float mUnstashArea;
private final float mScreenWidth;
- private final int mTaskbarThresholdY;
- private boolean mHasPassedTaskbarThreshold;
+ private final int mTaskbarNavThresholdY;
+ private final int mTaskbarAppWindowThresholdY;
+ private final boolean mTaskbarAlreadyOpen;
+ private boolean mHasPassedTaskbarNavThreshold;
+ private boolean mHasPassedTaskbarAppWindowThreshold;
private final PointF mDownPos = new PointF();
private final PointF mLastPos = new PointF();
@@ -73,11 +76,18 @@
Resources res = context.getResources();
mUnstashArea = res.getDimensionPixelSize(R.dimen.taskbar_unstash_input_area);
- int taskbarThreshold = res.getDimensionPixelSize(ENABLE_TASKBAR_REVISED_THRESHOLDS.get()
+ int taskbarNavThreshold = res.getDimensionPixelSize(ENABLE_TASKBAR_REVISED_THRESHOLDS.get()
? R.dimen.taskbar_nav_threshold_v2
: R.dimen.taskbar_nav_threshold);
+ int taskbarAppWindowThreshold = res.getDimensionPixelSize(
+ ENABLE_TASKBAR_REVISED_THRESHOLDS.get()
+ ? R.dimen.taskbar_app_window_threshold_v2
+ : R.dimen.taskbar_app_window_threshold);
int screenHeight = taskbarActivityContext.getDeviceProfile().heightPx;
- mTaskbarThresholdY = screenHeight - taskbarThreshold;
+ mTaskbarNavThresholdY = screenHeight - taskbarNavThreshold;
+ mTaskbarAppWindowThresholdY = screenHeight - taskbarAppWindowThreshold;
+ mTaskbarAlreadyOpen = mTaskbarActivityContext != null
+ && !mTaskbarActivityContext.isTaskbarStashed();
mIsTransientTaskbar = DisplayController.isTransientTaskbar(context);
@@ -113,7 +123,8 @@
mDownPos.set(ev.getX(), ev.getY());
mLastPos.set(mDownPos);
- mHasPassedTaskbarThreshold = false;
+ mHasPassedTaskbarNavThreshold = false;
+ mHasPassedTaskbarAppWindowThreshold = false;
mTaskbarActivityContext.setAutohideSuspendFlag(
FLAG_AUTOHIDE_SUSPEND_TOUCHING, true);
if (isInArea(x)) {
@@ -156,18 +167,23 @@
if (mIsTransientTaskbar) {
float dY = mLastPos.y - mDownPos.y;
- boolean passedTaskbarThreshold = dY < 0
- && mLastPos.y < mTaskbarThresholdY;
+ boolean passedTaskbarNavThreshold = dY < 0
+ && mLastPos.y < mTaskbarNavThresholdY;
+ boolean passedTaskbarAppWindowThreshold = dY < 0
+ && mLastPos.y < mTaskbarAppWindowThresholdY;
- if (!mHasPassedTaskbarThreshold
- && passedTaskbarThreshold) {
- mHasPassedTaskbarThreshold = true;
-
+ if (!mHasPassedTaskbarNavThreshold && passedTaskbarNavThreshold) {
+ mHasPassedTaskbarNavThreshold = true;
mTaskbarActivityContext.onSwipeToUnstashTaskbar();
}
+ if (mTaskbarAlreadyOpen || (!mHasPassedTaskbarAppWindowThreshold
+ && passedTaskbarAppWindowThreshold)) {
+ mHasPassedTaskbarAppWindowThreshold = true;
+ mTaskbarActivityContext.onSwipeToHideOverlay();
+ }
if (dY < 0) {
- dY = -OverScroll.dampedScroll(-dY, mTaskbarThresholdY);
+ dY = -OverScroll.dampedScroll(-dY, mTaskbarNavThresholdY);
if (mTransitionCallback != null) {
mTransitionCallback.onActionMove(dY);
}
@@ -185,7 +201,8 @@
if (mTransitionCallback != null) {
mTransitionCallback.onActionEnd();
}
- mHasPassedTaskbarThreshold = false;
+ mHasPassedTaskbarNavThreshold = false;
+ mHasPassedTaskbarAppWindowThreshold = false;
break;
}
}
diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java
index 5cab817..942eb99 100644
--- a/src/com/android/launcher3/config/FeatureFlags.java
+++ b/src/com/android/launcher3/config/FeatureFlags.java
@@ -335,7 +335,7 @@
+ " nav mode and when transient taskbar is enabled.");
public static final BooleanFlag ENABLE_TRANSIENT_TASKBAR = getDebugFlag(
- "ENABLE_TRANSIENT_TASKBAR", false, "Enables transient taskbar.");
+ "ENABLE_TRANSIENT_TASKBAR", true, "Enables transient taskbar.");
public static final BooleanFlag SECONDARY_DRAG_N_DROP_TO_PIN = getDebugFlag(
"SECONDARY_DRAG_N_DROP_TO_PIN", false,