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

Commit c8875e70 authored by Felipe Leme's avatar Felipe Leme
Browse files

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

Test: atest CtsContentCaptureServiceTestCases # nothing broke

Bug: 124107816
Fixes: 124060720

Change-Id: I632d4f600eabccf7e991450ff0291c6f5721cc28
parent a4cceec0
Loading
Loading
Loading
Loading
+26 −1
Original line number Original line 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="
                    Log.v(TAG, "Buffering VIEW_TEXT_CHANGED event, updated text="
                            + getSanitizedString(event.getText()));
                            + getSanitizedString(event.getText()));
                }
                }
                // TODO(b/124107816): should call lastEvent.merge(event) instead
                lastEvent.setText(event.getText());
                lastEvent.setText(event.getText());
                addEvent = false;
                addEvent = false;
            }
            }
@@ -316,7 +317,7 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
                    Log.v(TAG, "Buffering TYPE_VIEW_DISAPPEARED events for session "
                    Log.v(TAG, "Buffering TYPE_VIEW_DISAPPEARED events for session "
                            + lastEvent.getSessionId());
                            + lastEvent.getSessionId());
                }
                }
                lastEvent.addAutofillId(event.getId());
                mergeViewsDisappearedEvent(lastEvent, event);
                addEvent = false;
                addEvent = false;
            }
            }
        }
        }
@@ -364,6 +365,30 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
        flush(flushReason);
        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
    @UiThread
    private boolean hasStarted() {
    private boolean hasStarted() {
        return mState != UNKNOWN_STATE;
        return mState != UNKNOWN_STATE;