diff options
| author | 2020-12-12 00:01:35 +0000 | |
|---|---|---|
| committer | 2020-12-12 00:01:35 +0000 | |
| commit | f202279b2d06b0fd228f7795af8cf9caf74967d0 (patch) | |
| tree | 0befcff5e435475d815684177c355e758115312a | |
| parent | 9976ea6865c14d4b8574bf971b6f22f12db21d48 (diff) | |
| parent | 402addd597577bb4e405fd43cd6670f36cb6a068 (diff) | |
Merge "Do not merge two consecutive text change content capture events if one of them clears the text"
| -rw-r--r-- | core/java/android/view/contentcapture/MainContentCaptureSession.java | 16 |
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; } } |