diff options
| author | 2022-05-25 21:23:42 +0000 | |
|---|---|---|
| committer | 2022-05-25 21:23:42 +0000 | |
| commit | 5cadf305922e081f80cb4e28f6529dafd9ee6520 (patch) | |
| tree | eaec14654e60ad9b9ac513461e6c6bea95d8adb0 | |
| parent | 5c5e8932c494e83c1124d2d5d808d35f04cda921 (diff) | |
| parent | 103bdc67f44b14d23847eeb8237236017a80c83f (diff) | |
Merge "Implement dumpsys for CompanionDeviceManagerService.CompanionDeviceManagerImpl"
4 files changed, 109 insertions, 8 deletions
diff --git a/services/companion/java/com/android/server/companion/AssociationStoreImpl.java b/services/companion/java/com/android/server/companion/AssociationStoreImpl.java index bd2a97df1d7a..229799a8457d 100644 --- a/services/companion/java/com/android/server/companion/AssociationStoreImpl.java +++ b/services/companion/java/com/android/server/companion/AssociationStoreImpl.java @@ -29,6 +29,7 @@ import android.util.SparseArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.CollectionUtils; +import java.io.PrintWriter; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -267,6 +268,21 @@ class AssociationStoreImpl implements AssociationStore { } } + /** + * Dumps current companion device association states. + */ + public void dump(@NonNull PrintWriter out) { + out.append("Companion Device Associations: "); + if (getAssociations().isEmpty()) { + out.append("<empty>\n"); + } else { + out.append("\n"); + for (AssociationInfo a : getAssociations()) { + out.append(" ").append(a.toString()).append('\n'); + } + } + } + private void broadcastChange(@ChangeType int changeType, AssociationInfo association) { synchronized (mListeners) { for (OnChangeListener listener : mListeners) { diff --git a/services/companion/java/com/android/server/companion/CompanionApplicationController.java b/services/companion/java/com/android/server/companion/CompanionApplicationController.java index c88927895320..2ab1aa80176a 100644 --- a/services/companion/java/com/android/server/companion/CompanionApplicationController.java +++ b/services/companion/java/com/android/server/companion/CompanionApplicationController.java @@ -33,6 +33,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.infra.PerUser; import com.android.internal.util.CollectionUtils; +import java.io.PrintWriter; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -265,6 +266,28 @@ public class CompanionApplicationController { primaryServiceConnector.postOnMessageDispatchedFromSystem(associationId, messageId, message); } + + void dump(@NonNull PrintWriter out) { + out.append("Companion Device Application Controller: \n"); + + synchronized (mBoundCompanionApplications) { + out.append(" Bound Companion Applications: "); + if (mBoundCompanionApplications.size() == 0) { + out.append("<empty>\n"); + } else { + out.append("\n"); + mBoundCompanionApplications.dump(out); + } + } + + out.append(" Companion Applications Scheduled For Rebinding: "); + if (mScheduledForRebindingCompanionApplications.size() == 0) { + out.append("<empty>\n"); + } else { + out.append("\n"); + mScheduledForRebindingCompanionApplications.dump(out); + } + } private void onPrimaryServiceBindingDied(@UserIdInt int userId, @NonNull String packageName) { if (DEBUG) Log.i(TAG, "onPrimaryServiceBindingDied() u" + userId + "/" + packageName); @@ -365,5 +388,23 @@ public class CompanionApplicationController { } } } + + private void dump(@NonNull PrintWriter out) { + for (int i = 0; i < size(); i++) { + final int userId = keyAt(i); + final Map<String, T> forUser = get(userId); + if (forUser.isEmpty()) { + out.append(" u").append(String.valueOf(userId)).append(": <empty>\n"); + } + + for (Map.Entry<String, T> packageValue : forUser.entrySet()) { + final String packageName = packageValue.getKey(); + final T value = packageValue.getValue(); + out.append(" u").append(String.valueOf(userId)).append("\\") + .append(packageName).append(" -> ") + .append(value.toString()).append('\n'); + } + } + } } } diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java index 7af629c43b90..beea374bacc7 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -804,14 +804,9 @@ public class CompanionDeviceManagerService extends SystemService { return; } - // TODO(b/218615185): mAssociationStore.dump() instead - out.append("Companion Device Associations:").append('\n'); - for (AssociationInfo a : mAssociationStore.getAssociations()) { - out.append(" ").append(a.toString()).append('\n'); - } - - // TODO(b/218615185): mDevicePresenceMonitor.dump() - // TODO(b/218615185): mCompanionAppController.dump() + mAssociationStore.dump(out); + mDevicePresenceMonitor.dump(out); + mCompanionAppController.dump(out); } } diff --git a/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java b/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java index 89ed301eb661..9a8f1a55f1cf 100644 --- a/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java +++ b/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java @@ -33,6 +33,7 @@ import android.util.Log; import com.android.server.companion.AssociationStore; +import java.io.PrintWriter; import java.util.HashSet; import java.util.Set; @@ -293,6 +294,54 @@ public class CompanionDevicePresenceMonitor implements AssociationStore.OnChange throw new SecurityException("Caller is neither Shell nor Root"); } + /** + * Dumps system information about devices that are marked as "present". + */ + public void dump(@NonNull PrintWriter out) { + out.append("Companion Device Present: "); + if (mConnectedBtDevices.isEmpty() + && mNearbyBleDevices.isEmpty() + && mReportedSelfManagedDevices.isEmpty()) { + out.append("<empty>\n"); + return; + } else { + out.append("\n"); + } + + out.append(" Connected Bluetooth Devices: "); + if (mConnectedBtDevices.isEmpty()) { + out.append("<empty>\n"); + } else { + out.append("\n"); + for (int associationId : mConnectedBtDevices) { + AssociationInfo a = mAssociationStore.getAssociationById(associationId); + out.append(" ").append(a.toString()).append('\n'); + } + } + + out.append(" Nearby BLE Devices: "); + if (mNearbyBleDevices.isEmpty()) { + out.append("<empty>\n"); + } else { + out.append("\n"); + for (int associationId : mNearbyBleDevices) { + AssociationInfo a = mAssociationStore.getAssociationById(associationId); + out.append(" ").append(a.toString()).append('\n'); + } + } + + out.append(" Self-Reported Devices: "); + if (mReportedSelfManagedDevices.isEmpty()) { + out.append("<empty>\n"); + } else { + out.append("\n"); + for (int associationId : mReportedSelfManagedDevices) { + AssociationInfo a = mAssociationStore.getAssociationById(associationId); + out.append(" ").append(a.toString()).append('\n'); + } + } + } + private class SimulatedDevicePresenceSchedulerHelper extends Handler { SimulatedDevicePresenceSchedulerHelper() { super(Looper.getMainLooper()); |