Clear the cache in RealtimeRowProcessor when there's new data.

Otherwise changes to "incomplete" rows won't take effect until a new adapter is created.

Test: unit and manual
PiperOrigin-RevId: 181823087
Change-Id: I24e1b1b465c8d37cf794312b88b6cdd3ad394b5d
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java b/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java
index a4a67d7..24324b0 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java
@@ -64,6 +64,7 @@
 
   void updateCursor(Cursor updatedCursor) {
     this.cursor = updatedCursor;
+    this.realtimeRowProcessor.clearCache();
 
     setHeaderPositions();
     notifyDataSetChanged();
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
index 5b526b4..7c33c87 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
@@ -33,7 +33,6 @@
 import com.android.dialer.calllogutils.CallLogEntryText;
 import com.android.dialer.calllogutils.CallLogIntents;
 import com.android.dialer.calllogutils.CallTypeIconsView;
-import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
 import com.android.dialer.contactphoto.ContactPhotoManager;
@@ -208,7 +207,7 @@
 
     @Override
     public void onFailure(Throwable throwable) {
-      LogUtil.e("RealtimeRowFutureCallback.onFailure", "realtime processing failed", throwable);
+      throw new RuntimeException("realtime processing failed", throwable);
     }
   }
 }
diff --git a/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java b/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java
index 2cfe0b4..393482a 100644
--- a/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java
+++ b/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java
@@ -21,6 +21,7 @@
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.NumberAttributes;
 import com.android.dialer.calllog.model.CoalescedRow;
+import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.Annotations.Ui;
 import com.android.dialer.phonelookup.PhoneLookupInfo;
 import com.android.dialer.phonelookup.PhoneLookupInfo.Cp2Info;
@@ -94,6 +95,13 @@
         uiExecutor /* ensures the cache is updated on a single thread */);
   }
 
+  /** Clears the internal cache. */
+  @MainThread
+  public void clearCache() {
+    Assert.isMainThread();
+    cache.clear();
+  }
+
   private CoalescedRow applyCp2LocalInfoToRow(Cp2Info cp2Info, CoalescedRow row) {
     PhoneLookupInfo phoneLookupInfo = PhoneLookupInfo.newBuilder().setCp2LocalInfo(cp2Info).build();
     // It is safe to overwrite any existing data because CP2 always has highest priority.