From 49232682f3d20cc9bd49def861041c0a5388b59f Mon Sep 17 00:00:00 2001 From: Justin McCandless Date: Thu, 28 Jan 2021 10:51:01 -0800 Subject: [PATCH 1/4] Use hasPrimaryClip instead of actually getting the clipboard text --- .../android/io/flutter/plugin/platform/PlatformPlugin.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 2140ce39f7a78..4f9dfbcf6551f 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -114,10 +114,9 @@ public void setClipboardData(@NonNull String text) { @Override public boolean clipboardHasStrings() { - CharSequence data = - PlatformPlugin.this.getClipboardData( - PlatformChannel.ClipboardContentFormat.PLAIN_TEXT); - return data != null && data.length() > 0; + ClipboardManager clipboard = + (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); + return clipboard.hasPrimaryClip(); } }; From 86fd086fa98937ff4fe99e73f5efb42939f7c7d0 Mon Sep 17 00:00:00 2001 From: Justin McCandless Date: Thu, 28 Jan 2021 11:53:43 -0800 Subject: [PATCH 2/4] Tests, but strangely always reporting true... --- .../flutter/plugin/platform/PlatformPluginTest.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java index b57d12bac6f81..a2be08b7d275b 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -27,6 +27,7 @@ import io.flutter.embedding.engine.systemchannels.PlatformChannel.ClipboardContentFormat; import io.flutter.embedding.engine.systemchannels.PlatformChannel.SystemChromeStyle; import io.flutter.plugin.platform.PlatformPlugin.PlatformPluginDelegate; +import io.flutter.Log; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -116,6 +117,16 @@ public void platformPlugin_hasStrings() { clip = ClipData.newPlainText("", ""); clipboardManager.setPrimaryClip(clip); + assertTrue(platformPlugin.mPlatformMessageHandler.clipboardHasStrings()); + + clip = ClipData.newPlainText("label", null); + clipboardManager.setPrimaryClip(clip); + // TODO(justinmc): This fails. + assertFalse(platformPlugin.mPlatformMessageHandler.clipboardHasStrings()); + + clipboardManager.clearPrimaryClip(); + // TODO(justinmc): This fails too. Also, directly running + // clipboardManager.hasPrimaryClip() here returns true too! assertFalse(platformPlugin.mPlatformMessageHandler.clipboardHasStrings()); } From 72c32b880924365c1ee486561a42ff5664234e1e Mon Sep 17 00:00:00 2001 From: Justin McCandless Date: Tue, 9 Feb 2021 10:52:30 -0800 Subject: [PATCH 3/4] hasText seems to be what I want, even though it is deprecated in the main Android ClipboardManager class. --- .../io/flutter/plugin/platform/PlatformPlugin.java | 2 +- .../flutter/plugin/platform/PlatformPluginTest.java | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 4f9dfbcf6551f..1d1abc85e93ab 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -116,7 +116,7 @@ public void setClipboardData(@NonNull String text) { public boolean clipboardHasStrings() { ClipboardManager clipboard = (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); - return clipboard.hasPrimaryClip(); + return clipboard.hasText(); } }; diff --git a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java index a2be08b7d275b..25da27d55828a 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -117,16 +117,18 @@ public void platformPlugin_hasStrings() { clip = ClipData.newPlainText("", ""); clipboardManager.setPrimaryClip(clip); - assertTrue(platformPlugin.mPlatformMessageHandler.clipboardHasStrings()); + assertFalse(platformPlugin.mPlatformMessageHandler.clipboardHasStrings()); - clip = ClipData.newPlainText("label", null); + clip = ClipData.newPlainText("", null); clipboardManager.setPrimaryClip(clip); - // TODO(justinmc): This fails. + clipboardManager.clearPrimaryClip(); + assertFalse(platformPlugin.mPlatformMessageHandler.clipboardHasStrings()); + + clipboardManager.setPrimaryClip(null); + clipboardManager.clearPrimaryClip(); assertFalse(platformPlugin.mPlatformMessageHandler.clipboardHasStrings()); clipboardManager.clearPrimaryClip(); - // TODO(justinmc): This fails too. Also, directly running - // clipboardManager.hasPrimaryClip() here returns true too! assertFalse(platformPlugin.mPlatformMessageHandler.clipboardHasStrings()); } From 69da37fa2794f41f43e764ed848b152842caaa73 Mon Sep 17 00:00:00 2001 From: Justin McCandless Date: Wed, 10 Feb 2021 09:42:44 -0800 Subject: [PATCH 4/4] Organize similar to other clipboard methods --- .../io/flutter/plugin/platform/PlatformPlugin.java | 10 +++++++--- .../io/flutter/plugin/platform/PlatformPluginTest.java | 1 - 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 1d1abc85e93ab..716daa216357d 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -114,9 +114,7 @@ public void setClipboardData(@NonNull String text) { @Override public boolean clipboardHasStrings() { - ClipboardManager clipboard = - (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); - return clipboard.hasText(); + return PlatformPlugin.this.clipboardHasText(); } }; @@ -321,6 +319,12 @@ private void popSystemNavigator() { } } + private boolean clipboardHasText() { + ClipboardManager clipboard = + (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); + return clipboard.hasText(); + } + private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat format) { ClipboardManager clipboard = (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); diff --git a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java index 25da27d55828a..3c5c60a93e105 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -27,7 +27,6 @@ import io.flutter.embedding.engine.systemchannels.PlatformChannel.ClipboardContentFormat; import io.flutter.embedding.engine.systemchannels.PlatformChannel.SystemChromeStyle; import io.flutter.plugin.platform.PlatformPlugin.PlatformPluginDelegate; -import io.flutter.Log; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream;