diff options
| author | Feng Cao <fengcao@google.com> | 2020-11-18 18:27:53 -0800 |
|---|---|---|
| committer | Feng Cao <fengcao@google.com> | 2020-12-01 17:23:45 -0800 |
| commit | 402addd597577bb4e405fd43cd6670f36cb6a068 (patch) | |
| tree | 41255aaf6de58e6dae5c02b481c64f47d35091b6 /core/java | |
| parent | e1fee3b46ae3751568a194e57da721f247ab7ab5 (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.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; } } |
