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() {