Added onDisplayAreaChanged and unregister for DisplayAreaOrganizer
Notify DisplayAreaOrganzier when the registered DisplayArea has changed.
Also added the ability to unregister a DisplayAreaOrganizer
Test: DisplayAreaOrganizerTest
Bug: 152114574
Change-Id: I9e8c537f8fe6aa7f5b007ef73535294be62dd806
diff --git a/core/java/android/window/DisplayAreaOrganizer.java b/core/java/android/window/DisplayAreaOrganizer.java
index 79999bb..f3ef5a0 100644
--- a/core/java/android/window/DisplayAreaOrganizer.java
+++ b/core/java/android/window/DisplayAreaOrganizer.java
@@ -52,10 +52,27 @@
}
}
+ /**
+ * @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 onDisplayAreaVanished(@NonNull DisplayAreaInfo displayAreaInfo) {}
+ /**
+ * @hide
+ */
+ public void onDisplayAreaInfoChanged(@NonNull DisplayAreaInfo displayAreaInfo) {}
+
private final IDisplayAreaOrganizer mInterface = new IDisplayAreaOrganizer.Stub() {
@Override
@@ -67,6 +84,11 @@
public void onDisplayAreaVanished(@NonNull DisplayAreaInfo displayAreaInfo) {
DisplayAreaOrganizer.this.onDisplayAreaVanished(displayAreaInfo);
}
+
+ @Override
+ public void onDisplayAreaInfoChanged(@NonNull DisplayAreaInfo displayAreaInfo) {
+ DisplayAreaOrganizer.this.onDisplayAreaInfoChanged(displayAreaInfo);
+ }
};
private static IDisplayAreaOrganizerController getController() {
diff --git a/core/java/android/window/IDisplayAreaOrganizer.aidl b/core/java/android/window/IDisplayAreaOrganizer.aidl
index 18d4e88..39a9235 100644
--- a/core/java/android/window/IDisplayAreaOrganizer.aidl
+++ b/core/java/android/window/IDisplayAreaOrganizer.aidl
@@ -25,4 +25,5 @@
oneway interface IDisplayAreaOrganizer {
void onDisplayAreaAppeared(in DisplayAreaInfo displayAreaInfo);
void onDisplayAreaVanished(in DisplayAreaInfo displayAreaInfo);
+ void onDisplayAreaInfoChanged(in DisplayAreaInfo displayAreaInfo);
}
diff --git a/core/java/android/window/IDisplayAreaOrganizerController.aidl b/core/java/android/window/IDisplayAreaOrganizerController.aidl
index fc6fbef..41b9d02 100644
--- a/core/java/android/window/IDisplayAreaOrganizerController.aidl
+++ b/core/java/android/window/IDisplayAreaOrganizerController.aidl
@@ -23,4 +23,9 @@
/** Register a DisplayAreaOrganizer to manage display areas for a given feature. */
void registerOrganizer(in IDisplayAreaOrganizer organizer, int displayAreaFeature);
+
+ /**
+ * Unregisters a previously registered display area organizer.
+ */
+ void unregisterOrganizer(in IDisplayAreaOrganizer organizer);
}