diff --git a/core/java/android/view/contentcapture/ContentCaptureSession.java b/core/java/android/view/contentcapture/ContentCaptureSession.java index 39c7210d8dac6..301ce9f013e42 100644 --- a/core/java/android/view/contentcapture/ContentCaptureSession.java +++ b/core/java/android/view/contentcapture/ContentCaptureSession.java @@ -166,6 +166,8 @@ public abstract class ContentCaptureSession implements AutoCloseable { public static final int FLUSH_REASON_IDLE_TIMEOUT = 5; /** @hide */ public static final int FLUSH_REASON_TEXT_CHANGE_TIMEOUT = 6; + /** @hide */ + public static final int FLUSH_REASON_SESSION_CONNECTED = 7; /** @hide */ @IntDef(prefix = { "FLUSH_REASON_" }, value = { @@ -174,7 +176,8 @@ public abstract class ContentCaptureSession implements AutoCloseable { FLUSH_REASON_SESSION_STARTED, FLUSH_REASON_SESSION_FINISHED, FLUSH_REASON_IDLE_TIMEOUT, - FLUSH_REASON_TEXT_CHANGE_TIMEOUT + FLUSH_REASON_TEXT_CHANGE_TIMEOUT, + FLUSH_REASON_SESSION_CONNECTED }) @Retention(RetentionPolicy.SOURCE) public @interface FlushReason{} @@ -609,6 +612,8 @@ public abstract class ContentCaptureSession implements AutoCloseable { return "IDLE"; case FLUSH_REASON_TEXT_CHANGE_TIMEOUT: return "TEXT_CHANGE"; + case FLUSH_REASON_SESSION_CONNECTED: + return "CONNECTED"; default: return "UNKOWN-" + reason; } diff --git a/core/java/android/view/contentcapture/MainContentCaptureSession.java b/core/java/android/view/contentcapture/MainContentCaptureSession.java index 893d38dcfde71..6eb71f747be6f 100644 --- a/core/java/android/view/contentcapture/MainContentCaptureSession.java +++ b/core/java/android/view/contentcapture/MainContentCaptureSession.java @@ -273,6 +273,8 @@ public final class MainContentCaptureSession extends ContentCaptureSession { } else { mState = resultCode; mDisabled.set(false); + // Flush any pending data immediately as buffering forced until now. + flushIfNeeded(FLUSH_REASON_SESSION_CONNECTED); } if (sVerbose) { Log.v(TAG, "handleSessionStarted() result: id=" + mId + " resultCode=" + resultCode