Loading services/companion/java/com/android/server/companion/datatransfer/continuity/TaskBroadcaster.java +6 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.companion.datatransfer.continuity; import static android.companion.CompanionDeviceManager.MESSAGE_ONEWAY_TASK_CONTINUITY; import static com.android.server.companion.datatransfer.contextsync.BitmapUtils.renderDrawableToByteArray; import android.app.ActivityManager; import android.app.ActivityManager.RunningTaskInfo; Loading @@ -28,6 +29,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.RemoteException; import android.util.Slog; Loading Loading @@ -267,10 +269,13 @@ class TaskBroadcaster String baseApplicationLabel = mPackageManager.getApplicationLabel( packageInfo.applicationInfo).toString(); Drawable baseApplicationIcon = mPackageManager.getApplicationIcon( packageInfo.applicationInfo); return new RemoteTaskInfo( taskInfo.taskId, baseApplicationLabel, taskInfo.lastActiveTime, new byte[0]); renderDrawableToByteArray(baseApplicationIcon)); } } No newline at end of file services/companion/java/com/android/server/companion/datatransfer/continuity/messages/RemoteTaskInfo.java +7 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.companion.datatransfer.continuity.messages; import android.companion.datatransfer.continuity.RemoteTask; import android.graphics.drawable.Icon; import android.util.proto.ProtoInputStream; import android.util.proto.ProtoOutputStream; Loading Loading @@ -90,11 +91,17 @@ public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte } public RemoteTask toRemoteTask(int deviceId, String deviceName) { Icon taskIcon = null; if (taskIcon() != null && taskIcon().length > 0) { taskIcon = Icon.createWithData(taskIcon(), 0, taskIcon().length); } return new RemoteTask.Builder(id()) .setLabel(label()) .setDeviceId(deviceId) .setLastUsedTimestampMillis((int) lastUsedTimeMillis()) .setSourceDeviceName(deviceName) .setIcon(taskIcon) .build(); } } No newline at end of file services/tests/servicestests/src/com/android/server/companion/datatransfer/continuity/TaskBroadcasterTest.java +34 −4 Original line number Diff line number Diff line Loading @@ -22,8 +22,10 @@ import static org.mockito.Mockito.when; import static org.mockito.Mockito.times; import static org.mockito.Mockito.never; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.eq; import static com.android.server.companion.datatransfer.contextsync.BitmapUtils.renderDrawableToByteArray; import static com.android.server.companion.datatransfer.continuity.TaskContinuityTestUtils.createMockContext; import static com.android.server.companion.datatransfer.continuity.TaskContinuityTestUtils.createMockCompanionDeviceManager; import static com.android.server.companion.datatransfer.continuity.TaskContinuityTestUtils.createAssociationInfo; Loading @@ -44,6 +46,10 @@ import android.companion.CompanionDeviceManager; import android.companion.ICompanionDeviceManager; import android.companion.AssociationInfo; import android.companion.datatransfer.continuity.RemoteTask; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.platform.test.annotations.Presubmit; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; Loading @@ -59,6 +65,9 @@ import com.android.server.companion.datatransfer.continuity.messages.RemoteTaskR import com.android.server.companion.datatransfer.continuity.messages.RemoteTaskUpdatedMessage; import com.android.server.companion.datatransfer.continuity.messages.TaskContinuityMessageData; import com.android.frameworks.servicestests.R; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading Loading @@ -90,6 +99,10 @@ public class TaskBroadcasterTest { private TaskBroadcaster mTaskBroadcaster; private Drawable mTaskIcon; private byte[] mSerializedTaskIcon; @Before public void setUp() { MockitoAnnotations.initMocks(this); Loading @@ -101,6 +114,11 @@ public class TaskBroadcasterTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); Bitmap bitmap = BitmapFactory.decodeResource( mMockContext.getResources(), R.drawable.black_32x32); mTaskIcon = new BitmapDrawable(mMockContext.getResources(), bitmap); mSerializedTaskIcon = renderDrawableToByteArray(mTaskIcon); // Create TaskBroadcaster. mTaskBroadcaster = new TaskBroadcaster( mMockContext, Loading Loading @@ -173,7 +191,7 @@ public class TaskBroadcasterTest { taskInfo.taskId, expectedLabel, 0, new byte[0]); mSerializedTaskIcon); assertThat(continuityDeviceConnected.getRemoteTasks().get(0)) .isEqualTo(expectedTaskInfo); } Loading Loading @@ -210,8 +228,12 @@ public class TaskBroadcasterTest { assertThat(taskContinuityMessage.getData()).isInstanceOf(RemoteTaskAddedMessage.class); RemoteTaskAddedMessage remoteTaskAddedMessage = (RemoteTaskAddedMessage) taskContinuityMessage.getData(); RemoteTaskInfo expectedTaskInfo = new RemoteTaskInfo(taskId, taskLabel, 0, new byte[0]); assertThat(remoteTaskAddedMessage.getTask()).isEqualTo(expectedTaskInfo); RemoteTaskInfo expectedTaskInfo = new RemoteTaskInfo( taskId, taskLabel, 0, mSerializedTaskIcon); assertEquals(expectedTaskInfo, remoteTaskAddedMessage.getTask()); } @Test Loading Loading @@ -266,7 +288,12 @@ public class TaskBroadcasterTest { RemoteTaskUpdatedMessage remoteTaskUpdated = (RemoteTaskUpdatedMessage) actualMessage.getData(); RemoteTaskInfo expectedTaskInfo = new RemoteTaskInfo(taskId, taskLabel, 0, new byte[0]); RemoteTaskInfo expectedTaskInfo = new RemoteTaskInfo( taskId, taskLabel, 0, mSerializedTaskIcon); assertThat(remoteTaskUpdated.getTask()).isEqualTo(expectedTaskInfo); } Loading @@ -290,6 +317,9 @@ public class TaskBroadcasterTest { when(mMockPackageManager.getApplicationLabel(any(ApplicationInfo.class))) .thenReturn(label); when(mMockPackageManager.getApplicationIcon(any(ApplicationInfo.class))) .thenReturn(mTaskIcon); return taskInfo; } } No newline at end of file Loading
services/companion/java/com/android/server/companion/datatransfer/continuity/TaskBroadcaster.java +6 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.companion.datatransfer.continuity; import static android.companion.CompanionDeviceManager.MESSAGE_ONEWAY_TASK_CONTINUITY; import static com.android.server.companion.datatransfer.contextsync.BitmapUtils.renderDrawableToByteArray; import android.app.ActivityManager; import android.app.ActivityManager.RunningTaskInfo; Loading @@ -28,6 +29,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.RemoteException; import android.util.Slog; Loading Loading @@ -267,10 +269,13 @@ class TaskBroadcaster String baseApplicationLabel = mPackageManager.getApplicationLabel( packageInfo.applicationInfo).toString(); Drawable baseApplicationIcon = mPackageManager.getApplicationIcon( packageInfo.applicationInfo); return new RemoteTaskInfo( taskInfo.taskId, baseApplicationLabel, taskInfo.lastActiveTime, new byte[0]); renderDrawableToByteArray(baseApplicationIcon)); } } No newline at end of file
services/companion/java/com/android/server/companion/datatransfer/continuity/messages/RemoteTaskInfo.java +7 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.companion.datatransfer.continuity.messages; import android.companion.datatransfer.continuity.RemoteTask; import android.graphics.drawable.Icon; import android.util.proto.ProtoInputStream; import android.util.proto.ProtoOutputStream; Loading Loading @@ -90,11 +91,17 @@ public record RemoteTaskInfo(int id, String label, long lastUsedTimeMillis, byte } public RemoteTask toRemoteTask(int deviceId, String deviceName) { Icon taskIcon = null; if (taskIcon() != null && taskIcon().length > 0) { taskIcon = Icon.createWithData(taskIcon(), 0, taskIcon().length); } return new RemoteTask.Builder(id()) .setLabel(label()) .setDeviceId(deviceId) .setLastUsedTimestampMillis((int) lastUsedTimeMillis()) .setSourceDeviceName(deviceName) .setIcon(taskIcon) .build(); } } No newline at end of file
services/tests/servicestests/src/com/android/server/companion/datatransfer/continuity/TaskBroadcasterTest.java +34 −4 Original line number Diff line number Diff line Loading @@ -22,8 +22,10 @@ import static org.mockito.Mockito.when; import static org.mockito.Mockito.times; import static org.mockito.Mockito.never; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.eq; import static com.android.server.companion.datatransfer.contextsync.BitmapUtils.renderDrawableToByteArray; import static com.android.server.companion.datatransfer.continuity.TaskContinuityTestUtils.createMockContext; import static com.android.server.companion.datatransfer.continuity.TaskContinuityTestUtils.createMockCompanionDeviceManager; import static com.android.server.companion.datatransfer.continuity.TaskContinuityTestUtils.createAssociationInfo; Loading @@ -44,6 +46,10 @@ import android.companion.CompanionDeviceManager; import android.companion.ICompanionDeviceManager; import android.companion.AssociationInfo; import android.companion.datatransfer.continuity.RemoteTask; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.platform.test.annotations.Presubmit; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; Loading @@ -59,6 +65,9 @@ import com.android.server.companion.datatransfer.continuity.messages.RemoteTaskR import com.android.server.companion.datatransfer.continuity.messages.RemoteTaskUpdatedMessage; import com.android.server.companion.datatransfer.continuity.messages.TaskContinuityMessageData; import com.android.frameworks.servicestests.R; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading Loading @@ -90,6 +99,10 @@ public class TaskBroadcasterTest { private TaskBroadcaster mTaskBroadcaster; private Drawable mTaskIcon; private byte[] mSerializedTaskIcon; @Before public void setUp() { MockitoAnnotations.initMocks(this); Loading @@ -101,6 +114,11 @@ public class TaskBroadcasterTest { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); Bitmap bitmap = BitmapFactory.decodeResource( mMockContext.getResources(), R.drawable.black_32x32); mTaskIcon = new BitmapDrawable(mMockContext.getResources(), bitmap); mSerializedTaskIcon = renderDrawableToByteArray(mTaskIcon); // Create TaskBroadcaster. mTaskBroadcaster = new TaskBroadcaster( mMockContext, Loading Loading @@ -173,7 +191,7 @@ public class TaskBroadcasterTest { taskInfo.taskId, expectedLabel, 0, new byte[0]); mSerializedTaskIcon); assertThat(continuityDeviceConnected.getRemoteTasks().get(0)) .isEqualTo(expectedTaskInfo); } Loading Loading @@ -210,8 +228,12 @@ public class TaskBroadcasterTest { assertThat(taskContinuityMessage.getData()).isInstanceOf(RemoteTaskAddedMessage.class); RemoteTaskAddedMessage remoteTaskAddedMessage = (RemoteTaskAddedMessage) taskContinuityMessage.getData(); RemoteTaskInfo expectedTaskInfo = new RemoteTaskInfo(taskId, taskLabel, 0, new byte[0]); assertThat(remoteTaskAddedMessage.getTask()).isEqualTo(expectedTaskInfo); RemoteTaskInfo expectedTaskInfo = new RemoteTaskInfo( taskId, taskLabel, 0, mSerializedTaskIcon); assertEquals(expectedTaskInfo, remoteTaskAddedMessage.getTask()); } @Test Loading Loading @@ -266,7 +288,12 @@ public class TaskBroadcasterTest { RemoteTaskUpdatedMessage remoteTaskUpdated = (RemoteTaskUpdatedMessage) actualMessage.getData(); RemoteTaskInfo expectedTaskInfo = new RemoteTaskInfo(taskId, taskLabel, 0, new byte[0]); RemoteTaskInfo expectedTaskInfo = new RemoteTaskInfo( taskId, taskLabel, 0, mSerializedTaskIcon); assertThat(remoteTaskUpdated.getTask()).isEqualTo(expectedTaskInfo); } Loading @@ -290,6 +317,9 @@ public class TaskBroadcasterTest { when(mMockPackageManager.getApplicationLabel(any(ApplicationInfo.class))) .thenReturn(label); when(mMockPackageManager.getApplicationIcon(any(ApplicationInfo.class))) .thenReturn(mTaskIcon); return taskInfo; } } No newline at end of file