diff options
author | lumark <lumark@google.com> | 2018-11-20 15:24:05 +0800 |
---|---|---|
committer | lumark <lumark@google.com> | 2018-11-27 20:36:08 +0800 |
commit | a483f31ce80f1f12fb93e956702fa74ba6ba7bc0 (patch) | |
tree | edbd7c96eb80104d418d2c4d28ec795bfcd24103 | |
parent | 509d06a6415b9f6a628d3ebac9f7047de8f7d34c (diff) |
Add displayId for WMS override pending transition APIs.
1) For sysui or launcher used APIs to support multi-display:
- overridePendingAppTransitionMultiThumbFuture
- overridePendingAppTransitionRemote
2) Modify WindowAnimator pending layout change debug log for all displays.
Bug: 119530958
Test: atest ActivityManagerMultiDisplayTests
Test: atest SystemUITests
Change-Id: I46a118a21b4df42c0d1767b77d838956a53262d3
9 files changed, 35 insertions, 28 deletions
diff --git a/config/boot-image-profile.txt b/config/boot-image-profile.txt index 2dcf50fd680c..6174128ae12f 100644 --- a/config/boot-image-profile.txt +++ b/config/boot-image-profile.txt @@ -32940,8 +32940,8 @@ HSPLandroid/view/IWindowManager;->isViewServerRunning()Z HSPLandroid/view/IWindowManager;->isWindowTraceEnabled()Z HSPLandroid/view/IWindowManager;->lockNow(Landroid/os/Bundle;)V HSPLandroid/view/IWindowManager;->openSession(Landroid/view/IWindowSessionCallback;Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;)Landroid/view/IWindowSession; -HSPLandroid/view/IWindowManager;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;Z)V -HSPLandroid/view/IWindowManager;->overridePendingAppTransitionRemote(Landroid/view/RemoteAnimationAdapter;)V +HSPLandroid/view/IWindowManager;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;Z;I)V +HSPLandroid/view/IWindowManager;->overridePendingAppTransitionRemote(Landroid/view/RemoteAnimationAdapter;I)V HSPLandroid/view/IWindowManager;->prepareAppTransition(IZ)V HSPLandroid/view/IWindowManager;->reenableKeyguard(Landroid/os/IBinder;)V HSPLandroid/view/IWindowManager;->refreshScreenCaptureDisabled(I)V diff --git a/config/hiddenapi-vendor-list.txt b/config/hiddenapi-vendor-list.txt index 575ba340f52a..a21fa3063f17 100644 --- a/config/hiddenapi-vendor-list.txt +++ b/config/hiddenapi-vendor-list.txt @@ -147,8 +147,8 @@ Landroid/view/IWindowManager;->createInputConsumer(Landroid/os/IBinder;Ljava/lan Landroid/view/IWindowManager;->destroyInputConsumer(Ljava/lang/String;I)Z Landroid/view/IWindowManager;->endProlongedAnimations()V Landroid/view/IWindowManager;->getStableInsets(ILandroid/graphics/Rect;)V -Landroid/view/IWindowManager;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;Z)V -Landroid/view/IWindowManager;->overridePendingAppTransitionRemote(Landroid/view/RemoteAnimationAdapter;)V +Landroid/view/IWindowManager;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;ZI)V +Landroid/view/IWindowManager;->overridePendingAppTransitionRemote(Landroid/view/RemoteAnimationAdapter;I)V Landroid/view/IWindowManager;->setNavBarVirtualKeyHapticFeedbackEnabled(Z)V Lcom/android/ims/ImsConfigListener;->onSetFeatureResponse(IIII)V Lcom/android/ims/internal/IImsCallSessionListener;->callSessionConferenceStateUpdated(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsConferenceState;)V diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl index 308a00020db9..61025688b229 100644 --- a/core/java/android/view/IWindowManager.aidl +++ b/core/java/android/view/IWindowManager.aidl @@ -96,8 +96,9 @@ interface IWindowManager */ void overridePendingAppTransitionMultiThumbFuture( IAppTransitionAnimationSpecsFuture specsFuture, IRemoteCallback startedCallback, - boolean scaleUp); - void overridePendingAppTransitionRemote(in RemoteAnimationAdapter remoteAnimationAdapter); + boolean scaleUp, int displayId); + void overridePendingAppTransitionRemote(in RemoteAnimationAdapter remoteAnimationAdapter, + int displayId); void executeAppTransition(); /** diff --git a/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsView.java index dfa38babd63b..8723fb9ea7c8 100644 --- a/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsView.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsView.java @@ -631,7 +631,8 @@ public class RecentsView extends FrameLayout { } }; WindowManagerWrapper.getInstance().overridePendingAppTransitionMultiThumbFuture( - future, animStartedListener, getHandler(), true /* scaleUp */); + future, animStartedListener, getHandler(), true /* scaleUp */, + getContext().getDisplayId()); MetricsLogger.action(mContext, MetricsEvent.ACTION_WINDOW_DOCK_DRAG_DROP, event.task.getTopComponent().flattenToShortString()); } else { diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java index 42e60aa7908b..c84d12f05cbe 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java @@ -100,23 +100,23 @@ public class WindowManagerWrapper { * Overrides a pending app transition. */ public void overridePendingAppTransitionMultiThumbFuture( - AppTransitionAnimationSpecsFuture animationSpecFuture, - Runnable animStartedCallback, Handler animStartedCallbackHandler, boolean scaleUp) { + AppTransitionAnimationSpecsFuture animationSpecFuture, Runnable animStartedCallback, + Handler animStartedCallbackHandler, boolean scaleUp, int displayId) { try { WindowManagerGlobal.getWindowManagerService() .overridePendingAppTransitionMultiThumbFuture(animationSpecFuture.getFuture(), RecentsTransition.wrapStartedListener(animStartedCallbackHandler, - animStartedCallback), scaleUp); + animStartedCallback), scaleUp, displayId); } catch (RemoteException e) { Log.w(TAG, "Failed to override pending app transition (multi-thumbnail future): ", e); } } public void overridePendingAppTransitionRemote( - RemoteAnimationAdapterCompat remoteAnimationAdapter) { + RemoteAnimationAdapterCompat remoteAnimationAdapter, int displayId) { try { WindowManagerGlobal.getWindowManagerService().overridePendingAppTransitionRemote( - remoteAnimationAdapter.getWrapped()); + remoteAnimationAdapter.getWrapped(), displayId); } catch (RemoteException e) { Log.w(TAG, "Failed to override pending app transition (remote): ", e); } diff --git a/services/art-profile b/services/art-profile index bdd49de3ef02..af9d7a91ad60 100644 --- a/services/art-profile +++ b/services/art-profile @@ -18849,7 +18849,7 @@ PLcom/android/server/wm/WindowManagerService;->onRectangleOnScreenRequested(Land PLcom/android/server/wm/WindowManagerService;->onSystemUiStarted()V PLcom/android/server/wm/WindowManagerService;->openSession(Landroid/view/IWindowSessionCallback;Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;)Landroid/view/IWindowSession; PLcom/android/server/wm/WindowManagerService;->overridePendingAppTransition(Ljava/lang/String;IILandroid/os/IRemoteCallback;)V -PLcom/android/server/wm/WindowManagerService;->overridePendingAppTransitionRemote(Landroid/view/RemoteAnimationAdapter;)V +PLcom/android/server/wm/WindowManagerService;->overridePendingAppTransitionRemote(Landroid/view/RemoteAnimationAdapter;I)V PLcom/android/server/wm/WindowManagerService;->performBootTimeout()V PLcom/android/server/wm/WindowManagerService;->performEnableScreen()V PLcom/android/server/wm/WindowManagerService;->postWindowRemoveCleanupLocked(Lcom/android/server/wm/WindowState;)V diff --git a/services/core/java/com/android/server/wm/AppWindowContainerController.java b/services/core/java/com/android/server/wm/AppWindowContainerController.java index bd1460ae4566..7fdea10e3e2c 100644 --- a/services/core/java/com/android/server/wm/AppWindowContainerController.java +++ b/services/core/java/com/android/server/wm/AppWindowContainerController.java @@ -41,8 +41,8 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import android.app.ActivityManager.TaskSnapshot; import android.app.ActivityOptions; -import android.content.Intent; import android.content.ComponentName; +import android.content.Intent; import android.content.res.CompatibilityInfo; import android.content.res.Configuration; import android.graphics.GraphicBuffer; @@ -846,7 +846,6 @@ public class AppWindowContainerController final IAppTransitionAnimationSpecsFuture specsFuture = pendingOptions.getSpecsFuture(); if (specsFuture != null) { - // TODO(multidisplay): Shouldn't be really used anymore from next CL. displayContent.mAppTransition.overridePendingAppTransitionMultiThumbFuture( specsFuture, pendingOptions.getOnAnimationStartListener(), animationType == ANIM_THUMBNAIL_ASPECT_SCALE_UP); @@ -875,7 +874,6 @@ public class AppWindowContainerController .overridePendingAppTransitionStartCrossProfileApps(); break; case ANIM_REMOTE_ANIMATION: - // TODO(multidisplay): Will pass displayId and adjust dependencies from next CL. displayContent.mAppTransition.overridePendingAppTransitionRemote( pendingOptions.getRemoteAnimationAdapter()); break; diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java index 449c4091f94c..b8a0739b9c83 100644 --- a/services/core/java/com/android/server/wm/WindowAnimator.java +++ b/services/core/java/com/android/server/wm/WindowAnimator.java @@ -16,8 +16,6 @@ package com.android.server.wm; -import static android.view.Display.DEFAULT_DISPLAY; - import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_TRACE; import static com.android.server.wm.WindowManagerDebugConfig.SHOW_TRANSACTIONS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; @@ -260,8 +258,7 @@ public class WindowAnimator { if (DEBUG_WINDOW_TRACE) { Slog.i(TAG, "!!! animate: exit mAnimating=" + mAnimating + " mBulkUpdateParams=" + Integer.toHexString(mBulkUpdateParams) - + " mPendingLayoutChanges(DEFAULT_DISPLAY)=" - + Integer.toHexString(getPendingLayoutChanges(DEFAULT_DISPLAY))); + + " hasPendingLayoutChanges=" + hasPendingLayoutChanges); } } } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 39a8465a31b3..63c68fdb422d 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2474,26 +2474,36 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void overridePendingAppTransitionMultiThumbFuture( IAppTransitionAnimationSpecsFuture specsFuture, IRemoteCallback callback, - boolean scaleUp) { + boolean scaleUp, int displayId) { synchronized (mGlobalLock) { - // TODO(multi-display): sysui using this api only support default display. - mRoot.getDisplayContent(DEFAULT_DISPLAY) - .mAppTransition.overridePendingAppTransitionMultiThumbFuture(specsFuture, + final DisplayContent displayContent = mRoot.getDisplayContent(displayId); + if (displayContent == null) { + Slog.w(TAG, "Attempted to call overridePendingAppTransitionMultiThumbFuture" + + " for the display " + displayId + " that does not exist."); + return; + } + displayContent.mAppTransition.overridePendingAppTransitionMultiThumbFuture(specsFuture, callback, scaleUp); } } @Override - public void overridePendingAppTransitionRemote(RemoteAnimationAdapter remoteAnimationAdapter) { + public void overridePendingAppTransitionRemote(RemoteAnimationAdapter remoteAnimationAdapter, + int displayId) { if (!checkCallingPermission(CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS, "overridePendingAppTransitionRemote()")) { throw new SecurityException( "Requires CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS permission"); } synchronized (mGlobalLock) { - // TODO(multi-display): sysui using this api only support default display. - mRoot.getDisplayContent(DEFAULT_DISPLAY) - .mAppTransition.overridePendingAppTransitionRemote(remoteAnimationAdapter); + final DisplayContent displayContent = mRoot.getDisplayContent(displayId); + if (displayContent == null) { + Slog.w(TAG, "Attempted to call overridePendingAppTransitionRemote" + + " for the display " + displayId + " that does not exist."); + return; + } + displayContent.mAppTransition.overridePendingAppTransitionRemote( + remoteAnimationAdapter); } } |