Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c7c87bb authored by Felipe Leme's avatar Felipe Leme Committed by Android (Google) Code Review
Browse files

Merge "Fixed sendEvent() so it can merge TYPE_VIEW_DISAPPEARED with multiple ids."

parents fce528d4 c8875e70
Loading
Loading
Loading
Loading
+26 −1
Original line number Diff line number Diff line
@@ -303,6 +303,7 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
                    Log.v(TAG, "Buffering VIEW_TEXT_CHANGED event, updated text="
                            + getSanitizedString(event.getText()));
                }
                // TODO(b/124107816): should call lastEvent.merge(event) instead
                lastEvent.setText(event.getText());
                addEvent = false;
            }
@@ -316,7 +317,7 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
                    Log.v(TAG, "Buffering TYPE_VIEW_DISAPPEARED events for session "
                            + lastEvent.getSessionId());
                }
                lastEvent.addAutofillId(event.getId());
                mergeViewsDisappearedEvent(lastEvent, event);
                addEvent = false;
            }
        }
@@ -364,6 +365,30 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
        flush(flushReason);
    }

    // TODO(b/124107816): should be ContentCaptureEvent Event.merge(event) instead (which would
    // replace the addAutofillId() method - we would also need unit tests on ContentCaptureEventTest
    // to check these scenarios)
    private void mergeViewsDisappearedEvent(@NonNull ContentCaptureEvent lastEvent,
            @NonNull ContentCaptureEvent event) {
        final List<AutofillId> ids = event.getIds();
        final AutofillId id = event.getId();
        if (ids != null) {
            if (id != null) {
                Log.w(TAG, "got TYPE_VIEW_DISAPPEARED event with both id and ids: " + event);
            }
            for (int i = 0; i < ids.size(); i++) {
                lastEvent.addAutofillId(ids.get(i));
            }
            return;
        }
        if (id != null) {
            lastEvent.addAutofillId(id);
            return;
        }
        throw new IllegalArgumentException(
                "got TYPE_VIEW_DISAPPEARED event with neither id or ids: " + event);
    }

    @UiThread
    private boolean hasStarted() {
        return mState != UNKNOWN_STATE;