Merge "Import translations. DO NOT MERGE ANYWHERE" into sc-dev
diff --git a/quickstep/src/com/android/quickstep/RecentsActivity.java b/quickstep/src/com/android/quickstep/RecentsActivity.java
index 0e9e3ad..d43bb24 100644
--- a/quickstep/src/com/android/quickstep/RecentsActivity.java
+++ b/quickstep/src/com/android/quickstep/RecentsActivity.java
@@ -350,8 +350,7 @@
public void startHome() {
if (LIVE_TILE.get()) {
RecentsView recentsView = getOverviewPanel();
- recentsView.switchToScreenshot(() -> recentsView.finishRecentsAnimation(true,
- this::startHomeInternal));
+ recentsView.switchToScreenshotAndFinishAnimationToRecents(this::startHomeInternal);
} else {
startHomeInternal();
}
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index a4c60cf..74906dd 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -177,6 +177,10 @@
TaskThumbnailCache.HighResLoadingState.HighResLoadingStateChangedCallback,
TaskVisualsChangeListener, SplitScreenBounds.OnChangeListener {
+ // TODO(b/184899234): We use this timeout to wait a fixed period after switching to the
+ // screenshot when dismissing the current live task to ensure the app can try and get stopped.
+ private static final int REMOVE_TASK_WAIT_FOR_APP_STOP_MS = 100;
+
public static final FloatProperty<RecentsView> CONTENT_ALPHA =
new FloatProperty<RecentsView>("contentAlpha") {
@Override
@@ -2355,8 +2359,12 @@
if (success) {
if (shouldRemoveTask) {
if (taskView.getTask() != null) {
- UI_HELPER_EXECUTOR.execute(() -> ActivityManagerWrapper.getInstance()
- .removeTask(taskView.getTask().key.id));
+ switchToScreenshotAndFinishAnimationToRecents(() -> {
+ UI_HELPER_EXECUTOR.getHandler().postDelayed(() ->
+ ActivityManagerWrapper.getInstance().removeTask(
+ taskView.getTask().key.id),
+ REMOVE_TASK_WAIT_FOR_APP_STOP_MS);
+ });
mActivity.getStatsLogManager().logger()
.withItemInfo(taskView.getItemInfo())
.log(LAUNCHER_TASK_DISMISS_SWIPE_UP);
@@ -2460,10 +2468,13 @@
mPendingAnimation.addEndListener(isSuccess -> {
if (isSuccess) {
// Remove all the task views now
- UI_HELPER_EXECUTOR.execute(
- ActivityManagerWrapper.getInstance()::removeAllRecentTasks);
- removeTasksViewsAndClearAllButton();
- startHome();
+ switchToScreenshotAndFinishAnimationToRecents(() -> {
+ UI_HELPER_EXECUTOR.getHandler().postDelayed(
+ ActivityManagerWrapper.getInstance()::removeAllRecentTasks,
+ REMOVE_TASK_WAIT_FOR_APP_STOP_MS);
+ removeTasksViewsAndClearAllButton();
+ startHome();
+ });
}
mPendingAnimation = null;
});
@@ -2618,9 +2629,7 @@
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (LIVE_TILE.get() && mEnableDrawingLiveTile && newConfig.orientation != mOrientation) {
- switchToScreenshot(
- () -> finishRecentsAnimation(true /* toRecents */,
- this::updateRecentsRotation));
+ switchToScreenshotAndFinishAnimationToRecents(this::updateRecentsRotation);
mEnableDrawingLiveTile = false;
} else {
updateRecentsRotation();
@@ -3613,6 +3622,10 @@
}
}
+ public void switchToScreenshotAndFinishAnimationToRecents(Runnable onFinishRunnable) {
+ switchToScreenshot(() -> finishRecentsAnimation(true /* toRecents */, onFinishRunnable));
+ }
+
/**
* Switch the current running task view to static snapshot mode,
* capturing the snapshot at the same time.
diff --git a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
index c6c9c9b..d536c3a 100644
--- a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
@@ -21,6 +21,7 @@
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_VERTICAL_SWIPE_BEGIN;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_VERTICAL_SWIPE_END;
+import static com.android.launcher3.util.UiThreadHelper.hideKeyboardAsync;
import android.content.Context;
import android.content.res.Resources;
@@ -31,7 +32,6 @@
import android.util.SparseIntArray;
import android.view.MotionEvent;
import android.view.View;
-import android.view.WindowInsets;
import androidx.recyclerview.widget.RecyclerView;
@@ -41,6 +41,7 @@
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.R;
import com.android.launcher3.logging.StatsLogManager;
+import com.android.launcher3.views.ActivityContext;
import com.android.launcher3.views.RecyclerViewFastScroller;
import java.util.ArrayList;
@@ -189,8 +190,8 @@
case SCROLL_STATE_DRAGGING:
mgr.logger().sendToInteractionJankMonitor(
LAUNCHER_ALLAPPS_VERTICAL_SWIPE_BEGIN, this);
- requestFocus();
- getWindowInsetsController().hide(WindowInsets.Type.ime());
+ hideKeyboardAsync(ActivityContext.lookupContext(getContext()),
+ getApplicationWindowToken());
break;
case SCROLL_STATE_IDLE:
mgr.logger().sendToInteractionJankMonitor(
diff --git a/src/com/android/launcher3/util/UiThreadHelper.java b/src/com/android/launcher3/util/UiThreadHelper.java
index 947f96f..b9387a8 100644
--- a/src/com/android/launcher3/util/UiThreadHelper.java
+++ b/src/com/android/launcher3/util/UiThreadHelper.java
@@ -15,6 +15,7 @@
*/
package com.android.launcher3.util;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_KEYBOARD_CLOSED;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
import android.annotation.SuppressLint;
@@ -27,6 +28,7 @@
import android.view.WindowInsets;
import android.view.inputmethod.InputMethodManager;
+import com.android.launcher3.Launcher;
import com.android.launcher3.Utilities;
import com.android.launcher3.views.ActivityContext;
@@ -57,6 +59,8 @@
Message.obtain(HANDLER.get(root.getContext()),
MSG_HIDE_KEYBOARD, token).sendToTarget();
+ Launcher.cast(activityContext).getStatsLogManager().logger().log(
+ LAUNCHER_ALLAPPS_KEYBOARD_CLOSED);
}
public static void setOrientationAsync(Activity activity, int orientation) {