diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index a980af5ac1..27a895c3d4 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -1249,7 +1249,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { if (findExactPairMatch) { // We did not find the app pair we were looking for, so launch one. recents.getSplitSelectController().getAppPairsController().launchAppPair( - (AppPairIcon) launchingIconView, -1 /*cuj*/); + (AppPairIcon) launchingIconView); } else { startItemInfoActivity(itemInfos.get(0)); } diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index ea0724662c..2c45129b8b 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -21,7 +21,6 @@ import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_OPTIMIZE_MEAS import static android.view.accessibility.AccessibilityEvent.TYPE_VIEW_FOCUSED; import static com.android.app.animation.Interpolators.EMPHASIZED; -import static com.android.internal.jank.Cuj.CUJ_LAUNCHER_LAUNCH_APP_PAIR_FROM_WORKSPACE; import static com.android.launcher3.Flags.enablePredictiveBackGesture; import static com.android.launcher3.Flags.enableUnfoldStateAnimation; import static com.android.launcher3.LauncherConstants.SavedInstanceKeys.PENDING_SPLIT_SELECT_INFO; @@ -1347,8 +1346,7 @@ public class QuickstepLauncher extends Launcher { * Launches two apps as an app pair. */ public void launchAppPair(AppPairIcon appPairIcon) { - mSplitSelectStateController.getAppPairsController().launchAppPair(appPairIcon, - CUJ_LAUNCHER_LAUNCH_APP_PAIR_FROM_WORKSPACE); + mSplitSelectStateController.getAppPairsController().launchAppPair(appPairIcon); } public boolean canStartHomeSafely() { diff --git a/quickstep/src/com/android/quickstep/util/AppPairsController.java b/quickstep/src/com/android/quickstep/util/AppPairsController.java index ecb6118e46..757f1f809b 100644 --- a/quickstep/src/com/android/quickstep/util/AppPairsController.java +++ b/quickstep/src/com/android/quickstep/util/AppPairsController.java @@ -19,7 +19,6 @@ package com.android.quickstep.util; import static android.app.ActivityTaskManager.INVALID_TASK_ID; -import static com.android.internal.jank.Cuj.CUJ_LAUNCHER_LAUNCH_APP_PAIR_FROM_TASKBAR; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_APP_PAIR_LAUNCH; import static com.android.launcher3.model.data.AppInfo.PACKAGE_KEY_COMPARATOR; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; @@ -41,7 +40,6 @@ import android.util.Pair; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; -import com.android.internal.jank.Cuj; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings; @@ -64,7 +62,6 @@ import com.android.quickstep.TopTaskTracker; import com.android.quickstep.views.GroupedTaskView; import com.android.quickstep.views.TaskView; import com.android.systemui.shared.recents.model.Task; -import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import com.android.wm.shell.common.split.SplitScreenConstants.PersistentSnapPosition; import java.util.Arrays; @@ -115,7 +112,6 @@ public class AppPairsController { * well on trampoline apps). */ public void saveAppPair(GroupedTaskView gtv) { - InteractionJankMonitorWrapper.begin(gtv, Cuj.CUJ_LAUNCHER_SAVE_APP_PAIR); TaskView.TaskIdAttributeContainer[] attributes = gtv.getTaskIdAttributeContainers(); WorkspaceItemInfo recentsInfo1 = attributes[0].getItemInfo(); WorkspaceItemInfo recentsInfo2 = attributes[1].getItemInfo(); @@ -172,13 +168,7 @@ public class AppPairsController { LauncherAccessibilityDelegate delegate = Launcher.getLauncher(mContext).getAccessibilityDelegate(); if (delegate != null) { - delegate.addToWorkspace(newAppPair, true, (success) -> { - if (success) { - InteractionJankMonitorWrapper.end(Cuj.CUJ_LAUNCHER_SAVE_APP_PAIR); - } else { - InteractionJankMonitorWrapper.cancel(Cuj.CUJ_LAUNCHER_SAVE_APP_PAIR); - } - }); + delegate.addToWorkspace(newAppPair, true); mStatsLogManager.logger().withItemInfo(newAppPair) .log(StatsLogManager.LauncherEvent.LAUNCHER_APP_PAIR_SAVE); } @@ -189,18 +179,12 @@ public class AppPairsController { /** * Launches an app pair by searching the RecentsModel for running instances of each app, and * staging either those running instances or launching the apps as new Intents. - * - * @param cuj Should be an integer from {@link Cuj} or -1 if no CUJ needs to be logged for jank - * monitoring */ - public void launchAppPair(AppPairIcon appPairIcon, int cuj) { + public void launchAppPair(AppPairIcon appPairIcon) { WorkspaceItemInfo app1 = appPairIcon.getInfo().contents.get(0); WorkspaceItemInfo app2 = appPairIcon.getInfo().contents.get(1); ComponentKey app1Key = new ComponentKey(app1.getTargetComponent(), app1.user); ComponentKey app2Key = new ComponentKey(app2.getTargetComponent(), app2.user); - mSplitSelectStateController.setLaunchingCuj(cuj); - InteractionJankMonitorWrapper.begin(appPairIcon, cuj); - mSplitSelectStateController.findLastActiveTasksAndRunCallback( Arrays.asList(app1Key, app2Key), false /* findExactPairMatch */, @@ -359,8 +343,7 @@ public class AppPairsController { && !lastActiveTasksOfAppPair.contains(runningTaskId2)) { // Neither A nor B are on screen, so just launch a new app pair // normally. - launchAppPair(launchingIconView, - CUJ_LAUNCHER_LAUNCH_APP_PAIR_FROM_TASKBAR); + launchAppPair(launchingIconView); } else { // Exactly one app (A or B) is on-screen, so we have to launch the other // on the appropriate side. @@ -405,8 +388,7 @@ public class AppPairsController { if (!task1IsOnScreen && !task2IsOnScreen) { // Neither App A nor App B are on-screen, launch the app pair normally. - launchAppPair(launchingIconView, - CUJ_LAUNCHER_LAUNCH_APP_PAIR_FROM_TASKBAR); + launchAppPair(launchingIconView); } else { // Either A or B is on-screen, so launch the other on the appropriate // side. diff --git a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java index 44da8b13cc..8e2520e2c4 100644 --- a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java +++ b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java @@ -104,7 +104,6 @@ import com.android.quickstep.views.SplitInstructionsView; import com.android.systemui.animation.RemoteAnimationRunnerCompat; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.system.ActivityManagerWrapper; -import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import com.android.wm.shell.common.split.SplitScreenConstants.PersistentSnapPosition; import com.android.wm.shell.splitscreen.ISplitSelectListener; @@ -152,12 +151,6 @@ public class SplitSelectStateController { /** True when the first selected split app is being launched in fullscreen. */ private boolean mLaunchingFirstAppFullscreen; - /** - * Should be a constant from {@link com.android.internal.jank.Cuj} or -1, does not need to be - * set for all launches. - */ - private int mLaunchCuj = -1; - private FloatingTaskView mFirstFloatingTaskView; private SplitInstructionsView mSplitInstructionsView; @@ -714,10 +707,6 @@ public class SplitSelectStateController { return mSplitAnimationController; } - public void setLaunchingCuj(int launchCuj) { - mLaunchCuj = launchCuj; - } - /** * Requires Shell Transitions */ @@ -861,11 +850,6 @@ public class SplitSelectStateController { mSplitInstructionsView = null; mLaunchingFirstAppFullscreen = false; - if (mLaunchCuj != -1) { - InteractionJankMonitorWrapper.end(mLaunchCuj); - } - mLaunchCuj = -1; - if (mSessionInstanceIds != null) { mStatsLogManager.logger() .withInstanceId(mSessionInstanceIds.second) diff --git a/quickstep/tests/src/com/android/quickstep/util/AppPairsControllerTest.kt b/quickstep/tests/src/com/android/quickstep/util/AppPairsControllerTest.kt index adaf7ff8c3..510faf6132 100644 --- a/quickstep/tests/src/com/android/quickstep/util/AppPairsControllerTest.kt +++ b/quickstep/tests/src/com/android/quickstep/util/AppPairsControllerTest.kt @@ -105,7 +105,7 @@ class AppPairsControllerTest { whenever(mockTopTaskTracker.getCachedTopTask(any())).thenReturn(mockCachedTaskInfo) whenever(mockTask1.getKey()).thenReturn(mockTaskKey1) whenever(mockTask2.getKey()).thenReturn(mockTaskKey2) - doNothing().whenever(spyAppPairsController).launchAppPair(any(), any()) + doNothing().whenever(spyAppPairsController).launchAppPair(any()) doNothing() .whenever(spyAppPairsController) .launchToSide(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) @@ -210,7 +210,7 @@ class AppPairsControllerTest { callback.accept(arrayOf(mockTask1, mockTask2)) // Verify that launchAppPair and launchToSide were never called - verify(spyAppPairsController, never()).launchAppPair(any(), any()) + verify(spyAppPairsController, never()).launchAppPair(any()) verify(spyAppPairsController, never()) .launchToSide(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) } @@ -234,7 +234,7 @@ class AppPairsControllerTest { callback.accept(arrayOf(mockTask1, mockTask2)) // Verify that launchToSide was called with the correct arguments - verify(spyAppPairsController, never()).launchAppPair(any(), any()) + verify(spyAppPairsController, never()).launchAppPair(any()) verify(spyAppPairsController, times(1)) .launchToSide(anyOrNull(), anyOrNull(), anyOrNull(), eq(STAGE_POSITION_BOTTOM_OR_RIGHT)) } @@ -258,7 +258,7 @@ class AppPairsControllerTest { callback.accept(arrayOf(mockTask1, mockTask2)) // Verify that launchToSide was called with the correct arguments - verify(spyAppPairsController, never()).launchAppPair(any(), any()) + verify(spyAppPairsController, never()).launchAppPair(any()) verify(spyAppPairsController, times(1)) .launchToSide(anyOrNull(), anyOrNull(), anyOrNull(), eq(STAGE_POSITION_TOP_OR_LEFT)) } @@ -282,7 +282,7 @@ class AppPairsControllerTest { callback.accept(arrayOf(mockTask1, mockTask2)) // Verify that launchToSide was called with the correct arguments - verify(spyAppPairsController, never()).launchAppPair(any(), any()) + verify(spyAppPairsController, never()).launchAppPair(any()) verify(spyAppPairsController, times(1)) .launchToSide(anyOrNull(), anyOrNull(), anyOrNull(), eq(STAGE_POSITION_BOTTOM_OR_RIGHT)) } @@ -306,7 +306,7 @@ class AppPairsControllerTest { callback.accept(arrayOf(mockTask1, mockTask2)) // Verify that launchToSide was called with the correct arguments - verify(spyAppPairsController, never()).launchAppPair(any(), any()) + verify(spyAppPairsController, never()).launchAppPair(any()) verify(spyAppPairsController, times(1)) .launchToSide(anyOrNull(), anyOrNull(), anyOrNull(), eq(STAGE_POSITION_TOP_OR_LEFT)) } @@ -330,7 +330,7 @@ class AppPairsControllerTest { callback.accept(arrayOf(mockTask1, mockTask2)) // Verify that launchAppPair was called - verify(spyAppPairsController, times(1)).launchAppPair(any(), any()) + verify(spyAppPairsController, times(1)).launchAppPair(any()) verify(spyAppPairsController, never()) .launchToSide(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) } @@ -354,7 +354,7 @@ class AppPairsControllerTest { callback.accept(arrayOf(mockTask1, mockTask2)) // Verify that launchToSide was called with the correct arguments - verify(spyAppPairsController, never()).launchAppPair(any(), any()) + verify(spyAppPairsController, never()).launchAppPair(any()) verify(spyAppPairsController, times(1)) .launchToSide(anyOrNull(), anyOrNull(), anyOrNull(), eq(STAGE_POSITION_BOTTOM_OR_RIGHT)) } @@ -378,7 +378,7 @@ class AppPairsControllerTest { callback.accept(arrayOf(mockTask1, mockTask2)) // Verify that launchToSide was called with the correct arguments - verify(spyAppPairsController, never()).launchAppPair(any(), any()) + verify(spyAppPairsController, never()).launchAppPair(any()) verify(spyAppPairsController, times(1)) .launchToSide(anyOrNull(), anyOrNull(), anyOrNull(), eq(STAGE_POSITION_TOP_OR_LEFT)) } @@ -402,7 +402,7 @@ class AppPairsControllerTest { callback.accept(arrayOf(mockTask1, mockTask2)) // Verify that launchAppPair was called - verify(spyAppPairsController, times(1)).launchAppPair(any(), any()) + verify(spyAppPairsController, times(1)).launchAppPair(any()) verify(spyAppPairsController, never()) .launchToSide(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) } diff --git a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java index 30fa7ffbc0..e861d38733 100644 --- a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java +++ b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java @@ -22,8 +22,6 @@ import android.view.KeyEvent; import android.view.View; import android.view.accessibility.AccessibilityEvent; -import androidx.annotation.Nullable; - import com.android.launcher3.BubbleTextView; import com.android.launcher3.ButtonDropTarget; import com.android.launcher3.CellLayout; @@ -60,7 +58,6 @@ import com.android.launcher3.widget.util.WidgetSizes; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.function.Consumer; public class LauncherAccessibilityDelegate extends BaseAccessibilityDelegate { @@ -176,7 +173,7 @@ public class LauncherAccessibilityDelegate extends BaseAccessibilityDelegate finishCallback) { + public boolean addToWorkspace(ItemInfo item, boolean accessibility) { final int[] coordinates = new int[2]; final int screenId = findSpaceOnWorkspace(item, coordinates); if (screenId == -1) { - if (finishCallback != null) { - finishCallback.accept(false /*success*/); - } return false; } mContext.getStateManager().goToState(NORMAL, true, forSuccessCallback(() -> { @@ -409,7 +400,7 @@ public class LauncherAccessibilityDelegate extends BaseAccessibilityDelegate workspace = mContext.getWorkspace(); workspace.snapToPage(workspace.getPageIndexForScreenId(screenId)); @@ -432,30 +423,23 @@ public class LauncherAccessibilityDelegate extends BaseAccessibilityDelegate { mContext.getModelWriter().addItemToDatabase(member, fi.id, -1, -1, -1); }); - bindItem(fi, accessibility, finishCallback); + bindItem(fi, accessibility); } })); return true; } - private void bindItem(ItemInfo item, boolean focusForAccessibility, - @Nullable Consumer finishCallback) { + private void bindItem(ItemInfo item, boolean focusForAccessibility) { View view = mContext.getItemInflater().inflateItem(item, mContext.getModelWriter()); if (view == null) { - if (finishCallback != null) { - finishCallback.accept(false /*success*/); - } return; } - AnimatorSet anim = new AnimatorSet(); - anim.addListener(forEndCallback((success) -> { - if (focusForAccessibility) { - view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); - } - if (finishCallback != null) { - finishCallback.accept(success); - } - })); + AnimatorSet anim = null; + if (focusForAccessibility) { + anim = new AnimatorSet(); + anim.addListener(forEndCallback( + () -> view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED))); + } mContext.bindInflatedItems(Collections.singletonList(Pair.create(item, view)), anim); }