diff options
author | 2020-05-08 16:23:20 -0700 | |
---|---|---|
committer | 2020-09-10 13:27:08 -0700 | |
commit | 28ba5b97e8456d44bcc6f88f85fdcf9978ac3e8a (patch) | |
tree | 76f2be47432b5b3fc1476733982820fa33d196dc | |
parent | c79176dc646bb00402ee467500cd978d2d9f5c34 (diff) |
Fix bug in dumpsys
Previously, we would reset the active modules list every time
listModules() is called. We've never seen that before, since there
would only be one session until now.
With this change, multiple sessions are dumped.
Change-Id: Ic0d59ca341e659499a9d06dccd452453e02952ef
Bug: 163865561
-rw-r--r-- | services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java index 51519cb56a11..95a30c7f0278 100644 --- a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java +++ b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java @@ -171,9 +171,22 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware // From here on, every exception isn't client's fault. try { SoundTriggerModuleDescriptor[] result = mDelegate.listModules(); - mModules = new HashMap<>(result.length); - for (SoundTriggerModuleDescriptor desc : result) { - mModules.put(desc.handle, new ModuleState(desc.properties)); + if (mModules == null) { + mModules = new HashMap<>(result.length); + for (SoundTriggerModuleDescriptor desc : result) { + mModules.put(desc.handle, new ModuleState(desc.properties)); + } + } else { + if (result.length != mModules.size()) { + throw new RuntimeException( + "listModules must always return the same result."); + } + for (SoundTriggerModuleDescriptor desc : result) { + if (!mModules.containsKey(desc.handle)) { + throw new RuntimeException( + "listModules must always return the same result."); + } + } } return result; } catch (Exception e) { @@ -680,6 +693,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware void dump(PrintWriter pw) { if (mState == ModuleStatus.ALIVE) { + pw.println("-------------------------------"); pw.printf("Session %s, client: %s\n", toString(), ObjectPrinter.print(mOriginatorIdentity, true, 16)); pw.printf("Loaded models (handle, active, description):", toString()); @@ -693,6 +707,7 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware pw.print(entry.getValue().description); pw.println(); } + pw.println(); } else { pw.printf("Session %s is dead", toString()); pw.println(); |