Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e43fe79e authored by Joe Antonetti's avatar Joe Antonetti
Browse files

Include Field Number in TaskContinuityMessage

Add the field number of `TaskContinuityMessageData` directly, so we don't need to keep updating the serialization method as new subclasses are added.

Test: Added unit tests
Bug: 400970610
Flag: android.companion.enable_task_continuity
Change-Id: I2685f0d4074796e24ddf2056d548c60044634797
parent afacdac1
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ option java_multiple_files = true;
message TaskContinuityMessage {
    oneof data {
        ContinuityDeviceConnected device_connected = 1;
        RemoteTaskAddedMessage remote_task_added_message = 2;
        RemoteTaskAddedMessage remote_task_added = 2;
        RemoteTaskRemovedMessage remote_task_removed = 3;
        HandoffRequestMessage handoff_request = 4;
        RemoteTaskUpdatedMessage remote_task_updated = 5;
+12 −4
Original line number Diff line number Diff line
@@ -39,14 +39,14 @@ public class ContinuityDeviceConnected implements TaskContinuityMessageData {
        mRemoteTasks = remoteTasks;
    }

    ContinuityDeviceConnected(ProtoInputStream pis) throws IOException {
    static ContinuityDeviceConnected readFromProto(ProtoInputStream pis) throws IOException {

        boolean hasReadForegroundTaskId = false;
        int currentForegroundTaskId = 0;
        List<RemoteTaskInfo> remoteTasks = new ArrayList<>();
        while (pis.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
            switch (pis.getFieldNumber()) {
                case (int) android.companion.ContinuityDeviceConnected.CURRENT_FOREGROUND_TASK_ID:
                    mCurrentForegroundTaskId = pis.readInt(
                    currentForegroundTaskId = pis.readInt(
                        android.companion.ContinuityDeviceConnected.CURRENT_FOREGROUND_TASK_ID
                    );

@@ -61,7 +61,7 @@ public class ContinuityDeviceConnected implements TaskContinuityMessageData {
            }
        }

        mRemoteTasks = remoteTasks;
        return new ContinuityDeviceConnected(currentForegroundTaskId, remoteTasks);
    }

    /**
@@ -78,6 +78,14 @@ public class ContinuityDeviceConnected implements TaskContinuityMessageData {
        return mRemoteTasks;
    }

    /**
     * Returns the proto field number for this message type.
     */
    @Override
    public long getFieldNumber() {
        return android.companion.TaskContinuityMessage.DEVICE_CONNECTED;
    }

    /**
     * Writes this object to a proto output stream.
     */
+5 −0
Original line number Diff line number Diff line
@@ -39,6 +39,11 @@ public record HandoffRequestMessage(int taskId) implements TaskContinuityMessage
        return new HandoffRequestMessage(taskId);
    }

    @Override
    public long getFieldNumber() {
        return android.companion.TaskContinuityMessage.HANDOFF_REQUEST;
    }

    @Override
    public void writeToProto(ProtoOutputStream pos) {
        pos.write(android.companion.HandoffRequestMessage.TASK_ID, taskId());
+10 −2
Original line number Diff line number Diff line
@@ -34,17 +34,25 @@ public class RemoteTaskAddedMessage implements TaskContinuityMessageData {
        mTask = task;
    }

    RemoteTaskAddedMessage(ProtoInputStream pis) throws IOException {
    static RemoteTaskAddedMessage readFromProto(ProtoInputStream pis) throws IOException {
        RemoteTaskInfo task = null;
        while (pis.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
            switch (pis.getFieldNumber()) {
                case (int) android.companion.RemoteTaskAddedMessage.TASK:
                    final long taskToken = pis.start(
                        android.companion.RemoteTaskAddedMessage.TASK);
                    mTask = new RemoteTaskInfo(pis);
                    task = new RemoteTaskInfo(pis);
                    pis.end(taskToken);
                    break;
            }
        }

        return new RemoteTaskAddedMessage(task);
    }

    @Override
    public long getFieldNumber() {
        return android.companion.TaskContinuityMessage.REMOTE_TASK_ADDED;
    }

    @Override
+5 −0
Original line number Diff line number Diff line
@@ -38,6 +38,11 @@ public record RemoteTaskRemovedMessage(int taskId) implements TaskContinuityMess
        return new RemoteTaskRemovedMessage(taskId);
    }

    @Override
    public long getFieldNumber() {
        return android.companion.TaskContinuityMessage.REMOTE_TASK_REMOVED;
    }

    @Override
    public void writeToProto(ProtoOutputStream pos) {
        pos.write(
Loading