Merge "Adjust bounds of a task moving to another display" into main
diff --git a/core/java/com/android/internal/widget/remotecompose/core/CoreDocument.java b/core/java/com/android/internal/widget/remotecompose/core/CoreDocument.java
index 1bd502d..60767ed 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/CoreDocument.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/CoreDocument.java
@@ -601,14 +601,23 @@
         for (Operation o : operations) {
             if (o instanceof Container) {
                 Container container = (Container) o;
-                containers.add(container);
-                ops = container.getList();
                 if (container instanceof Component) {
                     Component component = (Component) container;
+                    // Make sure to set the parent when a component is first found, so that
+                    // the inflate when closing the component is in a state where the hierarchy
+                    // is already existing.
+                    if (!containers.isEmpty()) {
+                        Container parentContainer = containers.get(containers.size() - 1);
+                        if (parentContainer instanceof Component) {
+                            component.setParent((Component) parentContainer);
+                        }
+                    }
                     if (component.getComponentId() < mLastId) {
                         mLastId = component.getComponentId();
                     }
                 }
+                containers.add(container);
+                ops = container.getList();
             } else if (o instanceof ContainerEnd) {
                 // check if we have a parent container
                 Container container = null;
@@ -628,9 +637,6 @@
                 if (container != null) {
                     if (container instanceof Component) {
                         Component component = (Component) container;
-                        if (parentContainer instanceof Component) {
-                            component.setParent((Component) parentContainer);
-                        }
                         component.inflate();
                     }
                     ops.add((Operation) container);
diff --git a/telephony/java/android/telephony/satellite/SatelliteSessionStats.java b/telephony/java/android/telephony/satellite/SatelliteSessionStats.java
index 0cdba83..556ec1a 100644
--- a/telephony/java/android/telephony/satellite/SatelliteSessionStats.java
+++ b/telephony/java/android/telephony/satellite/SatelliteSessionStats.java
@@ -223,6 +223,10 @@
         return mCountOfUserMessagesInQueueToBeSent;
     }
 
+    public void incrementUserMessagesInQueueToBeSent() {
+        mCountOfUserMessagesInQueueToBeSent++;
+    }
+
     public long getLatencyOfAllSuccessfulUserMessages() {
         return mLatencyOfSuccessfulUserMessages;
     }
@@ -288,6 +292,18 @@
         }
     }
 
+    public void updateCountOfUserMessagesInQueueToBeSent(
+            @SatelliteManager.DatagramType int datagramType) {
+        try {
+            datagramStats.putIfAbsent(datagramType, new SatelliteSessionStats.Builder().build());
+            SatelliteSessionStats data = datagramStats.get(datagramType);
+            data.incrementUserMessagesInQueueToBeSent();
+        } catch (Exception e) {
+            Log.e("SatelliteSessionStats",
+                    "Error while addCountOfUserMessagesInQueueToBeSent: " + e.getMessage());
+        }
+    }
+
     public int getCountOfUnsuccessfulUserMessages(@SatelliteManager.DatagramType int datagramType) {
         SatelliteSessionStats data = datagramStats.get(datagramType);
         return data.getCountOfUnsuccessfulUserMessages();