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

Commit 4391ab1e authored by Chavi Weingarten's avatar Chavi Weingarten Committed by Automerger Merge Worker
Browse files

Merge "Added onDisplayAreaChanged and unregister for DisplayAreaOrganizer"...

Merge "Added onDisplayAreaChanged and unregister for DisplayAreaOrganizer" into rvc-dev am: cd220824 am: cedb2e42 am: 89c07301

Change-Id: I25bf648b77579a3808019c7c6f81b4b97ae219e9
parents c931df6f 89c07301
Loading
Loading
Loading
Loading
+22 −0
Original line number Original line Diff line number Diff line
@@ -52,10 +52,27 @@ public class DisplayAreaOrganizer extends WindowOrganizer {
        }
        }
    }
    }


    /**
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
    public void unregisterOrganizer() {
        try {
            getController().unregisterOrganizer(mInterface);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    public void onDisplayAreaAppeared(@NonNull DisplayAreaInfo displayAreaInfo) {}
    public void onDisplayAreaAppeared(@NonNull DisplayAreaInfo displayAreaInfo) {}


    public void onDisplayAreaVanished(@NonNull DisplayAreaInfo displayAreaInfo) {}
    public void onDisplayAreaVanished(@NonNull DisplayAreaInfo displayAreaInfo) {}


    /**
     * @hide
     */
    public void onDisplayAreaInfoChanged(@NonNull DisplayAreaInfo displayAreaInfo) {}

    private final IDisplayAreaOrganizer mInterface = new IDisplayAreaOrganizer.Stub() {
    private final IDisplayAreaOrganizer mInterface = new IDisplayAreaOrganizer.Stub() {


        @Override
        @Override
@@ -67,6 +84,11 @@ public class DisplayAreaOrganizer extends WindowOrganizer {
        public void onDisplayAreaVanished(@NonNull DisplayAreaInfo displayAreaInfo) {
        public void onDisplayAreaVanished(@NonNull DisplayAreaInfo displayAreaInfo) {
            DisplayAreaOrganizer.this.onDisplayAreaVanished(displayAreaInfo);
            DisplayAreaOrganizer.this.onDisplayAreaVanished(displayAreaInfo);
        }
        }

        @Override
        public void onDisplayAreaInfoChanged(@NonNull DisplayAreaInfo displayAreaInfo) {
            DisplayAreaOrganizer.this.onDisplayAreaInfoChanged(displayAreaInfo);
        }
    };
    };


    private static IDisplayAreaOrganizerController getController() {
    private static IDisplayAreaOrganizerController getController() {
+1 −0
Original line number Original line Diff line number Diff line
@@ -25,4 +25,5 @@ import android.window.DisplayAreaInfo;
oneway interface IDisplayAreaOrganizer {
oneway interface IDisplayAreaOrganizer {
    void onDisplayAreaAppeared(in DisplayAreaInfo displayAreaInfo);
    void onDisplayAreaAppeared(in DisplayAreaInfo displayAreaInfo);
    void onDisplayAreaVanished(in DisplayAreaInfo displayAreaInfo);
    void onDisplayAreaVanished(in DisplayAreaInfo displayAreaInfo);
    void onDisplayAreaInfoChanged(in DisplayAreaInfo displayAreaInfo);
}
}
+5 −0
Original line number Original line Diff line number Diff line
@@ -23,4 +23,9 @@ interface IDisplayAreaOrganizerController {


    /** Register a DisplayAreaOrganizer to manage display areas for a given feature. */
    /** Register a DisplayAreaOrganizer to manage display areas for a given feature. */
    void registerOrganizer(in IDisplayAreaOrganizer organizer, int displayAreaFeature);
    void registerOrganizer(in IDisplayAreaOrganizer organizer, int displayAreaFeature);

    /**
     * Unregisters a previously registered display area organizer.
     */
    void unregisterOrganizer(in IDisplayAreaOrganizer organizer);
}
}
+9 −0
Original line number Original line Diff line number Diff line
@@ -31,6 +31,7 @@ import static com.android.server.wm.DisplayAreaProto.WINDOW_CONTAINER;
import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ORIENTATION;
import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ORIENTATION;
import static com.android.server.wm.WindowContainerChildProto.DISPLAY_AREA;
import static com.android.server.wm.WindowContainerChildProto.DISPLAY_AREA;


import android.content.res.Configuration;
import android.graphics.Rect;
import android.graphics.Rect;
import android.util.proto.ProtoOutputStream;
import android.util.proto.ProtoOutputStream;
import android.window.DisplayAreaInfo;
import android.window.DisplayAreaInfo;
@@ -154,6 +155,14 @@ public class DisplayArea<T extends WindowContainer> extends WindowContainer<T> {
        mOrganizerController.onDisplayAreaVanished(mOrganizer, this);
        mOrganizerController.onDisplayAreaVanished(mOrganizer, this);
    }
    }


    @Override
    public void onConfigurationChanged(Configuration newParentConfig) {
        super.onConfigurationChanged(newParentConfig);
        if (mOrganizer != null) {
            mOrganizerController.onDisplayAreaInfoChanged(mOrganizer, this);
        }
    }

    @Override
    @Override
    boolean isOrganized() {
    boolean isOrganized() {
        return mOrganizer != null;
        return mOrganizer != null;
+27 −0
Original line number Original line Diff line number Diff line
@@ -92,6 +92,25 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl
        }
        }
    }
    }


    @Override
    public void unregisterOrganizer(IDisplayAreaOrganizer organizer) {
        enforceStackPermission("unregisterTaskOrganizer()");
        final long origId = Binder.clearCallingIdentity();
        try {
            synchronized (mGlobalLock) {
                mOrganizersByFeatureIds.entrySet().removeIf(
                        entry -> entry.getValue().asBinder() == organizer.asBinder());

                mService.mRootWindowContainer.forAllDisplayAreas((da) -> {
                    if (da.mOrganizer != organizer) return;
                    da.setOrganizer(null);
                });
            }
        } finally {
            Binder.restoreCallingIdentity(origId);
        }
    }

    void onDisplayAreaAppeared(IDisplayAreaOrganizer organizer, DisplayArea da) {
    void onDisplayAreaAppeared(IDisplayAreaOrganizer organizer, DisplayArea da) {
        try {
        try {
            organizer.onDisplayAreaAppeared(da.getDisplayAreaInfo());
            organizer.onDisplayAreaAppeared(da.getDisplayAreaInfo());
@@ -107,4 +126,12 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl
            // Oh well...
            // Oh well...
        }
        }
    }
    }

    void onDisplayAreaInfoChanged(IDisplayAreaOrganizer organizer, DisplayArea da) {
        try {
            organizer.onDisplayAreaInfoChanged(da.getDisplayAreaInfo());
        } catch (RemoteException e) {
            // Oh well...
        }
    }
}
}
Loading