From 17eb1bd6e4d0a3062df6787a7564f02abfade50c Mon Sep 17 00:00:00 2001 From: Hall Liu Date: Tue, 3 Jul 2018 15:17:41 -0700 Subject: [PATCH] Fix readImmediately for CTS The readImmediately API (only used by CTS so far) was broken by a previous change that unknowingly changed the semantics of ready(). Fixing this so that CTS tests work again. Change-Id: I6970713eae2a01dd07e30778ca8ee0d9bc7dfeb9 Fixes: 111125833 Test: CTS --- telecomm/java/android/telecom/Connection.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java index 3e97c8f40bf82..468c8fa9e30c7 100644 --- a/telecomm/java/android/telecom/Connection.java +++ b/telecomm/java/android/telecom/Connection.java @@ -854,6 +854,8 @@ public abstract class Connection extends Conferenceable { private final OutputStreamWriter mPipeToInCall; private final ParcelFileDescriptor mFdFromInCall; private final ParcelFileDescriptor mFdToInCall; + + private final FileInputStream mFromInCallFileInputStream; private char[] mReadBuffer = new char[READ_BUFFER_SIZE]; /** @@ -862,11 +864,11 @@ public abstract class Connection extends Conferenceable { public RttTextStream(ParcelFileDescriptor toInCall, ParcelFileDescriptor fromInCall) { mFdFromInCall = fromInCall; mFdToInCall = toInCall; + mFromInCallFileInputStream = new FileInputStream(fromInCall.getFileDescriptor()); // Wrap the FileInputStream in a Channel so that it's interruptible. mPipeFromInCall = new InputStreamReader( - Channels.newInputStream(Channels.newChannel( - new FileInputStream(fromInCall.getFileDescriptor())))); + Channels.newInputStream(Channels.newChannel(mFromInCallFileInputStream))); mPipeToInCall = new OutputStreamWriter( new FileOutputStream(toInCall.getFileDescriptor())); } @@ -914,7 +916,7 @@ public abstract class Connection extends Conferenceable { * not entered any new text yet. */ public String readImmediately() throws IOException { - if (mPipeFromInCall.ready()) { + if (mFromInCallFileInputStream.available() > 0) { return read(); } else { return null;