Change to not broadcast emergency call state changes on wifi call.

Bug: 30348902
Change-Id: I27811ed2d4f26785352f97890d0b6f2a6491880d
diff --git a/src/java/com/android/internal/telephony/GsmCdmaPhone.java b/src/java/com/android/internal/telephony/GsmCdmaPhone.java
index 2f33cba..a2d4ca6 100644
--- a/src/java/com/android/internal/telephony/GsmCdmaPhone.java
+++ b/src/java/com/android/internal/telephony/GsmCdmaPhone.java
@@ -185,6 +185,8 @@
 
     private int mRilVersion;
     private boolean mBroadcastEmergencyCallStateChanges = false;
+    // flag to indicate if emergency call end broadcast should be sent
+    boolean mSendEmergencyCallEnd = true;
 
     // Constructors
 
@@ -637,11 +639,24 @@
     @Override
     public void sendEmergencyCallStateChange(boolean callActive) {
         if (mBroadcastEmergencyCallStateChanges) {
-            Intent intent = new Intent(TelephonyIntents.ACTION_EMERGENCY_CALL_STATE_CHANGED);
-            intent.putExtra(PhoneConstants.PHONE_IN_EMERGENCY_CALL, callActive);
-            SubscriptionManager.putPhoneIdAndSubIdExtra(intent, getPhoneId());
-            ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL);
-            if (DBG) Rlog.d(LOG_TAG, "sendEmergencyCallStateChange");
+            if (callActive &&
+                    getServiceState().getRilDataRadioTechnology() == ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN) {
+                // if emergency call is started while on iwlan, do not send the start or end
+                // broadcast
+                mSendEmergencyCallEnd = false;
+                if (DBG) Rlog.d(LOG_TAG, "sendEmergencyCallStateChange: not sending call start " +
+                        "intent as voice tech is IWLAN");
+            } else if (callActive || mSendEmergencyCallEnd) {
+                Intent intent = new Intent(TelephonyIntents.ACTION_EMERGENCY_CALL_STATE_CHANGED);
+                intent.putExtra(PhoneConstants.PHONE_IN_EMERGENCY_CALL, callActive);
+                SubscriptionManager.putPhoneIdAndSubIdExtra(intent, getPhoneId());
+                ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL);
+                if (DBG) Rlog.d(LOG_TAG, "sendEmergencyCallStateChange");
+            } else {
+                if (DBG) Rlog.d(LOG_TAG, "sendEmergencyCallStateChange: not sending call end " +
+                        "intent as start was not sent");
+                mSendEmergencyCallEnd = true;
+            }
         }
     }
 
@@ -2069,7 +2084,8 @@
                 if (b != null) {
                     boolean broadcastEmergencyCallStateChanges = b.getBoolean(
                             CarrierConfigManager.KEY_BROADCAST_EMERGENCY_CALL_STATE_CHANGES_BOOL);
-                    logd("broadcastEmergencyCallStateChanges =" + broadcastEmergencyCallStateChanges);
+                    logd("broadcastEmergencyCallStateChanges = " +
+                            broadcastEmergencyCallStateChanges);
                     setBroadcastEmergencyCallStateChanges(broadcastEmergencyCallStateChanges);
                 } else {
                     loge("didn't get broadcastEmergencyCallStateChanges from carrier config");