Add pending messages to dumpsys

Add a record of the pending messages for the two audio state machines in
the dumpsys in order to debug errors where the state machines get
blocked on a file access.

Bug: 36056251
Test: manual - run dumpsys
Change-Id: I583014783dedb36d9fdd8a0338395f3c0ae6e542
diff --git a/src/com/android/server/telecom/CallAudioManager.java b/src/com/android/server/telecom/CallAudioManager.java
index e50fd21..1075be2 100644
--- a/src/com/android/server/telecom/CallAudioManager.java
+++ b/src/com/android/server/telecom/CallAudioManager.java
@@ -477,6 +477,16 @@
 
         pw.println("Foreground call:");
         pw.println(mForegroundCall);
+
+        pw.println("CallAudioModeStateMachine pending messages:");
+        pw.increaseIndent();
+        mCallAudioModeStateMachine.dumpPendingMessages(pw);
+        pw.decreaseIndent();
+
+        pw.println("CallAudioRouteStateMachine pending messages:");
+        pw.increaseIndent();
+        mCallAudioRouteStateMachine.dumpPendingMessages(pw);
+        pw.decreaseIndent();
     }
 
     @VisibleForTesting
diff --git a/src/com/android/server/telecom/CallAudioModeStateMachine.java b/src/com/android/server/telecom/CallAudioModeStateMachine.java
index 7121a53..3d778f2 100644
--- a/src/com/android/server/telecom/CallAudioModeStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioModeStateMachine.java
@@ -24,6 +24,7 @@
 import android.util.SparseArray;
 
 import com.android.internal.util.IState;
+import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.State;
 import com.android.internal.util.StateMachine;
 
@@ -515,6 +516,10 @@
         }
     }
 
+    public void dumpPendingMessages(IndentingPrintWriter pw) {
+        getHandler().getLooper().dump(pw::println, "");
+    }
+
     @Override
     protected void onPostHandleMessage(Message msg) {
         Log.endSession();
diff --git a/src/com/android/server/telecom/CallAudioRouteStateMachine.java b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
index dd69534..7dfd78c 100644
--- a/src/com/android/server/telecom/CallAudioRouteStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
@@ -37,6 +37,7 @@
 import android.util.SparseArray;
 
 import com.android.internal.util.IState;
+import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.State;
 import com.android.internal.util.StateMachine;
 import com.android.server.telecom.bluetooth.BluetoothRouteManager;
@@ -1318,6 +1319,10 @@
         quitNow();
     }
 
+    public void dumpPendingMessages(IndentingPrintWriter pw) {
+        getHandler().getLooper().dump(pw::println, "");
+    }
+
     /**
      * Sets whether notifications should be suppressed or not.  Used when in a call to ensure the
      * device will not vibrate due to notifications.