diff options
| author | 2023-08-24 12:36:41 +0000 | |
|---|---|---|
| committer | 2023-08-24 12:36:41 +0000 | |
| commit | ab6e84bc92ed34d5967deafcd845d29b7c3005a2 (patch) | |
| tree | 1318994a8f2190dccdb11e302a621df06bb326a5 | |
| parent | 71dc75d9f6139d8f50273daad5870f9c00362e3b (diff) | |
| parent | a8179dbaafbfacd2c2a167a24b9f7a452ef481d2 (diff) | |
Merge "Use display transform in WindowInfosListenerForTest" into main
| -rw-r--r-- | core/java/android/window/WindowInfosListenerForTest.java | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/core/java/android/window/WindowInfosListenerForTest.java b/core/java/android/window/WindowInfosListenerForTest.java index 6e9f04482313..35ce72620d09 100644 --- a/core/java/android/window/WindowInfosListenerForTest.java +++ b/core/java/android/window/WindowInfosListenerForTest.java @@ -22,11 +22,13 @@ import android.annotation.RequiresPermission; import android.annotation.TestApi; import android.graphics.Matrix; import android.graphics.Rect; +import android.graphics.RectF; import android.os.IBinder; import android.os.InputConfig; import android.util.ArrayMap; import android.util.Log; import android.util.Pair; +import android.util.SparseArray; import android.view.InputWindowHandle; import java.util.ArrayList; @@ -137,13 +139,13 @@ public class WindowInfosListenerForTest { "Exception thrown while waiting for listener to be called with " + "initial state"); } - consumer.accept(buildWindowInfos(windowHandles)); + consumer.accept(buildWindowInfos(windowHandles, displayInfos)); } }; mListeners.put(consumer, listener); Pair<InputWindowHandle[], WindowInfosListener.DisplayInfo[]> initialState = listener.register(); - consumer.accept(buildWindowInfos(initialState.first)); + consumer.accept(buildWindowInfos(initialState.first, initialState.second)); calledWithInitialState.countDown(); } @@ -158,11 +160,29 @@ public class WindowInfosListenerForTest { listener.unregister(); } - private static List<WindowInfo> buildWindowInfos(InputWindowHandle[] windowHandles) { + private static List<WindowInfo> buildWindowInfos( + InputWindowHandle[] windowHandles, WindowInfosListener.DisplayInfo[] displayInfos) { var windowInfos = new ArrayList<WindowInfo>(windowHandles.length); + + var displayInfoById = new SparseArray<WindowInfosListener.DisplayInfo>(displayInfos.length); + for (var displayInfo : displayInfos) { + displayInfoById.put(displayInfo.mDisplayId, displayInfo); + } + + var tmp = new RectF(); for (var handle : windowHandles) { + var bounds = new Rect(handle.frame); + + // Transform bounds from physical display coordinates to logical display coordinates. + var display = displayInfoById.get(handle.displayId); + if (display != null) { + tmp.set(bounds); + display.mTransform.mapRect(tmp); + tmp.round(bounds); + } + windowInfos.add(new WindowInfo(handle.getWindowToken(), handle.name, handle.displayId, - handle.frame, handle.inputConfig, handle.transform)); + bounds, handle.inputConfig, handle.transform)); } return windowInfos; } |