Remove a misleading "flush" function.

This patch removes LocalSocketImpl.flush().  In practice this function
was simply a wrapper around `Thread.sleep(10)`.  All direct calls to
this function have been removed.  The `flush()` function is still called
on several objects that wrap a SocketOutputStream.

This will make booting a device 20ms faster than it currently is.

Bug: 139192244
Test: Build -> flash -> boot -> launch app
Change-Id: I0a96f4bc72461670370f61e847349f32af5ac774
diff --git a/core/java/android/bluetooth/BluetoothOutputStream.java b/core/java/android/bluetooth/BluetoothOutputStream.java
index dfec4e1..a0aa2de 100644
--- a/core/java/android/bluetooth/BluetoothOutputStream.java
+++ b/core/java/android/bluetooth/BluetoothOutputStream.java
@@ -75,16 +75,4 @@
         }
         mSocket.write(b, offset, count);
     }
-
-    /**
-     * Wait until the data in sending queue is emptied. A polling version
-     * for flush implementation. Use it to ensure the writing data afterwards will
-     * be packed in the new RFCOMM frame.
-     *
-     * @throws IOException if an i/o error occurs.
-     * @since Android 4.2.3
-     */
-    public void flush() throws IOException {
-        mSocket.flush();
-    }
 }
diff --git a/core/java/android/bluetooth/BluetoothSocket.java b/core/java/android/bluetooth/BluetoothSocket.java
index a6e3153..760166b 100644
--- a/core/java/android/bluetooth/BluetoothSocket.java
+++ b/core/java/android/bluetooth/BluetoothSocket.java
@@ -515,20 +515,6 @@
         return mSocketIS.available();
     }
 
-    /**
-     * Wait until the data in sending queue is emptied. A polling version
-     * for flush implementation. Used to ensure the writing data afterwards will
-     * be packed in new RFCOMM frame.
-     *
-     * @throws IOException if an i/o error occurs.
-     */
-    @UnsupportedAppUsage
-    /*package*/ void flush() throws IOException {
-        if (mSocketOS == null) throw new IOException("flush is called on null OutputStream");
-        if (VDBG) Log.d(TAG, "flush: " + mSocketOS);
-        mSocketOS.flush();
-    }
-
     /*package*/ int read(byte[] b, int offset, int length) throws IOException {
         int ret = 0;
         if (VDBG) Log.d(TAG, "read in:  " + mSocketIS + " len: " + length);
diff --git a/core/java/android/net/LocalSocketImpl.java b/core/java/android/net/LocalSocketImpl.java
index fe7632c..b066a15 100644
--- a/core/java/android/net/LocalSocketImpl.java
+++ b/core/java/android/net/LocalSocketImpl.java
@@ -157,40 +157,6 @@
                 write_native(b, myFd);
             }
         }
-
-        /**
-         * Wait until the data in sending queue is emptied. A polling version
-         * for flush implementation.
-         * @throws IOException
-         *             if an i/o error occurs.
-         */
-        @Override
-        public void flush() throws IOException {
-            FileDescriptor myFd = fd;
-            if (myFd == null) throw new IOException("socket closed");
-
-            // Loop until the output buffer is empty.
-            Int32Ref pending = new Int32Ref(0);
-            while (true) {
-                try {
-                    // See linux/net/unix/af_unix.c
-                    Os.ioctlInt(myFd, OsConstants.TIOCOUTQ, pending);
-                } catch (ErrnoException e) {
-                    throw e.rethrowAsIOException();
-                }
-
-                if (pending.value <= 0) {
-                    // The output buffer is empty.
-                    break;
-                }
-
-                try {
-                    Thread.sleep(10);
-                } catch (InterruptedException ie) {
-                    break;
-                }
-            }
-        }
     }
 
     private native int read_native(FileDescriptor fd) throws IOException;
diff --git a/services/core/java/com/android/server/RecoverySystemService.java b/services/core/java/com/android/server/RecoverySystemService.java
index 1517887..997178e 100644
--- a/services/core/java/com/android/server/RecoverySystemService.java
+++ b/services/core/java/com/android/server/RecoverySystemService.java
@@ -25,15 +25,12 @@
 import android.os.RecoverySystem;
 import android.os.RemoteException;
 import android.os.SystemProperties;
-import android.system.ErrnoException;
-import android.system.Os;
 import android.util.Slog;
 
 import libcore.io.IoUtils;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
-import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 
@@ -288,7 +285,6 @@
                     byte[] cmdUtf8 = command.getBytes("UTF-8");
                     dos.writeInt(cmdUtf8.length);
                     dos.write(cmdUtf8, 0, cmdUtf8.length);
-                    dos.flush();
                 }
 
                 // Read the status from the socket.
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
index 1bd29e5..063ad75 100644
--- a/services/core/java/com/android/server/connectivity/Vpn.java
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
@@ -2082,7 +2082,6 @@
                     }
                     out.write(0xFF);
                     out.write(0xFF);
-                    out.flush();
 
                     // Wait for End-of-File.
                     InputStream in = mSockets[i].getInputStream();