keep volume listener across mocking

- sysui sets it once and it should be kept across mocking
  cycle to make volume ui work across mocked tests

bug: 30646148
Change-Id: Ie978eb53b56ee4fd83703b99ae6622431387f5a4
diff --git a/service/src/com/android/car/CarVolumeService.java b/service/src/com/android/car/CarVolumeService.java
index c8bfc90..a0d3033 100644
--- a/service/src/com/android/car/CarVolumeService.java
+++ b/service/src/com/android/car/CarVolumeService.java
@@ -47,6 +47,8 @@
 
     private CarVolumeController mCarVolumeController;
 
+    private IVolumeController mIVolumeController;
+
     public static int androidStreamToCarUsage(int logicalAndroidStream) {
         return CarAudioAttributesUtil.getCarUsageFromAudioAttributes(
                 new AudioAttributes.Builder()
@@ -66,6 +68,9 @@
                 mAudioService, mAudioHal, mInputService);
 
         mCarVolumeController.init();
+        if (mIVolumeController != null) {
+            mCarVolumeController.setVolumeController(mIVolumeController);
+        }
         mInputService.setVolumeKeyListener(mCarVolumeController);
     }
 
@@ -73,7 +78,8 @@
         getController().setStreamVolume(streamType, index, flags);
     }
 
-    public void setVolumeController(IVolumeController controller) {
+    public synchronized void setVolumeController(IVolumeController controller) {
+        mIVolumeController = controller;
         getController().setVolumeController(controller);
     }