From 09b78c405cf011313f3f85b2ae9df1b953e8e956 Mon Sep 17 00:00:00 2001 From: Roman Kiryanov Date: Wed, 11 May 2022 22:22:05 -0700 Subject: [PATCH] Cleanup in EmulatorClipboardMonitor (4) Bug: 231345789 Test: presubmit Signed-off-by: Roman Kiryanov Change-Id: I9ba57f4347e50f8462cec347e5608ec4d1eb0b30 Merged-In: I9ba57f4347e50f8462cec347e5608ec4d1eb0b30 --- .../clipboard/EmulatorClipboardMonitor.java | 57 +++++++++++-------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/services/core/java/com/android/server/clipboard/EmulatorClipboardMonitor.java b/services/core/java/com/android/server/clipboard/EmulatorClipboardMonitor.java index aa8aad232569f..46b757cf85d31 100644 --- a/services/core/java/com/android/server/clipboard/EmulatorClipboardMonitor.java +++ b/services/core/java/com/android/server/clipboard/EmulatorClipboardMonitor.java @@ -165,34 +165,43 @@ class EmulatorClipboardMonitor implements Consumer { @Override public void accept(final @Nullable ClipData clip) { - if (clip == null) { - setHostClipboardImpl(""); - } else if (clip.getItemCount() > 0) { - final CharSequence text = clip.getItemAt(0).getText(); - if (text != null) { - setHostClipboardImpl(text.toString()); - } + final FileDescriptor fd = getPipeFD(); + if (fd != null) { + setHostClipboard(fd, getClipString(clip)); } } - private void setHostClipboardImpl(final String value) { - final FileDescriptor pipeFD = getPipeFD(); - - if (pipeFD != null) { - Thread t = new Thread(() -> { - if (LOG_CLIBOARD_ACCESS) { - Slog.i(TAG, "Setting the host clipboard to '" + value + "'"); - } - - try { - sendMessage(pipeFD, value.getBytes()); - } catch (ErrnoException | InterruptedIOException e) { - Slog.e(TAG, "Failed to set host clipboard " + e.getMessage()); - } catch (IllegalArgumentException e) { - } - }); - t.start(); + private String getClipString(final @Nullable ClipData clip) { + if (clip == null) { + return ""; } + + if (clip.getItemCount() == 0) { + return ""; + } + + final CharSequence text = clip.getItemAt(0).getText(); + if (text == null) { + return ""; + } + + return text.toString(); + } + + private static void setHostClipboard(final FileDescriptor fd, final String value) { + Thread t = new Thread(() -> { + if (LOG_CLIBOARD_ACCESS) { + Slog.i(TAG, "Setting the host clipboard to '" + value + "'"); + } + + try { + sendMessage(fd, value.getBytes()); + } catch (ErrnoException | InterruptedIOException e) { + Slog.e(TAG, "Failed to set host clipboard " + e.getMessage()); + } catch (IllegalArgumentException e) { + } + }); + t.start(); } private static void readFully(final FileDescriptor fd,