merge in nyc-release history after reset to nyc-dev
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 5a27b4c..0109d7e 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -42,7 +42,6 @@
 
 import com.android.contacts.common.GeoUtil;
 import com.android.contacts.common.compat.CompatUtils;
-import com.android.contacts.common.compat.SdkVersionOverride;
 import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
 import com.android.contacts.common.interactions.TouchPointManager;
 import com.android.contacts.common.testing.NeededForTesting;
@@ -174,6 +173,9 @@
     private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
         public void onCallStateChanged(int state, String incomingNumber) {
             if (state == TelephonyManager.CALL_STATE_RINGING) {
+                if (FilteredNumbersUtil.hasRecentEmergencyCall(mContext)) {
+                    return;
+                }
                 // Check if the number is blocked, to silence the ringer.
                 String countryIso = GeoUtil.getCurrentCountryIso(mContext);
                 mFilteredQueryHandler.isBlockedNumber(
@@ -496,10 +498,7 @@
     }
 
     public void onCallAdded(final android.telecom.Call call) {
-        // Check if call should be blocked.
-        if (!TelecomCallUtil.isEmergencyCall(call)
-                && !FilteredNumbersUtil.hasRecentEmergencyCall(mContext)
-                && call.getState() == android.telecom.Call.STATE_RINGING) {
+        if (shouldAttemptBlocking(call)) {
             maybeBlockCall(call);
         } else {
             mCallList.onCallAdded(call);
@@ -510,6 +509,22 @@
         call.registerCallback(mCallCallback);
     }
 
+    private boolean shouldAttemptBlocking(android.telecom.Call call) {
+        if (call.getState() != android.telecom.Call.STATE_RINGING) {
+            return false;
+        }
+        if (TelecomCallUtil.isEmergencyCall(call)) {
+            Log.i(this, "Not attempting to block incoming emergency call");
+            return false;
+        }
+        if (FilteredNumbersUtil.hasRecentEmergencyCall(mContext)) {
+            Log.i(this, "Not attempting to block incoming call due to recent emergency call");
+            return false;
+        }
+
+        return true;
+    }
+
     /**
      * Checks whether a call should be blocked, and blocks it if so. Otherwise, it adds the call
      * to the CallList so it can proceed as normal. There is a timeout, so if the function for
@@ -548,8 +563,8 @@
                         mCallList.onCallAdded(call);
                     }
                 } else {
+                    Log.i(this, "Rejecting incoming call from blocked number");
                     call.reject(false, null);
-                    Log.d(this, "checkForBlockedCall: " + Log.pii(number) + " blocked.");
                     Logger.logInteraction(InteractionEvent.CALL_BLOCKED);
 
                     mFilteredQueryHandler.incrementFilteredCount(id);
diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java
index 6e84a92..b0ef0ab 100644
--- a/src/com/android/dialer/calllog/ContactInfoHelper.java
+++ b/src/com/android/dialer/calllog/ContactInfoHelper.java
@@ -224,6 +224,8 @@
             if (cursor != null && cursor.moveToFirst()) {
                 return cursor.getString(PhoneQuery.NAME_ALTERNATIVE);
             }
+        } catch (IllegalArgumentException e) {
+            // Avoid dialer crash when lookup key is not valid
         } finally {
             if (cursor != null) {
                 cursor.close();