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

Commit 1ba8ea9b authored by Joe Antonetti's avatar Joe Antonetti Committed by Android (Google) Code Review
Browse files

Merge "Add incoming RemoteTaskAddedMessages to RemoteTaskStore" into main

parents 5530cd81 9a45bedc
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.Context;
import android.util.Slog;
import android.util.Slog;


import com.android.server.companion.datatransfer.continuity.messages.ContinuityDeviceConnected;
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.RemoteTaskRemovedMessage;
import com.android.server.companion.datatransfer.continuity.messages.TaskContinuityMessage;
import com.android.server.companion.datatransfer.continuity.messages.TaskContinuityMessage;
import com.android.server.companion.datatransfer.continuity.tasks.RemoteTaskStore;
import com.android.server.companion.datatransfer.continuity.tasks.RemoteTaskStore;
@@ -108,6 +109,11 @@ public final class TaskContinuityManagerService extends SystemService {
                    associationId,
                    associationId,
                    continuityDeviceConnected.getRemoteTasks());
                    continuityDeviceConnected.getRemoteTasks());
                break;
                break;
            case RemoteTaskAddedMessage remoteTaskAddedMessage:
                mRemoteTaskStore.addTask(
                    associationId,
                    remoteTaskAddedMessage.getTask());
                break;
            case RemoteTaskRemovedMessage remoteTaskRemovedMessage:
            case RemoteTaskRemovedMessage remoteTaskRemovedMessage:
                mRemoteTaskStore.removeTask(
                mRemoteTaskStore.removeTask(
                    associationId,
                    associationId,
+15 −0
Original line number Original line 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) {
   public void removeTask(int associationId, int taskId) {
        synchronized (mRemoteDeviceTaskLists) {
        synchronized (mRemoteDeviceTaskLists) {
            if (!mRemoteDeviceTaskLists.containsKey(associationId)) {
            if (!mRemoteDeviceTaskLists.containsKey(associationId)) {
+29 −0
Original line number Original line Diff line number Diff line
@@ -141,6 +141,35 @@ public class RemoteTaskStoreTest {
        assertThat(taskStore.getMostRecentTasks()).isEmpty();
        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(
    private RemoteTaskInfo createNewRemoteTaskInfo(
        int id,
        int id,
        String label,
        String label,