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

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

Merge "Send Removal Events when Task is Removed" into main

parents 74543c91 a29546ae
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.util.Slog;
import com.android.server.companion.datatransfer.continuity.connectivity.ConnectedAssociationStore;
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.RemoteTaskInfo;
import com.android.server.companion.datatransfer.continuity.messages.TaskContinuityMessage;
import com.android.server.companion.datatransfer.continuity.messages.TaskContinuityMessageData;
@@ -133,6 +134,14 @@ class TaskBroadcaster
        }
    }

    @Override
    public void onTaskRemoved(int taskId) throws RemoteException {
        Slog.v(TAG, "onTaskRemoved: taskId=" + taskId);

        RemoteTaskRemovedMessage taskRemovedMessage = new RemoteTaskRemovedMessage(taskId);
        sendMessageToAllConnectedAssociations(taskRemovedMessage);
    }

    private void sendDeviceConnectedMessage(int associationId) {
        Slog.v(
            TAG,
+28 −0
Original line number Diff line number Diff line
@@ -47,6 +47,8 @@ import com.android.server.companion.datatransfer.continuity.connectivity.Connect
import com.android.server.companion.datatransfer.continuity.messages.ContinuityDeviceConnected;
import com.android.server.companion.datatransfer.continuity.messages.TaskContinuityMessage;
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.TaskContinuityMessageData;

import org.junit.Before;
import org.junit.Test;
@@ -212,4 +214,30 @@ public class TaskBroadcasterTest {
                (RemoteTaskAddedMessage) taskContinuityMessage.getData();
        assertThat(remoteTaskAddedMessage.getTask().getId()).isEqualTo(taskId);
    }

        @Test
    public void testOnTaskRemoved_sendsMessageToAllAssociations() throws Exception {
        // Start broadcasting.
        int taskId = 123;
        mTaskBroadcaster.startBroadcasting();
        verify(mMockConnectedAssociationStore, times(1)).addObserver(mTaskBroadcaster);
        AssociationInfo associationInfo = createAssociationInfo(1, "name1");
        when(mMockConnectedAssociationStore.getConnectedAssociations())
            .thenReturn(Arrays.asList(associationInfo));

        mTaskBroadcaster.onTaskRemoved(taskId);

        // Verify sendMessage is called
        ArgumentCaptor<byte[]> messageCaptor = ArgumentCaptor.forClass(byte[].class);
        verify(mMockCompanionDeviceManagerService, times(1)).sendMessage(
                eq(CompanionDeviceManager.MESSAGE_ONEWAY_TASK_CONTINUITY),
                messageCaptor.capture(),
                any(int[].class));
        byte[] capturedMessage = messageCaptor.getValue();
        TaskContinuityMessage taskContinuityMessage = new TaskContinuityMessage(capturedMessage);
        assertThat(taskContinuityMessage.getData()).isInstanceOf(RemoteTaskRemovedMessage.class);
        RemoteTaskRemovedMessage remoteTaskRemovedMessage =
                (RemoteTaskRemovedMessage) taskContinuityMessage.getData();
        assertThat(remoteTaskRemovedMessage.taskId()).isEqualTo(taskId);
    }
}
 No newline at end of file