summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/window/ITaskFragmentOrganizerController.aidl6
-rw-r--r--core/java/android/window/TaskFragmentOrganizer.java13
-rw-r--r--libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java8
-rw-r--r--libs/WindowManager/Jetpack/window-extensions-release.aarbin19183 -> 19210 bytes
-rw-r--r--services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java23
5 files changed, 50 insertions, 0 deletions
diff --git a/core/java/android/window/ITaskFragmentOrganizerController.aidl b/core/java/android/window/ITaskFragmentOrganizerController.aidl
index 1ad0452dd837..4399207fcc27 100644
--- a/core/java/android/window/ITaskFragmentOrganizerController.aidl
+++ b/core/java/android/window/ITaskFragmentOrganizerController.aidl
@@ -44,4 +44,10 @@ interface ITaskFragmentOrganizerController {
* Unregisters remote animations per transition type for the organizer.
*/
void unregisterRemoteAnimations(in ITaskFragmentOrganizer organizer);
+
+ /**
+ * Checks if an activity organized by a {@link android.window.TaskFragmentOrganizer} and
+ * only occupies a portion of Task bounds.
+ */
+ boolean isActivityEmbedded(in IBinder activityToken);
}
diff --git a/core/java/android/window/TaskFragmentOrganizer.java b/core/java/android/window/TaskFragmentOrganizer.java
index 7e7d37083b5b..9c2fde04e4d2 100644
--- a/core/java/android/window/TaskFragmentOrganizer.java
+++ b/core/java/android/window/TaskFragmentOrganizer.java
@@ -216,4 +216,17 @@ public class TaskFragmentOrganizer extends WindowOrganizer {
return null;
}
}
+
+ /**
+ * Checks if an activity organized by a {@link android.window.TaskFragmentOrganizer} and
+ * only occupies a portion of Task bounds.
+ * @hide
+ */
+ public boolean isActivityEmbedded(@NonNull IBinder activityToken) {
+ try {
+ return getController().isActivityEmbedded(activityToken);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
}
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
index dc4e27a4c8d8..af19bd0a79ac 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
@@ -860,4 +860,12 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
launchingContainer.getTaskFragmentToken());
}
}
+
+ /**
+ * Checks if an activity is embedded and its presentation is customized by a
+ * {@link android.window.TaskFragmentOrganizer} to only occupy a portion of Task bounds.
+ */
+ public boolean isActivityEmbedded(@NonNull Activity activity) {
+ return mPresenter.isActivityEmbedded(activity.getActivityToken());
+ }
}
diff --git a/libs/WindowManager/Jetpack/window-extensions-release.aar b/libs/WindowManager/Jetpack/window-extensions-release.aar
index d6678bf9b320..f54ab08d8a8a 100644
--- a/libs/WindowManager/Jetpack/window-extensions-release.aar
+++ b/libs/WindowManager/Jetpack/window-extensions-release.aar
Binary files differ
diff --git a/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java b/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java
index 29c27f9f3af6..c7fdefc412cc 100644
--- a/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java
+++ b/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java
@@ -24,6 +24,7 @@ import static com.android.server.wm.WindowOrganizerController.configurationsAreE
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.content.res.Configuration;
+import android.graphics.Rect;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
@@ -579,4 +580,26 @@ public class TaskFragmentOrganizerController extends ITaskFragmentOrganizerContr
event.mException);
}
}
+
+ // TODO(b/204399167): change to push the embedded state to the client side
+ @Override
+ public boolean isActivityEmbedded(IBinder activityToken) {
+ synchronized (mGlobalLock) {
+ final ActivityRecord activity = ActivityRecord.forTokenLocked(activityToken);
+ if (activity == null) {
+ return false;
+ }
+ final TaskFragment taskFragment = activity.getOrganizedTaskFragment();
+ if (taskFragment == null) {
+ return false;
+ }
+ final Task parentTask = taskFragment.getTask();
+ if (parentTask != null) {
+ final Rect taskBounds = parentTask.getBounds();
+ final Rect taskFragBounds = taskFragment.getBounds();
+ return !taskBounds.equals(taskFragBounds) && taskBounds.contains(taskFragBounds);
+ }
+ return false;
+ }
+ }
}