Add WFC label for incoming, update on state change.

Bug: 19866988
Change-Id: Ie97a4ae343fcc5adc6629ea5b5a28b4dea7604b8
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3b11821..abeeee0 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1283,6 +1283,9 @@
     <!-- Configuration setting for world mode Format is <true;GID if any to be checked>-->
     <string translatable="false" name="config_world_mode"/>
 
+    <!-- Status hint label for an incoming call over a wifi network which has not been accepted yet.
+         [CHAR LIMIT=25] -->
+    <string name="status_hint_label_incoming_wifi_call">Incoming Wi-Fi call</string>
     <!-- Status hint label for a call being made over a wifi network. [CHAR LIMIT=25] -->
     <string name="status_hint_label_wifi_call">Wi-Fi call</string>
 
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index d4eadea..be04641 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -267,6 +267,7 @@
     @Override
     public void onStateChanged(int state) {
         Log.v(this, "onStateChanged, state: " + Connection.stateToString(state));
+        updateStatusHints();
     }
 
     @Override
@@ -794,19 +795,7 @@
     public void setWifi(boolean isWifi) {
         mIsWifi = isWifi;
         updateConnectionCapabilities();
-
-        if (mIsWifi && mOriginalConnection.isIncoming()) {
-            Context context = getPhone().getContext();
-            ComponentName componentName =
-                    new ComponentName(context, TelephonyConnectionService.class);
-            setStatusHints(new StatusHints(
-                    new ComponentName(context, TelephonyConnectionService.class),
-                    context.getString(R.string.status_hint_label_wifi_call),
-                    R.drawable.ic_signal_wifi_4_bar_24dp,
-                    null /* extras */));
-        } else {
-            setStatusHints(null);
-        }
+        updateStatusHints();
     }
 
     /**
@@ -879,6 +868,24 @@
         }
     }
 
+    private void updateStatusHints() {
+        if (mIsWifi && (mOriginalConnection.getState() == Call.State.INCOMING
+                || mOriginalConnection.getState() == Call.State.ACTIVE)) {
+            int labelId = mOriginalConnection.getState() == Call.State.INCOMING
+                    ? R.string.status_hint_label_incoming_wifi_call
+                    : R.string.status_hint_label_wifi_call;
+
+            Context context = getPhone().getContext();
+            setStatusHints(new StatusHints(
+                    new ComponentName(context, TelephonyConnectionService.class),
+                    context.getString(labelId),
+                    R.drawable.ic_signal_wifi_4_bar_24dp,
+                    null /* extras */));
+        } else {
+            setStatusHints(null);
+        }
+    }
+
     /**
      * Register a listener for {@link TelephonyConnection} specific triggers.
      * @param l The instance of the listener to add