Fix deadlock around locking in AudioManager

Includes proof of concept tests, but the tests are not yet
highlighting the problem, due to its nondeterminism.

Bug: 20103143
Bug: 20108354
Change-Id: I8323a660c6cc4093888f4e608070709a828624e6
diff --git a/src/com/android/server/telecom/ContactsAsyncHelper.java b/src/com/android/server/telecom/ContactsAsyncHelper.java
index ef7ea4c..44fa654 100644
--- a/src/com/android/server/telecom/ContactsAsyncHelper.java
+++ b/src/com/android/server/telecom/ContactsAsyncHelper.java
@@ -127,12 +127,12 @@
                             }
                         }
                     }
-                    synchronized (mLock) {
-                        Log.d(this, "Notifying listener: " + args.listener.toString() +
-                                " image: " + args.displayPhotoUri + " completed");
-                        args.listener.onImageLoadComplete(msg.what, args.photo, args.photoIcon,
+
+                    // Listener will synchronize as needed
+                    Log.d(this, "Notifying listener: " + args.listener.toString() +
+                            " image: " + args.displayPhotoUri + " completed");
+                    args.listener.onImageLoadComplete(msg.what, args.photo, args.photoIcon,
                                 args.cookie);
-                    }
                     break;
                 default:
                     break;