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

Commit 5d422575 authored by Ahaan Ugale's avatar Ahaan Ugale Committed by Android (Google) Code Review
Browse files

Merge changes from topics "cc-composing-update", "cc-merge-equals" into sc-dev

* changes:
  ContentCapture: Don't ignore events with changed composing/selection span
  ContentCapture: Notify when Composing region changes.
parents 144bb33a 01315b10
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -286,6 +286,15 @@ public final class ContentCaptureEvent implements Parcelable {
        return this;
    }

    boolean hasSameComposingSpan(@NonNull ContentCaptureEvent other) {
        return mComposingStart == other.mComposingStart && mComposingEnd == other.mComposingEnd;
    }

    boolean hasSameSelectionSpan(@NonNull ContentCaptureEvent other) {
        return mSelectionStartIndex == other.mSelectionStartIndex
                && mSelectionEndIndex == other.mSelectionEndIndex;
    }

    private int getComposingStart() {
        return mComposingStart;
    }
+4 −1
Original line number Diff line number Diff line
@@ -368,7 +368,10 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
                    final CharSequence lastText = lastEvent.getText();
                    final boolean bothNonEmpty = !TextUtils.isEmpty(lastText)
                            && !TextUtils.isEmpty(text);
                    boolean equalContent = TextUtils.equals(lastText, text);
                    boolean equalContent =
                            TextUtils.equals(lastText, text)
                            && lastEvent.hasSameComposingSpan(event)
                            && lastEvent.hasSameSelectionSpan(event);
                    if (equalContent) {
                        addEvent = false;
                    } else if (bothNonEmpty) {
+13 −0
Original line number Diff line number Diff line
@@ -162,6 +162,17 @@ public class BaseInputConnection implements InputConnection {
        return false;
    }

    /**
     * Called after only the composing region is modified (so it isn't called if the text also
     * changes).
     * <p>
     * Default implementation does nothing.
     *
     * @hide
     */
    public void endComposingRegionEditInternal() {
    }

    /**
     * Default implementation calls {@link #finishComposingText()} and
     * {@code setImeConsumesInput(false)}.
@@ -468,6 +479,7 @@ public class BaseInputConnection implements InputConnection {
            // Note: sendCurrentText does nothing unless mFallbackMode is set
            sendCurrentText();
            endBatchEdit();
            endComposingRegionEditInternal();
        }
        return true;
    }
@@ -734,6 +746,7 @@ public class BaseInputConnection implements InputConnection {
            // Note: sendCurrentText does nothing unless mFallbackMode is set
            sendCurrentText();
            endBatchEdit();
            endComposingRegionEditInternal();
        }
        return true;
    }
+10 −2
Original line number Diff line number Diff line
@@ -10832,11 +10832,19 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
            }
        }
        notifyContentCaptureTextChanged();
    }
    /**
     * Notifies the ContentCapture service that the text of the view has changed (only if
     * ContentCapture has been notified of this view's existence already).
     *
     * @hide
     */
    public void notifyContentCaptureTextChanged() {
        // TODO(b/121045053): should use a flag / boolean to keep status of SHOWN / HIDDEN instead
        // of using isLaidout(), so it's not called in cases where it's laid out but a
        // notifyAppeared was not sent.
        // ContentCapture
        if (isLaidOut() && isImportantForContentCapture() && getNotifiedContentCaptureAppeared()) {
            final ContentCaptureManager cm = mContext.getSystemService(ContentCaptureManager.class);
            if (cm != null && cm.isContentCaptureEnabled()) {
+6 −0
Original line number Diff line number Diff line
@@ -98,6 +98,12 @@ public class EditableInputConnection extends BaseInputConnection
        return false;
    }

    @Override
    public void endComposingRegionEditInternal() {
        // The ContentCapture service is interested in Composing-state changes.
        mTextView.notifyContentCaptureTextChanged();
    }

    @Override
    public void closeConnection() {
        super.closeConnection();