summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorFeng Cao <fengcao@google.com>2020-11-18 18:27:53 -0800
committerFeng Cao <fengcao@google.com>2020-12-01 17:23:45 -0800
commit402addd597577bb4e405fd43cd6670f36cb6a068 (patch)
tree41255aaf6de58e6dae5c02b481c64f47d35091b6 /core/java
parente1fee3b46ae3751568a194e57da721f247ab7ab5 (diff)
Do not merge two consecutive text change content capture events if one of them clears the text
Test: manual Test: atest CtsContentCaptureServiceTestCases Bug: 173664663 Change-Id: Ida5f770a0bf367be93e09769480209b5220d1387
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/view/contentcapture/MainContentCaptureSession.java16
1 files changed, 12 insertions, 4 deletions
diff --git a/core/java/android/view/contentcapture/MainContentCaptureSession.java b/core/java/android/view/contentcapture/MainContentCaptureSession.java
index 16fd383fa7ff..3c18b6b89af8 100644
--- a/core/java/android/view/contentcapture/MainContentCaptureSession.java
+++ b/core/java/android/view/contentcapture/MainContentCaptureSession.java
@@ -43,6 +43,7 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.IBinder.DeathRecipient;
import android.os.RemoteException;
+import android.text.TextUtils;
import android.util.LocalLog;
import android.util.Log;
import android.util.TimeUtils;
@@ -334,15 +335,22 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
if (!mEvents.isEmpty() && eventType == TYPE_VIEW_TEXT_CHANGED) {
final ContentCaptureEvent lastEvent = mEvents.get(mEvents.size() - 1);
- // TODO(b/121045053): check if flags match
+ // We merge two consecutive text change event, unless one of them clears the text.
if (lastEvent.getType() == TYPE_VIEW_TEXT_CHANGED
&& lastEvent.getId().equals(event.getId())) {
- if (sVerbose) {
+ boolean bothNonEmpty = !TextUtils.isEmpty(lastEvent.getText())
+ && !TextUtils.isEmpty(event.getText());
+ boolean equalContent = TextUtils.equals(lastEvent.getText(), event.getText());
+ if (equalContent) {
+ addEvent = false;
+ } else if (bothNonEmpty) {
+ lastEvent.mergeEvent(event);
+ addEvent = false;
+ }
+ if (!addEvent && sVerbose) {
Log.v(TAG, "Buffering VIEW_TEXT_CHANGED event, updated text="
+ getSanitizedString(event.getText()));
}
- lastEvent.mergeEvent(event);
- addEvent = false;
}
}