Snap for 4656203 from b851b049c1281b7308c0547d71339067b6c1b2c9 to pi-release

Change-Id: Iec6ac98e8af5531ccb897187b4d6825a4bbdcdd2
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index 6ff4fb7..d8f3fbc 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -1613,6 +1613,7 @@
 
         setConnectionCapabilities(connection.getConnectionCapabilities());
         setConnectionProperties(connection.getConnectionProperties());
+        setIsVoipAudioMode(connection.getIsVoipAudioMode());
         setSupportedAudioRoutes(connection.getSupportedAudioRoutes());
         setVideoProvider(connection.getVideoProvider());
         setVideoState(connection.getVideoState());
diff --git a/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java b/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
index e02fd56..ec80911 100644
--- a/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
+++ b/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
@@ -66,6 +66,7 @@
 
 import java.lang.Override;
 import java.lang.String;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Objects;
@@ -134,7 +135,7 @@
     // Used to track the number of missed calls.
     private ConcurrentMap<UserHandle, AtomicInteger> mMissedCallCounts;
 
-    private UserHandle userToLoadAfterBootComplete;
+    private List<UserHandle> mUsersToLoadAfterBootComplete = new ArrayList<>();
 
     public MissedCallNotifierImpl(Context context, PhoneAccountRegistrar phoneAccountRegistrar,
             DefaultDialerCache defaultDialerCache) {
@@ -271,7 +272,7 @@
     }
 
     private void showMissedCallNotification(@NonNull CallInfo callInfo, UserHandle userHandle) {
-        Log.i(this, "showMissedCallNotification()");
+        Log.i(this, "showMissedCallNotification: userHandle=%d", userHandle.getIdentifier());
         mMissedCallCounts.putIfAbsent(userHandle, new AtomicInteger(0));
         int missCallCounts = mMissedCallCounts.get(userHandle).incrementAndGet();
 
@@ -537,10 +538,14 @@
     @Override
     public void reloadAfterBootComplete(final CallerInfoLookupHelper callerInfoLookupHelper,
             CallInfoFactory callInfoFactory) {
-        if (userToLoadAfterBootComplete != null) {
-            reloadFromDatabase(callerInfoLookupHelper,
-                    callInfoFactory, userToLoadAfterBootComplete);
-            userToLoadAfterBootComplete = null;
+        if (!mUsersToLoadAfterBootComplete.isEmpty()) {
+            for (UserHandle handle : mUsersToLoadAfterBootComplete) {
+                Log.i(this, "reloadAfterBootComplete: user=%d", handle.getIdentifier());
+                reloadFromDatabase(callerInfoLookupHelper, callInfoFactory, handle);
+            }
+            mUsersToLoadAfterBootComplete.clear();
+        } else {
+            Log.i(this, "reloadAfterBootComplete: no user(s) to check; skipping reload.");
         }
     }
     /**
@@ -549,11 +554,12 @@
     @Override
     public void reloadFromDatabase(final CallerInfoLookupHelper callerInfoLookupHelper,
             CallInfoFactory callInfoFactory, final UserHandle userHandle) {
-        Log.d(this, "reloadFromDatabase()...");
+        Log.d(this, "reloadFromDatabase: user=%d", userHandle.getIdentifier());
         if (TelecomSystem.getInstance() == null || !TelecomSystem.getInstance().isBootComplete()) {
-            Log.i(this, "Boot not yet complete -- call log db may not be available. Deferring " +
-                    "loading until boot complete.");
-            userToLoadAfterBootComplete = userHandle;
+            Log.i(this, "reloadFromDatabase: Boot not yet complete -- call log db may not be "
+                    + "available. Deferring loading until boot complete for user %d",
+                    userHandle.getIdentifier());
+            mUsersToLoadAfterBootComplete.add(userHandle);
             return;
         }