am 1d0e426e: am 78cbbb3f: am 0b2b20a9: Add incoming-during-hold case to fullscreen Notification code.

* commit '1d0e426ed2a22deffca8e24c463be7dc44bfe296':
  Add incoming-during-hold case to fullscreen Notification code.
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 7c60bef..86568c6 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -94,7 +94,7 @@
 
         mContactInfoCache = ContactInfoCache.getInstance(context);
 
-        mStatusBarNotifier = new StatusBarNotifier(context, mContactInfoCache, mCallList);
+        mStatusBarNotifier = new StatusBarNotifier(context, mContactInfoCache);
         addListener(mStatusBarNotifier);
 
         mAudioModeProvider = audioModeProvider;
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
index 89c9ff4..6d9fd60 100644
--- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java
+++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
@@ -96,8 +96,7 @@
     private Bitmap mSavedLargeIcon;
     private String mSavedContentTitle;
 
-    public StatusBarNotifier(Context context, ContactInfoCache contactInfoCache,
-            CallList callList) {
+    public StatusBarNotifier(Context context, ContactInfoCache contactInfoCache) {
         Preconditions.checkNotNull(context);
 
         mContext = context;
@@ -254,12 +253,15 @@
     }
 
     private void showNotification(final Call call, final boolean allowFullScreenIntent) {
+        final boolean isIncoming = (call.getState() == Call.State.INCOMING ||
+                call.getState() == Call.State.CALL_WAITING);
+
         // we make a call to the contact info cache to query for supplemental data to what the
         // call provides.  This includes the contact name and photo.
         // This callback will always get called immediately and synchronously with whatever data
         // it has available, and may make a subsequent call later (same thread) if it had to
         // call into the contacts provider for more data.
-        mContactInfoCache.findInfo(call.getIdentification(), call.getState() == Call.State.INCOMING,
+        mContactInfoCache.findInfo(call.getIdentification(), isIncoming,
                 new ContactInfoCacheCallback() {
                     private boolean mAllowFullScreenIntent = allowFullScreenIntent;
 
@@ -457,12 +459,12 @@
     }
 
     /**
-     * Returns the message to use with the notificaiton.
+     * Returns the message to use with the notification.
      */
     private int getContentString(Call call) {
         int resId = R.string.notification_ongoing_call;
 
-        if (call.getState() == Call.State.INCOMING) {
+        if (call.getState() == Call.State.INCOMING || call.getState() == Call.State.CALL_WAITING) {
             resId = R.string.notification_incoming_call;
 
         } else if (call.getState() == Call.State.ONHOLD) {
@@ -535,7 +537,14 @@
         // TODO: there should be a cleaner way of avoiding this
         // problem (see discussion in bug 3184149.)
 
-        if (call.getState() == Call.State.CALL_WAITING) {
+        // If a call is onhold during an incoming call, the call actually comes in as
+        // INCOMING.  For that case *and* traditional call-waiting, we want to
+        // cancel the notification.
+        boolean isCallWaiting = (call.getState() == Call.State.CALL_WAITING ||
+                (call.getState() == Call.State.INCOMING &&
+                        CallList.getInstance().getBackgroundCall() != null));
+
+        if (isCallWaiting) {
             Log.i(this, "updateInCallNotification: call-waiting! force relaunch...");
             // Cancel the IN_CALL_NOTIFICATION immediately before
             // (re)posting it; this seems to force the