Loading core/java/android/window/DisplayAreaOrganizer.java +22 −0 Original line number Diff line number Diff line Loading @@ -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 onDisplayAreaVanished(@NonNull DisplayAreaInfo displayAreaInfo) {} /** * @hide */ public void onDisplayAreaInfoChanged(@NonNull DisplayAreaInfo displayAreaInfo) {} private final IDisplayAreaOrganizer mInterface = new IDisplayAreaOrganizer.Stub() { @Override Loading @@ -67,6 +84,11 @@ public class DisplayAreaOrganizer extends WindowOrganizer { 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() { Loading core/java/android/window/IDisplayAreaOrganizer.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -25,4 +25,5 @@ import android.window.DisplayAreaInfo; oneway interface IDisplayAreaOrganizer { void onDisplayAreaAppeared(in DisplayAreaInfo displayAreaInfo); void onDisplayAreaVanished(in DisplayAreaInfo displayAreaInfo); void onDisplayAreaInfoChanged(in DisplayAreaInfo displayAreaInfo); } core/java/android/window/IDisplayAreaOrganizerController.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -23,4 +23,9 @@ interface IDisplayAreaOrganizerController { /** 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); } services/core/java/com/android/server/wm/DisplayArea.java +9 −0 Original line number Diff line number Diff line Loading @@ -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.WindowContainerChildProto.DISPLAY_AREA; import android.content.res.Configuration; import android.graphics.Rect; import android.util.proto.ProtoOutputStream; import android.window.DisplayAreaInfo; Loading Loading @@ -154,6 +155,14 @@ public class DisplayArea<T extends WindowContainer> extends WindowContainer<T> { mOrganizerController.onDisplayAreaVanished(mOrganizer, this); } @Override public void onConfigurationChanged(Configuration newParentConfig) { super.onConfigurationChanged(newParentConfig); if (mOrganizer != null) { mOrganizerController.onDisplayAreaInfoChanged(mOrganizer, this); } } @Override boolean isOrganized() { return mOrganizer != null; Loading services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java +27 −0 Original line number Diff line number Diff line Loading @@ -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) { try { organizer.onDisplayAreaAppeared(da.getDisplayAreaInfo()); Loading @@ -107,4 +126,12 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl // Oh well... } } void onDisplayAreaInfoChanged(IDisplayAreaOrganizer organizer, DisplayArea da) { try { organizer.onDisplayAreaInfoChanged(da.getDisplayAreaInfo()); } catch (RemoteException e) { // Oh well... } } } Loading
core/java/android/window/DisplayAreaOrganizer.java +22 −0 Original line number Diff line number Diff line Loading @@ -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 onDisplayAreaVanished(@NonNull DisplayAreaInfo displayAreaInfo) {} /** * @hide */ public void onDisplayAreaInfoChanged(@NonNull DisplayAreaInfo displayAreaInfo) {} private final IDisplayAreaOrganizer mInterface = new IDisplayAreaOrganizer.Stub() { @Override Loading @@ -67,6 +84,11 @@ public class DisplayAreaOrganizer extends WindowOrganizer { 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() { Loading
core/java/android/window/IDisplayAreaOrganizer.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -25,4 +25,5 @@ import android.window.DisplayAreaInfo; oneway interface IDisplayAreaOrganizer { void onDisplayAreaAppeared(in DisplayAreaInfo displayAreaInfo); void onDisplayAreaVanished(in DisplayAreaInfo displayAreaInfo); void onDisplayAreaInfoChanged(in DisplayAreaInfo displayAreaInfo); }
core/java/android/window/IDisplayAreaOrganizerController.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -23,4 +23,9 @@ interface IDisplayAreaOrganizerController { /** 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); }
services/core/java/com/android/server/wm/DisplayArea.java +9 −0 Original line number Diff line number Diff line Loading @@ -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.WindowContainerChildProto.DISPLAY_AREA; import android.content.res.Configuration; import android.graphics.Rect; import android.util.proto.ProtoOutputStream; import android.window.DisplayAreaInfo; Loading Loading @@ -154,6 +155,14 @@ public class DisplayArea<T extends WindowContainer> extends WindowContainer<T> { mOrganizerController.onDisplayAreaVanished(mOrganizer, this); } @Override public void onConfigurationChanged(Configuration newParentConfig) { super.onConfigurationChanged(newParentConfig); if (mOrganizer != null) { mOrganizerController.onDisplayAreaInfoChanged(mOrganizer, this); } } @Override boolean isOrganized() { return mOrganizer != null; Loading
services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java +27 −0 Original line number Diff line number Diff line Loading @@ -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) { try { organizer.onDisplayAreaAppeared(da.getDisplayAreaInfo()); Loading @@ -107,4 +126,12 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl // Oh well... } } void onDisplayAreaInfoChanged(IDisplayAreaOrganizer organizer, DisplayArea da) { try { organizer.onDisplayAreaInfoChanged(da.getDisplayAreaInfo()); } catch (RemoteException e) { // Oh well... } } }