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

Commit 9a45bedc authored by Joe Antonetti's avatar Joe Antonetti
Browse files

Add incoming RemoteTaskAddedMessages to RemoteTaskStore

Flag: android.companion.enable_task_continuity
Test: Added unit tests
Bug: 400970610
Change-Id: Idd0300eed7dd68d1553719e8e6548965bd1de2d3
parent e7f1f7de
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.Context;
import android.util.Slog;

import com.android.server.companion.datatransfer.continuity.messages.ContinuityDeviceConnected;
import com.android.server.companion.datatransfer.continuity.messages.RemoteTaskAddedMessage;
import com.android.server.companion.datatransfer.continuity.messages.RemoteTaskRemovedMessage;
import com.android.server.companion.datatransfer.continuity.messages.TaskContinuityMessage;
import com.android.server.companion.datatransfer.continuity.tasks.RemoteTaskStore;
@@ -108,6 +109,11 @@ public final class TaskContinuityManagerService extends SystemService {
                    associationId,
                    continuityDeviceConnected.getRemoteTasks());
                break;
            case RemoteTaskAddedMessage remoteTaskAddedMessage:
                mRemoteTaskStore.addTask(
                    associationId,
                    remoteTaskAddedMessage.getTask());
                break;
            case RemoteTaskRemovedMessage remoteTaskRemovedMessage:
                mRemoteTaskStore.removeTask(
                    associationId,
+15 −0
Original line number Diff line number Diff line
@@ -66,6 +66,21 @@ public class RemoteTaskStore implements ConnectedAssociationStore.Observer {
        }
    }

      public void addTask(int associationId, RemoteTaskInfo taskInfo) {
        synchronized (mRemoteDeviceTaskLists) {
            if (!mRemoteDeviceTaskLists.containsKey(associationId)) {
                Slog.e(
                    TAG,
                    "addTask failure for association: " + associationId + " - not connected.");

                return;
            }

            Slog.v(TAG, "Adding task: " + taskInfo.getId() + " for association: " + associationId);
            mRemoteDeviceTaskLists.get(associationId).addTask(taskInfo);
        }
    }

   public void removeTask(int associationId, int taskId) {
        synchronized (mRemoteDeviceTaskLists) {
            if (!mRemoteDeviceTaskLists.containsKey(associationId)) {
+29 −0
Original line number Diff line number Diff line
@@ -141,6 +141,35 @@ public class RemoteTaskStoreTest {
        assertThat(taskStore.getMostRecentTasks()).isEmpty();
    }

    @Test
    public void addTask_addsTaskToAssociation() {
        // Create a fake association info, and have connected association store return it.
        AssociationInfo associationInfo = createAssociationInfo(1, "name");
        when(mMockConnectedAssociationStore.getConnectedAssociationById(1))
            .thenReturn(associationInfo);
        taskStore.onTransportConnected(associationInfo);

        RemoteTaskInfo remoteTaskInfo = createNewRemoteTaskInfo(1, "task1", 100L);
        RemoteTask remoteTask = remoteTaskInfo.toRemoteTask(associationInfo.getId(), "name");
        taskStore.setTasks(1, Collections.singletonList(remoteTaskInfo));
        assertThat(taskStore.getMostRecentTasks()).containsExactly(remoteTask);

        // Add a new task to the association.
        RemoteTaskInfo newRemoteTaskInfo = createNewRemoteTaskInfo(2, "task2", 200L);
        RemoteTask newRemoteTask = newRemoteTaskInfo.toRemoteTask(associationInfo.getId(), "name");
        taskStore.addTask(1, newRemoteTaskInfo);

        // Verify the most recent tasks are added to the task store.
        assertThat(taskStore.getMostRecentTasks()).containsExactly(newRemoteTask);
    }

    @Test
    public void addTask_doesNotAddTaskIfAssociationNotConnected() {
        RemoteTaskInfo remoteTaskInfo = createNewRemoteTaskInfo(1, "task1", 100L);
        taskStore.addTask(1, remoteTaskInfo);
        assertThat(taskStore.getMostRecentTasks()).isEmpty();
    }

    private RemoteTaskInfo createNewRemoteTaskInfo(
        int id,
        String label,