Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 50df43e3 authored by Chris Li's avatar Chris Li
Browse files

Update WM Jetpack impl to use WindowMetrics

Before, SettingsExtensionImpl#getWindowLayoutInfo returned empty window
info when Activity was not attached. Now, it returns the correct info
after Activity create.

Test: atest CtsWindowManagerJetpackTestCases:ExtensionTest
Fixes: 152534741
Fixes: 155121604
Fixes: 155692339
Change-Id: Ieded3b70ff14aba03581bf7501cc5e923b5eed33
parent 0a64cfbb
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -30,6 +30,8 @@ import android.os.IBinder;
import android.view.DisplayInfo;
import android.view.Surface;

import androidx.annotation.Nullable;

/**
 * Toolkit class for calculation of the display feature bounds within the window.
 * NOTE: This sample implementation only works for Activity windows, because there is no public APIs
@@ -84,7 +86,7 @@ class ExtensionHelper {

    /** Transform rectangle from absolute coordinate space to the window coordinate space. */
    static void transformToWindowSpaceRect(Rect inOutRect, IBinder windowToken) {
        Rect windowRect = getWindowRect(windowToken);
        Rect windowRect = getWindowBounds(windowToken);
        if (windowRect == null) {
            inOutRect.setEmpty();
            return;
@@ -101,13 +103,12 @@ class ExtensionHelper {
     * Get the current window bounds in absolute coordinates.
     * NOTE: Only works with Activity windows.
     */
    private static Rect getWindowRect(IBinder windowToken) {
    @Nullable
    private static Rect getWindowBounds(IBinder windowToken) {
        Activity activity = ActivityThread.currentActivityThread().getActivity(windowToken);
        final Rect windowRect = new Rect();
        if (activity != null) {
            activity.getWindow().getDecorView().getWindowDisplayFrame(windowRect);
        }
        return windowRect;
        return activity != null
                ? activity.getWindowManager().getCurrentWindowMetrics().getBounds()
                : null;
    }

    /**