From 014e15a86e89da1d80d76d4df502c149573e5ea3 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Thu, 7 Mar 2024 11:32:28 -0800 Subject: [PATCH 01/15] Simplefying listener interface for TriggerSwipeUpTouchTracker Merging two callbacks into a single interface Bug: 327616437 Flag: None Test: Presubmit Change-Id: I026df7dca15acbd04b59df1abbf375684d9bfffb --- .../FallbackNavBarTouchController.java | 6 +--- .../OverviewWithoutFocusInputConsumer.java | 8 ++--- .../SysUiOverlayInputConsumer.java | 10 ++---- .../interaction/NavBarGestureHandler.java | 2 +- .../util/TriggerSwipeUpTouchTracker.java | 32 +++++++++---------- 5 files changed, 24 insertions(+), 34 deletions(-) diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackNavBarTouchController.java b/quickstep/src/com/android/quickstep/fallback/FallbackNavBarTouchController.java index 8a87f63aaf..69de3b0f98 100644 --- a/quickstep/src/com/android/quickstep/fallback/FallbackNavBarTouchController.java +++ b/quickstep/src/com/android/quickstep/fallback/FallbackNavBarTouchController.java @@ -45,8 +45,7 @@ public class FallbackNavBarTouchController implements TouchController, NavBarPosition navBarPosition = new NavBarPosition(sysUINavigationMode, DisplayController.INSTANCE.get(mActivity).getInfo()); mTriggerSwipeUpTracker = new TriggerSwipeUpTouchTracker(mActivity, - true /* disableHorizontalSwipe */, navBarPosition, - null /* onInterceptTouch */, this); + true /* disableHorizontalSwipe */, navBarPosition, this); } else { mTriggerSwipeUpTracker = null; } @@ -78,7 +77,4 @@ public class FallbackNavBarTouchController implements TouchController, public void onSwipeUp(boolean wasFling, PointF finalVelocity) { mActivity.getOverviewPanel().startHome(); } - - @Override - public void onSwipeUpCancelled() {} } diff --git a/quickstep/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java index 41730bbc40..42e8694f6a 100644 --- a/quickstep/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java +++ b/quickstep/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java @@ -51,7 +51,7 @@ public class OverviewWithoutFocusInputConsumer implements InputConsumer, mGestureState = gestureState; mInputMonitor = inputMonitor; mTriggerSwipeUpTracker = new TriggerSwipeUpTouchTracker(context, disableHorizontalSwipe, - deviceState.getNavBarPosition(), this::onInterceptTouch, this); + deviceState.getNavBarPosition(), this); } @Override @@ -69,7 +69,8 @@ public class OverviewWithoutFocusInputConsumer implements InputConsumer, mTriggerSwipeUpTracker.onMotionEvent(ev); } - private void onInterceptTouch() { + @Override + public void onSwipeUpTouchIntercepted() { if (mInputMonitor != null) { TestLogging.recordEvent(TestProtocol.SEQUENCE_PILFER, "pilferPointers"); mInputMonitor.pilferPointers(); @@ -93,7 +94,4 @@ public class OverviewWithoutFocusInputConsumer implements InputConsumer, .build()) .log(LAUNCHER_HOME_GESTURE); } - - @Override - public void onSwipeUpCancelled() {} } diff --git a/quickstep/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java index 4806ac1d6e..871d0759c5 100644 --- a/quickstep/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java +++ b/quickstep/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java @@ -54,7 +54,7 @@ public class SysUiOverlayInputConsumer implements InputConsumer, mContext = context; mInputMonitor = inputMonitor; mTriggerSwipeUpTracker = new TriggerSwipeUpTouchTracker(context, true, - deviceState.getNavBarPosition(), this::onInterceptTouch, this); + deviceState.getNavBarPosition(), this); } @Override @@ -72,7 +72,8 @@ public class SysUiOverlayInputConsumer implements InputConsumer, mTriggerSwipeUpTracker.onMotionEvent(ev); } - private void onInterceptTouch() { + @Override + public void onSwipeUpTouchIntercepted() { if (mInputMonitor != null) { TestLogging.recordEvent(TestProtocol.SEQUENCE_PILFER, "pilferPointers"); mInputMonitor.pilferPointers(); @@ -88,9 +89,4 @@ public class SysUiOverlayInputConsumer implements InputConsumer, Log.e(TAG, "Exception calling closeSystemDialogs " + e.getMessage()); } } - - @Override - public void onSwipeUpCancelled() { - - } } diff --git a/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java b/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java index c4a2216251..c00f508e8d 100644 --- a/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java +++ b/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java @@ -65,7 +65,7 @@ public class NavBarGestureHandler implements OnTouchListener, mSwipeUpTouchTracker = new TriggerSwipeUpTouchTracker(context, true /*disableHorizontalSwipe*/, new NavBarPosition(NavigationMode.NO_BUTTON, displayInfo), - null /*onInterceptTouch*/, this); + this); mMotionPauseDetector = new MotionPauseDetector(context); final Resources resources = context.getResources(); diff --git a/quickstep/src/com/android/quickstep/util/TriggerSwipeUpTouchTracker.java b/quickstep/src/com/android/quickstep/util/TriggerSwipeUpTouchTracker.java index 7bbde30df8..c63a58ee75 100644 --- a/quickstep/src/com/android/quickstep/util/TriggerSwipeUpTouchTracker.java +++ b/quickstep/src/com/android/quickstep/util/TriggerSwipeUpTouchTracker.java @@ -28,6 +28,8 @@ import android.graphics.PointF; import android.view.MotionEvent; import android.view.VelocityTracker; +import androidx.annotation.NonNull; + import com.android.launcher3.R; import com.android.launcher3.Utilities; @@ -41,21 +43,20 @@ public class TriggerSwipeUpTouchTracker { private final float mMinFlingVelocity; private final boolean mDisableHorizontalSwipe; private final NavBarPosition mNavBarPosition; - private final Runnable mOnInterceptTouch; + + @NonNull private final OnSwipeUpListener mOnSwipeUp; private boolean mInterceptedTouch; private VelocityTracker mVelocityTracker; public TriggerSwipeUpTouchTracker(Context context, boolean disableHorizontalSwipe, - NavBarPosition navBarPosition, Runnable onInterceptTouch, - OnSwipeUpListener onSwipeUp) { + NavBarPosition navBarPosition, @NonNull OnSwipeUpListener onSwipeUp) { mSquaredTouchSlop = Utilities.squaredTouchSlop(context); mMinFlingVelocity = context.getResources().getDimension( R.dimen.quickstep_fling_threshold_speed); mNavBarPosition = navBarPosition; mDisableHorizontalSwipe = disableHorizontalSwipe; - mOnInterceptTouch = onInterceptTouch; mOnSwipeUp = onSwipeUp; init(); @@ -103,10 +104,7 @@ public class TriggerSwipeUpTouchTracker { } mInterceptedTouch = true; - - if (mOnInterceptTouch != null) { - mOnInterceptTouch.run(); - } + mOnSwipeUp.onSwipeUpTouchIntercepted(); } } break; @@ -124,7 +122,8 @@ public class TriggerSwipeUpTouchTracker { } } - private void endTouchTracking() { + /** Finishes the tracking. All events after this call are ignored */ + public void endTouchTracking() { if (mVelocityTracker != null) { mVelocityTracker.recycle(); mVelocityTracker = null; @@ -151,12 +150,10 @@ public class TriggerSwipeUpTouchTracker { isSwipeUp = squaredHypot(displacementX, displacementY) >= mSquaredTouchSlop; } - if (mOnSwipeUp != null) { - if (isSwipeUp) { - mOnSwipeUp.onSwipeUp(wasFling, new PointF(velocityX, velocityY)); - } else { - mOnSwipeUp.onSwipeUpCancelled(); - } + if (isSwipeUp) { + mOnSwipeUp.onSwipeUp(wasFling, new PointF(velocityX, velocityY)); + } else { + mOnSwipeUp.onSwipeUpCancelled(); } } @@ -172,6 +169,9 @@ public class TriggerSwipeUpTouchTracker { void onSwipeUp(boolean wasFling, PointF finalVelocity); /** Called on touch up if a swipe up was not detected. */ - void onSwipeUpCancelled(); + default void onSwipeUpCancelled() { } + + /** Called when the touch for swipe up is intercepted. */ + default void onSwipeUpTouchIntercepted() { } } } From 2b2d8cc90b5989a8dca58a364579fd7157cce587 Mon Sep 17 00:00:00 2001 From: Jeremy Sim Date: Wed, 6 Mar 2024 17:59:30 -0800 Subject: [PATCH 02/15] Prevent Save App Pair from showing up on 3p launcher This CL adds a check so that app pairs can't be saved on 3p launchers. This affects the Overview icon dropdown menu and the Overview Actions Bar. Fixes: 326155701 Flag: ACONFIG com.android.wm.shell.enable_app_pairs TRUNKFOOD Test: Manual, option does not show up when Nova Launcher is set as default home app, and shows up again for Pixel Launcher. Change-Id: I60d6fd3b3eb39921edafb12faace743d16de270f --- .../src/com/android/quickstep/TaskShortcutFactory.java | 8 ++++++-- .../android/quickstep/fallback/FallbackRecentsView.java | 6 ++++++ .../com/android/quickstep/views/OverviewActionsView.java | 8 ++++++++ .../src/com/android/quickstep/views/RecentsView.java | 7 +++++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/quickstep/src/com/android/quickstep/TaskShortcutFactory.java b/quickstep/src/com/android/quickstep/TaskShortcutFactory.java index 36bdad4da4..62ce341e41 100644 --- a/quickstep/src/com/android/quickstep/TaskShortcutFactory.java +++ b/quickstep/src/com/android/quickstep/TaskShortcutFactory.java @@ -328,11 +328,15 @@ public interface TaskShortcutFactory { // No "save app pair" menu item if: // - app pairs feature is not enabled + // - we are in 3p launcher // - the task in question is a single task // - at least one app in app pair is unpinnable // - the Overview Actions Button should be visible - if (!FeatureFlags.enableAppPairs() || !taskView.containsMultipleTasks() - || hasUnpinnableApp || shouldShowActionsButtonInstead) { + if (!FeatureFlags.enableAppPairs() + || !recentsView.supportsAppPairs() + || !taskView.containsMultipleTasks() + || hasUnpinnableApp + || shouldShowActionsButtonInstead) { return null; } diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java index 0ee50a46b2..32d8be988c 100644 --- a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java +++ b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java @@ -302,4 +302,10 @@ public class FallbackRecentsView extends RecentsView extends FrameLayo public @interface AppPairButtonHiddenFlags { } public static final int FLAG_SINGLE_TASK_HIDE_APP_PAIR = 1 << 0; public static final int FLAG_SMALL_SCREEN_HIDE_APP_PAIR = 1 << 1; + public static final int FLAG_3P_LAUNCHER_HIDE_APP_PAIR = 1 << 2; private MultiValueAlpha mMultiValueAlpha; @@ -254,6 +255,13 @@ public class OverviewActionsView extends FrameLayo updateAppPairButtonHiddenFlags(FLAG_SMALL_SCREEN_HIDE_APP_PAIR, isSmallScreen); } + /** + * Updates flags to hide and show actions buttons for 1p/3p launchers. + */ + public void updateFor3pLauncher(boolean is3pLauncher) { + updateAppPairButtonHiddenFlags(FLAG_3P_LAUNCHER_HIDE_APP_PAIR, is3pLauncher); + } + /** * Updates the proper flags to indicate whether the "Screenshot" button should be hidden. * diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 6699147136..1a0dc3dfd6 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -4022,6 +4022,8 @@ public abstract class RecentsView Date: Fri, 8 Mar 2024 11:24:02 -0800 Subject: [PATCH 03/15] Verifying that current Launcher is the test Launcher in fallback recents tests Test: presubmit Flag: N/A Bug: 321775748 Change-Id: Id22993785f9674bc746dfbcf979e7b6f775a9680 --- .../quickstep/FallbackRecentsTest.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java index 213f58fa8b..077ca60aae 100644 --- a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java +++ b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java @@ -76,17 +76,21 @@ import org.junit.rules.TestRule; import org.junit.runner.RunWith; import org.junit.runners.model.Statement; +import java.io.IOException; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import java.util.function.Function; +import java.util.regex.Matcher; +import java.util.regex.Pattern; @LargeTest @RunWith(AndroidJUnit4.class) public class FallbackRecentsTest { private static final String FALLBACK_LAUNCHER_TITLE = "Test launcher"; + private static final Pattern COMPONENT_INFO_REGEX = Pattern.compile("ComponentInfo\\{(.*)\\}"); private final UiDevice mDevice; private final LauncherInstrumentation mLauncher; @@ -253,7 +257,7 @@ public class FallbackRecentsTest { //@NavigationModeSwitch @Test @ScreenRecordRule.ScreenRecord // b/321775748 - public void testOverview() { + public void testOverview() throws IOException { startAppFast(getAppPackageName()); startAppFast(resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR)); startTestActivity(2); @@ -261,7 +265,10 @@ public class FallbackRecentsTest { Wait.atMost("Expected three apps in the task list", () -> mLauncher.getRecentTasks().size() >= 3, DEFAULT_ACTIVITY_TIMEOUT, mLauncher); + checkTestLauncher(); BaseOverview overview = mLauncher.getLaunchedAppState().switchToOverview(); + checkTestLauncher(); + executeOnRecents(recents -> { assertTrue("Don't have at least 3 tasks", getTaskCount(recents) >= 3); }); @@ -303,6 +310,17 @@ public class FallbackRecentsTest { mOtherLauncherActivity.packageName).text(FALLBACK_LAUNCHER_TITLE)), WAIT_TIME_MS)); } + private void checkTestLauncher() throws IOException { + final Matcher matcher = COMPONENT_INFO_REGEX.matcher( + mDevice.executeShellCommand("cmd shortcut get-default-launcher")); + assertTrue("Incorrect output from get-default-launcher", matcher.find()); + assertEquals("Current Launcher activity is incorrect", + "com.google.android.apps.nexuslauncher.tests/com.android" + + ".launcher3.testcomponent.TestLauncherActivity", + matcher.group(1) + ); + } + private int getCurrentOverviewPage(RecentsActivity recents) { return recents.getOverviewPanel().getCurrentPage(); } From 20a5f4e8d12583c3fb414ec052e13a182ba3181b Mon Sep 17 00:00:00 2001 From: Shamali P Date: Tue, 5 Mar 2024 16:01:05 +0000 Subject: [PATCH 04/15] Update labels for the categories to match the UX writer provided strings Also fix issue that user was not passed when getting application info. (error noticed by Zak) http://screen/8fiiTSHvo2SfYdE Bug: 318410881 Flag: N/A Test: Unit test Change-Id: Id85feec0d95d3d4d183a673f7eed40906b0043e2 --- .../WidgetsPredicationUpdateTaskTest.java | 20 +++++-- res/values/strings.xml | 12 ++-- .../WidgetRecommendationCategoryProvider.java | 33 +++++----- ...getRecommendationCategoryProviderTest.java | 60 ++++++++++++------- 4 files changed, 79 insertions(+), 46 deletions(-) diff --git a/quickstep/tests/src/com/android/launcher3/model/WidgetsPredicationUpdateTaskTest.java b/quickstep/tests/src/com/android/launcher3/model/WidgetsPredicationUpdateTaskTest.java index 37dde10d0e..8702f70dfe 100644 --- a/quickstep/tests/src/com/android/launcher3/model/WidgetsPredicationUpdateTaskTest.java +++ b/quickstep/tests/src/com/android/launcher3/model/WidgetsPredicationUpdateTaskTest.java @@ -15,6 +15,8 @@ */ package com.android.launcher3.model; +import static android.content.pm.ApplicationInfo.CATEGORY_PRODUCTIVITY; +import static android.content.pm.ApplicationInfo.FLAG_INSTALLED; import static android.os.Process.myUserHandle; import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_PREDICTION; @@ -37,6 +39,8 @@ import android.app.prediction.AppTargetId; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProviderInfo; import android.content.ComponentName; +import android.content.pm.ApplicationInfo; +import android.content.pm.LauncherApps; import android.os.UserHandle; import android.platform.test.flag.junit.SetFlagsRule; import android.text.TextUtils; @@ -81,6 +85,8 @@ public final class WidgetsPredicationUpdateTaskTest { private FakeBgDataModelCallback mCallback = new FakeBgDataModelCallback(); private LauncherModelHelper mModelHelper; private UserHandle mUserHandle; + private LauncherApps mLauncherApps; + @Before public void setup() throws Exception { @@ -103,12 +109,18 @@ public final class WidgetsPredicationUpdateTaskTest { allWidgets = Arrays.asList(mApp1Provider1, mApp1Provider2, mApp2Provider1, mApp4Provider1, mApp4Provider2, mApp5Provider1); + mLauncherApps = mModelHelper.sandboxContext.spyService(LauncherApps.class); doAnswer(i -> { String pkg = i.getArgument(0); - return ApplicationInfoBuilder.newBuilder().setPackageName(pkg).setName( - "App " + pkg).build(); - }).when(mModelHelper.sandboxContext.getPackageManager()) - .getApplicationInfo(anyString(), anyInt()); + ApplicationInfo applicationInfo = ApplicationInfoBuilder.newBuilder() + .setPackageName(pkg) + .setName("App " + pkg) + .build(); + applicationInfo.category = CATEGORY_PRODUCTIVITY; + applicationInfo.flags = FLAG_INSTALLED; + return applicationInfo; + }).when(mLauncherApps).getApplicationInfo(anyString(), anyInt(), any()); + AppWidgetManager manager = mModelHelper.sandboxContext.spyService(AppWidgetManager.class); doReturn(allWidgets).when(manager).getInstalledProviders(); doReturn(allWidgets).when(manager).getInstalledProvidersForProfile(eq(myUserHandle())); diff --git a/res/values/strings.xml b/res/values/strings.xml index aaef15b2af..7bf1c87830 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -75,12 +75,14 @@ Suggestions - Your Daily Essentials - News For You + Essentials + News & magazines Your Chill Zone - Reach Your Fitness Goals - Stay Ahead of the Weather - You Might Also Like + Entertainment + Social + Health & fitness + Weather + Suggested for you %1$s widgets on right, search and options on left Split + + Save app pair Tap another app to use split screen Choose another app to use split screen diff --git a/quickstep/src/com/android/quickstep/TaskOverlayFactory.java b/quickstep/src/com/android/quickstep/TaskOverlayFactory.java index 312cdc97a5..cc582d1e09 100644 --- a/quickstep/src/com/android/quickstep/TaskOverlayFactory.java +++ b/quickstep/src/com/android/quickstep/TaskOverlayFactory.java @@ -43,6 +43,7 @@ import com.android.launcher3.util.ResourceBasedOverride; import com.android.launcher3.views.ActivityContext; import com.android.launcher3.views.Snackbar; import com.android.quickstep.util.RecentsOrientedState; +import com.android.quickstep.views.GroupedTaskView; import com.android.quickstep.views.OverviewActionsView; import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.TaskThumbnailView; @@ -210,13 +211,19 @@ public class TaskOverlayFactory implements ResourceBasedOverride { } } - private void enterSplitSelect() { + protected void enterSplitSelect() { RecentsView overviewPanel = mThumbnailView.getTaskView().getRecentsView(); // Task has already been dismissed if (overviewPanel == null) return; overviewPanel.initiateSplitSelect(mThumbnailView.getTaskView()); } + protected void saveAppPair() { + GroupedTaskView taskView = (GroupedTaskView) mThumbnailView.getTaskView(); + taskView.getRecentsView().getSplitSelectController().getAppPairsController() + .saveAppPair(taskView); + } + /** * Called when the overlay is no longer used. */ @@ -329,6 +336,10 @@ public class TaskOverlayFactory implements ResourceBasedOverride { public void onSplit() { endLiveTileMode(TaskOverlay.this::enterSplitSelect); } + + public void onSaveAppPair() { + endLiveTileMode(TaskOverlay.this::saveAppPair); + } } } @@ -342,5 +353,8 @@ public class TaskOverlayFactory implements ResourceBasedOverride { /** User wants to start split screen with current app. */ void onSplit(); + + /** User wants to save an app pair with current group of apps. */ + void onSaveAppPair(); } } diff --git a/quickstep/src/com/android/quickstep/TaskShortcutFactory.java b/quickstep/src/com/android/quickstep/TaskShortcutFactory.java index 9c84df884b..c1b3a16c57 100644 --- a/quickstep/src/com/android/quickstep/TaskShortcutFactory.java +++ b/quickstep/src/com/android/quickstep/TaskShortcutFactory.java @@ -311,9 +311,21 @@ public interface TaskShortcutFactory { @Override public List getShortcuts(BaseDraggingActivity activity, TaskIdAttributeContainer taskContainer) { + DeviceProfile deviceProfile = activity.getDeviceProfile(); final TaskView taskView = taskContainer.getTaskView(); + final RecentsView recentsView = taskView.getRecentsView(); + boolean isLargeTileFocusedTask = deviceProfile.isTablet && taskView.isFocusedTask(); + boolean isInExpectedScrollPosition = + recentsView.isTaskInExpectedScrollPosition(recentsView.indexOfChild(taskView)); + boolean shouldShowActionsButtonInstead = + isLargeTileFocusedTask && isInExpectedScrollPosition; - if (!FeatureFlags.enableAppPairs() || !taskView.containsMultipleTasks()) { + // No "save app pair" menu item if: + // - app pairs feature is not enabled + // - the task in question is a single task + // - the Overview Actions Button should be visible + if (!FeatureFlags.enableAppPairs() || !taskView.containsMultipleTasks() + || shouldShowActionsButtonInstead) { return null; } diff --git a/quickstep/src/com/android/quickstep/views/GroupedTaskView.java b/quickstep/src/com/android/quickstep/views/GroupedTaskView.java index 10ef47c268..259927d4e7 100644 --- a/quickstep/src/com/android/quickstep/views/GroupedTaskView.java +++ b/quickstep/src/com/android/quickstep/views/GroupedTaskView.java @@ -24,6 +24,7 @@ import com.android.internal.jank.Cuj; import com.android.launcher3.DeviceProfile; import com.android.launcher3.R; import com.android.launcher3.Utilities; +import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.util.CancellableTask; import com.android.launcher3.util.RunnableList; import com.android.launcher3.util.SplitConfigurationOptions; @@ -40,11 +41,11 @@ import com.android.systemui.shared.recents.utilities.PreviewPositionHelper; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import com.android.wm.shell.common.split.SplitScreenConstants.PersistentSnapPosition; -import kotlin.Unit; - import java.util.HashMap; import java.util.function.Consumer; +import kotlin.Unit; + /** * TaskView that contains and shows thumbnails for not one, BUT TWO(!!) tasks * @@ -382,7 +383,11 @@ public class GroupedTaskView extends TaskView { @Override public void setOverlayEnabled(boolean overlayEnabled) { - // Intentional no-op to prevent setting smart actions overlay on thumbnails + if (FeatureFlags.enableAppPairs()) { + super.setOverlayEnabled(overlayEnabled); + } else { + // Intentional no-op to prevent setting smart actions overlay on thumbnails + } } @Override diff --git a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java index 8281ad7b2a..7a1c49a213 100644 --- a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java +++ b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java @@ -33,6 +33,7 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.Flags; import com.android.launcher3.Insettable; import com.android.launcher3.R; +import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.MultiPropertyFactory.MultiProperty; import com.android.launcher3.util.MultiValueAlpha; @@ -92,14 +93,28 @@ public class OverviewActionsView extends FrameLayo private static final int INDEX_SCROLL_ALPHA = 5; private static final int NUM_ALPHAS = 6; + public @interface ScreenshotButtonHiddenFlags { } + public static final int FLAG_MULTIPLE_TASKS_HIDE_SCREENSHOT = 1 << 0; + public @interface SplitButtonHiddenFlags { } - public static final int FLAG_IS_NOT_TABLET = 1 << 0; + public static final int FLAG_SMALL_SCREEN_HIDE_SPLIT = 1 << 0; + public static final int FLAG_MULTIPLE_TASKS_HIDE_SPLIT = 1 << 1; public @interface SplitButtonDisabledFlags { } - public static final int FLAG_SINGLE_TASK = 1 << 0; + public static final int FLAG_SINGLE_TASK_DISABLE_SPLIT = 1 << 0; + + public @interface AppPairButtonHiddenFlags { } + public static final int FLAG_SINGLE_TASK_HIDE_APP_PAIR = 1 << 0; + public static final int FLAG_SMALL_SCREEN_HIDE_APP_PAIR = 1 << 1; private MultiValueAlpha mMultiValueAlpha; + + // The screenshot button is implemented as a Button in launcher3 and NexusLauncher, but is an + // ImageButton in go launcher (does not share a common class with Button). Take care when + // casting this. + private View mScreenshotButton; private Button mSplitButton; + private Button mSaveAppPairButton; @ActionsHiddenFlags private int mHiddenFlags; @@ -107,11 +122,14 @@ public class OverviewActionsView extends FrameLayo @ActionsDisabledFlags protected int mDisabledFlags; + @ScreenshotButtonHiddenFlags + private int mScreenshotButtonHiddenFlags; + @SplitButtonHiddenFlags private int mSplitButtonHiddenFlags; - @SplitButtonDisabledFlags - private int mSplitButtonDisabledFlags; + @AppPairButtonHiddenFlags + private int mAppPairButtonHiddenFlags; @Nullable protected T mCallbacks; @@ -138,9 +156,12 @@ public class OverviewActionsView extends FrameLayo mMultiValueAlpha = new MultiValueAlpha(findViewById(R.id.action_buttons), NUM_ALPHAS); mMultiValueAlpha.setUpdateVisibility(true); - findViewById(R.id.action_screenshot).setOnClickListener(this); + mScreenshotButton = findViewById(R.id.action_screenshot); + mScreenshotButton.setOnClickListener(this); mSplitButton = findViewById(R.id.action_split); mSplitButton.setOnClickListener(this); + mSaveAppPairButton = findViewById(R.id.action_save_app_pair); + mSaveAppPairButton.setOnClickListener(this); } /** @@ -162,6 +183,8 @@ public class OverviewActionsView extends FrameLayo mCallbacks.onScreenshot(); } else if (id == R.id.action_split) { mCallbacks.onSplit(); + } else if (id == R.id.action_save_app_pair) { + mCallbacks.onSaveAppPair(); } } @@ -204,7 +227,49 @@ public class OverviewActionsView extends FrameLayo } boolean isEnabled = (mDisabledFlags & ~DISABLED_ROTATED) == 0; LayoutUtils.setViewEnabled(this, isEnabled); - updateSplitButtonEnabledState(); + } + + /** + * Updates a batch of flags to hide and show actions buttons when a grouped task (split screen) + * is focused. + * @param isGroupedTask True if the focused task is a grouped task. + */ + public void updateForGroupedTask(boolean isGroupedTask) { + // Update flags to see if split button should be hidden. + updateSplitButtonHiddenFlags(FLAG_MULTIPLE_TASKS_HIDE_SPLIT, isGroupedTask); + // Update flags to see if screenshot button should be hidden. + updateScreenshotButtonHiddenFlags(FLAG_MULTIPLE_TASKS_HIDE_SCREENSHOT, isGroupedTask); + // Update flags to see if save app pair button should be hidden. + updateAppPairButtonHiddenFlags(FLAG_SINGLE_TASK_HIDE_APP_PAIR, !isGroupedTask); + } + + /** + * Updates a batch of flags to hide and show actions buttons for tablet/non tablet case. + * @param isSmallScreen True if the current display is a small screen. + */ + public void updateForSmallScreen(boolean isSmallScreen) { + // Update flags to see if split button should be hidden. + updateSplitButtonHiddenFlags(FLAG_SMALL_SCREEN_HIDE_SPLIT, isSmallScreen); + // Update flags to see if save app pair button should be hidden. + updateAppPairButtonHiddenFlags(FLAG_SMALL_SCREEN_HIDE_APP_PAIR, isSmallScreen); + } + + /** + * Updates the proper flags to indicate whether the "Screenshot" button should be hidden. + * + * @param flag The flag to update. + * @param enable Whether to enable the hidden flag: True will cause view to be hidden. + */ + private void updateScreenshotButtonHiddenFlags(@ScreenshotButtonHiddenFlags int flag, + boolean enable) { + if (mScreenshotButton == null) return; + if (enable) { + mScreenshotButtonHiddenFlags |= flag; + } else { + mScreenshotButtonHiddenFlags &= ~flag; + } + int desiredVisibility = mScreenshotButtonHiddenFlags == 0 ? VISIBLE : GONE; + mScreenshotButton.setVisibility(desiredVisibility); } /** @@ -213,16 +278,17 @@ public class OverviewActionsView extends FrameLayo * @param flag The flag to update. * @param enable Whether to enable the hidden flag: True will cause view to be hidden. */ - public void updateSplitButtonHiddenFlags(@SplitButtonHiddenFlags int flag, boolean enable) { + void updateSplitButtonHiddenFlags(@SplitButtonHiddenFlags int flag, + boolean enable) { + if (mSplitButton == null) return; if (enable) { mSplitButtonHiddenFlags |= flag; } else { mSplitButtonHiddenFlags &= ~flag; } - if (mSplitButton == null) return; - boolean shouldBeVisible = mSplitButtonHiddenFlags == 0; - mSplitButton.setVisibility(shouldBeVisible ? VISIBLE : GONE); - findViewById(R.id.action_split_space).setVisibility(shouldBeVisible ? VISIBLE : GONE); + int desiredVisibility = mSplitButtonHiddenFlags == 0 ? VISIBLE : GONE; + mSplitButton.setVisibility(desiredVisibility); + findViewById(R.id.action_split_space).setVisibility(desiredVisibility); String callStack = Arrays.stream( Log.getStackTraceString(new Exception("thread stacktrace")) @@ -232,23 +298,30 @@ public class OverviewActionsView extends FrameLayo .collect(Collectors.joining("\n")); Log.d("b/321291049", "updateSplitButtonHiddenFlags called with flag: " + flag + " enabled: " + enable - + " shouldBeVisible: " + shouldBeVisible + + " visibility: " + desiredVisibility + " partial trace: \n" + callStack); } /** - * Updates the proper flags to indicate whether the "Split screen" button should be disabled. + * Updates the proper flags to indicate whether the "Save app pair" button should be disabled. * * @param flag The flag to update. - * @param enable Whether to enable the disable flag: True will cause view to be disabled. + * @param enable Whether to enable the hidden flag: True will cause view to be hidden. */ - public void updateSplitButtonDisabledFlags(@SplitButtonDisabledFlags int flag, boolean enable) { - if (enable) { - mSplitButtonDisabledFlags |= flag; - } else { - mSplitButtonDisabledFlags &= ~flag; + private void updateAppPairButtonHiddenFlags( + @AppPairButtonHiddenFlags int flag, boolean enable) { + if (!FeatureFlags.enableAppPairs()) { + return; } - updateSplitButtonEnabledState(); + + if (mSaveAppPairButton == null) return; + if (enable) { + mAppPairButtonHiddenFlags |= flag; + } else { + mAppPairButtonHiddenFlags &= ~flag; + } + int desiredVisibility = mAppPairButtonHiddenFlags == 0 ? VISIBLE : GONE; + mSaveAppPairButton.setVisibility(desiredVisibility); } public MultiProperty getContentAlpha() { @@ -326,19 +399,7 @@ public class OverviewActionsView extends FrameLayo ? R.drawable.ic_split_horizontal : R.drawable.ic_split_vertical; mSplitButton.setCompoundDrawablesRelativeWithIntrinsicBounds(splitIconRes, 0, 0, 0); + mSaveAppPairButton.setCompoundDrawablesRelativeWithIntrinsicBounds( + R.drawable.ic_save_app_pair, 0, 0, 0); } - - /** - * Enables/disables the "Split" button based on the status of mSplitButtonDisabledFlags and - * mDisabledFlags. - */ - private void updateSplitButtonEnabledState() { - if (mSplitButton == null) { - return; - } - boolean isParentEnabled = (mDisabledFlags & ~DISABLED_ROTATED) == 0; - boolean shouldBeEnabled = mSplitButtonDisabledFlags == 0 && isParentEnabled; - mSplitButton.setEnabled(shouldBeEnabled); - } - } diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index ea33b4d195..6699147136 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -62,8 +62,6 @@ import static com.android.quickstep.util.TaskGridNavHelper.DIRECTION_TAB; import static com.android.quickstep.util.TaskGridNavHelper.DIRECTION_UP; import static com.android.quickstep.views.ClearAllButton.DISMISS_ALPHA; import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; -import static com.android.quickstep.views.OverviewActionsView.FLAG_IS_NOT_TABLET; -import static com.android.quickstep.views.OverviewActionsView.FLAG_SINGLE_TASK; import static com.android.quickstep.views.OverviewActionsView.HIDDEN_ACTIONS_IN_MENU; import static com.android.quickstep.views.OverviewActionsView.HIDDEN_DESKTOP; import static com.android.quickstep.views.OverviewActionsView.HIDDEN_NON_ZERO_ROTATION; @@ -4007,18 +4005,24 @@ public abstract class RecentsView= 1) { return false; } - // Overview actions aren't visible for split screen tasks. - return !task.isTaskSplit(); + if (!mLauncher.isAppPairsEnabled() && task.isTaskSplit()) { + // Overview actions aren't visible for split screen tasks. + return false; + } + return true; } /** diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java index 053b360645..70a53368a5 100644 --- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java +++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java @@ -1952,6 +1952,11 @@ public final class LauncherInstrumentation { TestProtocol.TEST_INFO_RESPONSE_FIELD); } + boolean isAppPairsEnabled() { + return getTestInfo(TestProtocol.REQUEST_FLAG_ENABLE_APP_PAIRS).getBoolean( + TestProtocol.TEST_INFO_RESPONSE_FIELD); + } + public void sendPointer(long downTime, long currentTime, int action, Point point, GestureScope gestureScope) { sendPointer(downTime, currentTime, action, point, gestureScope, From eac4f16646a6cc7f33948cf0bd6d4cafe8f61586 Mon Sep 17 00:00:00 2001 From: Jeremy Sim Date: Wed, 28 Feb 2024 18:32:00 -0800 Subject: [PATCH 07/15] Fix bug with app pairs appearing in wrong orientation in pinned Taskbar This CL makes it so that app pairs do an orientation check in dispatchDraw() instead of only on init(). Previously we only checked orientation on AppPairIcon.inflateIcon(), and the issue was that orientation was not re-checked when pinned Taskbar was rotated to different sides of the screen. Added a DeviceProfileListener to update orientation when DP changes. Fixes: 323288812 Flag: ACONFIG com.android.wm.shell.enable_app_pairs TRUNKFOOD Test: Manual, app pair icon always has correct otientation on pinned taskbar Change-Id: If2de1a4c7334fef1ba4c2edcca09bef9338bc73f Merged-In: If2de1a4c7334fef1ba4c2edcca09bef9338bc73f (cherry picked from commit 999ab5215afff2d927ff783dcd07114cce19bb92) --- .../launcher3/apppairs/AppPairIcon.java | 2 +- .../launcher3/apppairs/AppPairIconGraphic.kt | 35 ++++++++++++++++--- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/com/android/launcher3/apppairs/AppPairIcon.java b/src/com/android/launcher3/apppairs/AppPairIcon.java index 48d0fbd485..a3800f7c44 100644 --- a/src/com/android/launcher3/apppairs/AppPairIcon.java +++ b/src/com/android/launcher3/apppairs/AppPairIcon.java @@ -103,7 +103,7 @@ public class AppPairIcon extends FrameLayout implements DraggableView, Reorderab // Set up icon drawable area icon.mIconGraphic = icon.findViewById(R.id.app_pair_icon_graphic); - icon.mIconGraphic.init(activity.getDeviceProfile(), icon); + icon.mIconGraphic.init(activity, icon); // Set up app pair title icon.mAppPairName = icon.findViewById(R.id.app_pair_icon_name); diff --git a/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt b/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt index 365edf8125..a4ac4c8d63 100644 --- a/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt +++ b/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt @@ -25,17 +25,19 @@ import android.util.Log import android.view.Gravity import android.widget.FrameLayout import com.android.launcher3.DeviceProfile +import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener import com.android.launcher3.icons.BitmapInfo import com.android.launcher3.icons.PlaceHolderIconDrawable import com.android.launcher3.model.data.WorkspaceItemInfo import com.android.launcher3.util.Themes +import com.android.launcher3.views.ActivityContext /** * A FrameLayout marking the area on an [AppPairIcon] where the visual icon will be drawn. One of * two child UI elements on an [AppPairIcon], along with a BubbleTextView holding the text title. */ class AppPairIconGraphic @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : - FrameLayout(context, attrs) { + FrameLayout(context, attrs), OnDeviceProfileChangeListener { private val TAG = "AppPairIconGraphic" companion object { @@ -69,14 +71,17 @@ class AppPairIconGraphic @JvmOverloads constructor(context: Context, attrs: Attr // The app pairs icon appears differently in portrait and landscape. var isLeftRightSplit = false + private lateinit var activityContext: ActivityContext private lateinit var parentIcon: AppPairIcon private lateinit var appPairBackground: Drawable private var appIcon1: Drawable? = null private var appIcon2: Drawable? = null - fun init(grid: DeviceProfile, icon: AppPairIcon) { + fun init(activity: ActivityContext, icon: AppPairIcon) { + activityContext = activity + // Calculate device-specific measurements - val defaultIconSize = grid.iconSizePx + val defaultIconSize = activity.deviceProfile.iconSizePx outerPadding = OUTER_PADDING_SCALE * defaultIconSize innerPadding = INNER_PADDING_SCALE * defaultIconSize backgroundSize = defaultIconSize - outerPadding * 2 @@ -84,8 +89,8 @@ class AppPairIconGraphic @JvmOverloads constructor(context: Context, attrs: Attr centerChannelSize = CENTER_CHANNEL_SCALE * defaultIconSize bigRadius = BIG_RADIUS_SCALE * defaultIconSize smallRadius = SMALL_RADIUS_SCALE * defaultIconSize - isLeftRightSplit = grid.isLeftRightSplit parentIcon = icon + updateOrientation() appPairBackground = AppPairIconBackground(context, this) appPairBackground.setBounds(0, 0, backgroundSize.toInt(), backgroundSize.toInt()) @@ -100,6 +105,28 @@ class AppPairIconGraphic @JvmOverloads constructor(context: Context, attrs: Attr layoutParams = lp } + override fun onAttachedToWindow() { + super.onAttachedToWindow() + activityContext.addOnDeviceProfileChangeListener(this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + activityContext.removeOnDeviceProfileChangeListener(this) + } + + /** Checks the device orientation and updates isLeftRightSplit accordingly. */ + private fun updateOrientation() { + val activity: ActivityContext = ActivityContext.lookupContext(context) + isLeftRightSplit = activity.deviceProfile.isLeftRightSplit + } + + /** When device profile changes, update orientation */ + override fun onDeviceProfileChanged(dp: DeviceProfile?) { + updateOrientation() + invalidate() + } + /** Sets up app pair member icons for drawing. */ private fun applyIcons(contents: ArrayList) { // App pair should always contain 2 members; if not 2, return to avoid a crash loop From f7c9e2c112f429f5edd04b853f5c23899f859a41 Mon Sep 17 00:00:00 2001 From: Uwais Ashraf Date: Wed, 28 Feb 2024 11:47:56 +0000 Subject: [PATCH 08/15] Adjust mockito dependencies to make them work for Robolectric Fix: 327257788 Flag: NA Test: Presubmit passing Change-Id: I1eee4fe0f79b2d22fc6bc080c8cc88c19086c7d5 --- tests/Android.bp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/Android.bp b/tests/Android.bp index e9111ea44a..24ae1583c5 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -177,7 +177,7 @@ android_library { name: "launcher-testing-shared", srcs: [ "multivalentTests/shared/com/android/launcher3/testing/shared/**/*.java", - "multivalentTests/shared/com/android/launcher3/testing/shared/**/*.kt" + "multivalentTests/shared/com/android/launcher3/testing/shared/**/*.kt", ], resource_dirs: [], manifest: "multivalentTests/shared/AndroidManifest.xml", @@ -225,8 +225,8 @@ android_robolectric_test { // multivalentTests directory is a shared folder for not only robolectric converted test // classes but also shared helper classes. srcs: [ - "multivalentTests/src/com/android/launcher3/util/*.java", - "multivalentTests/src/com/android/launcher3/util/*.kt", + "multivalentTests/src/**/*.java", + "multivalentTests/src/**/*.kt", // Test util classes ":launcher-testing-helpers", @@ -246,7 +246,8 @@ android_robolectric_test { "androidx.test.uiautomator_uiautomator", "androidx.core_core-animation-testing", "androidx.test.ext.junit", - "inline-mockito-robolectric-prebuilt", + "mockito-robolectric-prebuilt", + "mockito-kotlin2", "platform-parametric-runner-lib", "testables", "Launcher3TestResources", From f03524ae7445cfbdff6a8cfdf778c9ee8882b6d5 Mon Sep 17 00:00:00 2001 From: Alex Chau Date: Mon, 11 Mar 2024 17:54:17 +0000 Subject: [PATCH 09/15] Re-calculate mLastComputedCarouselTaskSize when its empty before getMaxScaleForFullScreen - Follow-up on ag/26499257 to do the same on mLastComputedCarouselTaskSize - Also changing the mLastComputedTaskSize check to isEmpty Bug: 326550571 Flag: none Test: Swipe up, quick switch with Pixel / 3P launcher Change-Id: If934bf4baf2782cd752b5621ad5e9be4a2013c49 --- quickstep/src/com/android/quickstep/views/RecentsView.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 2cbeb31fbd..eead41340d 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -5162,9 +5162,13 @@ public abstract class RecentsView Date: Mon, 11 Mar 2024 12:46:46 -0400 Subject: [PATCH 10/15] Disable slow recents animation handling Flag: N/A Fixes: 324228222 Test: programmatic delay and several gestures Change-Id: I98f3575047e442a4f57582b40cc0f36f1f113356 --- .../quickstep/TouchInteractionService.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index 415f73f1aa..788012445b 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -40,7 +40,6 @@ import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.MOTION_DOWN; import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.MOTION_MOVE; import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.MOTION_UP; -import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.RECENTS_ANIMATION_START_PENDING; import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_UNFOLD_ANIMATION_FORWARDER; @@ -734,15 +733,17 @@ public class TouchInteractionService extends Service { // an ACTION_HOVER_ENTER will fire as well. boolean isHoverActionWithoutConsumer = enableCursorHoverStates() && isHoverActionWithoutConsumer(event); - if (mTaskAnimationManager.isRecentsAnimationStartPending() - && (action == ACTION_DOWN || isHoverActionWithoutConsumer)) { - ActiveGestureLog.INSTANCE.addLog( - new CompoundString("TIS.onInputEvent: ") - .append("Cannot process input event: a recents animation has been ") - .append("requested, but hasn't started."), - RECENTS_ANIMATION_START_PENDING); - return; - } + + // TODO(b/285636175): Uncomment this once WM can properly guarantee all animation callbacks +// if (mTaskAnimationManager.isRecentsAnimationStartPending() +// && (action == ACTION_DOWN || isHoverActionWithoutConsumer)) { +// ActiveGestureLog.INSTANCE.addLog( +// new CompoundString("TIS.onInputEvent: ") +// .append("Cannot process input event: a recents animation has been ") +// .append("requested, but hasn't started."), +// RECENTS_ANIMATION_START_PENDING); +// return; +// } SafeCloseable traceToken = TraceHelper.INSTANCE.allowIpcs("TIS.onInputEvent"); From 1234090589be2f8b99284737be23113c19fd0239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Franco?= Date: Mon, 11 Mar 2024 20:15:24 +0000 Subject: [PATCH 11/15] Revert^3 "Removing all restored backups except one so we don't have old backups" This reverts commit 4b960d1f11d64b0f982fa6066b73789fa14340ea. Reason for revert: Breaking presubmit, no bug number yet Change-Id: I0bafad8bf63fae1d9408b65c6c18c79ab5d40d05 --- .../launcher3/InvariantDeviceProfile.java | 40 -------- .../launcher3/provider/RestoreDbTask.java | 45 +-------- .../databases/BackupAndRestore/launcher.db | Bin 126976 -> 0 bytes .../BackupAndRestore/launcher_3_by_3.db | Bin 40960 -> 0 bytes .../BackupAndRestore/launcher_4_by_4.db | Bin 139264 -> 0 bytes .../BackupAndRestore/launcher_4_by_5.db | Bin 126976 -> 0 bytes .../launcher3/util/rule/BackAndRestoreRule.kt | 95 ------------------ .../BackupAndRestoreDBSelectionTest.kt | 63 ------------ 8 files changed, 1 insertion(+), 242 deletions(-) delete mode 100644 tests/assets/databases/BackupAndRestore/launcher.db delete mode 100644 tests/assets/databases/BackupAndRestore/launcher_3_by_3.db delete mode 100644 tests/assets/databases/BackupAndRestore/launcher_4_by_4.db delete mode 100644 tests/assets/databases/BackupAndRestore/launcher_4_by_5.db delete mode 100644 tests/multivalentTests/src/com/android/launcher3/util/rule/BackAndRestoreRule.kt delete mode 100644 tests/src/com/android/launcher3/backuprestore/BackupAndRestoreDBSelectionTest.kt diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java index 2e0f6762b4..42d4d50218 100644 --- a/src/com/android/launcher3/InvariantDeviceProfile.java +++ b/src/com/android/launcher3/InvariantDeviceProfile.java @@ -72,7 +72,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; -import java.util.Objects; import java.util.stream.Collectors; public class InvariantDeviceProfile { @@ -578,45 +577,6 @@ public class InvariantDeviceProfile { return filteredProfiles; } - /** - * Returns the GridOption associated to the given file name or null if the fileName is not - * supported. - * Ej, launcher.db -> "normal grid", launcher_4_by_4.db -> "practical grid" - */ - public GridOption getGridOptionFromFileName(Context context, String fileName) { - return parseAllGridOptions(context).stream() - .filter(gridOption -> Objects.equals(gridOption.dbFile, fileName)) - .findFirst() - .orElse(null); - } - - /** - * Returns the name of the given size on the current device or empty string if the size is not - * supported. Ej. 4x4 -> normal, 5x4 -> practical, etc. - * (Note: the name of the grid can be different for the same grid size depending of - * the values of the InvariantDeviceProfile) - * - */ - public String getGridNameFromSize(Context context, Point size) { - return parseAllGridOptions(context).stream() - .filter(gridOption -> gridOption.numColumns == size.x - && gridOption.numRows == size.y) - .map(gridOption -> gridOption.name) - .findFirst() - .orElse(""); - } - - /** - * Returns the grid option for the given gridName on the current device (Note: the gridOption - * be different for the same gridName depending on the values of the InvariantDeviceProfile). - */ - public GridOption getGridOptionFromName(Context context, String gridName) { - return parseAllGridOptions(context).stream() - .filter(gridOption -> Objects.equals(gridOption.name, gridName)) - .findFirst() - .orElse(null); - } - /** * @return all the grid options that can be shown on the device */ diff --git a/src/com/android/launcher3/provider/RestoreDbTask.java b/src/com/android/launcher3/provider/RestoreDbTask.java index f2b7d18fed..22bc13bb25 100644 --- a/src/com/android/launcher3/provider/RestoreDbTask.java +++ b/src/com/android/launcher3/provider/RestoreDbTask.java @@ -50,10 +50,8 @@ import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.annotation.WorkerThread; -import com.android.launcher3.Flags; import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; -import com.android.launcher3.LauncherFiles; import com.android.launcher3.LauncherPrefs; import com.android.launcher3.LauncherSettings; import com.android.launcher3.LauncherSettings.Favorites; @@ -123,48 +121,7 @@ public class RestoreDbTask { // executed again. LauncherPrefs.get(context).removeSync(RESTORE_DEVICE); - if (Flags.narrowGridRestore()) { - String oldPhoneFileName = idp.dbFile; - removeOldDBs(context, oldPhoneFileName); - trySettingPreviousGidAsCurrent(context, idp, oldPhoneFileName); - } else { - idp.reinitializeAfterRestore(context); - } - } - - /** - * Try setting the gird used in the previous phone to the new one. If the current device doesn't - * support the previous grid option it will not be set. - */ - private static void trySettingPreviousGidAsCurrent(Context context, InvariantDeviceProfile idp, - String oldPhoneDbFileName) { - InvariantDeviceProfile.GridOption gridOption = idp.getGridOptionFromFileName(context, - oldPhoneDbFileName); - if (gridOption != null) { - /* - * We do this because in some cases different devices have different names for grid - * options, in one device the grid option "normal" can be 4x4 while in other it - * could be "practical". Calling this changes the current device grid to the same - * we had in the other phone, in the case the current phone doesn't support the grid - * option we use the default and migrate the db to the default. Migration occurs on - * {@code GridSizeMigrationUtil#migrateGridIfNeeded} - */ - idp.setCurrentGrid(context, gridOption.name); - } - } - - /** - * Only keep the last database used on the previous device. - */ - private static void removeOldDBs(Context context, String oldPhoneDbFileName) { - // At this point idp.dbFile contains the name of the dbFile from the previous phone - LauncherFiles.GRID_DB_FILES.stream() - .filter(dbName -> !dbName.equals(oldPhoneDbFileName)) - .forEach(dbName -> { - if (context.getDatabasePath(dbName).delete()) { - FileLog.d(TAG, "Removed old grid db file: " + dbName); - } - }); + idp.reinitializeAfterRestore(context); } private static boolean performRestore(Context context, ModelDbController controller) { diff --git a/tests/assets/databases/BackupAndRestore/launcher.db b/tests/assets/databases/BackupAndRestore/launcher.db deleted file mode 100644 index 126d166492b857140edaa5e1b31eacb06158d0bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126976 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%0A3*ao~JoyaKyMLVuH1%-Y zM6(EHX5tyny|js);-xST06Jn==qmT2Ha1&7>&l&f9ZSCXlT~}n{8#JG@!v^C;PbYPWXHs>wCrH|*R%7W1 z#0?i;e%F9TpbY*j-gkEk9x{Hq%uo*Cb#_e)Ao~5}#y_IIRQ$ED{tbFf+tah$tx*wUyj+6#cqm|rF(Ws=J1}^ zQ}2WgTV>R?$hN(ajXIKxv<~yFmTzXOV>+Ln`Wq&894-AzY~|&VNPP=Azh5k&cqr~$ z#vmQq=r;MO7Fw9_H)Tn<^FzZQcesCxI`;EVfwc8!|(Ki zV9D=ZW1b+@^WL;WIDb?edU*J47u+;Y(9eaXX7Nf<1I)ha(|5JFVFI{#L6Xh{gejA5P|aqn$?>27bYH@jJpH*n!4RaGShag7Znu^@E6!;c8)sTO?x zWeDI0Ll?iYY}B<6#OtN3zssQ~VfOj8Gv{5*xd*8-DbM~6`_Q8U3WZauAW!0?n)S@D z>3(Wl+Q03}zcZwX47L$^{<+m+UnymHswtYv1~^@Abbd~thZ$kN_a4t&9##T&wv=m! z?aO%$|KZ2L{sunx!@Mv?&EOC_@G9p2tvxuLbJ z1L;B|n@kZh6yO5h|1`vZKRrDy3sgNIH^SP?&!19g(sfw98b^UcU%A3{eZq*4O1r+w zL5qUw^?lm)_MYbE-bAq8BIU|ej%rSO$}_k1f3)y+>dvJ&tBC!kZI+l*gB0*=c((p7 z=w5Ax3n}3L*(FHzVRI_n|Mu*IboD1gRy#?(r-IqJTb{*G;*2n1 zm9DS0ZNb7vSTfTPoR~1P(zs-72>?pYeDTzQlZR^?aaJ=n&Ws|gu<7ikK$kHMuM_2< zv1lwmRkI$1h@%hM@V42~aX_y^KnFyDkd~2^9BojZ5ax&j0I_v>tpT1G! zn3^=PYia(JodPZCMrY@aFLblZpowsRVj<{?9vniSxwjq<0s4NY>6e$9`D#=@!4-&} zL=dj6Zq%3*`uAl^Z4pPUrKZ)E@|Qf;rWC|pdRTEG{6ulP*E{|61$dK|W1_$Q&kFAl z7AED`-hJ-#K(`X^jPT{0#0dIIdWltd7U7Meg!2dmZ(bVY{6g`m{p3Y@YF9>6t=b;G z7P_>IM0U^F0B}O#{qeaiwT3RsYK?{*)WSW!G7W|3{haCcoN8rNF~f$;!8CmZA@hSt z@M3$x>$~}Ri$8uFMBvwdTQg{v=Fw@ENUDV{rL)Ec$~fjY&)jw4&ozWkCYss7Bu6@E zli2!ttK?vP5t&+WY4F(Hc`~h9jW;ImEe={;(Pb#k!HSf zb*HJZ{sD8{Rt>Lh3PZb@%SlDrtR*JNfQv^gBu`CC+U~;W7l>tL<3EOApAe`EnidG& z2e%yj`s%Hzpi3l;NhW6XNv_ZgBcXC4BAsCFqxZEP2TfacwKslR=4bdiE0P%ddSwq! z|8?5)(tU@w)22v+y-5NmJ;`bUTXekCY))sZD3IYu97&ebRY3o-X85ap7#n3H zqPPv1?xNYxLxs@f^JyF+9_II45n-6DE6QPWp2hd^>W)VvS zsFV{FWVErh`Y)Kxk?-dl`r6t@4EUUa+nK-U8nvrJnFjRx(P^-t$3ie^1E|n>A@&5b z-?Nh;?ZrKLN*vW@H6c$*v6=JVk~_DrDGzO4`__G&-}@Zi+k5;@$2CV=w2M_`L>8#2 zFpd!G;blxxQy~NQME?@BT}VZ#!yfaKHIg|O^@pWN<};2_kl}Gqt}0UHB_kF$erSqN zs{TToxuFix7I~^Cju}`@7mZ)CJ~k0qsQyjzuS32%#i(l<{S@P|YEZ=SNqvOM6LW!T z9HGiW@wLx(drTqtV}buz;6E1lj|Kjpv_K6iA})wL$p3$KO|2RJ zkFF^RBU=+!TO$_-=l`$Zf=vF;E&9Izf&bUyk1YRdqyM{!3i|)H9tp1c|7@c2^uRXD z9qDn<$df%JGyL3(EY=HAGM$d4eM?v8)WguX@+>C)I-X_U|3-9p5{Weja*09m{FBFV<9` zU0ig1M`TM3rs4-t&a1tt>|F_15yvGew^uSb_sE~MJC4d0xap;rc8pTIl1LtKxAjPn zq^L>;Y;Nv%@MD#&>_ z$Iha)CK)}&A7?h|h@Mn*mk+!jOCcG336Kxe5S-EQ5PbWaqs!QgkY%b5Ux$pZO;|LJ zshAX?1>m?3!m{iM4qV!3w3*Wokc~zH$+*^nKQTmO%gsSw;t-G6{q^uU5U}yv2n>T2 z`E_voaUNeGO@_*-RI#h;ey6aYW!1L1gCLB4o*@Fr4v5ol4moYSFMbf{{3jcW4I!YGouYg&sqw!WR3=vT>edYAHBG(+Gsc1U*=_vRVN)~ zq9vvr#r&Q`NH+FU_afumk(bm0zf^f9;3i25x#R|J`q0~a;?37aie9dIFmTdaT&9t! zKvkiPif7wvL=UxWA45C?;tHODv>skr4$Z^2`>^?Z`@U4p3X|q@p(z5`2&R_`2sS*% zDaa^eRl8`6NiGY_re3h3nl4QM0 zq{Vxs5a21xHp(dAADJs54?$K?I@1vT9TnLl`t0v`)l;;goxyShl%>+BKpA^`#v@&5 zf;T@Fj(rfx5R?Q|k=5&6#Nq37wcT{K-(J0QY-~4x*_dJSn~3&1_M=vVwkHIRuXleo zHr^f`(8CC-7V1ofMO|^hbO$Xtf}58UAKWj5!|wP$m+wMN%~GP!M**TH!7y!Yj~|G@ zDb*nI$)m{_q;7m+YjudAg+!NcVdlU|P)LV1<>}($X8&HZzuC8>2W+*>*AidfW3%*F z>Fkg>Ra_|*(o9`1-wR>9ACw_CbC(`8AvaF^YD;?D_WidJ!E8EX6g*7<5WRxJJ+`Hc zTxKZnvhzpUG!*b+NmKR)9CuNX9OT>Lkery(NZ>&(C+VB%m$%5rPl| zu}EVKb2k0&PBx#!f~wj!3^^*wokJnvUai2N%IJ|80@#DNj`Bz;+*PqY?+*`petE*+ zcaV(SkG@PvAi+eXmFpjkAJ|f+{V|z{z<9|(fm}^~oXzD3-42qxSgYnHCe<>Jk!m?x zQ-P{S(rvtNa<%8RYSFrjb{>i-Q@e}~I~G6AOny8eJu6x)H1uC>j}AoyeuHJ40vj*3 zcTr1muzGy6+`%$}9v4Iwa&zXbqPVcTCb2zS|DmZK9vAjzcKX}xhqf+`=S~QyY1zn7 zZBqj9mk??*B%=l$2#{|>g9ZX+#7A4pXF;~;p&(f;y@~?1$%C$W)h!{XJ;@@=CiH~w zsx(QQ*gwCVyE~mpzg+DFfZH6p(eLH6@Ffx_k%$#X*-WP7|aJ; zJq=d)5+EPWM*<&@M-I*?wT*nI*s{6iBNi8XWjBbpR=wKp2hO#0VNl^EB5$lynz>^5 zd~=>rwESvknjwA|Uq^ktGcN@I!VS`&1=6v({U`$OnDBM!R253l(C#ps%Xx zOd!5NMB=PGZTeB6)EwbhxJdCZrvKY1_nzo3rz2t+yfo2hwC zgkV5(>G{|DP}tZE!?=lMj*^cq(d4y1!l6h{(njh2B2KMfC#Z8#u0)ag&2HEAA@%X& zj}|y-({JghjXGzZ@J?chsSiP!yiSEtCn)D3Hx|I-7YGm*mps1o-|$5=UcA$4mXR%tzZVPzeAO_Z9nTe!RnWu* z?tq#veD#O!;Ky!H#|t%K7*WKww=*j1&Q(4{C0+j@8hzGwl*Q;I(Xg3|Lg*gfCL86_ z^78VGQk+e`=!ZmS%Z01H8U5b3{z~?;zhdQWvqG`j3ZBmI-XA8f9pY7v^?yAqPukS= zI@8B_i;MgYGdG0*By35eZoQQO~*6plD8+Am)@sgWm#Upn9S|Y$C6ZHaRy$e)IaO zZHxr$<+r5RsJ-IHzSWEu9NqigNEzLGVHExh!_8);UPU(Uw{otsY;rc~?nFbW+yT4* z@_qY^G$Kp4rdLeKZP08kj!C#DTHiPA+YIEa-+b|8wp7gUpG0keYoR{`u0kG~n;Kv0 z_wH+Q%Ik)?ago+p12gFac&t9*LO%)RU+!!v<1tN`t8$6CO;adZ=+JQMKVcI#Nbf{_ z|CmAMpCLSFh`+;GHnKp1b!n1<2Wj;wP1!Gf5{w^Kz?cUA6_>u7#9d(AygM9qpA1oY zC_HCcEMvjV?58-y(I?!%Z8HO+LRQ>RzG!@lkJG~<7tiSJmHuKSom+#v?+_^mpM#TU zJ?}mvJEuiZM1N>Uu*c?$rYrqiEb@T=`CbHZIOSo+LK9`|)6$8^0Nb-Un+|i6vq?gO z%#%=x_K|Qk*?4xzC#UWbzhT$W#{~iXzF85+xdFCW{Y!&UPj4tr6S;CcC4qXfkZtNu zjtJx~WkYJ?;Pxo29}Q4n*>`F_P@aufmZvJggoPe2_ec$Ypxas}{sMD=HF)?B8Bq}( zYCOHi$O0O+lpHQn>T`LgG(?uRzNM4WU?T>zc0<1YAnLO`ZaxyX{AU!jMdZ1&EY)dn zv1wTzJJD**E6n#GqZ@{3^r?`@QTZI&)feI{uYl9P%nl>)VxuxpXY3AcYwXLCg$x_rrl+)ObZx<2(K@kK8j3yLpB>5qd4m2r?i zO|Q8pa8tL#iA5N7dSiUd10!%VhI_3#1A79T;SBZY(L>@|OkEibGKp8CAB$NZg|rd7 zsJVI2z>LfNjswgp={P9BSq)spN*lQHjtC%PVV?|V)8ox-DeNY~cE&P_{ZKAtyjV@m zIysoLp>%TZDSk`2X)R4yDa(H+kvF__J%LWUixqQcd}px)u`@0`XVD0SjTAv6o&n)p zIct$Z@a}I_(>Fi96@W)B(5D>7L;_qBdwBA-QKPv+-n_Yo@oF5DaeUE7Z(dLz^Sls_ z<3*sPS%tsq!)N6LPaf3tX?rQ9a4m%XMmW0iPy}W?X&>0n^wtt=!$9c3+-24`YJ`M_ zn*g(dte5RkuU(w-sAAfPGCen#`tc=+ujjmkO{$^hrT}5X8-sV4q7tyYVV(Ay)Krq> zD40q)PXKk5aY@|!7@IAK9aFjtn16&B_4w;q4x24iC+#&G!vyF$cQ|O=VKu)-?NxsN zeiTU^=#0yb-$k0KB#gG;;Crz)Z<+8qt~H?X!CX5I z^U3ni!9{bCq-!vlG8jmHyiruwEOAcDKtDrRSy_1?H{}!)eMnbx4J{1{3W_gkugw?-8;f%$ zh8{ld4}_!D1jNt)Ed;K2HP@hjO6`P0Y5!iGP^u~1(^^t;KppW3dvz)yAwYi)OG)rb zOMKLdI*c7uui!#Dbk4&BUHA%5UIxs#ypj%Pk*WNO80z^oF+Oe!C_GlC;E%BN zPUe+YY#M!wVgfu80x$CjNTj$lqFFkztq24|v(b)&Qxw00E0w+nPZZ}GKF_J<;EYxnrQ z3Z|J+`V}64kC8RsRpVnj^d5{^!%^WN$OCc4z~B03LOyFdyJX^*&s=pQCZMm%$I8V9 zwnIEDwi2fItuKxCv%aJ{})LwIOV`PbiL zuo6^SB|~q?)!l;<$^OTemqU;RiAIi%+(;QrvQ%7$gm%f4g4c`!{!Ix!$1rJ=fsuZ%yKfe zQ}E&A6VQxtA_$VsGvE{!c{CUx!V3wSgPet8JKJcxrVx*y-h!*jGk&~VccATm_LJ|L zVO0;oyiI0=o(KqOX>a!$A5Em(hC9=mD~1m(0#XT2dwY8|Ql=h?xq^J|E44;>l*&~7hgFiPHM7<|R4@y(vyQs@`dgJLC$i*X z5)uQO5@E=mcQ z0C~31(9kU4PFad2u0yx9d_f-4sIH-*z{{noQ>B7Y)7RHOa_i`czVA~s2Zqhv4-O7OkD$b__VHp6 z1B2M70r*3}qO~vc7Mu`4olaHF46p#y31u%{@F0N8jwSa4hb}vbz=t{VR?p`P6xr3b zE}s7nS65f0f9jj!hDswnDO_A1=P-cT^7xw*5I!iQ*>=?#V#En<&v%&SBd|#;!2CYU zCAR?V_SJR#~c7khOP~FZoZswG%k)uP&vr-eLOu$gxHGu039-RJBqd68tWA z`i|{ey!|^#aM6I>eG7&|Qw-;c$CAdXGcTJ#l#;163{e>dU96_4067gb05i0A*1Hw3 z-->m6dwUNW6*aV{h@tUi5lM`$1tZ3N^m_PK3Un?12@4B*emXHE9dQ~VA|%8G^fyh5 zI>xTtBSYtkXLtm5(YriRFbgXxD?5_+TP3dC*ie8;J9RBB_jKgMn+|hYV&k@$a?ARL z299`AA+M@|-4#)Ir{VQuj6LAy{sBO~*a9M=ZZySG^Q>Q!WiYT}VFL@VX!{8mwW^7? zfPuZ0Gq;P_7DVw~w~l*Yz)z&n`Cxqa@;BAnpavagT_;t6WRmjm1AMbAZ^)SeUh_6G z$n9`C=MZSr*E9N<$uei%gg0=S;$h^}_C-K|pWhAGG>5jM!sxq#L*}CX$^m$t@STPb za*Uz9PjQwZr~M%WfCwlSfW~0qB8*M9D{}1CfwpGb?4Xpx-(>gl zaP=m@IRqVqev0ms=15hq{Spy5{O;-4ih9oO;@e}`2e|+oF6mzf2eBUsV~bq)^%CVu z2%&pN>wl021RCKB4X}B6WWfoL4=TdfK^^__+(PXgcKVV$uv-qa8ix}R5yk(|?|K>q zpho<2*KW$}fzS@g*c4aE$i`P#ww2{{=yb%;c9hKq#Sub_>>dPiWX4!Ym^xH`NwQ3S zgSO_u-Drxa!7x-BabH5FaXQu*-4;9@u@SatcV(sP;4vBu zJ~ITu%evLUCj!;~Z^V54i3_G7Sz>vOkQnpngA|hI7g0181xlx>!ao_0 z{~f0Q1&#dw3QeJoAidcQ=^stO;(tnqo~Zt-3qrs{e6lmLvi<)`NzlTMl?8x6xS2VB zHFB|Xu>WlJzjRIiYeWC53<&jqy9!9C@IR}7-v5nK;P4*Xa+Z<_kOaCzMF*pNRaEGo z?xdhABJi-A#H!>%3vpTVH5+gLeh*OoDPt!ozo;X18C4Nt4Iw5rP=XDQt}l-1OrG_} zykR->`mL^G?2oy*yW5?u8_(*+Ve-spH;ZXcx7=;PLq3b?Nf7;@;hvo+#k>KkoWqOa zJd*2RYBvLJ-8S`ogJVRb__>9wf&qs7<%OZCAMKq#T@VcV$-Cn^4apc2F1;8VhF>W( zyUOS*lZTL%jC5THCIsbG=E_G8J(dDV^5&E$77w9am63H&rVN6l9Fvf+L9=b972rcl z{nL~Oa(qNpbCyxyv?(+25~#PAEk?igCsZw#_#Y7et93QOULG?Y{kQZ($dla zht8|v#Dj@+cfbiPfTp6_4NX2uq}HZV6-RiJ0GL!ta43W>nE;bISVwQww)LPGXi0j|S~AwW`q070o1Mt*aoIF6zK9J^)yoN1I0bc@bV zbaKVAg-0U*ZpPKt)+X)pDa)}?c2|N9vqxD{${ElP_XIrFsFo3{UZ;(Mw6wJOd>RIA z&Nq`JOcc|oVj#v8p1B^`JKNFjy?&_!{{Dy&QM!$>@eBHp%2%JNFCs#ksqENYMOuzd zFVaRqVM>E|?B308Fvb>ic}> z1i#67E870v(1&TNpd29Y|#3*V737)w|3s7?pL@CxL=mQJcVy3 zn%75Q;Hmo^z^)<9Z8A~Y?J?4)01j-*O}bOE_5fg(f4}78!ANw7)*VAKf$o5y2@e+s z$IcM{H`BQ5oi02%GjPb4V+pyec_6Rx>#Q(TB-EIa#4BoQdaMBl{&bhbQcf&=8t}Pw z!;uN<3D|Lwnd{)ag&>4-mzI|1|554siAdE3VW(}mStrNFz;IW&n4)5AoP!kfDZs0a zfiuAW`ZbTD`4Rv~b$bHunMWoa6uA^>tVRR|0r`rvU!9$uJ<8>jp@J*GPyd)~W%-9c zVe7_D61C8CeDz@AN7PqdpYP+RW@h|9Y}Ex|cZIV61h_8XN{R{Y{gBVuPXq|-Vd|Iz zTm{PEIFe^})uQ?<3g5{L_AIwQE9{t^H`RC`x%Mfg4LN zP%V(s=^2}x^bwwqQoCXKcP*NmnN>;O2k2dz1=fznG8IlKnVB7|W@cu_OPRVxwI%=n z4DEkQ&;hNypsKPQjjd0 z1eq6|%@Cif_XI@KzQ60-Cj41mzJp}5t0peFl1V z#RKN2^A0@bJbzRr8%B?CsKNa!X@U-t>S5`O_coj}f#yEmr!SUYzv5`55~E+neh4CN zg(>#L+OdayPz>+@Z6P?41T^3l-+mygdIx3sktT3Uswf;EAL9WrT+MoyH%~bHh)%y$ z+D>^PWG}!Y7Bu1{OqaB00OfwV9?5dN*&QMyrnSM-kcLIf^T33v$*L+J4+(1seDA^8 zQF?(O^LaRf5Y2(Og~1Vhf|kr8I zJ?l7$%AkM-ZO5Cr@VfV~(_Vobxk^RB4U3(}w~v=xN)vd9AP=U?KRIWyf`~FoN|Kfh^2EPyM;S`|>>k+Sy@6Jq`bqICcbvKn^CtTwnB zPWNwhp>J^ee0`yO>nP@|nSQ-#BsnGJzMs?*gyrL}{qhhot|NiW=07rKBuGZ)vEj|3YP^z#%7KEY4XMFsm3*blXkOzLz*Q1I~ zSmZHma)GApM=HW`3rwaE1E}VNGz7!%;4VU+!w+u88_%>FiGZPPho09v=7@ayBus#U zkOA-}t?KLRaT)57LA#!hX2zmO~!cg}WGGainD$a6us>5o(L>nN9U^Ku(s zAgM~AQ+4NGSRZ91O1IU(?ACggXD7Md)e`8S;nzIZ-*#$UI6zg>WGcE=@DV*iz=NWz82mGzN)RAxuqUIJ(j%@Dea!rv zuEI`>npk3^TL!g+Gt+-J?)+UPtg=#SeEms@m2Zx3>$y3EPQqlUFY?HsYChS)GAg{f7ORBayg&M?a>jmyu zAF`jZdi?3&0rG#TQt+9~q3kIQ0o?W}g>aXe_+Q=bi~iWNtsZF_oaxRILN?b(!GDAYfc#M002UA zW@a2Cw^p}M(K8S$OW;^uyj^Pcv&lRyzk}vr{T|6xk6ieL4=x$|Tqkr>pLBU=Zo;9m{^x%x;N<>wI1* z7&sK0dWV-^m8=Lke}0E8M4TXNH3dd|%JTC?1MBvgp)V76y8n(dW`bM_2t{jrpq06Q z8dHGa&i7acRO?G!NYvXrjp%ialfIm>M76L<0vYb#@+#g`-h>6>-dj+v_|(j5U9F(@ zvUjQZj{}jFn^JIxoiwco2na~U<=LpOdQrv{;m5_MQtWDFvFQRCoSnP=O_nP`^kj?srWmdx`KvBO zI8(=Ufmz1Sj8^8$ALa^L%X{`MDLUL1hUX5^yH}ML`j}(D2X(`bci5x{!FeV-lgO2T5^3*qXFcx!LubDI{Tbs8A7( z>2H-RCU&#%10}A;7W1sII_&LKG(;-@i<=a@SjY1uxYL);65I14P^e3BUUp^oaLom# zP&wdp7KD^Fe+EH?^7LeY@!XX1R2CYIna+=JA{C#ej!XUkM-F?KlAqWR>lATw=KYUv z(U!!PVr3P0LX^HoTn17tZD>$S#UEu$0AO0K|!9#`d_NVf+YF4$R*(pPY_>{ z%85ZIr{;u=*;%ARf^O4+*RNF`MORQhYx;~Wd`ZTx%05e@;#H0LFGNW$i(QH&H(t*S zB`yi*NeohF&SLaK+bq6OLKg2aal53-B8M-S6o=L)eRJe<45TUZVjcv2wX)c9Dh4t*jhP~#C zO;_dQ%FHsJ-451rSbXD@@BT`B*rF|cU%bmZJwDp_+oyJg7mnNi?&FEqOo+Oo^+z#@ za7k&Yh)JuY+exO&dY(jOCi@BI2j@?7GRv1Zg6{y>hs}fUSN(jlNsWAV4#N~$ma27V zhm21gFzsEtewMDGBHR!?Vn{OhByrGco%p-?r<4~AXf;g)SJv@$upVlhS zD`b&>myN_3+V_aHH(3CeO?yUsnYQ${3s7n-$D4@EcK&1=^N9gJ-?G~U zj}7KbSei}$b$O{ucYTNWJXY?<4-{7aHX_>$dwYYVDMK&g8}Ibg=#-4o*mRDinG@N>Rulpe!(x2Q57Ga(esc}(6a-)J2*0m2BCH8t^a zbw6)p+&hLnnBJoxhaTtf;&PcaCCKX*zBaWimnisp;csy4xRrAu$C4`0sHsODD6iwy|I8{Ue;9*unzj0M ztcV54ls#lP;p=4BZy1!HBgIMqxgP@P5dd*y*?bnRV3+yh-AN`#PG2r9S4KMNBlrak z=lkUe<&|=1g|(Kz^M=A!x&;KN-F)gBcldx4C-NN(GR#mdC8W*oCqrq>V7*hWho>n9 zg!IdsI33x`U@j+*Jr=GMqo^RjwnsqWXKm-enj?ON7s;PkW3{(eG$UQ=Z=R7izUD3} zdKie+M=v%{Fkj3X69Ov?{Kf#|D4zy-VIMW}J*&UtBB0OE>O=K$ozFND6;T!|qxH1<@rs9Q6o5WMlTiT2 zrd8k;xMfm80_(7K;k3`oyyNBVy*YDo`}cfT0ji2oUmd$M@w;fPb3XJ3e8w$925TKY z5~0I@UI}*FVuCs-DjsAw@jMk6Bq!L9?-KZb^a^>(nNAo|euwd#1;hvOA(%m+P3-0e zbY&11Alhe=Vx~h7Hj*;CBuXAaP9Zl)DN#mFKdzF;cBs7=T8IM+i!+%;M|4LFsF>3L z65-^}h@Zd^J&RX%ga9JcuuT~=%UbI40(UEA1GbO=jF>R|woqu0udi=UP^OGwP3>p^_s=xV#GO=#AJ*(W(34s452wU>|p)s-$FC`0y; zKzlWF$i22uP)>WE2CPQViBaK~J5j_D&$HSztB>hm;e(A1&(}M`w`ZDneOVINB(_h3 z=M*z}&bIkJHzTdX{h8^i^yKPy(gniz%sbKPoCI=IB+T-7p!TsT0}v%V6Yj#s&#WGP z$wZ8J-q=z2{`dxi99;xDGeWHFLqfWDzY zU(@z;KqoSWCczG2RcTSt-d`{nZ1bv4OCu*0sS%|g5H#?LoS2x`)AP0uAb(?yZ@t$t zcwr%M$ZwjUwVlD}76B48Eqg-Q=-jYFdq3T{auek6ew7x}k?(q~Zux9^`WQ-Vb5KKgx-n>dJa8|f=k0n9(u zK<4c1?E2FrF~r`IOwv!2$^6b=$!@=W`(~@#<>mSTnj`?5N^^>`G7S!VeEWz#VSY{g zDH)%`37MO*`;G(IVuMopRwa7bcH;+-kF!@Ze_^C0=t1HUz*)zeux}yL>-KrD4l^=` z)v}+aC#2~vF+fH*1dnu2^Q3uL&$Q6g%L((vJq-iJ9#T77+s0nsB`U+j%Mj;mpKtO8 ziz-l}Du8z9#d*htuqa~U8T4d0bNJ=sNQ+S;T+6u&8|QujlAM)>n%aC9fLq#zN$A5N zvY^JU>=}U&0(9z(C0&5Z%S(dQGaN{+USp@`{)P0z4V-g2Ih{CwhZp}_C$NJTNtRyJ zGDi~fz&_T-%gxQ4%j>Z5lwkNF!*E-4#?rEvY_dDvB-=k+L_WKmfToF=h&<6dT}T5D!R6zI`t6q7Dq& z8Oz}WrgK94*!Qhmza!;`(8gs)!AhyZ(SNQOoHGgjEv{r{YI-W376L6phu6(y)F;50 z22=~Z|J~zgK~*8Qdc%=zfN9GWP|K2wc_%<|$RJjPie7-k3gQtE=&0}R_Tw&YRO)-A z6-u7%26SKN6EWmkx4NRR0+1)|EO(%e{#`(vWA)58A1V6lZO3|p5gg$2T(UR$79Z4i zGTh^lI+05X3Mg0YTNX!s>rDtd*7bE%R1#y6$Z<&Z*^paNX!9EzzpYG9PqVZsc`>io0&xf&ki@n!DDNd%b9DX0jWtC&t`>K=Y zGQGnu6nw+j&_*rVX~ULK)V3R){C1X>mK|%cSh1+@-q~#eJ{Ck-M$#x(&!&Bdp~IPm zT#h-2dVoA@_n`5E%sG4%JQLp7@Q)uq9vr=rU>7|zaKyGLFwo@-_2EU00nUYW$GV^P zIeZcf@Z6rCZ^WJDnKhjm5t_-` zXc}EVf--K>WFq4N%0Y_2XJPJ%3ZrY($^#OGK^>M52|g>Jyr>1}A$!i)x8x@4z;y$` zB3+Gc+uxV7)fS81^rXwk3T0|zPuZ`L)a5Zw+g3@Ah&p^PpFG6UcZcIQlarDf0Qr90 z^7&&kN1iBM0y~~nr=*du>%V`0^8iW)KiTe5RJP}hJOsnG+Da*i2K#p7Ekoi%kvNY} zPVgfRR{xbsq8G-+U5on@$hX*1IGWws5&WBw8-RP`r>F~|L<^L8& z!+-fhIR4izv9ee?*qO1&0Dt~p)(|lN=hhH}e*cTl@b&9r*Kp6%c(4(Hs1Il-Pe$TP za)Jal&UadEmv{4x7@0!{kyh%?RaY4rCxblqUQaUiWRWY4^Be6EBXTC+n-84kM*lKy zP|LxJvv$)*1&k6q1sD+=xK4KakCO;;W)U7ZnNOlZw4z%PPZsCgUq zb{NMTGrpol#M*M{C8tI9&%O2`;RGgSpU40Y&(Ehv4@(9Q4^3l;NU0mTE=u#4P+_{zD)yxk&dC2m&Z_s1)w;a*^bWCFl_xJZA2Ef}$qR}S>Na2<#s3~<99%QzS=^oS>+rr z6$o^RpB^7a1;vtoT0&f$^|&s-0Q%2HFvCt0&b*F%TYS}RH8l?6pn~*o9$_R?S*Cr_ z1K5}|5&K+8lVcv(qn0}>D=S{CWA#7x>_z|iTzv(a3A!AWLgok{eT0GFanFXV<+!0l9qGjpOwMUL5-S2fv)Jzb&ZY^jdwUDCi< z1d zvqm?gkm%zA;aK~8a@7M^MT8H>A5`T>9IF{4^o_sAVnX$u6j<^oBj2DQp)FjYTRzQuqgA zgJBU?bnW8q!Y(@jsu=?VLrwo5Qj?%wd>*h{{pTBQTJHDdaBa$)`Vp;W?m-H&k+rS` zwJ$F(ng8YLwIf6$3f(J1fmb8;=lEDV8?aHxIeAOl9vxkM@h+4Lg>c_fb>DoV=eXJC zw)SZ~KR>@12llZCleRYmU?VxC?2sISd|zXt#>!T9ouio;%c zVmKYgTH&OcX=dqVz;NPxJDltlfOB1fx#@}6dTzrLgdHlX;LmtPyG$9t62f{^A=Ch= z{e&e}s^J1)p18%QG6dl$)G}gsEEEzD5_;+t&In?frmKjv@sAN82DaxR%8I<=MxX{k zfuaXhG0Dh!kU%IGi{GDV(;O&1rp&Idzf44u37vKUEs>>!aVmh2NzsvFcob71VkF$0DDjLmu4?46Ok*prAfEtW2MiZ zUyXoTjBP~p0BbMou@;013XFq`+Z83tmxG1+n*)08qz87NuT4RQiIMSm>NRNN8zZr2W4n%70v~ifise()MFrgnHMjyp@>TL}muf#HB_>{7lb>ea zES(J2m`ejbb8p80t%3`Ya{2v*Vh&XkGAL%m)Qf?FB41F(yO2~Ce!nwMJ2{>~K#Z6I z4YzQnm6@Oa0pAgAx~`Q+69Ga{dCiL&`wCbq+B9jOJz|_?H!e-(KrcEZ%!dsO4EVFK zvMy4B*9KEH1x*NH0&M?zaf-=!(GPvLrVrhphSE|b4=Hl^_pa`V9E{%{%dRJ0%U*M5 zr*39)@{O%biavtwDovZBsH*C015j*ZgiY9cq)M6T!8h=^QhDe?Cesha1{dzBGdZ zUYp@@zmxNG7Fl`uRebnNp)FB_ZqV7A!F0EhX!t9d@*6^Z1P_AgBT+)x2hox>Bzi39 zX7a2q3Xt+-c6jpJW8tYW)Iaa%C%`cV9sI;Kt}-APeKhSSCpSv9&Ay0K%oNdvWZRFO zH-z1rYGM!F)%m`)^Sy)sy281BLeU^7vVg{)A1_%ofgWQFun+Bl%fmW9Q-m8<>D*_s zUwjAnN@f(PSG+NxHh(k<2WK+{7T(<@gzO-38-R4&d6!m-^Gd#a|3S<_r1%vP4g^^6 z@&dMxDX1dVxUq|_w4h%uQ$iZZhi8f3`(3-<4Ig?kRbe9yGN@k(3(OPY@>-@Yd#W924ms6;C|-> zX2*Da^Z^$s{Alu1(mfM6zolfK+Bt{=l;Jrv%Dw`y-utFr6?gR3XptX{n*Lkun^4}y zgr!}qJFeICs)aTRUx0;tAOHM(w*8pHPCBG9DF#ZAjK*81xa-Z!N2|3M3+T08riD?t zhI72#L@iCFp(!uuFfCg|pyuUmLEH_YG{^}Bkpo<<&kR*NEUzSuhe`?FqOn9az1e=C z+l5&2%TKKGl=aM`Ue9`{{d)w9g5pkUc3eUFd z3;VPN6_gHYe+>&D(^C^)j38#t)txO^N)E%-tBr3D(Ab;@_zDGhKpn3YnnDbXhF1bA z@1GUaLcLfZncUHoBW#aD2Z(0@$AJhet1!}w4iXXw0p`FHOk=xmr67EOheX_1iCS!Y zH~wIR|2VumXQtq0Iid^Kf)BY>c^MrWAIA|xQ-iWsUNZ(rPnKGQp@9p8&m`fg+5(>r z9&JlOs&ydnDjAee|6{TRPi9S+SSPeD-dJTZl+8jVyJZ(xXf3KUu2;6z*N-_`!73(f z89#;!tddRZIme~fZ9YK+V}7VZPc9Mg1UNpWLjC$(PKg7j**8AJw=7hk=42J9wY_-z zxx-$l@Km&8tY9y!6fmN)X14hR^{bY?=i-nr>u7;LJ;B&CZO>otrSO^PgAih4hpqEx zc5u_`nS4_vtmM_I3jKEHUXaLy)OQma0dddWN~)i?44l*F<(#b`U_L1*GXpvZ-Q^nZ zlrbfr6!~^m#uS75IB-MlU2|*DYC*b{ov5X_OV!a zgb=B~4L$Qbm%oIbQ6dEMeIE<7v%=&|uNciJK1&G2Kt@6tB7)gGmZkghj79MSQ^02d zMHV%TF`rcaw0gMwd&$2KP^rRg@=hHU$c~@p8d->S^;BR@&By(+WdpSyuKMij$XPjk z7R2KBbW7bdVzlU^W+jbvijh34_Og}XtpkZ_ zZJeIf|9S>ffWSsA{YGDSuhh|XNXpm6M>MWM8emJ%>w(wC==j%=xPItO>S39=*6IS1 zCSt>ukkx4l z-;sLlx`QZWwNF)|CEU-+@s^15=lRw@zpT)ukqBJQ>jVsXwuj2d#;zOpPK>4Yma|!w zN>uCR`s(tX&m?dn!Ebr)m`4@#@1lBsb>8@NXAhUo$S?QVMDa)6D zf`bSG9C2oF@~vV*L$$!iawwH0j9Ev=Lv6kJdCO;if&xpN%svTQ%gcXtPb_Bo1*>i? zJU-UXHa-Z>FK6Zjf%I$cD~0D(%wL@SHvas?OWjVv)sQ?LPI@0b6QPr85Nb0jSBQrU zvenGbL_uCYmrDs%P*BKnX*|@loat#Kdi(pMS2oiFCL~?|~01IS9z=DJupfxLZ?S8MWuELFR z$g|b!*n-%qwVOtLfc`O~fd{{FQnE`+A-0m*w5VM~ui@btcD@ky7H@NWxwzc`aCPEU z5VEb3>>QV66fi=GHe=xL&ptSZrZ%(~P?>NZfBk&FJ3-L`CR=)sy$ECw5QJjcy*=F+<`n z$h5&wQW*=nGO{a=^BKNvAH|FUD zq%1zNN0%_sUCo$3xi5P9-lP(SF9tR?w)9O!1_w^S`%FmkouH^X z{3Uqe5g86dOG~Q_9bVt9`CjnR@-Vx{f$BO?a`y7Le=$7K?)V0 zKGKS)R>pa191=$ER4Utvm&j=riN2;N{o+S8c-`h#%}pmsxweo2H*YC z^2fobni1|!2*eaQ7h4VseMa*4u4{I){IUh3VHy;J+RsH0D>ZSK5*>Q*1w4gTY=D|% zgV0$S<<&b|jUpRh7_hoi~BM zpo88#q<2D~4Ufxy=6nR`xv*ZYvfokZv^* zjvp{=FynT@)PU)6*Ly?i4CLVbhHSrsT4?*kXWoaNd_);00sT8r>_% zQ53yZcbt0>{$-KD<2J_3X*IyeeAVdVtQVfgtCDErePexEfJJvo4%GSO5FDjWM8q{sOSEwjbKBu4k-(4ryW9!A5+Ig#iOS z)6dI?*Ik%;KX#>WDYpc4sFWg#O~!X_z0iTaSd_xCPf2z8lsWN5o8+Gt96?J!OTh)S zqvY3JK5-RMJGjeR9Vi{xKet@t4FGSLm@K%DiI2M!HyRSc31_$7e!Bx)wMo_}^3=K2 zI|yX+QRM5!DKj%OZ)*UoE(!a#1@{$+R(p&RR(h>mt>O;2@^>+_=!}?{;a<=5{j^2- zW*Me-?w>?70oxasRzYQYJ9#yUq;9PHiMF^nv;$WEhcTFtgrZHKTxexAR6$*QVMoQ( zv``F=4WO*#FD;D#qtZbUwJBC)oT&KQZlklU5Gar6B;w`JtE)lB+aj%3eNIg){`vDT z6KLbkj$nhLlWt6r)MY~n08Hjyx>nC#wQvsQ5xMulIcKB6@qaKHTG!7Hfvi$5eAJKQ_&{p_i)6Cve#6_Ha^#xT*!n|&|BKkAWz%5M*>f7-j*RFB z3Y6?F;I|e^D?Njp+}+$Zn5l5AG6!N(&Oh;N!GYC*YE^Sn(>$hF7#EYnq&OlW(D+bM z0hFu;Z1V?5riX&l6;Ywmz?(g^FrwxF-+`NH%q_vwILvH04ycmZfK1`5YiJz1VgpZd zIfVQrdjUgw4Gz?6{Q_1ufI2$v4Rk{Nkb%iZjBroDLK*4?bU8v3~s&->^r}F z1Inr>P)nFhIQb^|naVfnc^+~l(_b?Fu)DguJA7bZct8qhb8-(~a=g8{5!BVzeq;>t z{==>SO9YkHOLuGw;y?#98<>F#A=XQ@qPb>@kSoA~vFYu2ue0@-4zoB% z-acgYY5IJ<^)$s6bQ&-CS0;aKe)mjWpP8A)UybqbG7c1u&^v~J|aER5b~>- zDGv|N0wA`sh_x;{5&+zgyXxxd@H)Bc5US_0Fros!xx@D|PiPW?w1AeMY7>G3(*j~9 zOd!_!3uLseTf2O9+=(s%Rv&QKReK|KWH@%X+t9 zqqQjp<46Mbyw@Or_kgty)&|#~rsw43)Rbe4WVr}zCq$c>O71%HISW7RB~_8eAA%?b zfMbrwr~!`V7U&Lg=O>9Hp^rBGJVcvFNk@boBuNF^w+!5Is|ZL)o_YG&=&-7Slz~Gs zc67WH`1d}DED15NLX+CrNmezIx{MK9RGZETS%(kr$pIPk0?>5y0YZ2a11G0T)v|3j zlusdb6jJWg{rTSB9y?%Vd-Qlx^M=uo8WSZQPQf2`)Ko-4I7pc%#kFJN1dahh5jB8v z!Mk#H*91(>G>UV@UTVp^tm>~#~#=BTsm%jkBrbVvb%1nttRWB*<|A{J#2CPE4hqHc=ObCYqd=LEB2sL=H(pp*&hLX4V~P-}yJ9bnF-+ zZ?Lc#93^e`0HxH~eH4xP%&`lDczcv2noy6;3X*u-8-n2np@qt9DxrV5{{IgD|3HWN zZ~Pwy1PAl))BimFGXnn^f&Yxa|F1@%$r%j~^ghV@e?s<0EdQ-RplIgeVq{_Ve-~(P z_g_0@WpBaC;%fE(sY>ua1PT7n6$uDC{uhG(jd(tLxQEkA`>%XtZryugKo%#GohCmp zgiDb=eycW9l)=cVCI6eem8_BbYL24z-QH=A-d%DEtTyTTMEgx6+#@*-k@cdTF}V{M zqa6*2A}%6(UM2e*Vf%WWkk_C^Z|Se|JdoK9k~~o z^vEyWHu@__4mFw?b@Dgd=(T&*CvCnxiTt~!WLmue$`{h)(fhquw9v1h{8zO5&Hzw)PSbUjlvVez&U%9{7^uLo9c}yf86+@ySXP0HoGHqc}O{7PXd;}u>&g#58!>$SQj$R;% zR>n~)(V#)1IMhlJ65{4|wKX){k^#gEoVJ+MW{P=HqI*sX7v5fKu_E_GcDC+ZxVu<)zz&$%|E^>$aSt*Rf~$__4D-UO1H zu|u|Fd`gIvn2}Z8-QBj|zTM<%rP#^W@`?4;+pZoR9f`~@E~Y}&8tHSfV}GXRR4;02 zaj#fB5fVkbqSZ#k1d`9L8h|FbrlP57Ic#Qw{h8|;79&~$BdSscARb%*h`2(5jxGui zO>=T_HHz;P6cu1rk91n*sZvu>QK37LxUt3)6f&ISakyy&54#`%j_q=}M>x@3xe zMM$xfq`Rm~$^I|K!%6RE?pUurEG4T z1XP8zQ_PfT+SR@j0?$p&%?p%#DUlt9H!PwV-+xL@-2h19ITJm-2cBrk#Cz}H9vNe zVh#=t%=~)ZUjAh;Ll^fw{y?X{oUWTZ12KdVc^{x1aJ$er6z~FL0IJ}ywzRa=RF{{36jk|}Gh{Xiq@3bFv-%{kXQa}OBvic2l;({%(FMvtpNPW;7M52U zh{T-W%Fa2E=j{|oMib>X7&c->w=QD;-Uaab>n4bV}9qK%V{%q6-$h>emLcu)l!lp1Rm? z(rNmB;%Lo1XzlXiVzZGb+zEmh2XfrOjKcvBl0*n?1W+o;d_NePJa}Q`pE6NcmJWDLJeN9fWWcUO$&H=R9 zgQzP~LT=L1BPuGYj|vBbexkpWR<-U|dv437Ux)L{<1I7DnM%+=^OE0H(NFW zb!m_4+L+b=18$fvIXLg#(M6$tHA4BfKxrlf)NWqflhssJt$RG)Sc!O~;`|VZl3=Po zw*bm!I{f_nZ@9gleLH3WA}_dnb8xk~kg1=@@I;#G$ZPdc@vb`~5D27a@8Cc(!M=m74o?u`=e?y15RRl}p&&tz--h74I5uYoOj)-DvngC^shmGz2 zaD4G@l&Vq7(k3Qn^}(%MFMkuB%#+_5T7+T&@g0GS8#6n$WxdT!;8`r;=12tL+zZ_3 z!N2#dYXVWf+Dq%0>KR_DtE+XIu#iC{PXv5R<@3v`!Hb)48~oTke*w8jJ$x43r4agX z=-&f}4M8j6q+ay9Io{_F+>$CNg%x*Zh)^pZ19+86a#xYUx7;SA3}=EMnrVQ>IkPvV?NL#nx#Pw9OaH&RzoTJ{^977R}l(6BWT$&VBI)m-8N(% z=cB|a(H_i;>)34v3-t2xa=iUU=R;dq7(AIozdqu2Sf5r(USQw$_BH}OlV&aNLR5Pf zScw=E&$_^=7X~uaM5F7FzM5=^02I1|mIQD;s{+-McFhcJC#}02RfA!&$ zTo>WL+cY34a+pA7nHBn7(|liz$6>>k-{W%YZH7ya(1vF7ioF;ZcA>SlPW5TwkohDQbzf`^6ZtI4X&|-Uy{1B{zdK=8`&;n%q@b2mk$wqKG10q z99iVBko7AR%jZ(!ZmzK{cBXJ_Jt_i6PbW1e7C~X;CU$}6OM=*;5A;!w7rdK3bJ1*8 z{`|aLHmH_B6=V!(VV@e*t^*Elt@j9iI*hK%zuO(IJw65dO zr54FHhnGD2!ilWY<_tvn#K149)vyMsP7T!DZnuf%GefTVEQU&E#o*=UCW8BE>sLFW z=1T0tmlEFf(04@hdt3F`dRf8^G-{rS21wlynN2<%#_f`*D;4njA>!(;^KPwtlN#!Wd&F3XX)5R#gwbw-7y=`VO?^4JlPQd_pF z7pTN>b?!o-h2L3A>h3k+Z?{i&9`G*`V6B!7M` z$0WaONxZ#H#F%_L=lr$V}ko51x=1S`&@KtBb z=_@_b+O09V`I{qWj@Asm0UIZ(?ZF&*3sk_Y<;y90YJd2p&u#(%m}8bXhD|Oc!x=)N zy7#m?Fv}$B?QgPx=)5%394)cC;ZDX4O*5?VKpx<|R?eWnK_g7m5w@GR|M(WfX9UOzTb21IJs6yvSzKfx)Lg(^0r{tJO+sm}Oi`lF!VbOLzF zJ&2@HuIOtIBWsB097C@77=>HK#x-oUuOo4_XI^gp;`=-s(xoteZ$lkHm_`z~7-4(~ zR56So&sWP0NjXZqoO3lWiW#;e5 z0^1&E5wq`)i7!{Ll$^H9S5L-A`x;tfUbsmJkDBg}|!B?nT3XlBC zExAVHL<>ItgreJ}Vna+QR4M0gw6TMaOz%;OQlI}io;$KRAJOZ95jUM#_Q-fEz4JH^ zcS<~|pyw6;_`FPis{n>GGj%BCWuh-<9l5h06aQu_CG=rwb2&LPkFWD6V zZfFmF6RCRZYeEeL=o%OBYGl%jg0=6Jy3BZ?%dGI&_OLJAkLdA5zaMA*Qv88n z*c0K5GEax_3y$6TWsZgq+-iBuP6pC6mzl`gvN2q)*jJ3}Hw}wsqDaq69@$!%yRR;I zGb*gzAHyF?>AK08{C#%L*nX;XWlw(QTL-7@RLUXA%J8qIGL&#N-#dWUKIz4;!@uRuOe)*=(vY}W0A}k)f%mKYEsYH z9e<(e!l$BJTYK?*TfU`H$KPZ^8YG^)Y-*0x26~R!qF?%y%m&A96)n9B%M{$Mkc*{X zv276t7eSIlPC^7in*hmHsN*<6S3iwwUgG#wr*p45&i<@2YxkCKy_i21Z|aD`>s$}_ z>CH*&mGZ~zUAiDNM1jRX4PXX|_S3;~q@U(TAU1lEa6@jKR+r~=pkgiw%lreQsD{J~?|Ii z)o)Zm)`S5OU?Ft(3Hw{21mxeBSG$#mZxB_1zrMj5$GEpRaHKlsyfRjh5kJQ;f^TRb z_Ojy%TZ@u#&0?rW3iph#y{wUlUVil!J}q}Fj2>kQW=s>0y*wk$#f;YX=zNF2PP-f) zJSi>#B{3_3Bviia`%L{O^7Kr4^j{Ib$|8A!*bc;?FQk{X&AmqW2J{)Er1B)1&hRhW(qw@VMG;vd(2yr<1HJL`=f4%(p3PqOk;oki!DBF0hQ(w_b86m(A;G`wiS6$Ts)kz zqNl3T5$~VJ>552gp&xol-YE>5*v|Hl5ugRNaJIS#O5-cxfQV9K(HIOvgld>P=ag1r zsC^vcs@jO2?K1QpIg{>Ma^6;F{n`aP5_d{cvrB@Z60%a%zE`htAng6R9-kk|#~>ZI z(wP%LTW9b~PPkT~|)h!EK^jOd3 zaBskXGs%|pgcIL0(}{l7r}0Tp%gC-PlEU~Aa{Iw&IenNQ+B8uM)YEi)cM-b zKtWIgE*q<--y_qRN(hDKpl+i}qp@aoOmQz8BydCC3lc9g>o^ndLC_%ASI6gj-9u&F1q0^c0RE; zzAI`UHA(%z6okU|petZUgvHZRBv!T!QF5GNC~A!UY@(A0{ESJb-9 z{;I(>`slM~TbvT1e;)#O+L_aHy~5DxJT)diIYcUtR3*8EoLBEEM1va=lr}daG=-oQ ztHds)i{&(VYp_nIKZAY4Vv zZ}J+Qr!tRukix5}ypTpDlo>*KenvzPYc1^A(Rj4ibl z7U22UdjwYGCO~T(J&64q<9*evuq*8{wO~f7L&`0|_KMOw7}g&F%w#D|8oBEYr!Ojs zXwE78Oe&hJP>BqSdqh|cYgC-rLKrgb>D|m*{)ag#Lk{6-COcRA{W;^}wb8z$ zot72QO}|Z+g50tfPIp{hEZC6n785q5_tro;YxVu%)T!!;oIrn=tzJAN{?2L|5bg~! z!&sqEioaF;JO7OZPBgqbY1bR(vf>ucD)d;aQOW5$tB3ohjx29En5UOF)pB*=CcP*K zpV7(a0RvyD=T+m9)SL9#=n2g))nW7~jX;1^)b)0O6li!Pc zX$=O>Jk#ezN>inud=;t-mLSred$NX5M?%=Y3G|VlU7Gm5NP^N$ak$sz(L&Vr8}dk5 z#XL5K#t!eB3xj$so>aiQtWxtW{LMdU=J1sH-^3s%P`^FjNQNhxF1D)_KUAHqx%r{2 zXuA(~~cRiXL4J`j{$_@Eh|BwYr&?WLWMipIgJ5!;aZz%z(l+LzArdVMOvgv^xb zn4+SS_r!g}m+$k%q|K3P3Gfgx0Ew0&@EySt&v$&O#ognw`n8i8<@?ns5dp z$6tr5!!U9stGF9`)LWZv5S2UvJ@GkI5iI-1vtLU}8Eq~gk{lOr`0Kn0;&rwxt=vh| zSvbv)+##-<=T&^RA6S!hGf8%5hW?1B?GJ+?!%6T=qig-g6*G{QJXfXhrUPU~;X!s2 z7Dq|>d#@wJMueU@Kyn9nQ0s{Vq`qFe<=QJLp!^UDWQT|gCm-fnBx)N`*jo6|2?lhL z2HL>!xw&NCu{Gl(+aILgO`~NBh~kfz^*+`lJrORe<&klxjIllD&Y#oB#@a(huw?gI1N(5+t9JeAXZF^{h zUB66%d!1O@pEW*I4iyPY5T`#`&|>>w!fdrRbZB)6G57HXx%lU-V2tHK91+X2kb96W zcM`j8#(?g*@7rp;(M&sU<)RD0_7ffVc6rhnf1p58wQw6dCIo+hIk;oHS=8=Cxk}Nc zTqfu5g%QZXc7#%92qwnPRkrGN`_)HyY;?T~t{ML_xii4E69LQo_BZZIsxQO>QN_uj z0-W$AMlNxGwfD9#NnqdZp~staI5gfLpSanfUO$O_tFP_0^}0_zW*tsnRHq_XfW>kU z&c&q;?6B00bS6I~*`R|O!%9I&{?Qws1EfeF^GEMJK1RTb%_m9Z&_bH*qFmO+XM8f> zjShU=jZWMym|ML+^aue0X0M$cX=9%o*DD=R!wk?W2`E0MV^_Y&mst84DB8Wtft+R& zWQ@@)Jl&CXTpp%+D-&#)`8E;uC1P_z)*tSss|u=wJjb8bBR!mtJ4$Kz7f$qA6v^A5 zLcdK_QpY?}pG1OD5Su=5!?5OS;-D|SU-g6caTha-_WD#POw;D|So2#e;0L(d1`sY zAxC>m`W@DmW?R>u<6XNAkhxbK=&itrnUW#t&C$mT z&{j1kvx(J)NurTo&QR6GbIej0EXN(e&;tX~=tR%A>2rL~qvYj5fs9CP05-lF4nz-8 z>uGrNCvg`V&n5Cl_4|9}pwT`3xo9l6 zo%Fu@fxdOv>HLyKccvLr`BTc#0^^Ea5~zY*+X_m^2I0u}LGc|XB`y&>*CAwIeyUqP zP3WFDdkhnP^Z0N${Z|Qt9B8`D(f4WEbN6R`45wsZrYhfFSNJ=yC22tVvDxQ$6%)DR zjcgRKDGpkp-Wz@-*qOsd7YFQr1UNvATU~>Y(O`|8+zaL~3~29p56CS<(eXCt!8}Vm zR8P&W-#~+!eEnml5$P53w@j(y76lOV&DGPLfXfMUY3*urLHS0-B3FeSjLokslc8<# zP)0}bweyvO4!gp1k&-L?^-Oo~d}8z}KP(43{n#sJJAxdP8aM(=?QT!p?pp}DlulnuV;@Q5?2WBnkA@E^$ji{CJidbq{Vjx0D;`T1HFf5t&amT#B4WZQ)W z-Q1jcc6ft8D0BbtUb}%34}Z=#xKk{$F{d9n5qggfAI~YA&jg$@k+MYFzE*G?^Cl6F zyDT)vYW&Q2dMI~U+wHAbr*>(LLy^WPLCX$!30DG#q&O|LSRse;KAu4FIItSZE8+9p zc190tFb{lZ{@`Q&b(Xp4EdLIR=jg`BQVKws=C01x{KRwUtT-hMWYJ(1wmkJMZSMt@U{2FB z`DJEJy06-K{7rsdX7c}d#1#`IaJZj68#yjkMWO-K*y_e<@UXO4)B3tw6MSk@EU2y_ zAm7E9Bu>AChCiER_*q5(QX<^c<76d)USJz+%q%4kE4G)tkBjcxX?c9bRg>$oW?=pk zw)nai%Ile5bf~MyZ7G5nTGw z`fj`x|4kZ#N|Bq-@SqX59)`qSXG0Dnk|P71HuL@X=?^0}ip;<--MOF6ca8oAea$&L ziY_cGog`38WpkCY0c88sXrhfGuM6lQ7$?tuD$9`f$NmGC(X@f(;Z7 zF9d#&%%Y&SRBdpaviFu~i6J}Z$XY8HdX%H0OA4}sb)%=MVQmURez4AC9-&zI<^D}T zY`Wdx)oE49XbbB>zR21jzq;pe6R-pmvOazKdUE{o|Fm~qK~X4OdWJz6GF(K$fPmy6 zGJp=5Axn}hNE#7@8DPi~ham^actMinAQ?oEoGuwea+aXvIOHL-?C$@t54+D>wY6Pc z-PP6o&~;ALsdKu%{yyD7BD#;PMy2oPl*Sdpfd1b5I;6(tu{sSeauO4)(kcR#ST~)I zS!kYH%9}yQldK}>UHhBIfNbo~v(`@%(+X3ysR~`laE^S~<#C*QQ^daAxUQaY4ND@1 z!oQ+vXS3BaxB2j~Y~nSs&fd{i`DC=}}5&a{}*d`OQxyCvJTQ z#jQn4q<4AvjHXKmr*zuG#BBOB`PkbC>haMhCuZg*f=!jRtA0cHLlgYXPIoIS8OFAV zXjC0rO((HadD8qui%dLk*K@5>hYO@QUtK5d?G{x0XoZx4eDk@iZ?@`J=2E^#49f%d z{L7rfs@F8~{&GthMJ6LF$&+=1=x+lP%hfsSBLc>g znVU0iq=hqj>htBnn5slex9-!o_fS#sKk8wIV`t1sixXZaT$-x{YPs5B*wucBYZnC| zj+CvlpoeaC2)iSG{7?Cwo=96vUMq4FXMSv9xSXB)N$g}s1P~_-7|5Fxv$o|Xo?gsI zS8G70>na4_{Rr?PW7D(@N=A!{wO#A&`hbmW?=i}8J0)koe#p1wmr9mf9b5$*XKeZl zagE(PW^ZlSe0JPX6RG>`qvOXSYbn4&YDtE#@rt@3K_BHSle54uvM0O5y?)j+oiX7q zFpU%KMr^TcPLnxP$isAkvsvV2hTH)M8Ypc-XA_y?EXq!9f}(2vt4E>79lN?B@>~EO z!O$o=j_89a=y_|;UQA0yhB4J@k_R; zsf_l%o&CT*Q9)e8`AaApBr*H2rt|L?nq&XOVeNcta#TtJwXgSN8c@B?+t~1ZdPj$U zOrC*u!dKFoU*YUeUYVbCdMJ(fv0_wwc}8)4N<(N~y#C?HiW6m~Dm#GSOZ zhQ=pI8F7oB#!L@UFgWmHq|+Pn`(2isa>RJRAu>0^a&)EVf>G;H*q9@(6FSU$xuYSR zwqyik53@|reok72W5f4HZL5HuH2kiTy6rWfKBc%C&|d&l{UI-6>(oB)xudAAsOhQP zO5`wPFcIQ3K2e_|I3UwMK8sAc^4>l#F|-?yVXVc`?YG4+V01>czBr;i;$c%VA0cx> zCh(mup19sPKW3nqV6@2u&5hqXg&-G7w1P5cRTuYzXJTY9%^i3oh2R=3dB53S2Y zE9T&N$+7+^*h;P5ai{C8m*e`TY+YFi$YLos5_+KoO5Z7G$ikltHk-g4TWmItp?Yx9 zdJPhGY*S)zJC%gsUrj}l9KUnqO}?-3C&+r}KYht$>*K|KkIcWn~U9!J=LFo-O4<_M;e-^ZoyHrVhmNzr|7#~ah<8`YDA8Iz}*yoQBiLs zKLc9$GeggEtlR}2fB@Rw_``d(c+Bv7fptt!ITelO5d=!_A4pZ2BA-~S7hm{RlmL}` zy$$|Cu`SZQuhyMTGT0CgHGPpQsM=jkdi5Jp;vK`_)8AOzp*1vL)CK~{u7R8x0d3#! z@X3p)lKNU}&t;3w!ogCjpF?)!j*2%w#PPNUO>g~?T$L>ua#7GX;FV<3TA z+$H@rA0Q77YmdFyM$zd40y&`F$T#US{HxlJx3!ShcHC95(dslz`On0CoP zYv?r0ePT~}O><+Y{L5tXyy1_<)VVJ;T6OkZpm!R%f`cpSpC=x{?lc<^%wu6%)yCGl zKLm`&l11vPAM=uH_j{n9UhnjuvwZfL#KWE_d5t@KDe_W}btg`tfJR~@0Lb1XS>bZj z#V||!@@G@@^2j*<5ysfoh0t6gPdfb`ld(H_UgR0^$Qb{g*YWvJyO*tRJA8POPSYh? z=8%Q~j^_LhcX4QXL!B~1N3vj3`1exq8@n)IeY;L^gzff& zz*#vFiVAraKdZioh3%L+r@?I=mN7IR_6vw|$9O+?su~5n7QYw`vawQunJNqNTL$v% zZ!yI=6o!ui#bYiDAUNC@nRXHLyWGNE!zkBIZJvFVPo=$SS#x=qB(+A>MiAzxA=pJz zyPNPCJESFmOfn_hHrKMg4_wse+4=g9r~BITYGoR0h3$p>2rYX(M%SkCIlVk01Y*Qj z;oh)EWOZ6~V_U5GVmBarneB@PvP{-(1yw5J`Vg8*tPd+livLV1=4HgJCJ=@El>z`nUnOnoeX~q`$)050 zksU;=?`%+T`1tq>74kiUxkNR)+0z01*Z`gS)oOKeP&}RdN_ghp|eQ{6sBkTcO=RQ7UOI*8sOKJMMzSI49%T$M z-;LeP%rtis&{bDO9#H<1Y4dJD=qj(O558*{uvIt!zzX;muG`n^Gi_JREnXkrEaGZo z6DIdSjw&!bXX!o{ly9WYYNU>%8+n|Ryn3C{jTCJy97Pl|H97|)m>1mSaX*_aO zf3fmKkVb@qc?crxzqS2Jk;J=CT;`S(mt4NW?@E#hH7(-y85|Z{3??S7rPs&Bzq~X6 z-Dcioa?Z{(PZL**;8b@yzk7&Z-$grjO4LwSJo!rX`YHV^O?&KViY^m(dZg}y;XGVo zKZWhAURwpB)2!=6+`pg6=?VIHU-Ha3OBq;x%phH^sLIOi`|54DoKg_&6^BsnQc_~Q zlZNG9sYOSD=({SGA`fJ-dbO?v;+?ylF&Iw4##I7_vlz;8?ZYMZ4X90CYlU~sN#9%&O}$@m zotdrKodzYp@d(HyIga;tT|EB4;y5UV=oOYA&XQ;&GI2r>i~%Y*%$PwNNh?H*L8a^0 z?jy@UN{7882ie~t`C3@8Cw-nqrDR(L&njRV@g*knc}w})C4(~etnr&p46SMYINose za`h^bn-)Ju1eU);C17i{&qhX`3i{CkRJ_rZ>PW*ok)efTuPc1fvdx}>p=%1Qn?Zc< zQ?vYjLslAUvGq4mC}nWBi;pztf$D1DVRzi)U>*{SyW~fN)um|+Wf+jju}cP+uW_6+ zA4_wc8khLFKDPPBKknsjniWW*nE21OTG7jdt7P|JD$b?yE;BPjKkL4&no5y2!3hH1 z>(9)OA^RFP;z>~``(#-Q9BwDQF6D7Y$F#1XObsj>nLDw)&oM z!wLI19`LP5?D&7TA3R4uV53jmPX*0Qd7Ms4c3l#2_B}`&M4SE*+X;ogxx|}))*&K4 zDd~06%HjI2%c|OtC9f_tCn`h%)a^%2`ZBH2u#Wrh+Tim0Mw)QN5?Injx!6*sIt#r1 zp|-|Xy|93E-t%|GX4ooM6JuMy*4t?onANZC@WQ@?PB%tGOgqI<*$v4O4K=;xEBw#u zn~8d-l%-@S!8$>oawZsRgvlH>#?@tBUer-Xr>BR6RGglA^WX#B`F5isJEL)AfXl(U z_}o~gNldMR+l$vq#LA4hYG!i4)KFr5eJyAZ>e#^YfYbtVo7iu&A2LzS77qCNKC2fd z6XN+h<;mPn3CqoX{BQNX3uBtHk5h#Pu~JzT zWuo0@Di%{jmW$(Cqzi(3Fy(Ck;$1icX7b?rBQ%;Era_NyH10WfdHYU*k)KGLtPPy4 z?Z~J*`l#l~pQb3*49Z+n)5URI-!e9zjiY0u_oyfO^W?(JWt=FX2MIYL(d&R#i$y5= zOC+i;mYP}rD^MY)n4yP3eSMu@*HQ`~onAr)pNP%7;kA>Mc|d*o=+CS=gjaxA3LmS< zY=c3~Y(>9#PI###$#?#0sdZu6=r&|TVb4Y}OrJg8;PnMSG0?l_6U?oQVX0{4t#S=W zYg{x(BT_MP>&!2tMdTlI8pf@d-iI^Nq_t>%&WC$MyS>Sd_pp3R=GC}f6XIk8RFr5R zQzXB+0gD>%@@9E99GW5!T>!+PjEG7l zpVzu|cVe~k!W zcBTLN`Xb_w?-f$^@6u~ESI}=e?jhQpCRj|j8O4MHg{r&bb!&i5U6@#D4fxMTzJ>yZnJ=Se8q2zy(>eYkL~t5TIMHU=!74}=qJJ*rr*|7X=sa28 z8(4S0m2j6e*Kzv<-NPTQ%h_9*t$h!pSa4+Nd=tNA&0zqNQHo&zxEu4^QaJR@_t8TH zuO2)^R9OL(o#JO%)$KM(!O?QYL8Ah8!u}T-<1tkI!=x=eCmQh)^I@(00fMrK$)V&r zq5$O|_Nbc{WK>ZZGRhI^Z~yO-SguajCMZtzBl6M>(~YSYwD6*!kbVK9iGvmVr+`_6bd zMa!W_uv6jVu`_koRpFxB9Ye~L!`yXAbHd&apT>1y#AJ9+CI3HXrc=l|5`M0;nC~x@+6=RxX85R?wwe}nS&J`2wHhTz6xA| z=b25s+-Mv{u6ayQZpzyw>4pEpk2_?iXccZHbH_jZ^h<4M@UUm{QT-G-u62GpYDPDF z;j1+_?UE`)hMY@lR9$BMS8C^GgP^U}1=+7$nSjs_G_0X9{@WZPYWFiqF7%8jR}AIt z8(98yNV2NU>Ed}61H%kL09VhLBEVFVQYb?a%fd5pe;R7mHw*RxApO6XIS;nRQe^xV zcxMVOB=P525ZNYlBI3o%l48sE;*SaFHVx`ij1#AMIf(^ItL$WinaL41j9WI32#U+p z-w#G~`mlY!qFo@W1)1EC+(Pp{hXDxgQ^jRw_)$D|!S--%KK~vmGWYUmFKozcM1z%| zQ?;c}?&jcyP;K^}i=fzKRKLaM0(tUxYoDbah>U=xz=>3&_>69Jfp+9`TguGHwWntO zshc8vlVzz!PmpItcY=x}3+DozshM*2*NtpnE&N)ds>$0pH@e018*4nYv&#q>M-`I* zo&cbOwR}L$2!~aUWwXfc)X~}m*}(N{n;~z4*6S`vuV;XXP0Z`4ulgTZ(w$TXgk}zC zhL2AoM}*dMX$L4dK9tifH9HFqHx@*w{US0;xYGIwTq9`Wksajpz0Q3G=_ICUU6THg zVCl!i_i7tDXY2!IWw$5vB=h{!#)iE&79QWu4CL*jExoq2J_7ig(mnZ-{sHPCT{#dy z1h7rLhu?pfHL^~i-)FCzxRT2yE;7KBNu5l(sQX;#vDeSrj|~WP#|DZ1Z+uUUsr7HI zYy7gzD_GO-c&fIl3fS$Xi|A>>v1f%S{F&XR#%>%vq}K|%VpyBywe~}Q*M)6(jL2<8 z{1IX@tj0v$sHL6s^^9JRm5_%EHBA^Sw?0N2@i%r7?j{h7pS1y0NWLTgRz-Asz&Fg$ orkON9zOX4O|7_H;QRTg$sFvUG?w5s^6uy)0?OFnNWdZZQ0i-S#H2?qr diff --git a/tests/assets/databases/BackupAndRestore/launcher_3_by_3.db b/tests/assets/databases/BackupAndRestore/launcher_3_by_3.db deleted file mode 100644 index 6d8cd735b7487f1b1d56692ff6a31f126c95568e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 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 diff --git a/tests/assets/databases/BackupAndRestore/launcher_4_by_4.db b/tests/assets/databases/BackupAndRestore/launcher_4_by_4.db deleted file mode 100644 index 00061dddf441441058a6111cc0f661a161a0f9d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139264 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 G001DK9jx>K diff --git a/tests/assets/databases/BackupAndRestore/launcher_4_by_5.db b/tests/assets/databases/BackupAndRestore/launcher_4_by_5.db deleted file mode 100644 index e2e65aaf07487b7a465bf4f4385b89a4f5c6a588..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126976 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 Date: Thu, 29 Feb 2024 11:55:59 -0800 Subject: [PATCH 12/15] Using fractions in MultiValueUpdateListener instead of absolute durations This ensures that any global animation scale applies properly Bug: 327645429 Flag: NONE Test: Manual Change-Id: I12205429dca5a87208fa9964b3307fb718af4fd0 (cherry picked from commit f584b32811db9bff933483071b0197508249e969) --- .../launcher3/QuickstepTransitionManager.java | 92 +++--- .../taskbar/TaskbarDragController.java | 13 +- .../com/android/quickstep/TaskViewUtils.java | 15 +- .../com/android/quickstep/util/AnimUtils.java | 13 + .../quickstep/util/AppCloseConfig.java | 57 ---- .../util/MultiValueUpdateListener.java | 16 +- .../util/SplitAnimationController.kt | 305 +++++++++++------- .../quickstep/views/AllAppsEduView.java | 13 +- .../quickstep/views/FloatingTaskView.java | 12 +- 9 files changed, 275 insertions(+), 261 deletions(-) delete mode 100644 quickstep/src/com/android/quickstep/util/AppCloseConfig.java diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java index 75b8796c9e..66e20d75a0 100644 --- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java +++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java @@ -64,6 +64,7 @@ import static com.android.launcher3.views.FloatingIconView.SHAPE_PROGRESS_DURATI import static com.android.launcher3.views.FloatingIconView.getFloatingIconView; import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS; import static com.android.quickstep.TaskViewUtils.findTaskViewToLaunch; +import static com.android.quickstep.util.AnimUtils.clampToDuration; import static com.android.quickstep.util.AnimUtils.completeRunnableListCallback; import static com.android.systemui.shared.system.QuickStepContract.getWindowCornerRadius; import static com.android.systemui.shared.system.QuickStepContract.supportsRoundedCornersOnWindows; @@ -748,34 +749,35 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener final float finalShadowRadius = appTargetsAreTranslucent ? 0 : mMaxShadowRadius; MultiValueUpdateListener listener = new MultiValueUpdateListener() { - FloatProp mDx = new FloatProp(0, prop.dX, 0, APP_LAUNCH_DURATION, - mOpeningXInterpolator); - FloatProp mDy = new FloatProp(0, prop.dY, 0, APP_LAUNCH_DURATION, - mOpeningInterpolator); + FloatProp mDx = new FloatProp(0, prop.dX, mOpeningXInterpolator); + FloatProp mDy = new FloatProp(0, prop.dY, mOpeningInterpolator); FloatProp mIconScaleToFitScreen = new FloatProp(prop.initialAppIconScale, - prop.finalAppIconScale, 0, APP_LAUNCH_DURATION, mOpeningInterpolator); + prop.finalAppIconScale, mOpeningInterpolator); FloatProp mIconAlpha = new FloatProp(prop.iconAlphaStart, 0f, - APP_LAUNCH_ALPHA_START_DELAY, APP_LAUNCH_ALPHA_DURATION, LINEAR); + clampToDuration(LINEAR, APP_LAUNCH_ALPHA_START_DELAY, APP_LAUNCH_ALPHA_DURATION, + APP_LAUNCH_DURATION)); - FloatProp mWindowRadius = new FloatProp(initialWindowRadius, finalWindowRadius, 0, - APP_LAUNCH_DURATION, mOpeningInterpolator); - FloatProp mShadowRadius = new FloatProp(0, finalShadowRadius, 0, - APP_LAUNCH_DURATION, mOpeningInterpolator); + FloatProp mWindowRadius = new FloatProp(initialWindowRadius, finalWindowRadius, + mOpeningInterpolator); + FloatProp mShadowRadius = new FloatProp(0, finalShadowRadius, + mOpeningInterpolator); FloatProp mCropRectCenterX = new FloatProp(prop.cropCenterXStart, prop.cropCenterXEnd, - 0, APP_LAUNCH_DURATION, mOpeningInterpolator); + mOpeningInterpolator); FloatProp mCropRectCenterY = new FloatProp(prop.cropCenterYStart, prop.cropCenterYEnd, - 0, APP_LAUNCH_DURATION, mOpeningInterpolator); - FloatProp mCropRectWidth = new FloatProp(prop.cropWidthStart, prop.cropWidthEnd, 0, - APP_LAUNCH_DURATION, mOpeningInterpolator); - FloatProp mCropRectHeight = new FloatProp(prop.cropHeightStart, prop.cropHeightEnd, 0, - APP_LAUNCH_DURATION, mOpeningInterpolator); + mOpeningInterpolator); + FloatProp mCropRectWidth = new FloatProp(prop.cropWidthStart, prop.cropWidthEnd, + mOpeningInterpolator); + FloatProp mCropRectHeight = new FloatProp(prop.cropHeightStart, prop.cropHeightEnd, + mOpeningInterpolator); - FloatProp mNavFadeOut = new FloatProp(1f, 0f, 0, ANIMATION_NAV_FADE_OUT_DURATION, - NAV_FADE_OUT_INTERPOLATOR); - FloatProp mNavFadeIn = new FloatProp(0f, 1f, ANIMATION_DELAY_NAV_FADE_IN, - ANIMATION_NAV_FADE_IN_DURATION, NAV_FADE_IN_INTERPOLATOR); + FloatProp mNavFadeOut = new FloatProp(1f, 0f, clampToDuration( + NAV_FADE_OUT_INTERPOLATOR, 0, ANIMATION_NAV_FADE_OUT_DURATION, + APP_LAUNCH_DURATION)); + FloatProp mNavFadeIn = new FloatProp(0f, 1f, clampToDuration( + NAV_FADE_IN_INTERPOLATOR, ANIMATION_DELAY_NAV_FADE_IN, + ANIMATION_NAV_FADE_IN_DURATION, APP_LAUNCH_DURATION)); @Override public void onUpdate(float percent, boolean initOnly) { @@ -968,37 +970,36 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener appAnimator.addUpdateListener(new MultiValueUpdateListener() { float mAppWindowScale = 1; - final FloatProp mWidgetForegroundAlpha = new FloatProp(1 /* start */, - 0 /* end */, 0 /* delay */, - WIDGET_CROSSFADE_DURATION_MILLIS / 2 /* duration */, LINEAR); - final FloatProp mWidgetFallbackBackgroundAlpha = new FloatProp(0 /* start */, - 1 /* end */, 0 /* delay */, 75 /* duration */, LINEAR); - final FloatProp mPreviewAlpha = new FloatProp(0 /* start */, 1 /* end */, + final FloatProp mWidgetForegroundAlpha = new FloatProp(1, 0, clampToDuration( + LINEAR, 0, WIDGET_CROSSFADE_DURATION_MILLIS / 2, APP_LAUNCH_DURATION)); + + final FloatProp mWidgetFallbackBackgroundAlpha = new FloatProp(0, 1, + clampToDuration(LINEAR, 0, 75, APP_LAUNCH_DURATION)); + final FloatProp mPreviewAlpha = new FloatProp(0, 1, clampToDuration( + LINEAR, WIDGET_CROSSFADE_DURATION_MILLIS / 2 /* delay */, - WIDGET_CROSSFADE_DURATION_MILLIS / 2 /* duration */, LINEAR); + WIDGET_CROSSFADE_DURATION_MILLIS / 2 /* duration */, + APP_LAUNCH_DURATION)); final FloatProp mWindowRadius = new FloatProp(initialWindowRadius, finalWindowRadius, - 0 /* start */, APP_LAUNCH_DURATION, mOpeningInterpolator); - final FloatProp mCornerRadiusProgress = new FloatProp(0, 1, 0, APP_LAUNCH_DURATION, mOpeningInterpolator); + final FloatProp mCornerRadiusProgress = new FloatProp(0, 1, mOpeningInterpolator); // Window & widget background positioning bounds final FloatProp mDx = new FloatProp(widgetBackgroundBounds.centerX(), - windowTargetBounds.centerX(), 0 /* delay */, APP_LAUNCH_DURATION, - mOpeningXInterpolator); + windowTargetBounds.centerX(), mOpeningXInterpolator); final FloatProp mDy = new FloatProp(widgetBackgroundBounds.centerY(), - windowTargetBounds.centerY(), 0 /* delay */, APP_LAUNCH_DURATION, - mOpeningInterpolator); + windowTargetBounds.centerY(), mOpeningInterpolator); final FloatProp mWidth = new FloatProp(widgetBackgroundBounds.width(), - windowTargetBounds.width(), 0 /* delay */, APP_LAUNCH_DURATION, - mOpeningInterpolator); + windowTargetBounds.width(), mOpeningInterpolator); final FloatProp mHeight = new FloatProp(widgetBackgroundBounds.height(), - windowTargetBounds.height(), 0 /* delay */, APP_LAUNCH_DURATION, - mOpeningInterpolator); + windowTargetBounds.height(), mOpeningInterpolator); - final FloatProp mNavFadeOut = new FloatProp(1f, 0f, 0, ANIMATION_NAV_FADE_OUT_DURATION, - NAV_FADE_OUT_INTERPOLATOR); - final FloatProp mNavFadeIn = new FloatProp(0f, 1f, ANIMATION_DELAY_NAV_FADE_IN, - ANIMATION_NAV_FADE_IN_DURATION, NAV_FADE_IN_INTERPOLATOR); + final FloatProp mNavFadeOut = new FloatProp(1f, 0f, clampToDuration( + NAV_FADE_OUT_INTERPOLATOR, 0, ANIMATION_NAV_FADE_OUT_DURATION, + APP_LAUNCH_DURATION)); + final FloatProp mNavFadeIn = new FloatProp(0f, 1f, clampToDuration( + NAV_FADE_IN_INTERPOLATOR, ANIMATION_DELAY_NAV_FADE_IN, + ANIMATION_NAV_FADE_IN_DURATION, APP_LAUNCH_DURATION)); @Override public void onUpdate(float percent, boolean initOnly) { @@ -1508,11 +1509,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener float startShadowRadius = areAllTargetsTranslucent(appTargets) ? 0 : mMaxShadowRadius; closingAnimator.setDuration(duration); closingAnimator.addUpdateListener(new MultiValueUpdateListener() { - FloatProp mDy = new FloatProp(0, mClosingWindowTransY, 0, duration, DECELERATE_1_7); - FloatProp mScale = new FloatProp(1f, 1f, 0, duration, DECELERATE_1_7); - FloatProp mAlpha = new FloatProp(1f, 0f, 25, 125, LINEAR); - FloatProp mShadowRadius = new FloatProp(startShadowRadius, 0, 0, duration, - DECELERATE_1_7); + FloatProp mDy = new FloatProp(0, mClosingWindowTransY, DECELERATE_1_7); + FloatProp mScale = new FloatProp(1f, 1f, DECELERATE_1_7); + FloatProp mAlpha = new FloatProp(1f, 0f, clampToDuration(LINEAR, 25, 125, duration)); + FloatProp mShadowRadius = new FloatProp(startShadowRadius, 0, DECELERATE_1_7); @Override public void onUpdate(float percent, boolean initOnly) { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java index faa67be895..189b6872d2 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java @@ -686,15 +686,10 @@ public class TaskbarDragController extends DragController im float toScale = iconSize / mDragIconSize; float toAlpha = (target == originalView) ? 1f : 0f; MultiValueUpdateListener listener = new MultiValueUpdateListener() { - final FloatProp mDx = new FloatProp(fromX, toPosition[0], 0, - ANIM_DURATION_RETURN_ICON_TO_TASKBAR, Interpolators.FAST_OUT_SLOW_IN); - final FloatProp mDy = new FloatProp(fromY, toPosition[1], 0, - ANIM_DURATION_RETURN_ICON_TO_TASKBAR, - FAST_OUT_SLOW_IN); - final FloatProp mScale = new FloatProp(1f, toScale, 0, - ANIM_DURATION_RETURN_ICON_TO_TASKBAR, FAST_OUT_SLOW_IN); - final FloatProp mAlpha = new FloatProp(1f, toAlpha, 0, - ANIM_DURATION_RETURN_ICON_TO_TASKBAR, Interpolators.ACCELERATE_2); + final FloatProp mDx = new FloatProp(fromX, toPosition[0], FAST_OUT_SLOW_IN); + final FloatProp mDy = new FloatProp(fromY, toPosition[1], FAST_OUT_SLOW_IN); + final FloatProp mScale = new FloatProp(1f, toScale, FAST_OUT_SLOW_IN); + final FloatProp mAlpha = new FloatProp(1f, toAlpha, Interpolators.ACCELERATE_2); @Override public void onUpdate(float percent, boolean initOnly) { animListener.updateDragShadow(mDx.value, mDy.value, mScale.value, mAlpha.value); diff --git a/quickstep/src/com/android/quickstep/TaskViewUtils.java b/quickstep/src/com/android/quickstep/TaskViewUtils.java index e30ea7a26f..8d4255c416 100644 --- a/quickstep/src/com/android/quickstep/TaskViewUtils.java +++ b/quickstep/src/com/android/quickstep/TaskViewUtils.java @@ -37,6 +37,7 @@ import static com.android.launcher3.QuickstepTransitionManager.SPLIT_DIVIDER_ANI import static com.android.launcher3.QuickstepTransitionManager.SPLIT_LAUNCH_DURATION; import static com.android.launcher3.Utilities.getDescendantCoordRelativeToAncestor; import static com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE; +import static com.android.quickstep.util.AnimUtils.clampToDuration; import static com.android.quickstep.views.DesktopTaskView.isDesktopModeSupported; import android.animation.Animator; @@ -267,10 +268,16 @@ public final class TaskViewUtils { if (navBarTarget != null) { final Rect cropRect = new Rect(); out.addOnFrameListener(new MultiValueUpdateListener() { - FloatProp mNavFadeOut = new FloatProp(1f, 0f, 0, - ANIMATION_NAV_FADE_OUT_DURATION, NAV_FADE_OUT_INTERPOLATOR); - FloatProp mNavFadeIn = new FloatProp(0f, 1f, ANIMATION_DELAY_NAV_FADE_IN, - ANIMATION_NAV_FADE_IN_DURATION, NAV_FADE_IN_INTERPOLATOR); + FloatProp mNavFadeOut = new FloatProp(1f, 0f, clampToDuration( + NAV_FADE_OUT_INTERPOLATOR, + 0, + ANIMATION_NAV_FADE_OUT_DURATION, + out.getDuration())); + FloatProp mNavFadeIn = new FloatProp(0f, 1f, clampToDuration( + NAV_FADE_IN_INTERPOLATOR, + ANIMATION_DELAY_NAV_FADE_IN, + ANIMATION_NAV_FADE_IN_DURATION, + out.getDuration())); @Override public void onUpdate(float percent, boolean initOnly) { diff --git a/quickstep/src/com/android/quickstep/util/AnimUtils.java b/quickstep/src/com/android/quickstep/util/AnimUtils.java index 1f2a02c816..8e3d44f8d8 100644 --- a/quickstep/src/com/android/quickstep/util/AnimUtils.java +++ b/quickstep/src/com/android/quickstep/util/AnimUtils.java @@ -16,10 +16,12 @@ package com.android.quickstep.util; +import static com.android.app.animation.Interpolators.clampToProgress; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import android.os.Bundle; import android.os.IRemoteCallback; +import android.view.animation.Interpolator; import com.android.launcher3.util.RunnableList; @@ -67,4 +69,15 @@ public class AnimUtils { } }; } + + /** + * Returns a function that runs the given interpolator such that the entire progress is set + * between the given duration. That is, we set the interpolation to 0 until startDelay and reach + * 1 by (startDelay + duration). + */ + public static Interpolator clampToDuration(Interpolator interpolator, float startDelay, + float duration, float totalDuration) { + return clampToProgress(interpolator, startDelay / totalDuration, + (startDelay + duration) / totalDuration); + } } diff --git a/quickstep/src/com/android/quickstep/util/AppCloseConfig.java b/quickstep/src/com/android/quickstep/util/AppCloseConfig.java deleted file mode 100644 index bec33797a3..0000000000 --- a/quickstep/src/com/android/quickstep/util/AppCloseConfig.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2021 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.annotation.FloatRange; -import android.annotation.IntRange; - -/* - * Adds getter methods to {@link MultiValueUpdateListener} specific to app close animation, - * so that the entire animation can be defined in one place. - */ -public abstract class AppCloseConfig extends MultiValueUpdateListener { - - /** - * Returns the translation y of the workspace contents. - */ - public abstract float getWorkspaceTransY(); - - /* - * Returns the scale of the workspace contents. - */ - public abstract float getWorkspaceScale(); - - /* - * Returns the alpha of the window. - */ - public abstract @FloatRange(from = 0, to = 1) float getWindowAlpha(); - - /* - * Returns the alpha of the foreground layer of an adaptive icon. - */ - public abstract @IntRange(from = 0, to = 255) int getFgAlpha(); - - /* - * Returns the corner radius of the window and icon. - */ - public abstract float getCornerRadius(); - - /* - * Returns the interpolated progress of the animation. - */ - public abstract float getInterpolatedProgress(); - -} diff --git a/quickstep/src/com/android/quickstep/util/MultiValueUpdateListener.java b/quickstep/src/com/android/quickstep/util/MultiValueUpdateListener.java index 1c3c9c2fae..72fc2a67b5 100644 --- a/quickstep/src/com/android/quickstep/util/MultiValueUpdateListener.java +++ b/quickstep/src/com/android/quickstep/util/MultiValueUpdateListener.java @@ -18,6 +18,8 @@ package com.android.quickstep.util; import android.animation.ValueAnimator; import android.view.animation.Interpolator; +import com.android.launcher3.Utilities; + import java.util.ArrayList; /** @@ -31,14 +33,11 @@ public abstract class MultiValueUpdateListener implements ValueAnimator.Animator @Override public final void onAnimationUpdate(ValueAnimator animator) { final float percent = animator.getAnimatedFraction(); - final float currentPlayTime = percent * animator.getDuration(); for (int i = mAllProperties.size() - 1; i >= 0; i--) { FloatProp prop = mAllProperties.get(i); - float time = Math.max(0, currentPlayTime - prop.mDelay); - float newPercent = Math.min(1f, time / prop.mDuration); - newPercent = prop.mInterpolator.getInterpolation(newPercent); - prop.value = prop.mEnd * newPercent + prop.mStart * (1 - newPercent); + float interpolatedPercent = prop.mInterpolator.getInterpolation(percent); + prop.value = Utilities.mapRange(interpolatedPercent, prop.mStart, prop.mEnd); } onUpdate(percent, false /* initOnly */); } @@ -55,17 +54,12 @@ public abstract class MultiValueUpdateListener implements ValueAnimator.Animator private final float mStart; private final float mEnd; - private final float mDelay; - private final float mDuration; private final Interpolator mInterpolator; - public FloatProp(float start, float end, float delay, float duration, Interpolator i) { + public FloatProp(float start, float end, Interpolator i) { value = mStart = start; mEnd = end; - mDelay = delay; - mDuration = duration; mInterpolator = i; - mAllProperties.add(this); } diff --git a/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt b/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt index b7b1d8f754..8f5c9c1186 100644 --- a/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt +++ b/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt @@ -70,69 +70,84 @@ import java.util.Optional import java.util.function.Supplier /** - * Utils class to help run animations for initiating split screen from launcher. - * Will be expanded with future refactors. Works in conjunction with the state stored in - * [SplitSelectStateController] + * Utils class to help run animations for initiating split screen from launcher. Will be expanded + * with future refactors. Works in conjunction with the state stored in [SplitSelectStateController] */ class SplitAnimationController(val splitSelectStateController: SplitSelectStateController) { companion object { // Break this out into maybe enums? Abstractions into its own classes? Tbd. data class SplitAnimInitProps( - val originalView: View, - val originalBitmap: Bitmap?, - val iconDrawable: Drawable, - val fadeWithThumbnail: Boolean, - val isStagedTask: Boolean, - val iconView: View? + val originalView: View, + val originalBitmap: Bitmap?, + val iconDrawable: Drawable, + val fadeWithThumbnail: Boolean, + val isStagedTask: Boolean, + val iconView: View? ) } /** - * Returns different elements to animate for the initial split selection animation - * depending on the state of the surface from which the split was initiated + * Returns different elements to animate for the initial split selection animation depending on + * the state of the surface from which the split was initiated */ - fun getFirstAnimInitViews(taskViewSupplier: Supplier, - splitSelectSourceSupplier: Supplier) - : SplitAnimInitProps { + fun getFirstAnimInitViews( + taskViewSupplier: Supplier, + splitSelectSourceSupplier: Supplier + ): SplitAnimInitProps { val splitSelectSource = splitSelectSourceSupplier.get() if (!splitSelectStateController.isAnimateCurrentTaskDismissal) { // Initiating from home - return SplitAnimInitProps(splitSelectSource!!.view, originalBitmap = null, - splitSelectSource.drawable, fadeWithThumbnail = false, isStagedTask = true, - iconView = null) + return SplitAnimInitProps( + splitSelectSource!!.view, + originalBitmap = null, + splitSelectSource.drawable, + fadeWithThumbnail = false, + isStagedTask = true, + iconView = null + ) } else if (splitSelectStateController.isDismissingFromSplitPair) { // Initiating split from overview, but on a split pair val taskView = taskViewSupplier.get() - for (container : TaskIdAttributeContainer in taskView.taskIdAttributeContainers) { + for (container: TaskIdAttributeContainer in taskView.taskIdAttributeContainers) { if (container.task.getKey().getId() == splitSelectStateController.initialTaskId) { val drawable = getDrawable(container.iconView, splitSelectSource) - return SplitAnimInitProps(container.thumbnailView, - container.thumbnailView.thumbnail, drawable!!, - fadeWithThumbnail = true, isStagedTask = true, - iconView = container.iconView.asView() + return SplitAnimInitProps( + container.thumbnailView, + container.thumbnailView.thumbnail, + drawable!!, + fadeWithThumbnail = true, + isStagedTask = true, + iconView = container.iconView.asView() ) } } - throw IllegalStateException("Attempting to init split from existing split pair " + - "without a valid taskIdAttributeContainer") + throw IllegalStateException( + "Attempting to init split from existing split pair " + + "without a valid taskIdAttributeContainer" + ) } else { // Initiating split from overview on fullscreen task TaskView val taskView = taskViewSupplier.get() val drawable = getDrawable(taskView.iconView, splitSelectSource) - return SplitAnimInitProps(taskView.thumbnail, taskView.thumbnail.thumbnail, - drawable!!, fadeWithThumbnail = true, isStagedTask = true, - taskView.iconView.asView() + return SplitAnimInitProps( + taskView.thumbnail, + taskView.thumbnail.thumbnail, + drawable!!, + fadeWithThumbnail = true, + isStagedTask = true, + taskView.iconView.asView() ) } } /** - * Returns the drawable that's provided in iconView, however if that - * is null it falls back to the drawable that's in splitSelectSource. - * TaskView's icon drawable can be null if the TaskView is scrolled far enough off screen + * Returns the drawable that's provided in iconView, however if that is null it falls back to + * the drawable that's in splitSelectSource. TaskView's icon drawable can be null if the + * TaskView is scrolled far enough off screen + * * @return [Drawable] */ - fun getDrawable(iconView: TaskViewIcon, splitSelectSource: SplitSelectSource?) : Drawable? { + fun getDrawable(iconView: TaskViewIcon, splitSelectSource: SplitSelectSource?): Drawable? { if (iconView.drawable == null && splitSelectSource != null) { return splitSelectSource.drawable } @@ -140,21 +155,25 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC } /** - * When selecting first app from split pair, second app's thumbnail remains. This animates - * the second thumbnail by expanding it to take up the full taskViewWidth/Height and overlaying - * it with [TaskThumbnailView]'s splashView. Adds animations to the provided builder. - * Note: The app that **was not** selected as the first split app should be the container that's - * passed through. + * When selecting first app from split pair, second app's thumbnail remains. This animates the + * second thumbnail by expanding it to take up the full taskViewWidth/Height and overlaying it + * with [TaskThumbnailView]'s splashView. Adds animations to the provided builder. Note: The app + * that **was not** selected as the first split app should be the container that's passed + * through. * * @param builder Adds animation to this * @param taskIdAttributeContainer container of the app that **was not** selected * @param isPrimaryTaskSplitting if true, task that was split would be top/left in the pair - * (opposite of that representing [taskIdAttributeContainer]) + * (opposite of that representing [taskIdAttributeContainer]) */ - fun addInitialSplitFromPair(taskIdAttributeContainer: TaskIdAttributeContainer, - builder: PendingAnimation, deviceProfile: DeviceProfile, - taskViewWidth: Int, taskViewHeight: Int, - isPrimaryTaskSplitting: Boolean) { + fun addInitialSplitFromPair( + taskIdAttributeContainer: TaskIdAttributeContainer, + builder: PendingAnimation, + deviceProfile: DeviceProfile, + taskViewWidth: Int, + taskViewHeight: Int, + isPrimaryTaskSplitting: Boolean + ) { val thumbnail = taskIdAttributeContainer.thumbnailView val iconView: View = taskIdAttributeContainer.iconView.asView() builder.add(ObjectAnimator.ofFloat(thumbnail, TaskThumbnailView.SPLASH_ALPHA, 1f)) @@ -170,35 +189,42 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC ) ) builder.add( - ObjectAnimator.ofFloat( - iconView.splitTranslationY, - MULTI_PROPERTY_VALUE, - 0f - ) + ObjectAnimator.ofFloat(iconView.splitTranslationY, MULTI_PROPERTY_VALUE, 0f) ) } if (deviceProfile.isLeftRightSplit) { // Center view first so scaling happens uniformly, alternatively we can move pivotX to 0 val centerThumbnailTranslationX: Float = (taskViewWidth - thumbnail.width) / 2f val finalScaleX: Float = taskViewWidth.toFloat() / thumbnail.width - builder.add(ObjectAnimator.ofFloat(thumbnail, - TaskThumbnailView.SPLIT_SELECT_TRANSLATE_X, centerThumbnailTranslationX)) + builder.add( + ObjectAnimator.ofFloat( + thumbnail, + TaskThumbnailView.SPLIT_SELECT_TRANSLATE_X, + centerThumbnailTranslationX + ) + ) if (!enableOverviewIconMenu()) { // icons are anchored from Gravity.END, so need to use negative translation val centerIconTranslationX: Float = (taskViewWidth - iconView.width) / 2f - builder.add(ObjectAnimator.ofFloat(iconView, View.TRANSLATION_X, - -centerIconTranslationX)) + builder.add( + ObjectAnimator.ofFloat(iconView, View.TRANSLATION_X, -centerIconTranslationX) + ) } builder.add(ObjectAnimator.ofFloat(thumbnail, View.SCALE_X, finalScaleX)) // Reset other dimensions // TODO(b/271468547), can't set Y translate to 0, need to account for top space thumbnail.scaleY = 1f - val translateYResetVal: Float = if (!isPrimaryTaskSplitting) 0f else - deviceProfile.overviewTaskThumbnailTopMarginPx.toFloat() - builder.add(ObjectAnimator.ofFloat(thumbnail, + val translateYResetVal: Float = + if (!isPrimaryTaskSplitting) 0f + else deviceProfile.overviewTaskThumbnailTopMarginPx.toFloat() + builder.add( + ObjectAnimator.ofFloat( + thumbnail, TaskThumbnailView.SPLIT_SELECT_TRANSLATE_Y, - translateYResetVal)) + translateYResetVal + ) + ) } else { val thumbnailSize = taskViewHeight - deviceProfile.overviewTaskThumbnailTopMarginPx // Center view first so scaling happens uniformly, alternatively we can move pivotY to 0 @@ -214,16 +240,21 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC // translations otherwise this asymmetry causes problems.. if (isPrimaryTaskSplitting) { centerThumbnailTranslationY = (thumbnailSize - thumbnail.height) / 2f - centerThumbnailTranslationY += deviceProfile.overviewTaskThumbnailTopMarginPx - .toFloat() + centerThumbnailTranslationY += + deviceProfile.overviewTaskThumbnailTopMarginPx.toFloat() } else { centerThumbnailTranslationY = (thumbnailSize - thumbnail.height) / 2f } val finalScaleY: Float = thumbnailSize.toFloat() / thumbnail.height - builder.add(ObjectAnimator.ofFloat(thumbnail, - TaskThumbnailView.SPLIT_SELECT_TRANSLATE_Y, centerThumbnailTranslationY)) + builder.add( + ObjectAnimator.ofFloat( + thumbnail, + TaskThumbnailView.SPLIT_SELECT_TRANSLATE_Y, + centerThumbnailTranslationY + ) + ) - if (!enableOverviewIconMenu()) { + if (!enableOverviewIconMenu()) { // icons are anchored from Gravity.END, so need to use negative translation builder.add(ObjectAnimator.ofFloat(iconView, View.TRANSLATION_X, 0f)) } @@ -231,8 +262,9 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC // Reset other dimensions thumbnail.scaleX = 1f - builder.add(ObjectAnimator.ofFloat(thumbnail, - TaskThumbnailView.SPLIT_SELECT_TRANSLATE_X, 0f)) + builder.add( + ObjectAnimator.ofFloat(thumbnail, TaskThumbnailView.SPLIT_SELECT_TRANSLATE_X, 0f) + ) } } @@ -250,69 +282,94 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC * Returns [AnimatorSet] which slides initial split placeholder view offscreen and logs an event * for why split is being dismissed */ - fun createPlaceholderDismissAnim(launcher: StatefulActivity<*>, - splitDismissEvent: EventEnum, - duration: Long?) : AnimatorSet { + fun createPlaceholderDismissAnim( + launcher: StatefulActivity<*>, + splitDismissEvent: EventEnum, + duration: Long? + ): AnimatorSet { val animatorSet = AnimatorSet() duration?.let { animatorSet.duration = it } - val recentsView : RecentsView<*, *> = launcher.getOverviewPanel() - val floatingTask: FloatingTaskView = splitSelectStateController.firstFloatingTaskView - ?: return animatorSet + val recentsView: RecentsView<*, *> = launcher.getOverviewPanel() + val floatingTask: FloatingTaskView = + splitSelectStateController.firstFloatingTaskView ?: return animatorSet // We are in split selection state currently, transitioning to another state val dragLayer: BaseDragLayer<*> = launcher.dragLayer val onScreenRectF = RectF() - Utilities.getBoundsForViewInDragLayer(dragLayer, floatingTask, - Rect(0, 0, floatingTask.width, floatingTask.height), - false, null, onScreenRectF) + Utilities.getBoundsForViewInDragLayer( + dragLayer, + floatingTask, + Rect(0, 0, floatingTask.width, floatingTask.height), + false, + null, + onScreenRectF + ) // Get the part of the floatingTask that intersects with the DragLayer (i.e. the // on-screen portion) onScreenRectF.intersect( - dragLayer.left.toFloat(), - dragLayer.top.toFloat(), - dragLayer.right.toFloat(), - dragLayer.bottom - .toFloat() + dragLayer.left.toFloat(), + dragLayer.top.toFloat(), + dragLayer.right.toFloat(), + dragLayer.bottom.toFloat() ) - animatorSet.play(ObjectAnimator.ofFloat(floatingTask, + animatorSet.play( + ObjectAnimator.ofFloat( + floatingTask, FloatingTaskView.PRIMARY_TRANSLATE_OFFSCREEN, - recentsView.pagedOrientationHandler - .getFloatingTaskOffscreenTranslationTarget( - floatingTask, - onScreenRectF, - floatingTask.stagePosition, - launcher.deviceProfile - ))) - animatorSet.addListener(object : AnimatorListenerAdapter() { - override fun onAnimationEnd(animation: Animator) { - splitSelectStateController.resetState() - safeRemoveViewFromDragLayer(launcher, - splitSelectStateController.splitInstructionsView) + recentsView.pagedOrientationHandler.getFloatingTaskOffscreenTranslationTarget( + floatingTask, + onScreenRectF, + floatingTask.stagePosition, + launcher.deviceProfile + ) + ) + ) + animatorSet.addListener( + object : AnimatorListenerAdapter() { + override fun onAnimationEnd(animation: Animator) { + splitSelectStateController.resetState() + safeRemoveViewFromDragLayer( + launcher, + splitSelectStateController.splitInstructionsView + ) + } } - }) + ) splitSelectStateController.logExitReason(splitDismissEvent) return animatorSet } /** - * Returns a [PendingAnimation] to animate in the chip to instruct a user to select a second - * app for splitscreen + * Returns a [PendingAnimation] to animate in the chip to instruct a user to select a second app + * for splitscreen */ - fun getShowSplitInstructionsAnim(launcher: StatefulActivity<*>) : PendingAnimation { + fun getShowSplitInstructionsAnim(launcher: StatefulActivity<*>): PendingAnimation { safeRemoveViewFromDragLayer(launcher, splitSelectStateController.splitInstructionsView) val splitInstructionsView = SplitInstructionsView.getSplitInstructionsView(launcher) splitSelectStateController.splitInstructionsView = splitInstructionsView val timings = AnimUtils.getDeviceOverviewToSplitTimings(launcher.deviceProfile.isTablet) val anim = PendingAnimation(100 /*duration */) splitInstructionsView.alpha = 0f - anim.setViewAlpha(splitInstructionsView, 1f, - Interpolators.clampToProgress(Interpolators.LINEAR, - timings.instructionsContainerFadeInStartOffset, - timings.instructionsContainerFadeInEndOffset)) - anim.addFloat(splitInstructionsView, SplitInstructionsView.UNFOLD, 0.1f, 1f, - Interpolators.clampToProgress(Interpolators.EMPHASIZED_DECELERATE, - timings.instructionsUnfoldStartOffset, - timings.instructionsUnfoldEndOffset)) + anim.setViewAlpha( + splitInstructionsView, + 1f, + Interpolators.clampToProgress( + Interpolators.LINEAR, + timings.instructionsContainerFadeInStartOffset, + timings.instructionsContainerFadeInEndOffset + ) + ) + anim.addFloat( + splitInstructionsView, + SplitInstructionsView.UNFOLD, + 0.1f, + 1f, + Interpolators.clampToProgress( + Interpolators.EMPHASIZED_DECELERATE, + timings.instructionsUnfoldStartOffset, + timings.instructionsUnfoldEndOffset + ) + ) return anim } @@ -323,15 +380,20 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC /** * Animates the first placeholder view to fullscreen and launches its task. + * * TODO(b/276361926): Remove the [resetCallback] option once contextual launches */ - fun playAnimPlaceholderToFullscreen(launcher: StatefulActivity<*>, view: View, - resetCallback: Optional) { + fun playAnimPlaceholderToFullscreen( + launcher: StatefulActivity<*>, + view: View, + resetCallback: Optional + ) { val stagedTaskView = view as FloatingTaskView val isTablet: Boolean = launcher.deviceProfile.isTablet - val duration = if (isTablet) SplitAnimationTimings.TABLET_CONFIRM_DURATION else - SplitAnimationTimings.PHONE_CONFIRM_DURATION + val duration = + if (isTablet) SplitAnimationTimings.TABLET_CONFIRM_DURATION + else SplitAnimationTimings.PHONE_CONFIRM_DURATION val pendingAnimation = PendingAnimation(duration.toLong()) val firstTaskStartingBounds = Rect() val firstTaskEndingBounds = Rect() @@ -341,11 +403,12 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC splitSelectStateController.setLaunchingFirstAppFullscreen() stagedTaskView.addConfirmAnimation( - pendingAnimation, - RectF(firstTaskStartingBounds), - firstTaskEndingBounds, - false /* fadeWithThumbnail */, - true /* isStagedTask */) + pendingAnimation, + RectF(firstTaskStartingBounds), + firstTaskEndingBounds, + false /* fadeWithThumbnail */, + true /* isStagedTask */ + ) pendingAnimation.addEndListener { splitSelectStateController.launchInitialAppFullscreen { @@ -490,8 +553,8 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC * When the user taps an app pair icon to launch split, this will play the tasks' launch * animation from the position of the icon. * - * To find the root shell leash that we want to fade in, we do the following: - * The Changes we receive in transitionInfo are structured like this + * To find the root shell leash that we want to fade in, we do the following: The Changes we + * receive in transitionInfo are structured like this * * Root (grandparent) * | @@ -503,9 +566,9 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC * | * --> App 2 (right/bottom side child) (WINDOWING_MODE_MULTI_WINDOW) * - * We want to animate the Root (grandparent) so that it affects both apps and the divider. - * To do this, we find one of the nodes with WINDOWING_MODE_MULTI_WINDOW (one of the - * left-side ones, for simplicity) and traverse the tree until we find the grandparent. + * We want to animate the Root (grandparent) so that it affects both apps and the divider. To do + * this, we find one of the nodes with WINDOWING_MODE_MULTI_WINDOW (one of the left-side ones, + * for simplicity) and traverse the tree until we find the grandparent. * * This function is only called when we are animating the app pair in from scratch. It is NOT * called when we are animating in from an existing visible TaskView tile or an app that is @@ -544,8 +607,10 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC // TODO (b/316490565): Replace this logic when SplitBounds is available to // startAnimation() and we can know the precise taskIds of launching tasks. // Find a change that has WINDOWING_MODE_MULTI_WINDOW. - if (taskInfo.windowingMode == WINDOWING_MODE_MULTI_WINDOW && - (change.mode == TRANSIT_OPEN || change.mode == TRANSIT_TO_FRONT)) { + if ( + taskInfo.windowingMode == WINDOWING_MODE_MULTI_WINDOW && + (change.mode == TRANSIT_OPEN || change.mode == TRANSIT_TO_FRONT) + ) { // Check if it is a left/top app. val isLeftTopApp = (dp.isLeftRightSplit && change.endAbsBounds.left == 0) || @@ -614,8 +679,6 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC FloatProp( floatingView.startingPosition.left, dp.widthPx / 2f - floatingView.startingPosition.width() / 2f, - 0f /* delay */, - timings.getDuration().toFloat(), Interpolators.clampToProgress( timings.getStagedRectXInterpolator(), timings.stagedRectSlideStartOffset, @@ -626,8 +689,6 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC FloatProp( floatingView.startingPosition.top, dp.heightPx / 2f - floatingView.startingPosition.height() / 2f, - 0f /* delay */, - timings.getDuration().toFloat(), Interpolators.clampToProgress( Interpolators.EMPHASIZED, timings.stagedRectSlideStartOffset, @@ -638,8 +699,6 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC FloatProp( 1f /* start */, dp.widthPx / floatingView.startingPosition.width(), - 0f /* delay */, - timings.getDuration().toFloat(), Interpolators.clampToProgress( Interpolators.EMPHASIZED, timings.stagedRectSlideStartOffset, @@ -650,8 +709,6 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC FloatProp( 1f /* start */, dp.heightPx / floatingView.startingPosition.height(), - 0f /* delay */, - timings.getDuration().toFloat(), Interpolators.clampToProgress( Interpolators.EMPHASIZED, timings.stagedRectSlideStartOffset, diff --git a/quickstep/src/com/android/quickstep/views/AllAppsEduView.java b/quickstep/src/com/android/quickstep/views/AllAppsEduView.java index fdc8f1ff14..121d8ede11 100644 --- a/quickstep/src/com/android/quickstep/views/AllAppsEduView.java +++ b/quickstep/src/com/android/quickstep/views/AllAppsEduView.java @@ -22,6 +22,7 @@ import static com.android.launcher3.LauncherState.ALL_APPS; import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.Utilities.EDGE_NAV_BAR; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALL_APPS_EDU_SHOWN; +import static com.android.quickstep.util.AnimUtils.clampToDuration; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -187,10 +188,14 @@ public class AllAppsEduView extends AbstractFloatingView { intro.setInterpolator(LINEAR); intro.setDuration(introDuration); intro.addUpdateListener((new MultiValueUpdateListener() { - FloatProp mCircleAlpha = new FloatProp(0, 255, 0, firstPart, LINEAR); - FloatProp mCircleScale = new FloatProp(2f, 1f, 0, firstPart, OVERSHOOT_1_7); - FloatProp mDeltaY = new FloatProp(0, transY, firstPart, secondPart, FAST_OUT_SLOW_IN); - FloatProp mGradientAlpha = new FloatProp(0, 255, firstPart, secondPart * 0.3f, LINEAR); + FloatProp mCircleAlpha = new FloatProp(0, 255, + clampToDuration(LINEAR, 0, firstPart, introDuration)); + FloatProp mCircleScale = new FloatProp(2f, 1f, + clampToDuration(OVERSHOOT_1_7, 0, firstPart, introDuration)); + FloatProp mDeltaY = new FloatProp(0, transY, + clampToDuration(FAST_OUT_SLOW_IN, firstPart, secondPart, introDuration)); + FloatProp mGradientAlpha = new FloatProp(0, 255, + clampToDuration(LINEAR, firstPart, secondPart * 0.3f, introDuration)); @Override public void onUpdate(float progress, boolean initOnly) { diff --git a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java index 12a073fa84..18922a6fb3 100644 --- a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java +++ b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java @@ -328,20 +328,20 @@ public class FloatingTaskView extends FrameLayout { MultiValueUpdateListener listener = new MultiValueUpdateListener() { // SplitPlaceholderView: rectangle translates and stretches to new position - final FloatProp mDx = new FloatProp(0, prop.dX, 0, animDuration, + final FloatProp mDx = new FloatProp(0, prop.dX, clampToProgress(timings.getStagedRectXInterpolator(), timings.getStagedRectSlideStartOffset(), timings.getStagedRectSlideEndOffset())); - final FloatProp mDy = new FloatProp(0, prop.dY, 0, animDuration, + final FloatProp mDy = new FloatProp(0, prop.dY, clampToProgress(timings.getStagedRectYInterpolator(), timings.getStagedRectSlideStartOffset(), timings.getStagedRectSlideEndOffset())); - final FloatProp mTaskViewScaleX = new FloatProp(1f, prop.finalTaskViewScaleX, 0, - animDuration, clampToProgress(timings.getStagedRectScaleXInterpolator(), + final FloatProp mTaskViewScaleX = new FloatProp(1f, prop.finalTaskViewScaleX, + clampToProgress(timings.getStagedRectScaleXInterpolator(), timings.getStagedRectSlideStartOffset(), timings.getStagedRectSlideEndOffset())); - final FloatProp mTaskViewScaleY = new FloatProp(1f, prop.finalTaskViewScaleY, 0, - animDuration, clampToProgress(timings.getStagedRectScaleYInterpolator(), + final FloatProp mTaskViewScaleY = new FloatProp(1f, prop.finalTaskViewScaleY, + clampToProgress(timings.getStagedRectScaleYInterpolator(), timings.getStagedRectSlideStartOffset(), timings.getStagedRectSlideEndOffset())); @Override From 9a3c48468b35377ef46bf2b362f68c467ecd45ad Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Mon, 11 Mar 2024 16:53:39 -0700 Subject: [PATCH 13/15] Update Launcher state anim duration for pinned & transient taskbar * We were syncing the duration of the animation to be at most that of the taskbar/hotseat animation but only for transient taskbar. * Now we sync for transient and pinned Fixes: 328052756 Test: Anim jank doesn't repro Change-Id: I21f20cbc08a2018498dde3eff871929e5a5b7d7d --- .../uioverrides/states/QuickstepAtomicAnimationFactory.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java index 72218bf26e..8c92c7db49 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java @@ -135,8 +135,7 @@ public class QuickstepAtomicAnimationFactory extends config.duration = Math.max(config.duration, scrollDuration); // Sync scroll so that it ends before or at the same time as the taskbar animation. - if (DisplayController.isTransientTaskbar(mActivity) - && mActivity.getDeviceProfile().isTaskbarPresent) { + if (mActivity.getDeviceProfile().isTaskbarPresent) { config.duration = Math.min(config.duration, TASKBAR_TO_HOME_DURATION); } overview.snapToPage(DEFAULT_PAGE, Math.toIntExact(config.duration)); From a7789a459340c82de51490d99711fb4d70bf307c Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Mon, 11 Mar 2024 16:53:39 -0700 Subject: [PATCH 14/15] Update Launcher state anim duration for pinned & transient taskbar * We were syncing the duration of the animation to be at most that of the taskbar/hotseat animation but only for transient taskbar. * Now we sync for transient and pinned Fixes: 328052756 Test: Anim jank doesn't repro Change-Id: I21f20cbc08a2018498dde3eff871929e5a5b7d7d --- .../uioverrides/states/QuickstepAtomicAnimationFactory.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java index 72218bf26e..8c92c7db49 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java @@ -135,8 +135,7 @@ public class QuickstepAtomicAnimationFactory extends config.duration = Math.max(config.duration, scrollDuration); // Sync scroll so that it ends before or at the same time as the taskbar animation. - if (DisplayController.isTransientTaskbar(mActivity) - && mActivity.getDeviceProfile().isTaskbarPresent) { + if (mActivity.getDeviceProfile().isTaskbarPresent) { config.duration = Math.min(config.duration, TASKBAR_TO_HOME_DURATION); } overview.snapToPage(DEFAULT_PAGE, Math.toIntExact(config.duration)); From 8229228132581a1f25cc02e6e55b79bd6e0bed21 Mon Sep 17 00:00:00 2001 From: Sukesh Ram Date: Tue, 12 Mar 2024 02:16:37 +0000 Subject: [PATCH 15/15] Debugging Logs for TaplTestsTransientTaskbar#testSwipeToStashAndUnstash Add logging for TaplTestsTransientTaskbar#testSwipeToStashAndUnstash. Flag: NONE Test: Manually tested in pixel 7. Bug: 324940434 Change-Id: I7c30fb2f3c94770fa79780d2e7748e931552ba56 --- quickstep/src/com/android/quickstep/views/TaskView.java | 4 ++++ tests/tapl/com/android/launcher3/tapl/LaunchedAppState.java | 4 ++-- tests/tapl/com/android/launcher3/tapl/OverviewTask.java | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java index 9b48082015..14d7842505 100644 --- a/quickstep/src/com/android/quickstep/views/TaskView.java +++ b/quickstep/src/com/android/quickstep/views/TaskView.java @@ -30,6 +30,8 @@ import static com.android.launcher3.Utilities.getDescendantCoordRelativeToAncest import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_ICON_TAP_OR_LONGPRESS; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_LAUNCH_TAP; import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_NOT_PINNABLE; +import static com.android.launcher3.testing.shared.TestProtocol.SUCCESSFUL_GESTURE_MISMATCH_EVENTS; +import static com.android.launcher3.testing.shared.TestProtocol.testLogD; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT; @@ -861,6 +863,7 @@ public class TaskView extends FrameLayout implements Reusable { @Nullable public RunnableList launchTaskAnimated() { if (mTask != null) { + testLogD(SUCCESSFUL_GESTURE_MISMATCH_EVENTS, "TaskView.launchTaskAnimated"); TestLogging.recordEvent( TestProtocol.SEQUENCE_MAIN, "startActivityFromRecentsAsync", mTask); ActivityOptionsWrapper opts = mActivity.getActivityLaunchOptions(this, null); @@ -909,6 +912,7 @@ public class TaskView extends FrameLayout implements Reusable { */ public void launchTask(@NonNull Consumer callback, boolean isQuickswitch) { if (mTask != null) { + testLogD(SUCCESSFUL_GESTURE_MISMATCH_EVENTS, "TaskView.launchTaskAnimated"); TestLogging.recordEvent( TestProtocol.SEQUENCE_MAIN, "startActivityFromRecentsAsync", mTask); diff --git a/tests/tapl/com/android/launcher3/tapl/LaunchedAppState.java b/tests/tapl/com/android/launcher3/tapl/LaunchedAppState.java index b5414b7cb8..3f9699926c 100644 --- a/tests/tapl/com/android/launcher3/tapl/LaunchedAppState.java +++ b/tests/tapl/com/android/launcher3/tapl/LaunchedAppState.java @@ -26,11 +26,11 @@ import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_STASHED_ import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_TASKBAR_FROM_NAV_THRESHOLD; import static com.android.launcher3.testing.shared.TestProtocol.SUCCESSFUL_GESTURE_MISMATCH_EVENTS; import static com.android.launcher3.testing.shared.TestProtocol.TEST_INFO_RESPONSE_FIELD; -import static com.android.launcher3.testing.shared.TestProtocol.testLogD; import android.graphics.Point; import android.graphics.Rect; import android.os.SystemClock; +import android.util.Log; import android.view.InputDevice; import android.view.MotionEvent; import android.view.ViewConfiguration; @@ -141,7 +141,7 @@ public final class LaunchedAppState extends Background { return new Taskbar(mLauncher); } finally { - testLogD(SUCCESSFUL_GESTURE_MISMATCH_EVENTS, + Log.d(SUCCESSFUL_GESTURE_MISMATCH_EVENTS, "swipeUpToUnstashTaskbar: completed gesture"); mLauncher.getTestInfo(REQUEST_DISABLE_BLOCK_TIMEOUT); } diff --git a/tests/tapl/com/android/launcher3/tapl/OverviewTask.java b/tests/tapl/com/android/launcher3/tapl/OverviewTask.java index afe57223f9..1cfbf097ff 100644 --- a/tests/tapl/com/android/launcher3/tapl/OverviewTask.java +++ b/tests/tapl/com/android/launcher3/tapl/OverviewTask.java @@ -19,8 +19,10 @@ package com.android.launcher3.tapl; import static com.android.launcher3.tapl.OverviewTask.OverviewSplitTask.DEFAULT; import static com.android.launcher3.tapl.OverviewTask.OverviewSplitTask.SPLIT_BOTTOM_OR_RIGHT; import static com.android.launcher3.tapl.OverviewTask.OverviewSplitTask.SPLIT_TOP_OR_LEFT; +import static com.android.launcher3.testing.shared.TestProtocol.SUCCESSFUL_GESTURE_MISMATCH_EVENTS; import android.graphics.Rect; +import android.util.Log; import androidx.annotation.NonNull; import androidx.test.uiautomator.By; @@ -219,6 +221,7 @@ public final class OverviewTask { return new LaunchedAppState(mLauncher); } } else { + Log.d(SUCCESSFUL_GESTURE_MISMATCH_EVENTS, "TaskView.launchTaskAnimated"); mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, TASK_START_EVENT); return new LaunchedAppState(mLauncher); }