Loading core/proto/android/companion/task_continuity_message.proto +1 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ message RemoteTaskInfo { string label = 2; int64 lastUsedTimeMillis = 3; bytes taskIcon = 4; bool isHandoffEnabled = 5; } message RemoteTaskRemovedMessage { Loading services/companion/java/com/android/server/companion/datatransfer/continuity/messages/RemoteTaskInfo.java +22 −3 Original line number Diff line number Diff line Loading @@ -25,7 +25,12 @@ import java.util.Arrays; import java.util.Objects; import java.io.IOException; public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte[] taskIcon) { public record RemoteTaskInfo( int id, String label, long lastUsedTimeMillis, byte[] taskIcon, boolean isHandoffEnabled) { public static RemoteTaskInfo fromProto(ProtoInputStream protoInputStream) throws IOException { Loading @@ -34,6 +39,7 @@ public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte String label = ""; long lastUsedTimeMillis = 0; byte[] taskIcon = new byte[0]; boolean isHandoffEnabled = false; while (protoInputStream.nextField() != ProtoInputStream.NO_MORE_FIELDS) { switch (protoInputStream.getFieldNumber()) { case (int) android.companion.RemoteTaskInfo.ID: Loading @@ -54,10 +60,14 @@ public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte taskIcon = protoInputStream .readBytes(android.companion.RemoteTaskInfo.TASK_ICON); break; case (int) android.companion.RemoteTaskInfo.IS_HANDOFF_ENABLED: isHandoffEnabled = protoInputStream.readBoolean( android.companion.RemoteTaskInfo.IS_HANDOFF_ENABLED); break; } } return new RemoteTaskInfo(id, label, lastUsedTimeMillis, taskIcon); return new RemoteTaskInfo(id, label, lastUsedTimeMillis, taskIcon, isHandoffEnabled); } public void writeToProto(ProtoOutputStream protoOutputStream) { Loading @@ -71,6 +81,9 @@ public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte lastUsedTimeMillis()); protoOutputStream .writeBytes(android.companion.RemoteTaskInfo.TASK_ICON, taskIcon()); protoOutputStream .writeBool( android.companion.RemoteTaskInfo.IS_HANDOFF_ENABLED, isHandoffEnabled()); } @Override Loading @@ -87,7 +100,12 @@ public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte @Override public int hashCode() { return Objects.hash(id(), label(), lastUsedTimeMillis(), Arrays.hashCode(taskIcon())); return Objects.hash( id(), label(), lastUsedTimeMillis(), Arrays.hashCode(taskIcon()), isHandoffEnabled()); } public RemoteTask toRemoteTask(int deviceId, String deviceName) { Loading @@ -102,6 +120,7 @@ public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte .setLastUsedTimestampMillis(lastUsedTimeMillis()) .setSourceDeviceName(deviceName) .setIcon(taskIcon) .setHandoffEnabled(isHandoffEnabled()) .build(); } } No newline at end of file services/companion/java/com/android/server/companion/datatransfer/continuity/tasks/RunningTaskFetcher.java +2 −1 Original line number Diff line number Diff line Loading @@ -111,7 +111,8 @@ public class RunningTaskFetcher { taskInfo.taskId, packageMetadata.label(), taskInfo.lastActiveTime, packageMetadata.icon()); packageMetadata.icon(), false); } @NonNull Loading services/tests/servicestests/src/com/android/server/companion/datatransfer/continuity/TaskBroadcasterTest.java +6 −3 Original line number Diff line number Diff line Loading @@ -91,7 +91,8 @@ public class TaskBroadcasterTest { 100 /* taskId */, "test" /* label */, 100 /* lastActiveTime */, new byte[0] /* icon */); new byte[0] /* icon */, true /* isHandoffEnabled */); when(mMockRunningTaskFetcher.getRunningTasks()) .thenReturn(List.of(expectedRemoteTaskInfo)); Loading @@ -115,7 +116,8 @@ public class TaskBroadcasterTest { 123 /* taskId */, "newTask" /* label */, 0 /* lastActiveTime */, new byte[0] /* icon */); new byte[0] /* icon */, true /* isHandoffEnabled */); when(mMockRunningTaskFetcher.getRunningTaskById(expectedRemoteTaskInfo.id())) .thenReturn(expectedRemoteTaskInfo); Loading Loading @@ -155,7 +157,8 @@ public class TaskBroadcasterTest { 1 /* taskId */, "task" /* label */, 100 /* lastActiveTime */, new byte[0] /* icon */); new byte[0] /* icon */, true /* isHandoffEnabled */); when(mMockRunningTaskFetcher.getRunningTaskById(expectedRemoteTaskInfo.id())) .thenReturn(expectedRemoteTaskInfo); RunningTaskInfo taskInfo = new RunningTaskInfo(); Loading services/tests/servicestests/src/com/android/server/companion/datatransfer/continuity/connectivity/TaskContinuityMessengerTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ public class TaskContinuityMessengerTest { int expectedAssociationId = 1; connectAssociations(List.of(expectedAssociationId)); ContinuityDeviceConnected expectedMessage = new ContinuityDeviceConnected( List.of(new RemoteTaskInfo(1, "label", 1000, new byte[0]))); List.of(new RemoteTaskInfo(1, "label", 1000, new byte[0], true))); listener.onMessageReceived( expectedAssociationId, Loading @@ -133,7 +133,7 @@ public class TaskContinuityMessengerTest { mTaskContinuityMessenger.enable(); connectAssociations(List.of(associationId)); ContinuityDeviceConnected expectedMessage = new ContinuityDeviceConnected( List.of(new RemoteTaskInfo(1, "label", 1000, new byte[0]))); List.of(new RemoteTaskInfo(1, "label", 1000, new byte[0], true))); TaskContinuityMessenger.SendMessageResult result = mTaskContinuityMessenger.sendMessage(associationId, expectedMessage); verify(mMockCompanionDeviceManagerService, times(1)) Loading @@ -150,7 +150,7 @@ public class TaskContinuityMessengerTest { int associationId = 1; ContinuityDeviceConnected expectedMessage = new ContinuityDeviceConnected( List.of(new RemoteTaskInfo(1, "label", 1000, new byte[0]))); List.of(new RemoteTaskInfo(1, "label", 1000, new byte[0], true))); TaskContinuityMessenger.SendMessageResult result = mTaskContinuityMessenger.sendMessage(associationId, expectedMessage); verify(mMockCompanionDeviceManagerService, never()) Loading Loading
core/proto/android/companion/task_continuity_message.proto +1 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ message RemoteTaskInfo { string label = 2; int64 lastUsedTimeMillis = 3; bytes taskIcon = 4; bool isHandoffEnabled = 5; } message RemoteTaskRemovedMessage { Loading
services/companion/java/com/android/server/companion/datatransfer/continuity/messages/RemoteTaskInfo.java +22 −3 Original line number Diff line number Diff line Loading @@ -25,7 +25,12 @@ import java.util.Arrays; import java.util.Objects; import java.io.IOException; public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte[] taskIcon) { public record RemoteTaskInfo( int id, String label, long lastUsedTimeMillis, byte[] taskIcon, boolean isHandoffEnabled) { public static RemoteTaskInfo fromProto(ProtoInputStream protoInputStream) throws IOException { Loading @@ -34,6 +39,7 @@ public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte String label = ""; long lastUsedTimeMillis = 0; byte[] taskIcon = new byte[0]; boolean isHandoffEnabled = false; while (protoInputStream.nextField() != ProtoInputStream.NO_MORE_FIELDS) { switch (protoInputStream.getFieldNumber()) { case (int) android.companion.RemoteTaskInfo.ID: Loading @@ -54,10 +60,14 @@ public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte taskIcon = protoInputStream .readBytes(android.companion.RemoteTaskInfo.TASK_ICON); break; case (int) android.companion.RemoteTaskInfo.IS_HANDOFF_ENABLED: isHandoffEnabled = protoInputStream.readBoolean( android.companion.RemoteTaskInfo.IS_HANDOFF_ENABLED); break; } } return new RemoteTaskInfo(id, label, lastUsedTimeMillis, taskIcon); return new RemoteTaskInfo(id, label, lastUsedTimeMillis, taskIcon, isHandoffEnabled); } public void writeToProto(ProtoOutputStream protoOutputStream) { Loading @@ -71,6 +81,9 @@ public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte lastUsedTimeMillis()); protoOutputStream .writeBytes(android.companion.RemoteTaskInfo.TASK_ICON, taskIcon()); protoOutputStream .writeBool( android.companion.RemoteTaskInfo.IS_HANDOFF_ENABLED, isHandoffEnabled()); } @Override Loading @@ -87,7 +100,12 @@ public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte @Override public int hashCode() { return Objects.hash(id(), label(), lastUsedTimeMillis(), Arrays.hashCode(taskIcon())); return Objects.hash( id(), label(), lastUsedTimeMillis(), Arrays.hashCode(taskIcon()), isHandoffEnabled()); } public RemoteTask toRemoteTask(int deviceId, String deviceName) { Loading @@ -102,6 +120,7 @@ public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte .setLastUsedTimestampMillis(lastUsedTimeMillis()) .setSourceDeviceName(deviceName) .setIcon(taskIcon) .setHandoffEnabled(isHandoffEnabled()) .build(); } } No newline at end of file
services/companion/java/com/android/server/companion/datatransfer/continuity/tasks/RunningTaskFetcher.java +2 −1 Original line number Diff line number Diff line Loading @@ -111,7 +111,8 @@ public class RunningTaskFetcher { taskInfo.taskId, packageMetadata.label(), taskInfo.lastActiveTime, packageMetadata.icon()); packageMetadata.icon(), false); } @NonNull Loading
services/tests/servicestests/src/com/android/server/companion/datatransfer/continuity/TaskBroadcasterTest.java +6 −3 Original line number Diff line number Diff line Loading @@ -91,7 +91,8 @@ public class TaskBroadcasterTest { 100 /* taskId */, "test" /* label */, 100 /* lastActiveTime */, new byte[0] /* icon */); new byte[0] /* icon */, true /* isHandoffEnabled */); when(mMockRunningTaskFetcher.getRunningTasks()) .thenReturn(List.of(expectedRemoteTaskInfo)); Loading @@ -115,7 +116,8 @@ public class TaskBroadcasterTest { 123 /* taskId */, "newTask" /* label */, 0 /* lastActiveTime */, new byte[0] /* icon */); new byte[0] /* icon */, true /* isHandoffEnabled */); when(mMockRunningTaskFetcher.getRunningTaskById(expectedRemoteTaskInfo.id())) .thenReturn(expectedRemoteTaskInfo); Loading Loading @@ -155,7 +157,8 @@ public class TaskBroadcasterTest { 1 /* taskId */, "task" /* label */, 100 /* lastActiveTime */, new byte[0] /* icon */); new byte[0] /* icon */, true /* isHandoffEnabled */); when(mMockRunningTaskFetcher.getRunningTaskById(expectedRemoteTaskInfo.id())) .thenReturn(expectedRemoteTaskInfo); RunningTaskInfo taskInfo = new RunningTaskInfo(); Loading
services/tests/servicestests/src/com/android/server/companion/datatransfer/continuity/connectivity/TaskContinuityMessengerTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ public class TaskContinuityMessengerTest { int expectedAssociationId = 1; connectAssociations(List.of(expectedAssociationId)); ContinuityDeviceConnected expectedMessage = new ContinuityDeviceConnected( List.of(new RemoteTaskInfo(1, "label", 1000, new byte[0]))); List.of(new RemoteTaskInfo(1, "label", 1000, new byte[0], true))); listener.onMessageReceived( expectedAssociationId, Loading @@ -133,7 +133,7 @@ public class TaskContinuityMessengerTest { mTaskContinuityMessenger.enable(); connectAssociations(List.of(associationId)); ContinuityDeviceConnected expectedMessage = new ContinuityDeviceConnected( List.of(new RemoteTaskInfo(1, "label", 1000, new byte[0]))); List.of(new RemoteTaskInfo(1, "label", 1000, new byte[0], true))); TaskContinuityMessenger.SendMessageResult result = mTaskContinuityMessenger.sendMessage(associationId, expectedMessage); verify(mMockCompanionDeviceManagerService, times(1)) Loading @@ -150,7 +150,7 @@ public class TaskContinuityMessengerTest { int associationId = 1; ContinuityDeviceConnected expectedMessage = new ContinuityDeviceConnected( List.of(new RemoteTaskInfo(1, "label", 1000, new byte[0]))); List.of(new RemoteTaskInfo(1, "label", 1000, new byte[0], true))); TaskContinuityMessenger.SendMessageResult result = mTaskContinuityMessenger.sendMessage(associationId, expectedMessage); verify(mMockCompanionDeviceManagerService, never()) Loading