Loading core/java/android/companion/CompanionDeviceManager.java +4 −4 Original line number Diff line number Diff line Loading @@ -1086,7 +1086,7 @@ public final class CompanionDeviceManager { } Objects.requireNonNull(deviceAddress, "address cannot be null"); try { mService.registerDevicePresenceListenerService(deviceAddress, mService.legacyStartObservingDevicePresence(deviceAddress, mContext.getOpPackageName(), mContext.getUserId()); } catch (RemoteException e) { ExceptionUtils.propagateIfInstanceOf(e.getCause(), DeviceNotAssociatedException.class); Loading Loading @@ -1128,7 +1128,7 @@ public final class CompanionDeviceManager { } Objects.requireNonNull(deviceAddress, "address cannot be null"); try { mService.unregisterDevicePresenceListenerService(deviceAddress, mService.legacyStopObservingDevicePresence(deviceAddress, mContext.getPackageName(), mContext.getUserId()); } catch (RemoteException e) { ExceptionUtils.propagateIfInstanceOf(e.getCause(), DeviceNotAssociatedException.class); Loading Loading @@ -1328,7 +1328,7 @@ public final class CompanionDeviceManager { @RequiresPermission(android.Manifest.permission.REQUEST_COMPANION_SELF_MANAGED) public void notifyDeviceAppeared(int associationId) { try { mService.notifyDeviceAppeared(associationId); mService.notifySelfManagedDeviceAppeared(associationId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -1350,7 +1350,7 @@ public final class CompanionDeviceManager { @RequiresPermission(android.Manifest.permission.REQUEST_COMPANION_SELF_MANAGED) public void notifyDeviceDisappeared(int associationId) { try { mService.notifyDeviceDisappeared(associationId); mService.notifySelfManagedDeviceDisappeared(associationId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading core/java/android/companion/ICompanionDeviceManager.aidl +12 −12 Original line number Diff line number Diff line Loading @@ -59,12 +59,16 @@ interface ICompanionDeviceManager { int userId); @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") void registerDevicePresenceListenerService(in String deviceAddress, in String callingPackage, int userId); void legacyStartObservingDevicePresence(in String deviceAddress, in String callingPackage, int userId); @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") void unregisterDevicePresenceListenerService(in String deviceAddress, in String callingPackage, int userId); void legacyStopObservingDevicePresence(in String deviceAddress, in String callingPackage, int userId); @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") void startObservingDevicePresence(in ObservingDevicePresenceRequest request, in String packageName, int userId); @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") void stopObservingDevicePresence(in ObservingDevicePresenceRequest request, in String packageName, int userId); boolean canPairWithoutPrompt(in String packageName, in String deviceMacAddress, int userId); Loading Loading @@ -93,9 +97,11 @@ interface ICompanionDeviceManager { @EnforcePermission("USE_COMPANION_TRANSPORTS") void removeOnMessageReceivedListener(int messageType, IOnMessageReceivedListener listener); void notifyDeviceAppeared(int associationId); @EnforcePermission("REQUEST_COMPANION_SELF_MANAGED") void notifySelfManagedDeviceAppeared(int associationId); void notifyDeviceDisappeared(int associationId); @EnforcePermission("REQUEST_COMPANION_SELF_MANAGED") void notifySelfManagedDeviceDisappeared(int associationId); PendingIntent buildPermissionTransferUserConsentIntent(String callingPackage, int userId, int associationId); Loading Loading @@ -135,10 +141,4 @@ interface ICompanionDeviceManager { byte[] getBackupPayload(int userId); void applyRestoredPayload(in byte[] payload, int userId); @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") void startObservingDevicePresence(in ObservingDevicePresenceRequest request, in String packageName, int userId); @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") void stopObservingDevicePresence(in ObservingDevicePresenceRequest request, in String packageName, int userId); } services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +66 −500 File changed.Preview size limit exceeded, changes collapsed. Show changes services/companion/java/com/android/server/companion/CompanionDeviceManagerServiceInternal.java +2 −1 Original line number Diff line number Diff line Loading @@ -27,8 +27,9 @@ import java.util.Collection; * Companion Device Manager Local System Service Interface. */ public interface CompanionDeviceManagerServiceInternal { /** * @see CompanionDeviceManagerService#removeInactiveSelfManagedAssociations * Remove idle self-managed associations. */ void removeInactiveSelfManagedAssociations(); Loading services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java +21 −20 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ package com.android.server.companion; import static android.companion.CompanionDeviceManager.MESSAGE_REQUEST_CONTEXT_SYNC; import static com.android.server.companion.utils.PermissionsUtils.sanitizeWithCallerChecks; import android.companion.AssociationInfo; import android.companion.ContextSyncMessage; import android.companion.Flags; Loading @@ -38,7 +36,7 @@ import com.android.server.companion.association.DisassociationProcessor; import com.android.server.companion.datatransfer.SystemDataTransferProcessor; import com.android.server.companion.datatransfer.contextsync.BitmapUtils; import com.android.server.companion.datatransfer.contextsync.CrossDeviceSyncController; import com.android.server.companion.presence.CompanionDevicePresenceMonitor; import com.android.server.companion.presence.DevicePresenceProcessor; import com.android.server.companion.presence.ObservableUuid; import com.android.server.companion.transport.CompanionTransportManager; Loading @@ -51,7 +49,7 @@ class CompanionDeviceShellCommand extends ShellCommand { private final CompanionDeviceManagerService mService; private final DisassociationProcessor mDisassociationProcessor; private final AssociationStore mAssociationStore; private final CompanionDevicePresenceMonitor mDevicePresenceMonitor; private final DevicePresenceProcessor mDevicePresenceProcessor; private final CompanionTransportManager mTransportManager; private final SystemDataTransferProcessor mSystemDataTransferProcessor; Loading @@ -60,7 +58,7 @@ class CompanionDeviceShellCommand extends ShellCommand { CompanionDeviceShellCommand(CompanionDeviceManagerService service, AssociationStore associationStore, CompanionDevicePresenceMonitor devicePresenceMonitor, DevicePresenceProcessor devicePresenceProcessor, CompanionTransportManager transportManager, SystemDataTransferProcessor systemDataTransferProcessor, AssociationRequestsProcessor associationRequestsProcessor, Loading @@ -68,7 +66,7 @@ class CompanionDeviceShellCommand extends ShellCommand { DisassociationProcessor disassociationProcessor) { mService = service; mAssociationStore = associationStore; mDevicePresenceMonitor = devicePresenceMonitor; mDevicePresenceProcessor = devicePresenceProcessor; mTransportManager = transportManager; mSystemDataTransferProcessor = systemDataTransferProcessor; mAssociationRequestsProcessor = associationRequestsProcessor; Loading @@ -85,7 +83,7 @@ class CompanionDeviceShellCommand extends ShellCommand { if ("simulate-device-event".equals(cmd) && Flags.devicePresence()) { associationId = getNextIntArgRequired(); int event = getNextIntArgRequired(); mDevicePresenceMonitor.simulateDeviceEvent(associationId, event); mDevicePresenceProcessor.simulateDeviceEvent(associationId, event); return 0; } Loading @@ -97,7 +95,7 @@ class CompanionDeviceShellCommand extends ShellCommand { ObservableUuid observableUuid = new ObservableUuid( userId, ParcelUuid.fromString(uuid), packageName, System.currentTimeMillis()); mDevicePresenceMonitor.simulateDeviceEventByUuid(observableUuid, event); mDevicePresenceProcessor.simulateDeviceEventByUuid(observableUuid, event); return 0; } Loading @@ -124,8 +122,9 @@ class CompanionDeviceShellCommand extends ShellCommand { String address = getNextArgRequired(); String deviceProfile = getNextArg(); final MacAddress macAddress = MacAddress.fromString(address); mService.createNewAssociation(userId, packageName, macAddress, /* displayName= */ deviceProfile, deviceProfile, false); mAssociationRequestsProcessor.createAssociation(userId, packageName, macAddress, deviceProfile, deviceProfile, /* associatedDevice */ null, false, /* callback */ null, /* resultReceiver */ null); } break; Loading @@ -134,9 +133,14 @@ class CompanionDeviceShellCommand extends ShellCommand { final String packageName = getNextArgRequired(); final String address = getNextArgRequired(); final AssociationInfo association = mService.getAssociationWithCallerChecks(userId, packageName, address); mAssociationStore.getFirstAssociationByAddress(userId, packageName, address); if (association == null) { out.println("Association doesn't exist."); } else { mDisassociationProcessor.disassociate(association.getId()); } } break; case "disassociate-all": { Loading @@ -144,11 +148,9 @@ class CompanionDeviceShellCommand extends ShellCommand { final List<AssociationInfo> userAssociations = mAssociationStore.getAssociationsByUser(userId); for (AssociationInfo association : userAssociations) { if (sanitizeWithCallerChecks(mService.getContext(), association) != null) { mDisassociationProcessor.disassociate(association.getId()); } } } break; case "refresh-cache": Loading @@ -157,12 +159,12 @@ class CompanionDeviceShellCommand extends ShellCommand { case "simulate-device-appeared": associationId = getNextIntArgRequired(); mDevicePresenceMonitor.simulateDeviceEvent(associationId, /* event */ 0); mDevicePresenceProcessor.simulateDeviceEvent(associationId, /* event */ 0); break; case "simulate-device-disappeared": associationId = getNextIntArgRequired(); mDevicePresenceMonitor.simulateDeviceEvent(associationId, /* event */ 1); mDevicePresenceProcessor.simulateDeviceEvent(associationId, /* event */ 1); break; case "get-backup-payload": { Loading Loading @@ -410,10 +412,9 @@ class CompanionDeviceShellCommand extends ShellCommand { pw.println(" Remove an existing Association."); pw.println(" disassociate-all USER_ID"); pw.println(" Remove all Associations for a user."); pw.println(" clear-association-memory-cache"); pw.println(" refresh-cache"); pw.println(" Clear the in-memory association cache and reload all association "); pw.println(" information from persistent storage. USE FOR DEBUGGING PURPOSES ONLY."); pw.println(" USE FOR DEBUGGING AND/OR TESTING PURPOSES ONLY."); pw.println(" information from disk. USE FOR DEBUGGING AND/OR TESTING PURPOSES ONLY."); pw.println(" simulate-device-appeared ASSOCIATION_ID"); pw.println(" Make CDM act as if the given companion device has appeared."); Loading Loading
core/java/android/companion/CompanionDeviceManager.java +4 −4 Original line number Diff line number Diff line Loading @@ -1086,7 +1086,7 @@ public final class CompanionDeviceManager { } Objects.requireNonNull(deviceAddress, "address cannot be null"); try { mService.registerDevicePresenceListenerService(deviceAddress, mService.legacyStartObservingDevicePresence(deviceAddress, mContext.getOpPackageName(), mContext.getUserId()); } catch (RemoteException e) { ExceptionUtils.propagateIfInstanceOf(e.getCause(), DeviceNotAssociatedException.class); Loading Loading @@ -1128,7 +1128,7 @@ public final class CompanionDeviceManager { } Objects.requireNonNull(deviceAddress, "address cannot be null"); try { mService.unregisterDevicePresenceListenerService(deviceAddress, mService.legacyStopObservingDevicePresence(deviceAddress, mContext.getPackageName(), mContext.getUserId()); } catch (RemoteException e) { ExceptionUtils.propagateIfInstanceOf(e.getCause(), DeviceNotAssociatedException.class); Loading Loading @@ -1328,7 +1328,7 @@ public final class CompanionDeviceManager { @RequiresPermission(android.Manifest.permission.REQUEST_COMPANION_SELF_MANAGED) public void notifyDeviceAppeared(int associationId) { try { mService.notifyDeviceAppeared(associationId); mService.notifySelfManagedDeviceAppeared(associationId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -1350,7 +1350,7 @@ public final class CompanionDeviceManager { @RequiresPermission(android.Manifest.permission.REQUEST_COMPANION_SELF_MANAGED) public void notifyDeviceDisappeared(int associationId) { try { mService.notifyDeviceDisappeared(associationId); mService.notifySelfManagedDeviceDisappeared(associationId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading
core/java/android/companion/ICompanionDeviceManager.aidl +12 −12 Original line number Diff line number Diff line Loading @@ -59,12 +59,16 @@ interface ICompanionDeviceManager { int userId); @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") void registerDevicePresenceListenerService(in String deviceAddress, in String callingPackage, int userId); void legacyStartObservingDevicePresence(in String deviceAddress, in String callingPackage, int userId); @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") void unregisterDevicePresenceListenerService(in String deviceAddress, in String callingPackage, int userId); void legacyStopObservingDevicePresence(in String deviceAddress, in String callingPackage, int userId); @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") void startObservingDevicePresence(in ObservingDevicePresenceRequest request, in String packageName, int userId); @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") void stopObservingDevicePresence(in ObservingDevicePresenceRequest request, in String packageName, int userId); boolean canPairWithoutPrompt(in String packageName, in String deviceMacAddress, int userId); Loading Loading @@ -93,9 +97,11 @@ interface ICompanionDeviceManager { @EnforcePermission("USE_COMPANION_TRANSPORTS") void removeOnMessageReceivedListener(int messageType, IOnMessageReceivedListener listener); void notifyDeviceAppeared(int associationId); @EnforcePermission("REQUEST_COMPANION_SELF_MANAGED") void notifySelfManagedDeviceAppeared(int associationId); void notifyDeviceDisappeared(int associationId); @EnforcePermission("REQUEST_COMPANION_SELF_MANAGED") void notifySelfManagedDeviceDisappeared(int associationId); PendingIntent buildPermissionTransferUserConsentIntent(String callingPackage, int userId, int associationId); Loading Loading @@ -135,10 +141,4 @@ interface ICompanionDeviceManager { byte[] getBackupPayload(int userId); void applyRestoredPayload(in byte[] payload, int userId); @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") void startObservingDevicePresence(in ObservingDevicePresenceRequest request, in String packageName, int userId); @EnforcePermission("REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") void stopObservingDevicePresence(in ObservingDevicePresenceRequest request, in String packageName, int userId); }
services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +66 −500 File changed.Preview size limit exceeded, changes collapsed. Show changes
services/companion/java/com/android/server/companion/CompanionDeviceManagerServiceInternal.java +2 −1 Original line number Diff line number Diff line Loading @@ -27,8 +27,9 @@ import java.util.Collection; * Companion Device Manager Local System Service Interface. */ public interface CompanionDeviceManagerServiceInternal { /** * @see CompanionDeviceManagerService#removeInactiveSelfManagedAssociations * Remove idle self-managed associations. */ void removeInactiveSelfManagedAssociations(); Loading
services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java +21 −20 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ package com.android.server.companion; import static android.companion.CompanionDeviceManager.MESSAGE_REQUEST_CONTEXT_SYNC; import static com.android.server.companion.utils.PermissionsUtils.sanitizeWithCallerChecks; import android.companion.AssociationInfo; import android.companion.ContextSyncMessage; import android.companion.Flags; Loading @@ -38,7 +36,7 @@ import com.android.server.companion.association.DisassociationProcessor; import com.android.server.companion.datatransfer.SystemDataTransferProcessor; import com.android.server.companion.datatransfer.contextsync.BitmapUtils; import com.android.server.companion.datatransfer.contextsync.CrossDeviceSyncController; import com.android.server.companion.presence.CompanionDevicePresenceMonitor; import com.android.server.companion.presence.DevicePresenceProcessor; import com.android.server.companion.presence.ObservableUuid; import com.android.server.companion.transport.CompanionTransportManager; Loading @@ -51,7 +49,7 @@ class CompanionDeviceShellCommand extends ShellCommand { private final CompanionDeviceManagerService mService; private final DisassociationProcessor mDisassociationProcessor; private final AssociationStore mAssociationStore; private final CompanionDevicePresenceMonitor mDevicePresenceMonitor; private final DevicePresenceProcessor mDevicePresenceProcessor; private final CompanionTransportManager mTransportManager; private final SystemDataTransferProcessor mSystemDataTransferProcessor; Loading @@ -60,7 +58,7 @@ class CompanionDeviceShellCommand extends ShellCommand { CompanionDeviceShellCommand(CompanionDeviceManagerService service, AssociationStore associationStore, CompanionDevicePresenceMonitor devicePresenceMonitor, DevicePresenceProcessor devicePresenceProcessor, CompanionTransportManager transportManager, SystemDataTransferProcessor systemDataTransferProcessor, AssociationRequestsProcessor associationRequestsProcessor, Loading @@ -68,7 +66,7 @@ class CompanionDeviceShellCommand extends ShellCommand { DisassociationProcessor disassociationProcessor) { mService = service; mAssociationStore = associationStore; mDevicePresenceMonitor = devicePresenceMonitor; mDevicePresenceProcessor = devicePresenceProcessor; mTransportManager = transportManager; mSystemDataTransferProcessor = systemDataTransferProcessor; mAssociationRequestsProcessor = associationRequestsProcessor; Loading @@ -85,7 +83,7 @@ class CompanionDeviceShellCommand extends ShellCommand { if ("simulate-device-event".equals(cmd) && Flags.devicePresence()) { associationId = getNextIntArgRequired(); int event = getNextIntArgRequired(); mDevicePresenceMonitor.simulateDeviceEvent(associationId, event); mDevicePresenceProcessor.simulateDeviceEvent(associationId, event); return 0; } Loading @@ -97,7 +95,7 @@ class CompanionDeviceShellCommand extends ShellCommand { ObservableUuid observableUuid = new ObservableUuid( userId, ParcelUuid.fromString(uuid), packageName, System.currentTimeMillis()); mDevicePresenceMonitor.simulateDeviceEventByUuid(observableUuid, event); mDevicePresenceProcessor.simulateDeviceEventByUuid(observableUuid, event); return 0; } Loading @@ -124,8 +122,9 @@ class CompanionDeviceShellCommand extends ShellCommand { String address = getNextArgRequired(); String deviceProfile = getNextArg(); final MacAddress macAddress = MacAddress.fromString(address); mService.createNewAssociation(userId, packageName, macAddress, /* displayName= */ deviceProfile, deviceProfile, false); mAssociationRequestsProcessor.createAssociation(userId, packageName, macAddress, deviceProfile, deviceProfile, /* associatedDevice */ null, false, /* callback */ null, /* resultReceiver */ null); } break; Loading @@ -134,9 +133,14 @@ class CompanionDeviceShellCommand extends ShellCommand { final String packageName = getNextArgRequired(); final String address = getNextArgRequired(); final AssociationInfo association = mService.getAssociationWithCallerChecks(userId, packageName, address); mAssociationStore.getFirstAssociationByAddress(userId, packageName, address); if (association == null) { out.println("Association doesn't exist."); } else { mDisassociationProcessor.disassociate(association.getId()); } } break; case "disassociate-all": { Loading @@ -144,11 +148,9 @@ class CompanionDeviceShellCommand extends ShellCommand { final List<AssociationInfo> userAssociations = mAssociationStore.getAssociationsByUser(userId); for (AssociationInfo association : userAssociations) { if (sanitizeWithCallerChecks(mService.getContext(), association) != null) { mDisassociationProcessor.disassociate(association.getId()); } } } break; case "refresh-cache": Loading @@ -157,12 +159,12 @@ class CompanionDeviceShellCommand extends ShellCommand { case "simulate-device-appeared": associationId = getNextIntArgRequired(); mDevicePresenceMonitor.simulateDeviceEvent(associationId, /* event */ 0); mDevicePresenceProcessor.simulateDeviceEvent(associationId, /* event */ 0); break; case "simulate-device-disappeared": associationId = getNextIntArgRequired(); mDevicePresenceMonitor.simulateDeviceEvent(associationId, /* event */ 1); mDevicePresenceProcessor.simulateDeviceEvent(associationId, /* event */ 1); break; case "get-backup-payload": { Loading Loading @@ -410,10 +412,9 @@ class CompanionDeviceShellCommand extends ShellCommand { pw.println(" Remove an existing Association."); pw.println(" disassociate-all USER_ID"); pw.println(" Remove all Associations for a user."); pw.println(" clear-association-memory-cache"); pw.println(" refresh-cache"); pw.println(" Clear the in-memory association cache and reload all association "); pw.println(" information from persistent storage. USE FOR DEBUGGING PURPOSES ONLY."); pw.println(" USE FOR DEBUGGING AND/OR TESTING PURPOSES ONLY."); pw.println(" information from disk. USE FOR DEBUGGING AND/OR TESTING PURPOSES ONLY."); pw.println(" simulate-device-appeared ASSOCIATION_ID"); pw.println(" Make CDM act as if the given companion device has appeared."); Loading