Merge "Update Launcher for removed shared wrappers"
This commit is contained in:
@@ -58,6 +58,8 @@ import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.app.ActivityOptions;
|
||||
import android.app.WindowConfiguration;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
@@ -84,6 +86,7 @@ import android.view.SurfaceControl;
|
||||
import android.view.View;
|
||||
import android.view.ViewRootImpl;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.WindowManager;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.view.animation.Interpolator;
|
||||
import android.view.animation.PathInterpolator;
|
||||
@@ -124,8 +127,6 @@ import com.android.quickstep.util.SurfaceTransactionApplier;
|
||||
import com.android.quickstep.util.WorkspaceRevealAnim;
|
||||
import com.android.quickstep.views.FloatingWidgetView;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.systemui.shared.system.ActivityCompat;
|
||||
import com.android.systemui.shared.system.ActivityOptionsCompat;
|
||||
import com.android.systemui.shared.system.BlurUtils;
|
||||
import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
@@ -135,7 +136,6 @@ import com.android.systemui.shared.system.RemoteAnimationRunnerCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import com.android.systemui.shared.system.RemoteTransitionCompat;
|
||||
import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams;
|
||||
import com.android.systemui.shared.system.WindowManagerWrapper;
|
||||
import com.android.wm.shell.startingsurface.IStartingWindowListener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -294,8 +294,10 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
RemoteAnimationAdapterCompat adapterCompat =
|
||||
new RemoteAnimationAdapterCompat(runner, duration, statusBarTransitionDelay,
|
||||
mLauncher.getIApplicationThread());
|
||||
return new ActivityOptionsWrapper(
|
||||
ActivityOptionsCompat.makeRemoteAnimation(adapterCompat), onEndCallback);
|
||||
ActivityOptions options = ActivityOptions.makeRemoteAnimation(
|
||||
adapterCompat.getWrapped(),
|
||||
adapterCompat.getRemoteTransition().getTransition());
|
||||
return new ActivityOptionsWrapper(options, onEndCallback);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1093,8 +1095,8 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
mWallpaperOpenRunner = createWallpaperOpenRunner(false /* fromUnlock */);
|
||||
|
||||
RemoteAnimationDefinitionCompat definition = new RemoteAnimationDefinitionCompat();
|
||||
definition.addRemoteAnimation(WindowManagerWrapper.TRANSIT_WALLPAPER_OPEN,
|
||||
WindowManagerWrapper.ACTIVITY_TYPE_STANDARD,
|
||||
definition.addRemoteAnimation(WindowManager.TRANSIT_OLD_WALLPAPER_OPEN,
|
||||
WindowConfiguration.ACTIVITY_TYPE_STANDARD,
|
||||
new RemoteAnimationAdapterCompat(
|
||||
new LauncherAnimationRunner(mHandler, mWallpaperOpenRunner,
|
||||
false /* startAtFrontOfQueue */),
|
||||
@@ -1104,7 +1106,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
if (KEYGUARD_ANIMATION.get()) {
|
||||
mKeyguardGoingAwayRunner = createWallpaperOpenRunner(true /* fromUnlock */);
|
||||
definition.addRemoteAnimation(
|
||||
WindowManagerWrapper.TRANSIT_KEYGUARD_GOING_AWAY_ON_WALLPAPER,
|
||||
WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER,
|
||||
new RemoteAnimationAdapterCompat(
|
||||
new LauncherAnimationRunner(
|
||||
mHandler, mKeyguardGoingAwayRunner,
|
||||
@@ -1113,7 +1115,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
mLauncher.getIApplicationThread()));
|
||||
}
|
||||
|
||||
new ActivityCompat(mLauncher).registerRemoteAnimations(definition);
|
||||
mLauncher.registerRemoteAnimations(definition.getWrapped());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1152,7 +1154,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
return;
|
||||
}
|
||||
if (hasControlRemoteAppTransitionPermission()) {
|
||||
new ActivityCompat(mLauncher).unregisterRemoteAnimations();
|
||||
mLauncher.unregisterRemoteAnimations();
|
||||
|
||||
// Also clear strong references to the runners registered with the remote animation
|
||||
// definition so we don't have to wait for the system gc
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
*/
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import static android.view.InsetsState.ITYPE_EXTRA_NAVIGATION_BAR;
|
||||
|
||||
import static com.android.launcher3.taskbar.TaskbarLauncherStateController.FLAG_RESUMED;
|
||||
import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS;
|
||||
import static com.android.systemui.shared.system.WindowManagerWrapper.ITYPE_EXTRA_NAVIGATION_BAR;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorSet;
|
||||
|
||||
@@ -17,6 +17,7 @@ package com.android.launcher3.taskbar;
|
||||
|
||||
import static android.view.View.AccessibilityDelegate;
|
||||
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION;
|
||||
|
||||
import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X;
|
||||
import static com.android.launcher3.Utilities.getDescendantCoordRelativeToAncestor;
|
||||
@@ -42,7 +43,6 @@ import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_O
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING;
|
||||
import static com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo.TOUCHABLE_INSETS_REGION;
|
||||
|
||||
import android.animation.ArgbEvaluator;
|
||||
import android.animation.ObjectAnimator;
|
||||
@@ -69,6 +69,7 @@ import android.view.View.OnAttachStateChangeListener;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.View.OnHoverListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
@@ -88,7 +89,6 @@ import com.android.systemui.shared.rotation.FloatingRotationButton;
|
||||
import com.android.systemui.shared.rotation.RotationButton;
|
||||
import com.android.systemui.shared.rotation.RotationButtonController;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
import com.android.systemui.shared.system.ViewTreeObserverWrapper;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
@@ -167,7 +167,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
|
||||
// Variables for moving nav buttons to a separate window above IME
|
||||
private boolean mAreNavButtonsInSeparateWindow = false;
|
||||
private BaseDragLayer<TaskbarActivityContext> mSeparateWindowParent; // Initialized in init.
|
||||
private final ViewTreeObserverWrapper.OnComputeInsetsListener mSeparateWindowInsetsComputer =
|
||||
private final ViewTreeObserver.OnComputeInternalInsetsListener mSeparateWindowInsetsComputer =
|
||||
this::onComputeInsetsForSeparateWindow;
|
||||
private final RecentsHitboxExtender mHitboxExtender = new RecentsHitboxExtender();
|
||||
|
||||
@@ -833,14 +833,14 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
|
||||
mSeparateWindowParent.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
|
||||
@Override
|
||||
public void onViewAttachedToWindow(View view) {
|
||||
ViewTreeObserverWrapper.addOnComputeInsetsListener(
|
||||
mSeparateWindowParent.getViewTreeObserver(), mSeparateWindowInsetsComputer);
|
||||
mSeparateWindowParent.getViewTreeObserver().addOnComputeInternalInsetsListener(
|
||||
mSeparateWindowInsetsComputer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewDetachedFromWindow(View view) {
|
||||
mSeparateWindowParent.removeOnAttachStateChangeListener(this);
|
||||
ViewTreeObserverWrapper.removeOnComputeInsetsListener(
|
||||
mSeparateWindowParent.getViewTreeObserver().removeOnComputeInternalInsetsListener(
|
||||
mSeparateWindowInsetsComputer);
|
||||
}
|
||||
});
|
||||
@@ -868,7 +868,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
|
||||
mContext.getDragLayer().addView(mNavButtonsView);
|
||||
}
|
||||
|
||||
private void onComputeInsetsForSeparateWindow(ViewTreeObserverWrapper.InsetsInfo insetsInfo) {
|
||||
private void onComputeInsetsForSeparateWindow(ViewTreeObserver.InternalInsetsInfo insetsInfo) {
|
||||
addVisibleButtonsRegion(mSeparateWindowParent, insetsInfo.touchableRegion);
|
||||
insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.util.AttributeSet;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewTreeObserver;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -32,9 +33,6 @@ import com.android.launcher3.AbstractFloatingView;
|
||||
import com.android.launcher3.testing.TestLogging;
|
||||
import com.android.launcher3.testing.shared.TestProtocol;
|
||||
import com.android.launcher3.views.BaseDragLayer;
|
||||
import com.android.systemui.shared.system.ViewTreeObserverWrapper;
|
||||
import com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo;
|
||||
import com.android.systemui.shared.system.ViewTreeObserverWrapper.OnComputeInsetsListener;
|
||||
|
||||
/**
|
||||
* Top-level ViewGroup that hosts the TaskbarView as well as Views created by it such as Folder.
|
||||
@@ -42,7 +40,8 @@ import com.android.systemui.shared.system.ViewTreeObserverWrapper.OnComputeInset
|
||||
public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> {
|
||||
|
||||
private final TaskbarBackgroundRenderer mBackgroundRenderer;
|
||||
private final OnComputeInsetsListener mTaskbarInsetsComputer = this::onComputeTaskbarInsets;
|
||||
private final ViewTreeObserver.OnComputeInternalInsetsListener mTaskbarInsetsComputer =
|
||||
this::onComputeTaskbarInsets;
|
||||
|
||||
// Initialized in init.
|
||||
private TaskbarDragLayerController.TaskbarDragLayerCallbacks mControllerCallbacks;
|
||||
@@ -80,7 +79,7 @@ public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> {
|
||||
mControllers = mControllerCallbacks.getTouchControllers();
|
||||
}
|
||||
|
||||
private void onComputeTaskbarInsets(InsetsInfo insetsInfo) {
|
||||
private void onComputeTaskbarInsets(ViewTreeObserver.InternalInsetsInfo insetsInfo) {
|
||||
if (mControllerCallbacks != null) {
|
||||
mControllerCallbacks.updateInsetsTouchability(insetsInfo);
|
||||
}
|
||||
@@ -88,7 +87,7 @@ public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> {
|
||||
|
||||
protected void onDestroy(boolean forceDestroy) {
|
||||
if (forceDestroy) {
|
||||
ViewTreeObserverWrapper.removeOnComputeInsetsListener(mTaskbarInsetsComputer);
|
||||
getViewTreeObserver().removeOnComputeInternalInsetsListener(mTaskbarInsetsComputer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,8 +98,7 @@ public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> {
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
ViewTreeObserverWrapper.addOnComputeInsetsListener(getViewTreeObserver(),
|
||||
mTaskbarInsetsComputer);
|
||||
getViewTreeObserver().addOnComputeInternalInsetsListener(mTaskbarInsetsComputer);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,12 +17,12 @@ package com.android.launcher3.taskbar;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Rect;
|
||||
import android.view.ViewTreeObserver;
|
||||
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.util.TouchController;
|
||||
import com.android.quickstep.AnimatedFloat;
|
||||
import com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
|
||||
@@ -157,9 +157,9 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa
|
||||
|
||||
/**
|
||||
* Called to update the touchable insets.
|
||||
* @see InsetsInfo#setTouchableInsets(int)
|
||||
* @see ViewTreeObserver.InternalInsetsInfo#setTouchableInsets(int)
|
||||
*/
|
||||
public void updateInsetsTouchability(InsetsInfo insetsInfo) {
|
||||
public void updateInsetsTouchability(ViewTreeObserver.InternalInsetsInfo insetsInfo) {
|
||||
mControllers.taskbarInsetsController.updateInsetsTouchability(insetsInfo);
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,11 @@ import android.graphics.Region
|
||||
import android.view.InsetsFrameProvider
|
||||
import android.view.InsetsState.ITYPE_BOTTOM_MANDATORY_GESTURES
|
||||
import android.view.InsetsState
|
||||
import android.view.InsetsState.ITYPE_BOTTOM_TAPPABLE_ELEMENT
|
||||
import android.view.InsetsState.ITYPE_EXTRA_NAVIGATION_BAR
|
||||
import android.view.ViewTreeObserver
|
||||
import android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_FRAME
|
||||
import android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION
|
||||
import android.view.WindowManager
|
||||
import android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD
|
||||
import android.view.WindowManager.LayoutParams.TYPE_VOICE_INTERACTION
|
||||
@@ -29,9 +34,6 @@ import com.android.launcher3.DeviceProfile
|
||||
import com.android.launcher3.anim.AlphaUpdateListener
|
||||
import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController
|
||||
import com.android.quickstep.KtR
|
||||
import com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo
|
||||
import com.android.systemui.shared.system.WindowManagerWrapper
|
||||
import com.android.systemui.shared.system.WindowManagerWrapper.*
|
||||
import java.io.PrintWriter
|
||||
|
||||
/**
|
||||
@@ -55,8 +57,7 @@ class TaskbarInsetsController(val context: TaskbarActivityContext): LoggableTask
|
||||
this.controllers = controllers
|
||||
windowLayoutParams = context.windowLayoutParams
|
||||
|
||||
val wmWrapper: WindowManagerWrapper = getInstance()
|
||||
wmWrapper.setProvidesInsetsTypes(
|
||||
setProvidesInsetsTypes(
|
||||
windowLayoutParams,
|
||||
intArrayOf(
|
||||
ITYPE_EXTRA_NAVIGATION_BAR,
|
||||
@@ -108,10 +109,22 @@ class TaskbarInsetsController(val context: TaskbarActivityContext): LoggableTask
|
||||
}
|
||||
|
||||
/**
|
||||
* Called to update the touchable insets.
|
||||
* @see InsetsInfo.setTouchableInsets
|
||||
* Sets {@param providesInsetsTypes} as the inset types provided by {@param params}.
|
||||
* @param params The window layout params.
|
||||
* @param providesInsetsTypes The inset types we would like this layout params to provide.
|
||||
*/
|
||||
fun updateInsetsTouchability(insetsInfo: InsetsInfo) {
|
||||
fun setProvidesInsetsTypes(params: WindowManager.LayoutParams, providesInsetsTypes: IntArray) {
|
||||
params.providedInsets = arrayOfNulls<InsetsFrameProvider>(providesInsetsTypes.size);
|
||||
for (i in providesInsetsTypes.indices) {
|
||||
params.providedInsets[i] = InsetsFrameProvider(providesInsetsTypes[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called to update the touchable insets.
|
||||
* @see InternalInsetsInfo.setTouchableInsets
|
||||
*/
|
||||
fun updateInsetsTouchability(insetsInfo: ViewTreeObserver.InternalInsetsInfo) {
|
||||
insetsInfo.touchableRegion.setEmpty()
|
||||
// Always have nav buttons be touchable
|
||||
controllers.navbarButtonsViewController.addVisibleButtonsRegion(
|
||||
@@ -120,18 +133,18 @@ class TaskbarInsetsController(val context: TaskbarActivityContext): LoggableTask
|
||||
var insetsIsTouchableRegion = true
|
||||
if (context.dragLayer.alpha < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) {
|
||||
// Let touches pass through us.
|
||||
insetsInfo.setTouchableInsets(InsetsInfo.TOUCHABLE_INSETS_REGION)
|
||||
insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION)
|
||||
} else if (controllers.navbarButtonsViewController.isImeVisible) {
|
||||
insetsInfo.setTouchableInsets(InsetsInfo.TOUCHABLE_INSETS_REGION)
|
||||
insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION)
|
||||
} else if (!controllers.uiController.isTaskbarTouchable) {
|
||||
// Let touches pass through us.
|
||||
insetsInfo.setTouchableInsets(InsetsInfo.TOUCHABLE_INSETS_REGION)
|
||||
insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION)
|
||||
} else if (controllers.taskbarDragController.isSystemDragInProgress) {
|
||||
// Let touches pass through us.
|
||||
insetsInfo.setTouchableInsets(InsetsInfo.TOUCHABLE_INSETS_REGION)
|
||||
insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION)
|
||||
} else if (AbstractFloatingView.hasOpenView(context, TYPE_TASKBAR_ALL_APPS)) {
|
||||
// Let touches pass through us.
|
||||
insetsInfo.setTouchableInsets(InsetsInfo.TOUCHABLE_INSETS_REGION)
|
||||
insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION)
|
||||
} else if (controllers.taskbarViewController.areIconsVisible()
|
||||
|| AbstractFloatingView.hasOpenView(context, AbstractFloatingView.TYPE_ALL)
|
||||
|| context.isNavBarKidsModeActive
|
||||
@@ -139,15 +152,15 @@ class TaskbarInsetsController(val context: TaskbarActivityContext): LoggableTask
|
||||
// Taskbar has some touchable elements, take over the full taskbar area
|
||||
insetsInfo.setTouchableInsets(
|
||||
if (context.isTaskbarWindowFullscreen) {
|
||||
InsetsInfo.TOUCHABLE_INSETS_FRAME
|
||||
TOUCHABLE_INSETS_FRAME
|
||||
} else {
|
||||
insetsInfo.touchableRegion.set(contentRegion)
|
||||
InsetsInfo.TOUCHABLE_INSETS_REGION
|
||||
TOUCHABLE_INSETS_REGION
|
||||
}
|
||||
)
|
||||
insetsIsTouchableRegion = false
|
||||
} else {
|
||||
insetsInfo.setTouchableInsets(InsetsInfo.TOUCHABLE_INSETS_REGION)
|
||||
insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION)
|
||||
}
|
||||
context.excludeFromMagnificationRegion(insetsIsTouchableRegion)
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ import android.annotation.Nullable;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.util.Log;
|
||||
import android.view.InsetsController;
|
||||
import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
|
||||
@@ -46,7 +47,6 @@ import com.android.launcher3.testing.shared.TestProtocol;
|
||||
import com.android.launcher3.util.MultiValueAlpha.AlphaProperty;
|
||||
import com.android.quickstep.AnimatedFloat;
|
||||
import com.android.quickstep.SystemUiProxy;
|
||||
import com.android.systemui.shared.system.WindowManagerWrapper;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Arrays;
|
||||
@@ -96,7 +96,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
* How long to stash/unstash when manually invoked via long press.
|
||||
*/
|
||||
public static final long TASKBAR_STASH_DURATION =
|
||||
WindowManagerWrapper.ANIMATION_DURATION_RESIZE;
|
||||
InsetsController.ANIMATION_DURATION_RESIZE;
|
||||
|
||||
/**
|
||||
* How long to stash/unstash when keyboard is appearing/disappearing.
|
||||
|
||||
@@ -17,15 +17,16 @@ package com.android.launcher3.taskbar.allapps;
|
||||
|
||||
import static android.view.KeyEvent.ACTION_UP;
|
||||
import static android.view.KeyEvent.KEYCODE_BACK;
|
||||
import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
|
||||
|
||||
import static com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo.TOUCHABLE_INSETS_REGION;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Insets;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.ViewTreeObserver.OnComputeInternalInsetsListener;
|
||||
import android.view.WindowInsets;
|
||||
|
||||
import com.android.launcher3.AbstractFloatingView;
|
||||
@@ -47,9 +48,6 @@ import com.android.launcher3.testing.shared.TestProtocol;
|
||||
import com.android.launcher3.util.OnboardingPrefs;
|
||||
import com.android.launcher3.util.TouchController;
|
||||
import com.android.launcher3.views.BaseDragLayer;
|
||||
import com.android.systemui.shared.system.ViewTreeObserverWrapper;
|
||||
import com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo;
|
||||
import com.android.systemui.shared.system.ViewTreeObserverWrapper.OnComputeInsetsListener;
|
||||
|
||||
/**
|
||||
* Window context for the taskbar all apps overlay.
|
||||
@@ -163,7 +161,7 @@ class TaskbarAllAppsContext extends BaseTaskbarContext {
|
||||
|
||||
/** Root drag layer for this context. */
|
||||
private static class TaskbarAllAppsDragLayer extends
|
||||
BaseDragLayer<TaskbarAllAppsContext> implements OnComputeInsetsListener {
|
||||
BaseDragLayer<TaskbarAllAppsContext> implements OnComputeInternalInsetsListener {
|
||||
|
||||
private TaskbarAllAppsDragLayer(Context context) {
|
||||
super(context, null, 1);
|
||||
@@ -174,14 +172,13 @@ class TaskbarAllAppsContext extends BaseTaskbarContext {
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
ViewTreeObserverWrapper.addOnComputeInsetsListener(
|
||||
getViewTreeObserver(), this);
|
||||
getViewTreeObserver().addOnComputeInternalInsetsListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
ViewTreeObserverWrapper.removeOnComputeInsetsListener(this);
|
||||
getViewTreeObserver().removeOnComputeInternalInsetsListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -207,7 +204,7 @@ class TaskbarAllAppsContext extends BaseTaskbarContext {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComputeInsets(InsetsInfo inoutInfo) {
|
||||
public void onComputeInternalInsets(ViewTreeObserver.InternalInsetsInfo inoutInfo) {
|
||||
if (mActivity.mDragController.isSystemDragInProgress()) {
|
||||
inoutInfo.touchableRegion.setEmpty();
|
||||
inoutInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
|
||||
|
||||
@@ -139,7 +139,6 @@ import com.android.quickstep.views.OverviewActionsView;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.quickstep.views.TaskView;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.ActivityOptionsCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import com.android.systemui.unfold.UnfoldTransitionFactory;
|
||||
import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
|
||||
@@ -800,8 +799,8 @@ public class QuickstepLauncher extends Launcher {
|
||||
? mAppTransitionManager.getActivityLaunchOptions(v)
|
||||
: super.getActivityLaunchOptions(v, item);
|
||||
if (mLastTouchUpTime > 0) {
|
||||
ActivityOptionsCompat.setLauncherSourceInfo(
|
||||
activityOptions.options, mLastTouchUpTime);
|
||||
activityOptions.options.setSourceInfo(ActivityOptions.SourceInfo.TYPE_LAUNCHER,
|
||||
mLastTouchUpTime);
|
||||
}
|
||||
activityOptions.options.setSplashScreenStyle(SplashScreen.SPLASH_SCREEN_STYLE_ICON);
|
||||
activityOptions.options.setLaunchDisplayId(
|
||||
|
||||
@@ -87,6 +87,7 @@ import android.window.PictureInPictureSurfaceTransaction;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.UiThread;
|
||||
|
||||
import com.android.internal.util.LatencyTracker;
|
||||
import com.android.launcher3.AbstractFloatingView;
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.R;
|
||||
@@ -127,7 +128,6 @@ import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.InputConsumerController;
|
||||
import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
|
||||
import com.android.systemui.shared.system.LatencyTrackerCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListener;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListeners;
|
||||
@@ -622,8 +622,8 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
|
||||
Object traceToken = TraceHelper.INSTANCE.beginSection("logToggleRecents",
|
||||
TraceHelper.FLAG_IGNORE_BINDERS);
|
||||
LatencyTrackerCompat.logToggleRecents(
|
||||
mContext, (int) (mLauncherFrameDrawnTime - mTouchTimeMs));
|
||||
LatencyTracker.getInstance(mContext).logAction(LatencyTracker.ACTION_TOGGLE_RECENTS,
|
||||
(int) (mLauncherFrameDrawnTime - mTouchTimeMs));
|
||||
TraceHelper.INSTANCE.endSection(traceToken);
|
||||
|
||||
// This method is only called when STATE_GESTURE_STARTED is set, so we can enable the
|
||||
|
||||
@@ -20,6 +20,7 @@ import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.KeyguardManager;
|
||||
import android.os.Build;
|
||||
import android.os.Process;
|
||||
import android.os.RemoteException;
|
||||
@@ -31,7 +32,6 @@ import com.android.launcher3.util.LooperExecutor;
|
||||
import com.android.launcher3.util.SplitConfigurationOptions;
|
||||
import com.android.quickstep.util.GroupTask;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.systemui.shared.system.KeyguardManagerCompat;
|
||||
import com.android.wm.shell.recents.IRecentTasksListener;
|
||||
import com.android.wm.shell.util.GroupedRecentTaskInfo;
|
||||
import com.android.wm.shell.util.SplitBounds;
|
||||
@@ -49,7 +49,7 @@ public class RecentTasksList {
|
||||
|
||||
private static final TaskLoadResult INVALID_RESULT = new TaskLoadResult(-1, false, 0);
|
||||
|
||||
private final KeyguardManagerCompat mKeyguardManager;
|
||||
private final KeyguardManager mKeyguardManager;
|
||||
private final LooperExecutor mMainThreadExecutor;
|
||||
private final SystemUiProxy mSysUiProxy;
|
||||
|
||||
@@ -66,8 +66,8 @@ public class RecentTasksList {
|
||||
// Tasks are stored in order of least recently launched to most recently launched.
|
||||
private ArrayList<ActivityManager.RunningTaskInfo> mRunningTasks;
|
||||
|
||||
public RecentTasksList(LooperExecutor mainThreadExecutor,
|
||||
KeyguardManagerCompat keyguardManager, SystemUiProxy sysUiProxy) {
|
||||
public RecentTasksList(LooperExecutor mainThreadExecutor, KeyguardManager keyguardManager,
|
||||
SystemUiProxy sysUiProxy) {
|
||||
mMainThreadExecutor = mainThreadExecutor;
|
||||
mKeyguardManager = keyguardManager;
|
||||
mChangeId = 1;
|
||||
|
||||
@@ -30,6 +30,7 @@ import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MOD
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.app.ActivityOptions;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
@@ -77,7 +78,6 @@ import com.android.quickstep.util.TISBindHelper;
|
||||
import com.android.quickstep.views.OverviewActionsView;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.quickstep.views.TaskView;
|
||||
import com.android.systemui.shared.system.ActivityOptionsCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationAdapterCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
@@ -263,8 +263,10 @@ public final class RecentsActivity extends StatefulActivity<RecentsState> {
|
||||
wrapper, RECENTS_LAUNCH_DURATION,
|
||||
RECENTS_LAUNCH_DURATION - STATUS_BAR_TRANSITION_DURATION
|
||||
- STATUS_BAR_TRANSITION_PRE_DELAY, getIApplicationThread());
|
||||
final ActivityOptionsWrapper activityOptions = new ActivityOptionsWrapper(
|
||||
ActivityOptionsCompat.makeRemoteAnimation(adapterCompat),
|
||||
final ActivityOptions options = ActivityOptions.makeRemoteAnimation(
|
||||
adapterCompat.getWrapped(),
|
||||
adapterCompat.getRemoteTransition().getTransition());
|
||||
final ActivityOptionsWrapper activityOptions = new ActivityOptionsWrapper(options,
|
||||
onEndCallback);
|
||||
activityOptions.options.setSplashScreenStyle(SplashScreen.SPLASH_SCREEN_STYLE_ICON);
|
||||
activityOptions.options.setLaunchDisplayId(
|
||||
@@ -406,8 +408,10 @@ public final class RecentsActivity extends StatefulActivity<RecentsState> {
|
||||
RemoteAnimationAdapterCompat adapterCompat =
|
||||
new RemoteAnimationAdapterCompat(runner, HOME_APPEAR_DURATION, 0,
|
||||
getIApplicationThread());
|
||||
startHomeIntentSafely(this,
|
||||
ActivityOptionsCompat.makeRemoteAnimation(adapterCompat).toBundle());
|
||||
ActivityOptions options = ActivityOptions.makeRemoteAnimation(
|
||||
adapterCompat.getWrapped(),
|
||||
adapterCompat.getRemoteTransition().getTransition());
|
||||
startHomeIntentSafely(this, options.toBundle());
|
||||
}
|
||||
|
||||
private final RemoteAnimationFactory mAnimationToHomeFactory =
|
||||
|
||||
@@ -22,6 +22,7 @@ import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.KeyguardManager;
|
||||
import android.content.ComponentCallbacks2;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -40,7 +41,6 @@ import com.android.quickstep.util.TaskVisualsChangeListener;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.KeyguardManagerCompat;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListener;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListeners;
|
||||
|
||||
@@ -75,7 +75,8 @@ public class RecentsModel implements IconChangeListener, TaskStackChangeListener
|
||||
private RecentsModel(Context context) {
|
||||
mContext = context;
|
||||
mTaskList = new RecentTasksList(MAIN_EXECUTOR,
|
||||
new KeyguardManagerCompat(context), SystemUiProxy.INSTANCE.get(context));
|
||||
context.getSystemService(KeyguardManager.class),
|
||||
SystemUiProxy.INSTANCE.get(context));
|
||||
|
||||
IconProvider iconProvider = new IconProvider(context);
|
||||
mIconCache = new TaskIconCache(context, RECENTS_MODEL_EXECUTOR, iconProvider);
|
||||
|
||||
@@ -41,7 +41,6 @@ import com.android.quickstep.util.ActiveGestureLog;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.ActivityOptionsCompat;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import com.android.systemui.shared.system.RemoteTransitionCompat;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListener;
|
||||
@@ -233,7 +232,8 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
|
||||
RemoteTransitionCompat transition = new RemoteTransitionCompat(mCallbacks,
|
||||
mController != null ? mController.getController() : null,
|
||||
mCtx.getIApplicationThread());
|
||||
final ActivityOptions options = ActivityOptionsCompat.makeRemoteTransition(transition);
|
||||
final ActivityOptions options = ActivityOptions.makeRemoteTransition(
|
||||
transition.getTransition());
|
||||
// Allowing to pause Home if Home is top activity and Recents is not Home. So when user
|
||||
// start home when recents animation is playing, the home activity can be resumed again
|
||||
// to let the transition controller collect Home activity.
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.quickstep;
|
||||
|
||||
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
|
||||
|
||||
import static com.android.launcher3.config.FeatureFlags.ENABLE_OVERVIEW_SELECTIONS;
|
||||
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SYSTEM_SHORTCUT_FREE_FORM_TAP;
|
||||
|
||||
@@ -26,9 +28,12 @@ import android.graphics.Color;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.RemoteException;
|
||||
import android.os.SystemProperties;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.WindowInsets;
|
||||
import android.view.WindowManagerGlobal;
|
||||
import android.window.SplashScreen;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -52,8 +57,6 @@ import com.android.systemui.shared.recents.view.AppTransitionAnimationSpecCompat
|
||||
import com.android.systemui.shared.recents.view.AppTransitionAnimationSpecsFuture;
|
||||
import com.android.systemui.shared.recents.view.RecentsTransition;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.ActivityOptionsCompat;
|
||||
import com.android.systemui.shared.system.WindowManagerWrapper;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -121,6 +124,7 @@ public interface TaskShortcutFactory {
|
||||
}
|
||||
|
||||
class FreeformSystemShortcut extends SystemShortcut<BaseDraggingActivity> {
|
||||
private static final String TAG = "FreeformSystemShortcut";
|
||||
|
||||
private Handler mHandler;
|
||||
|
||||
@@ -193,7 +197,7 @@ public interface TaskShortcutFactory {
|
||||
taskId, thumbnail, taskBounds));
|
||||
}
|
||||
};
|
||||
WindowManagerWrapper.getInstance().overridePendingAppTransitionMultiThumbFuture(
|
||||
overridePendingAppTransitionMultiThumbFuture(
|
||||
future, animStartedListener, mHandler, true /* scaleUp */,
|
||||
taskKey.displayId);
|
||||
mTarget.getStatsLogManager().logger().withItemInfo(mTaskView.getItemInfo())
|
||||
@@ -201,8 +205,27 @@ public interface TaskShortcutFactory {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides a pending app transition.
|
||||
*/
|
||||
private void overridePendingAppTransitionMultiThumbFuture(
|
||||
AppTransitionAnimationSpecsFuture animationSpecFuture, Runnable animStartedCallback,
|
||||
Handler animStartedCallbackHandler, boolean scaleUp, int displayId) {
|
||||
try {
|
||||
WindowManagerGlobal.getWindowManagerService()
|
||||
.overridePendingAppTransitionMultiThumbFuture(
|
||||
animationSpecFuture.getFuture(),
|
||||
RecentsTransition.wrapStartedListener(animStartedCallbackHandler,
|
||||
animStartedCallback), scaleUp, displayId);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed to override pending app transition (multi-thumbnail future): ",
|
||||
e);
|
||||
}
|
||||
}
|
||||
|
||||
private ActivityOptions makeLaunchOptions(Activity activity) {
|
||||
ActivityOptions activityOptions = ActivityOptionsCompat.makeFreeformOptions();
|
||||
ActivityOptions activityOptions = ActivityOptions.makeBasic();
|
||||
activityOptions.setLaunchWindowingMode(WINDOWING_MODE_FREEFORM);
|
||||
// Arbitrary bounds only because freeform is in dev mode right now
|
||||
final View decorView = activity.getWindow().getDecorView();
|
||||
final WindowInsets insets = decorView.getRootWindowInsets();
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package com.android.quickstep.util;
|
||||
|
||||
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
|
||||
|
||||
import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
|
||||
import static com.android.launcher3.states.RotationHelper.deltaRotation;
|
||||
import static com.android.launcher3.touch.PagedOrientationHandler.MATRIX_POST_TRANSLATE;
|
||||
@@ -25,7 +27,6 @@ import static com.android.launcher3.util.SplitConfigurationOptions.StagePosition
|
||||
import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS;
|
||||
import static com.android.quickstep.util.RecentsOrientedState.postDisplayRotation;
|
||||
import static com.android.quickstep.util.RecentsOrientedState.preDisplayRotation;
|
||||
import static com.android.systemui.shared.system.WindowManagerWrapper.WINDOWING_MODE_FULLSCREEN;
|
||||
|
||||
import android.animation.TimeInterpolator;
|
||||
import android.content.Context;
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
|
||||
package com.android.quickstep.views;
|
||||
|
||||
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
|
||||
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS;
|
||||
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS;
|
||||
|
||||
import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
|
||||
import static com.android.systemui.shared.system.WindowManagerWrapper.WINDOWING_MODE_FULLSCREEN;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
|
||||
@@ -48,6 +48,7 @@ import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.FloatProperty;
|
||||
import android.util.Log;
|
||||
@@ -99,7 +100,6 @@ import com.android.quickstep.views.TaskThumbnailView.PreviewPositionHelper;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.ActivityOptionsCompat;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
|
||||
@@ -659,12 +659,12 @@ public class TaskView extends FrameLayout implements Reusable {
|
||||
TestProtocol.SEQUENCE_MAIN, "startActivityFromRecentsAsync", mTask);
|
||||
|
||||
// Indicate success once the system has indicated that the transition has started
|
||||
ActivityOptions opts = ActivityOptionsCompat.makeCustomAnimation(
|
||||
getContext(), 0, 0, () -> callback.accept(true), MAIN_EXECUTOR.getHandler());
|
||||
ActivityOptions opts = makeCustomAnimation(getContext(), 0, 0,
|
||||
() -> callback.accept(true), MAIN_EXECUTOR.getHandler());
|
||||
opts.setLaunchDisplayId(
|
||||
getDisplay() == null ? DEFAULT_DISPLAY : getDisplay().getDisplayId());
|
||||
if (freezeTaskList) {
|
||||
ActivityOptionsCompat.setFreezeRecentTasksList(opts);
|
||||
opts.setFreezeRecentTasksReordering();
|
||||
}
|
||||
// TODO(b/202826469): Replace setSplashScreenStyle with setDisableStartingWindow.
|
||||
opts.setSplashScreenStyle(mSnapshotView.shouldShowSplashView()
|
||||
@@ -686,6 +686,20 @@ public class TaskView extends FrameLayout implements Reusable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns ActivityOptions for overriding task transition animation.
|
||||
*/
|
||||
private ActivityOptions makeCustomAnimation(Context context, int enterResId,
|
||||
int exitResId, final Runnable callback, final Handler callbackHandler) {
|
||||
return ActivityOptions.makeCustomTaskAnimation(context, enterResId, exitResId,
|
||||
callbackHandler,
|
||||
elapsedRealTime -> {
|
||||
if (callback != null) {
|
||||
callbackHandler.post(callback);
|
||||
}
|
||||
}, null /* finishedListener */);
|
||||
}
|
||||
|
||||
/**
|
||||
* Launch of the current task (both live and inactive tasks) with an animation.
|
||||
*/
|
||||
|
||||
@@ -26,12 +26,12 @@ import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.app.KeyguardManager;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.launcher3.util.LooperExecutor;
|
||||
import com.android.quickstep.util.GroupTask;
|
||||
import com.android.systemui.shared.system.KeyguardManagerCompat;
|
||||
import com.android.wm.shell.util.GroupedRecentTaskInfo;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -56,8 +56,8 @@ public class RecentTasksListTest {
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
LooperExecutor mockMainThreadExecutor = mock(LooperExecutor.class);
|
||||
KeyguardManagerCompat mockKeyguardManagerCompat = mock(KeyguardManagerCompat.class);
|
||||
mRecentTasksList = new RecentTasksList(mockMainThreadExecutor, mockKeyguardManagerCompat,
|
||||
KeyguardManager mockKeyguardManager = mock(KeyguardManager.class);
|
||||
mRecentTasksList = new RecentTasksList(mockMainThreadExecutor, mockKeyguardManager,
|
||||
mockSystemUiProxy);
|
||||
}
|
||||
|
||||
|
||||
@@ -68,7 +68,6 @@ import androidx.test.uiautomator.Until;
|
||||
import com.android.launcher3.testing.shared.ResourceUtils;
|
||||
import com.android.launcher3.testing.shared.TestInformationRequest;
|
||||
import com.android.launcher3.testing.shared.TestProtocol;
|
||||
import com.android.systemui.shared.system.ContextUtils;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
|
||||
import org.junit.Assert;
|
||||
@@ -264,7 +263,7 @@ public final class LauncherInstrumentation {
|
||||
SystemClock.sleep(5000);
|
||||
} else {
|
||||
try {
|
||||
final int userId = ContextUtils.getUserId(getContext());
|
||||
final int userId = getContext().getUserId();
|
||||
final String launcherPidCommand = "pidof " + pi.packageName;
|
||||
final String initialPid = mDevice.executeShellCommand(launcherPidCommand)
|
||||
.replaceAll("\\s", "");
|
||||
|
||||
Reference in New Issue
Block a user