When Wi-Fi calling is available display SPN as SPN+" Wi-Fi"
Bug:19681794
Change-Id: I2859d4d26c3103d9900befc6f5fe4aa50c6eadb7
diff --git a/src/java/com/android/internal/telephony/ServiceStateTracker.java b/src/java/com/android/internal/telephony/ServiceStateTracker.java
index 343c0a6..d1738bc 100644
--- a/src/java/com/android/internal/telephony/ServiceStateTracker.java
+++ b/src/java/com/android/internal/telephony/ServiceStateTracker.java
@@ -180,6 +180,7 @@
protected static final int EVENT_CHANGE_IMS_STATE = 45;
protected static final int EVENT_IMS_STATE_CHANGED = 46;
protected static final int EVENT_IMS_STATE_DONE = 47;
+ protected static final int EVENT_IMS_CAPABILITY_CHANGED = 48;
protected static final String TIMEZONE_PROPERTY = "persist.sys.timezone";
@@ -638,6 +639,7 @@
public abstract boolean isConcurrentVoiceAndDataAllowed();
public abstract void setImsRegistrationState(boolean registered);
+ public void onImsCapabilityChanged() {}
public abstract void pollState();
/**
diff --git a/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
index 4d759d7..811fb80 100755
--- a/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
+++ b/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
@@ -70,6 +70,7 @@
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.telephony.dataconnection.DcTrackerBase;
+import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState;
import com.android.internal.telephony.uicc.IccRecords;
import com.android.internal.telephony.uicc.SIMRecords;
@@ -504,6 +505,11 @@
setPowerStateToDesired();
break;
+ case EVENT_IMS_CAPABILITY_CHANGED:
+ if (DBG) log("EVENT_IMS_CAPABILITY_CHANGED");
+ updateSpnDisplay();
+ break;
+
default:
super.handleMessage(msg);
break;
@@ -634,9 +640,18 @@
&& ((rule & SIMRecords.SPN_RULE_SHOW_SPN)
== SIMRecords.SPN_RULE_SHOW_SPN);
- // airplane mode or spn equals plmn, do not show spn
- if (mSS.getVoiceRegState() == ServiceState.STATE_POWER_OFF
+ if (!TextUtils.isEmpty(spn)
+ && mPhone.getImsPhone() != null
+ && ((ImsPhone) mPhone.getImsPhone()).isVowifiEnabled()) {
+ // In Wi-Fi Calling mode show SPN+WiFi
+ String format = mPhone.getContext().getText(
+ com.android.internal.R.string.wfcSpnFormat).toString();
+ showPlmn = false;
+ showSpn = true;
+ spn = String.format(format, spn);
+ } else if (mSS.getVoiceRegState() == ServiceState.STATE_POWER_OFF
|| (showPlmn && TextUtils.equals(spn, plmn))) {
+ // airplane mode or spn equals plmn, do not show spn
spn = null;
showSpn = false;
}
@@ -2156,6 +2171,10 @@
mImsRegistrationOnOff = registered;
}
+ public void onImsCapabilityChanged() {
+ sendMessage(obtainMessage(EVENT_IMS_CAPABILITY_CHANGED));
+ }
+
public void onSetPhoneRCDone(ArrayList<RadioAccessFamily> phoneRcs) {
int INVALID = -1;
int size = 0;
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhone.java b/src/java/com/android/internal/telephony/imsphone/ImsPhone.java
index 70f991c..439ca8b 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhone.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhone.java
@@ -83,6 +83,7 @@
import com.android.internal.telephony.PhoneBase;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.PhoneNotifier;
+import com.android.internal.telephony.ServiceStateTracker;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.telephony.cdma.CDMAPhone;
@@ -1244,6 +1245,10 @@
mEcmExitRespRegistrant.clear();
}
+ public void onFeatureCapabilityChanged() {
+ mDefaultPhone.getServiceStateTracker().onImsCapabilityChanged();
+ }
+
public boolean isVolteEnabled() {
return mCT.isVolteEnabled();
}
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
index 2e05789..5324111 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
@@ -1355,6 +1355,8 @@
for (ImsPhoneConnection connection : mConnections) {
connection.updateWifiState();
}
+
+ mPhone.onFeatureCapabilityChanged();
}
if (DBG) log("onFeatureCapabilityChanged: mImsFeatureEnabled=" + mImsFeatureEnabled);