summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-03-12 11:16:22 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2025-03-12 11:16:22 -0700
commitdc3414db419cea803e625d1be355fd5ed5a432de (patch)
tree3e1ea8d3c8e20bf2d0474c0455bd2142247b4d85
parentb66fa5ec457badd30bd9fb8da0ce5c49cb631f70 (diff)
parent514fba16a3a0c705d3cacfee32eb3afb5ffd3fef (diff)
Merge "Update to ToT RemoteCompose" into main
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/CoreDocument.java36
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/FloatExpression.java1
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/ParticlesCreate.java22
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/PathAppend.java2
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/PathCreate.java2
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/PathData.java2
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/operations/layout/Component.java33
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/serialize/MapSerializer.java8
8 files changed, 76 insertions, 30 deletions
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 e5c20eb7ce18..766fbf1a80f5 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/CoreDocument.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/CoreDocument.java
@@ -73,7 +73,7 @@ public class CoreDocument implements Serializable {
// We also keep a more fine-grained BUILD number, exposed as
// ID_API_LEVEL = DOCUMENT_API_LEVEL + BUILD
- static final float BUILD = 0.6f;
+ static final float BUILD = 0.7f;
private static final boolean UPDATE_VARIABLES_BEFORE_LAYOUT = false;
@@ -842,18 +842,25 @@ public class CoreDocument implements Serializable {
@NonNull private HashMap<Integer, Component> mComponentMap = new HashMap<Integer, Component>();
+ /**
+ * Register all the operations recursively
+ *
+ * @param context
+ * @param list
+ */
private void registerVariables(
@NonNull RemoteContext context, @NonNull ArrayList<Operation> list) {
for (Operation op : list) {
if (op instanceof VariableSupport) {
- ((VariableSupport) op).updateVariables(context);
((VariableSupport) op).registerListening(context);
}
if (op instanceof Component) {
mComponentMap.put(((Component) op).getComponentId(), (Component) op);
- registerVariables(context, ((Component) op).getList());
((Component) op).registerVariables(context);
}
+ if (op instanceof Container) {
+ registerVariables(context, ((Container) op).getList());
+ }
if (op instanceof ComponentValue) {
ComponentValue v = (ComponentValue) op;
Component component = mComponentMap.get(v.getComponentId());
@@ -866,14 +873,34 @@ public class CoreDocument implements Serializable {
if (op instanceof ComponentModifiers) {
for (ModifierOperation modifier : ((ComponentModifiers) op).getList()) {
if (modifier instanceof VariableSupport) {
- ((VariableSupport) modifier).updateVariables(context);
((VariableSupport) modifier).registerListening(context);
}
}
}
+ }
+ }
+
+ /**
+ * Apply the operations recursively, for the original initialization pass with mode == DATA
+ *
+ * @param context
+ * @param list
+ */
+ private void applyOperations(
+ @NonNull RemoteContext context, @NonNull ArrayList<Operation> list) {
+ for (Operation op : list) {
+ if (op instanceof VariableSupport) {
+ ((VariableSupport) op).updateVariables(context);
+ }
+ if (op instanceof Component) { // for componentvalues...
+ ((Component) op).updateVariables(context);
+ }
op.markNotDirty();
op.apply(context);
context.incrementOpCount();
+ if (op instanceof Container) {
+ applyOperations(context, ((Container) op).getList());
+ }
}
}
@@ -893,6 +920,7 @@ public class CoreDocument implements Serializable {
mTimeVariables.updateTime(context);
registerVariables(context, mOperations);
+ applyOperations(context, mOperations);
context.mMode = RemoteContext.ContextMode.UNSET;
if (UPDATE_VARIABLES_BEFORE_LAYOUT) {
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/FloatExpression.java b/core/java/com/android/internal/widget/remotecompose/core/operations/FloatExpression.java
index eba201bfb216..0901ae3eca75 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/FloatExpression.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/FloatExpression.java
@@ -149,7 +149,6 @@ public class FloatExpression extends Operation implements VariableSupport, Seria
@Override
public void apply(@NonNull RemoteContext context) {
- updateVariables(context);
float t = context.getAnimationTime();
if (Float.isNaN(mLastChange)) {
mLastChange = t;
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/ParticlesCreate.java b/core/java/com/android/internal/widget/remotecompose/core/operations/ParticlesCreate.java
index ee9e7a4045cb..e86eabffbeaf 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/ParticlesCreate.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/ParticlesCreate.java
@@ -23,6 +23,8 @@ import android.annotation.NonNull;
import com.android.internal.widget.remotecompose.core.Operation;
import com.android.internal.widget.remotecompose.core.Operations;
+import com.android.internal.widget.remotecompose.core.PaintContext;
+import com.android.internal.widget.remotecompose.core.PaintOperation;
import com.android.internal.widget.remotecompose.core.RemoteContext;
import com.android.internal.widget.remotecompose.core.VariableSupport;
import com.android.internal.widget.remotecompose.core.WireBuffer;
@@ -30,6 +32,7 @@ import com.android.internal.widget.remotecompose.core.documentation.Documentatio
import com.android.internal.widget.remotecompose.core.documentation.DocumentedOperation;
import com.android.internal.widget.remotecompose.core.operations.utilities.AnimatedFloatExpression;
import com.android.internal.widget.remotecompose.core.operations.utilities.NanMap;
+import com.android.internal.widget.remotecompose.core.serialize.MapSerializer;
import java.util.Arrays;
import java.util.List;
@@ -38,7 +41,7 @@ import java.util.List;
* This creates a particle system. which consist of id, particleCount, array of id's and equations
* for constructing the particles
*/
-public class ParticlesCreate extends Operation implements VariableSupport {
+public class ParticlesCreate extends PaintOperation implements VariableSupport {
private static final int OP_CODE = Operations.PARTICLE_DEFINE;
private static final String CLASS_NAME = "ParticlesCreate";
private final int mId;
@@ -214,6 +217,13 @@ public class ParticlesCreate extends Operation implements VariableSupport {
return indent + toString();
}
+ @Override
+ public void paint(@NonNull PaintContext context) {
+ for (int i = 0; i < mParticles.length; i++) {
+ initializeParticle(i);
+ }
+ }
+
void initializeParticle(int pNo) {
for (int j = 0; j < mParticles[pNo].length; j++) {
for (int k = 0; k < mIndexeVars.length; k++) {
@@ -226,13 +236,6 @@ public class ParticlesCreate extends Operation implements VariableSupport {
}
}
- @Override
- public void apply(@NonNull RemoteContext context) {
- for (int i = 0; i < mParticles.length; i++) {
- initializeParticle(i);
- }
- }
-
public float[][] getParticles() {
return mParticles;
}
@@ -244,4 +247,7 @@ public class ParticlesCreate extends Operation implements VariableSupport {
public float[][] getEquations() {
return mOutEquations;
}
+
+ @Override
+ public void serialize(MapSerializer serializer) {}
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/PathAppend.java b/core/java/com/android/internal/widget/remotecompose/core/operations/PathAppend.java
index 8a747e134897..31d21c4d539c 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/PathAppend.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/PathAppend.java
@@ -258,6 +258,6 @@ public class PathAppend extends PaintOperation implements VariableSupport, Seria
@Override
public void serialize(MapSerializer serializer) {
- serializer.addType(CLASS_NAME).add("id", mInstanceId).add("path", pathString(mFloatPath));
+ serializer.addType(CLASS_NAME).add("id", mInstanceId).addPath("path", mFloatPath);
}
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/PathCreate.java b/core/java/com/android/internal/widget/remotecompose/core/operations/PathCreate.java
index 78e3b9eac110..7a28992496b4 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/PathCreate.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/PathCreate.java
@@ -242,6 +242,6 @@ public class PathCreate extends PaintOperation implements VariableSupport, Seria
@Override
public void serialize(MapSerializer serializer) {
- serializer.addType(CLASS_NAME).add("id", mInstanceId).add("path", pathString(mFloatPath));
+ serializer.addType(CLASS_NAME).add("id", mInstanceId).addPath("path", mFloatPath);
}
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/PathData.java b/core/java/com/android/internal/widget/remotecompose/core/operations/PathData.java
index cedc4f3b0e45..8b01722aea86 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/PathData.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/PathData.java
@@ -243,6 +243,6 @@ public class PathData extends Operation implements VariableSupport, Serializable
@Override
public void serialize(MapSerializer serializer) {
- serializer.addType(CLASS_NAME).add("id", mInstanceId).add("path", pathString(mFloatPath));
+ serializer.addType(CLASS_NAME).add("id", mInstanceId).addPath("path", mFloatPath);
}
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/Component.java b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/Component.java
index 2a809c6f0a2a..425c61b636c4 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/operations/layout/Component.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/operations/layout/Component.java
@@ -175,20 +175,25 @@ public class Component extends PaintOperation
+ mComponentId);
}
for (ComponentValue v : mComponentValues) {
- switch (v.getType()) {
- case ComponentValue.WIDTH:
- context.loadFloat(v.getValueId(), mWidth);
- if (DEBUG) {
- System.out.println("Updating WIDTH for " + mComponentId + " to " + mWidth);
- }
- break;
- case ComponentValue.HEIGHT:
- context.loadFloat(v.getValueId(), mHeight);
- if (DEBUG) {
- System.out.println(
- "Updating HEIGHT for " + mComponentId + " to " + mHeight);
- }
- break;
+ if (context.getMode() == RemoteContext.ContextMode.DATA) {
+ context.loadFloat(v.getValueId(), 1f);
+ } else {
+ switch (v.getType()) {
+ case ComponentValue.WIDTH:
+ context.loadFloat(v.getValueId(), mWidth);
+ if (DEBUG) {
+ System.out.println(
+ "Updating WIDTH for " + mComponentId + " to " + mWidth);
+ }
+ break;
+ case ComponentValue.HEIGHT:
+ context.loadFloat(v.getValueId(), mHeight);
+ if (DEBUG) {
+ System.out.println(
+ "Updating HEIGHT for " + mComponentId + " to " + mHeight);
+ }
+ break;
+ }
}
}
}
diff --git a/core/java/com/android/internal/widget/remotecompose/core/serialize/MapSerializer.java b/core/java/com/android/internal/widget/remotecompose/core/serialize/MapSerializer.java
index 20e94ab5d898..32a0ccc01738 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/serialize/MapSerializer.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/serialize/MapSerializer.java
@@ -49,6 +49,14 @@ public interface MapSerializer {
MapSerializer addIntExpressionSrc(String key, int[] value, int mask);
/**
+ * Add a path
+ *
+ * @param key The key
+ * @param path The path
+ */
+ MapSerializer addPath(String key, float[] path);
+
+ /**
* Add metadata to this map for filtering by the data format generator.
*
* @param value A set of tags to add