diff options
| author | 2023-04-11 17:12:20 +0000 | |
|---|---|---|
| committer | 2023-04-13 17:16:21 +0000 | |
| commit | 7a8f22792e45630bff14eb8b276c7649b0d79097 (patch) | |
| tree | 8ea475a3b60c239ee51f34d6d018ed58fcc658df | |
| parent | 3273d2f98039062b980365cd3643631023b315d5 (diff) | |
[CDM] Add shell cmd to create a dummy transport
Fix: 277763214
Test: manually tested the cmd command
Change-Id: I3dfc93ee450654755c268215a77feeb496669511
Merged-In: I3dfc93ee450654755c268215a77feeb496669511
3 files changed, 33 insertions, 7 deletions
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java index 5b320a87d113..d2c41a461d1c 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -899,12 +899,9 @@ public class CompanionDeviceManagerService extends SystemService { public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err, String[] args, ShellCallback callback, ResultReceiver resultReceiver) throws RemoteException { - enforceCallerCanManageCompanionDevice(getContext(), "onShellCommand"); - final CompanionDeviceShellCommand cmd = new CompanionDeviceShellCommand( - CompanionDeviceManagerService.this, - mAssociationStore, - mDevicePresenceMonitor); - cmd.exec(this, in, out, err, args, callback, resultReceiver); + new CompanionDeviceShellCommand(CompanionDeviceManagerService.this, mAssociationStore, + mDevicePresenceMonitor, mTransportManager) + .exec(this, in, out, err, args, callback, resultReceiver); } @Override diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java b/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java index 6889bcd63355..6de3585d8d17 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java @@ -22,6 +22,7 @@ import android.os.Binder; import android.os.ShellCommand; import com.android.server.companion.presence.CompanionDevicePresenceMonitor; +import com.android.server.companion.transport.CompanionTransportManager; import java.io.PrintWriter; import java.util.List; @@ -32,13 +33,16 @@ class CompanionDeviceShellCommand extends ShellCommand { private final CompanionDeviceManagerService mService; private final AssociationStore mAssociationStore; private final CompanionDevicePresenceMonitor mDevicePresenceMonitor; + private final CompanionTransportManager mTransportManager; CompanionDeviceShellCommand(CompanionDeviceManagerService service, AssociationStore associationStore, - CompanionDevicePresenceMonitor devicePresenceMonitor) { + CompanionDevicePresenceMonitor devicePresenceMonitor, + CompanionTransportManager transportManager) { mService = service; mAssociationStore = associationStore; mDevicePresenceMonitor = devicePresenceMonitor; + mTransportManager = transportManager; } @Override @@ -107,6 +111,12 @@ class CompanionDeviceShellCommand extends ShellCommand { } break; + case "create-dummy-transport": + // This command creates a RawTransport in order to test Transport listeners + associationId = getNextIntArgRequired(); + mTransportManager.createDummyTransport(associationId); + break; + default: return handleDefaultCommands(cmd); } @@ -165,5 +175,8 @@ class CompanionDeviceShellCommand extends ShellCommand { pw.println(" for a long time (90 days or as configured via "); pw.println(" \"debug.cdm.cdmservice.cleanup_time_window\" system property). "); pw.println(" USE FOR DEBUGGING AND/OR TESTING PURPOSES ONLY."); + + pw.println(" create-dummy-transport <ASSOCIATION_ID>"); + pw.println(" Create a dummy RawTransport for testing puspose only"); } } diff --git a/services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java b/services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java index d54aa7c101d7..9677b70f4916 100644 --- a/services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java +++ b/services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java @@ -44,6 +44,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.server.LocalServices; import com.android.server.companion.AssociationStore; +import java.io.FileDescriptor; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; @@ -350,6 +351,21 @@ public class CompanionTransportManager { this.mSecureTransportEnabled = enabled; } + /** + * For testing purpose only. + * + * Create a dummy RawTransport and notify onTransportChanged listeners. + */ + public void createDummyTransport(int associationId) { + synchronized (mTransports) { + FileDescriptor fd = new FileDescriptor(); + ParcelFileDescriptor pfd = new ParcelFileDescriptor(fd); + Transport transport = new RawTransport(associationId, pfd, mContext); + mTransports.put(associationId, transport); + notifyOnTransportsChanged(); + } + } + private boolean isSecureTransportEnabled() { boolean enabled = !Build.IS_DEBUGGABLE || mSecureTransportEnabled; |