Merge "Fixing bug that prevented \'Emergency call\' from being displayed" into nyc-dev am: 624f6c4
am: 3023298

* commit '3023298a09f00b57fee6c2a3bc15c85294fa6ca4':
  Fixing bug that prevented 'Emergency call' from being displayed
diff --git a/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java b/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
index 6dbbfc1..2839fbb 100644
--- a/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
+++ b/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
@@ -352,12 +352,13 @@
                     @Override
                     public void onQueryComplete(int token, Object cookie, CallerInfo ci) {
                         Log.d(LOG_TAG, "contactsProviderQueryCompleteListener done");
-                        if (ci != null && ci.contactExists) {
-                            if (listener != null) {
+                        // If there are no other directory queries, make sure that the listener is
+                        // notified of this result.  see b/27621628
+                        if ((ci != null && ci.contactExists) ||
+                            !startOtherDirectoriesQuery(token, context, info, listener, cookie)) {
+                            if (listener != null && ci != null) {
                                 listener.onQueryComplete(token, cookie, ci);
                             }
-                        } else {
-                            startOtherDirectoriesQuery(token, context, info, listener, cookie);
                         }
                     }
                 };
@@ -420,15 +421,13 @@
         return c;
     }
 
-    private static void startOtherDirectoriesQuery(int token, Context context, CallerInfo info,
+    // Return value indicates if listener was notified.
+    private static boolean startOtherDirectoriesQuery(int token, Context context, CallerInfo info,
             OnQueryCompleteListener listener, Object cookie) {
         long[] directoryIds = getDirectoryIds(context);
         int size = directoryIds.length;
         if (size == 0) {
-            if (listener != null) {
-                listener.onQueryComplete(token, cookie, info);
-            }
-            return;
+            return false;
         }
 
         DirectoryQueryCompleteListenerFactory listenerFactory =
@@ -448,6 +447,7 @@
                     listenerFactory.newListener(directoryId);
             startQueryInternal(token, context, info, intermediateListener, cookie, uri);
         }
+        return true;
     }
 
     /* Directory lookup related code - START */