summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Guojing Yuan <guojing@google.com> 2023-04-11 17:12:20 +0000
committer Guojing Yuan <guojing@google.com> 2023-04-13 17:16:21 +0000
commit7a8f22792e45630bff14eb8b276c7649b0d79097 (patch)
tree8ea475a3b60c239ee51f34d6d018ed58fcc658df
parent3273d2f98039062b980365cd3643631023b315d5 (diff)
[CDM] Add shell cmd to create a dummy transport
Fix: 277763214 Test: manually tested the cmd command Change-Id: I3dfc93ee450654755c268215a77feeb496669511 Merged-In: I3dfc93ee450654755c268215a77feeb496669511
-rw-r--r--services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java9
-rw-r--r--services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java15
-rw-r--r--services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java16
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;