Improved handling of IS_READ in new call log.

It is not marked "not null" in the system call log and our simulator gives it null data, so handle it more gracefully to be on the safe side.

Also enforce "not null" for IS_READ and NEW in annotated call log as I observed that happening somehow (possibly from older builds though).

TEST=existing
Test: existing
PiperOrigin-RevId: 193271095
Change-Id: I780db20c9d6ea5cf5e1d757def9ea06b492267c1
diff --git a/java/com/android/dialer/calllog/ClearMissedCalls.java b/java/com/android/dialer/calllog/ClearMissedCalls.java
index 78eb802..56c8e57 100644
--- a/java/com/android/dialer/calllog/ClearMissedCalls.java
+++ b/java/com/android/dialer/calllog/ClearMissedCalls.java
@@ -138,7 +138,12 @@
 
           Selection.Builder selectionBuilder =
               Selection.builder()
-                  .and(Selection.column(Calls.IS_READ).is("=", 0))
+                  .and(
+                      Selection.column(Calls.IS_READ)
+                          .is("=", 0)
+                          .buildUpon()
+                          .or(Selection.column(Calls.IS_READ).is("IS NULL"))
+                          .build())
                   .and(Selection.column(Calls.TYPE).is("=", Calls.MISSED_TYPE));
           if (!ids.isEmpty()) {
             selectionBuilder.and(Selection.column(Calls._ID).in(toStrings(ids)));
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
index 66ba8aa..61f7deb 100644
--- a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
@@ -63,8 +63,8 @@
           + (AnnotatedCallLog.NUMBER_PRESENTATION + " integer, ")
           + (AnnotatedCallLog.DURATION + " integer, ")
           + (AnnotatedCallLog.DATA_USAGE + " integer, ")
-          + (AnnotatedCallLog.IS_READ + " integer, ")
-          + (AnnotatedCallLog.NEW + " integer, ")
+          + (AnnotatedCallLog.IS_READ + " integer not null, ")
+          + (AnnotatedCallLog.NEW + " integer not null, ")
           + (AnnotatedCallLog.GEOCODED_LOCATION + " text, ")
           + (AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME + " text, ")
           + (AnnotatedCallLog.PHONE_ACCOUNT_ID + " text, ")
diff --git a/java/com/android/dialer/main/impl/bottomnav/MissedCallCountObserver.java b/java/com/android/dialer/main/impl/bottomnav/MissedCallCountObserver.java
index 2760634..ee7f6d0 100644
--- a/java/com/android/dialer/main/impl/bottomnav/MissedCallCountObserver.java
+++ b/java/com/android/dialer/main/impl/bottomnav/MissedCallCountObserver.java
@@ -62,7 +62,13 @@
                           .query(
                               Calls.CONTENT_URI,
                               new String[] {Calls._ID},
-                              Calls.IS_READ + " = ? AND " + Calls.TYPE + " = ?",
+                              "("
+                                  + Calls.IS_READ
+                                  + " = ? OR "
+                                  + Calls.IS_READ
+                                  + " IS NULL) AND "
+                                  + Calls.TYPE
+                                  + " = ?",
                               new String[] {"0", Integer.toString(Calls.MISSED_TYPE)},
                               /* sortOrder= */ null)) {
                     return cursor == null ? 0 : cursor.getCount();