summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlumark <lumark@google.com>2018-11-20 15:24:05 +0800
committerlumark <lumark@google.com>2018-11-27 20:36:08 +0800
commita483f31ce80f1f12fb93e956702fa74ba6ba7bc0 (patch)
treeedbd7c96eb80104d418d2c4d28ec795bfcd24103
parent509d06a6415b9f6a628d3ebac9f7047de8f7d34c (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
-rw-r--r--config/boot-image-profile.txt4
-rw-r--r--config/hiddenapi-vendor-list.txt4
-rw-r--r--core/java/android/view/IWindowManager.aidl5
-rw-r--r--packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsView.java3
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java10
-rw-r--r--services/art-profile2
-rw-r--r--services/core/java/com/android/server/wm/AppWindowContainerController.java4
-rw-r--r--services/core/java/com/android/server/wm/WindowAnimator.java5
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java26
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);
}
}