diff options
author | 2022-06-01 00:23:56 +0000 | |
---|---|---|
committer | 2022-06-01 00:23:56 +0000 | |
commit | b578b4081458728ccda96591c64f17bd1cde49e2 (patch) | |
tree | 53247e967693af6f4a8ed72fc39b7d0b5b4d0073 | |
parent | f4047111e8324c4a3056fe3e6b22c148b046a6a6 (diff) | |
parent | 99945d5d70e0cdbffcc00cdeeb4d8c8d8a2a908e (diff) |
Merge "Implement dumpsys for CompanionDeviceManagerService.CompanionDeviceManagerImpl" into tm-dev am: 99945d5d70
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18175782
Change-Id: If5d30a74337428530e25ed6372dac3f7d03705c1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
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 6eb8e2619cb5..64729a2553df 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; @@ -234,6 +235,28 @@ class CompanionApplicationController { primaryServiceConnector.postOnDeviceDisappeared(association); } + 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); @@ -333,5 +356,23 @@ 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 0bfe2825bdd5..3f7cba6a4d09 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -764,14 +764,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..0e4870af9930 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.toShortString()).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.toShortString()).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.toShortString()).append('\n'); + } + } + } + private class SimulatedDevicePresenceSchedulerHelper extends Handler { SimulatedDevicePresenceSchedulerHelper() { super(Looper.getMainLooper()); |