From 5d197bdb257bbbbf5da099bc426a5395e0285a00 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Sun, 20 Sep 2020 10:21:25 +0100 Subject: [PATCH 01/27] SecurityException: Permission Denial --- .../io/flutter/plugin/platform/PlatformPlugin.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index cc87aa2eaf254..312405a00a841 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -19,6 +19,8 @@ import androidx.annotation.VisibleForTesting; import io.flutter.embedding.engine.systemchannels.PlatformChannel; import java.util.List; +import android.content.ClipDescription; +import static android.content.ClipDescription.MIMETYPE_TEXT_PLAIN; /** Android implementation of the platform plugin. */ public class PlatformPlugin { @@ -280,8 +282,15 @@ private void popSystemNavigator() { private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat format) { ClipboardManager clipboard = (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); + + if (!clipboard.hasPrimaryClip()) return null; + + ClipDescription clipDescription = clipboard.getPrimaryClipDescription(); + if (clipDescription == null || !clipDescription.hasMimeType(MIMETYPE_TEXT_PLAIN)) { + return null; + } + ClipData clip = clipboard.getPrimaryClip(); - if (clip == null) return null; if (format == null || format == PlatformChannel.ClipboardContentFormat.PLAIN_TEXT) { return clip.getItemAt(0).coerceToText(activity); From 01f21534df64604bc3cedfc2a959426350f15e62 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Sun, 20 Sep 2020 10:40:52 +0100 Subject: [PATCH 02/27] SecurityException: Permission Denial --- .../android/io/flutter/plugin/platform/PlatformPlugin.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 312405a00a841..36fd1f5e67fa5 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -4,9 +4,12 @@ package io.flutter.plugin.platform; +import static android.content.ClipDescription.MIMETYPE_TEXT_PLAIN; + import android.app.Activity; import android.app.ActivityManager.TaskDescription; import android.content.ClipData; +import android.content.ClipDescription; import android.content.ClipboardManager; import android.content.Context; import android.os.Build; @@ -19,8 +22,6 @@ import androidx.annotation.VisibleForTesting; import io.flutter.embedding.engine.systemchannels.PlatformChannel; import java.util.List; -import android.content.ClipDescription; -import static android.content.ClipDescription.MIMETYPE_TEXT_PLAIN; /** Android implementation of the platform plugin. */ public class PlatformPlugin { @@ -284,7 +285,7 @@ private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat for (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); if (!clipboard.hasPrimaryClip()) return null; - + ClipDescription clipDescription = clipboard.getPrimaryClipDescription(); if (clipDescription == null || !clipDescription.hasMimeType(MIMETYPE_TEXT_PLAIN)) { return null; From 9e4c909097592ccd73ee15169feb3036dda07ede Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Sun, 20 Sep 2020 10:49:52 +0100 Subject: [PATCH 03/27] Update PlatformPlugin.java --- .../android/io/flutter/plugin/platform/PlatformPlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 36fd1f5e67fa5..a2fcd20b10717 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -292,6 +292,7 @@ private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat for } ClipData clip = clipboard.getPrimaryClip(); + if (clip == null) return null; if (format == null || format == PlatformChannel.ClipboardContentFormat.PLAIN_TEXT) { return clip.getItemAt(0).coerceToText(activity); From 795da8a88fb6561e678388484761f06f24b28e60 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Sun, 20 Sep 2020 10:54:12 +0100 Subject: [PATCH 04/27] Update PlatformPlugin.java --- .../android/io/flutter/plugin/platform/PlatformPlugin.java | 1 - 1 file changed, 1 deletion(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index a2fcd20b10717..36fd1f5e67fa5 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -292,7 +292,6 @@ private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat for } ClipData clip = clipboard.getPrimaryClip(); - if (clip == null) return null; if (format == null || format == PlatformChannel.ClipboardContentFormat.PLAIN_TEXT) { return clip.getItemAt(0).coerceToText(activity); From 9443f65b755a341ad4d0b2c364d01d55bdc626f0 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Sun, 20 Sep 2020 11:57:55 +0100 Subject: [PATCH 05/27] Update PlatformPlugin.java --- .../android/io/flutter/plugin/platform/PlatformPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index cde701e36b651..36fd1f5e67fa5 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -290,7 +290,7 @@ private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat for if (clipDescription == null || !clipDescription.hasMimeType(MIMETYPE_TEXT_PLAIN)) { return null; } - + ClipData clip = clipboard.getPrimaryClip(); if (format == null || format == PlatformChannel.ClipboardContentFormat.PLAIN_TEXT) { From 80465899e82a22ceb2adea45ef817cdabc520351 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Mon, 28 Sep 2020 13:52:52 +0100 Subject: [PATCH 06/27] Update PlatformPlugin.java --- .../plugin/platform/PlatformPlugin.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 36fd1f5e67fa5..490ab7436e61e 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -4,12 +4,9 @@ package io.flutter.plugin.platform; -import static android.content.ClipDescription.MIMETYPE_TEXT_PLAIN; - import android.app.Activity; import android.app.ActivityManager.TaskDescription; import android.content.ClipData; -import android.content.ClipDescription; import android.content.ClipboardManager; import android.content.Context; import android.os.Build; @@ -22,6 +19,7 @@ import androidx.annotation.VisibleForTesting; import io.flutter.embedding.engine.systemchannels.PlatformChannel; import java.util.List; +import android.util.Log; /** Android implementation of the platform plugin. */ public class PlatformPlugin { @@ -286,17 +284,17 @@ private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat for if (!clipboard.hasPrimaryClip()) return null; - ClipDescription clipDescription = clipboard.getPrimaryClipDescription(); - if (clipDescription == null || !clipDescription.hasMimeType(MIMETYPE_TEXT_PLAIN)) { + try { + ClipData clip = clipboard.getPrimaryClip(); + if (clip == null) return null; + if (format == null || format == PlatformChannel.ClipboardContentFormat.PLAIN_TEXT) { + return clip.getItemAt(0).coerceToText(getActivity()); + } + } catch (SecurityException e) { + Log.w("flutter", "ClipData", e); return null; } - ClipData clip = clipboard.getPrimaryClip(); - - if (format == null || format == PlatformChannel.ClipboardContentFormat.PLAIN_TEXT) { - return clip.getItemAt(0).coerceToText(activity); - } - return null; } From 6b74aa6736515e842a993095c2bb7e3047a78027 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Mon, 28 Sep 2020 13:59:05 +0100 Subject: [PATCH 07/27] Update PlatformPlugin.java --- .../android/io/flutter/plugin/platform/PlatformPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 490ab7436e61e..e437719992850 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -10,6 +10,7 @@ import android.content.ClipboardManager; import android.content.Context; import android.os.Build; +import android.util.Log; import android.view.HapticFeedbackConstants; import android.view.SoundEffectConstants; import android.view.View; @@ -19,7 +20,6 @@ import androidx.annotation.VisibleForTesting; import io.flutter.embedding.engine.systemchannels.PlatformChannel; import java.util.List; -import android.util.Log; /** Android implementation of the platform plugin. */ public class PlatformPlugin { From f1326fbe3ee7d329501da691b598e800265640d7 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Mon, 28 Sep 2020 14:06:07 +0100 Subject: [PATCH 08/27] Update PlatformPlugin.java --- .../android/io/flutter/plugin/platform/PlatformPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index e437719992850..ce38f571664f5 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -288,7 +288,7 @@ private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat for ClipData clip = clipboard.getPrimaryClip(); if (clip == null) return null; if (format == null || format == PlatformChannel.ClipboardContentFormat.PLAIN_TEXT) { - return clip.getItemAt(0).coerceToText(getActivity()); + return clip.getItemAt(0).coerceToText(activity); } } catch (SecurityException e) { Log.w("flutter", "ClipData", e); From 3a1fb9842a264b8f00b233ac49133ff0dde5fcc1 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Tue, 29 Sep 2020 08:50:18 +0100 Subject: [PATCH 09/27] TAG & Log --- .../io/flutter/plugin/platform/PlatformPlugin.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index ce38f571664f5..f32da1a90c993 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -30,6 +30,7 @@ public class PlatformPlugin { private final PlatformChannel platformChannel; private PlatformChannel.SystemChromeStyle currentTheme; private int mEnabledOverlays; + private static final String TAG = "PlatformPlugin"; @VisibleForTesting final PlatformChannel.PlatformMessageHandler mPlatformMessageHandler = @@ -291,7 +292,12 @@ private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat for return clip.getItemAt(0).coerceToText(activity); } } catch (SecurityException e) { - Log.w("flutter", "ClipData", e); + Log.w( + TAG, + "Attempted to get clipboard data that requires additional permission(s).\n" + + "See the exception details for which permission(s) are required, and consider adding them to your Android Manifest as described in:\n" + + "https://developer.android.com/guide/topics/permissions/overview", + e); return null; } From 8187b1ad919e0b76734817354471e3c590945405 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Tue, 29 Sep 2020 21:49:16 +0100 Subject: [PATCH 10/27] SecurityException for Build Tools 29 and below --- .../io/flutter/plugin/platform/PlatformPlugin.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index f32da1a90c993..0981671076772 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -19,6 +19,7 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import io.flutter.embedding.engine.systemchannels.PlatformChannel; +import java.io.FileNotFoundException; import java.util.List; /** Android implementation of the platform plugin. */ @@ -289,7 +290,10 @@ private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat for ClipData clip = clipboard.getPrimaryClip(); if (clip == null) return null; if (format == null || format == PlatformChannel.ClipboardContentFormat.PLAIN_TEXT) { - return clip.getItemAt(0).coerceToText(activity); + ClipData.Item item = clip.getItemAt(0); + if (item.getUri() != null) + activity.getContentResolver().openTypedAssetFileDescriptor(item.getUri(), "text/*", null); + return item.coerceToText(activity); } } catch (SecurityException e) { Log.w( @@ -299,6 +303,8 @@ private CharSequence getClipboardData(PlatformChannel.ClipboardContentFormat for + "https://developer.android.com/guide/topics/permissions/overview", e); return null; + } catch (FileNotFoundException e) { + return null; } return null; From 1a28095412988cce6522d3c28091e980672751a2 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Tue, 29 Sep 2020 22:09:24 +0100 Subject: [PATCH 11/27] Add Test Uri ClipData --- .../io/flutter/plugin/platform/PlatformPluginTest.java | 7 +++++++ 1 file changed, 7 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 495b332678fe9..189cc193a1332 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -10,6 +10,8 @@ import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; +import android.media.RingtoneManager; +import android.net.Uri; import android.content.Context; import android.view.View; import android.view.Window; @@ -61,6 +63,11 @@ public void platformPlugin_getClipboardData() { ClipData clip = ClipData.newPlainText("label", "Text"); clipboardManager.setPrimaryClip(clip); assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + + Uri uri = RingtoneManager.getActualDefaultRingtoneUri(fakeActivity.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); + clip = ClipData.newUri(fakeActivity.getContentResolver(), "URI", uri); + clipboardManager.setPrimaryClip(clip); + assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); } @Test From ccd25efc220d5cead74f5519ac8d61f52a86a319 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Tue, 29 Sep 2020 22:25:36 +0100 Subject: [PATCH 12/27] Add Test for Null Uri ClipData --- .../io/flutter/plugin/platform/PlatformPluginTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 189cc193a1332..18d4e7161d500 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -64,7 +64,12 @@ public void platformPlugin_getClipboardData() { clipboardManager.setPrimaryClip(clip); assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); - Uri uri = RingtoneManager.getActualDefaultRingtoneUri(fakeActivity.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); + Uri uri = Uri.parse("content://media/external_primary/images/media/"); + clip = ClipData.newUri(fakeActivity.getContentResolver(), "URI", uri); + clipboardManager.setPrimaryClip(clip); + assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + + uri = RingtoneManager.getActualDefaultRingtoneUri(fakeActivity.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); clip = ClipData.newUri(fakeActivity.getContentResolver(), "URI", uri); clipboardManager.setPrimaryClip(clip); assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); From 8f5417cdbb1783bf5b41bc555709aa0fdab4fd99 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Tue, 29 Sep 2020 22:39:30 +0100 Subject: [PATCH 13/27] Update PlatformPluginTest.java --- .../io/flutter/plugin/platform/PlatformPluginTest.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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 18d4e7161d500..bf92b34f44851 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -10,9 +10,9 @@ import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; +import android.content.Context; import android.media.RingtoneManager; import android.net.Uri; -import android.content.Context; import android.view.View; import android.view.Window; import io.flutter.embedding.engine.systemchannels.PlatformChannel; @@ -63,13 +63,15 @@ public void platformPlugin_getClipboardData() { ClipData clip = ClipData.newPlainText("label", "Text"); clipboardManager.setPrimaryClip(clip); assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); - + Uri uri = Uri.parse("content://media/external_primary/images/media/"); clip = ClipData.newUri(fakeActivity.getContentResolver(), "URI", uri); clipboardManager.setPrimaryClip(clip); assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); - - uri = RingtoneManager.getActualDefaultRingtoneUri(fakeActivity.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); + + uri = + RingtoneManager.getActualDefaultRingtoneUri( + fakeActivity.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); clip = ClipData.newUri(fakeActivity.getContentResolver(), "URI", uri); clipboardManager.setPrimaryClip(clip); assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); From d9ea4ae344c8885d6a2f4c36c52f310b6868cbc5 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Tue, 29 Sep 2020 23:26:34 +0100 Subject: [PATCH 14/27] Update PlatformPluginTest.java --- .../io/flutter/plugin/platform/PlatformPluginTest.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) 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 bf92b34f44851..1be1ea8a1e4e8 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -64,12 +64,7 @@ public void platformPlugin_getClipboardData() { clipboardManager.setPrimaryClip(clip); assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); - Uri uri = Uri.parse("content://media/external_primary/images/media/"); - clip = ClipData.newUri(fakeActivity.getContentResolver(), "URI", uri); - clipboardManager.setPrimaryClip(clip); - assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); - - uri = + Uri uri = RingtoneManager.getActualDefaultRingtoneUri( fakeActivity.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); clip = ClipData.newUri(fakeActivity.getContentResolver(), "URI", uri); From 966807418ae659378371377343d1e82cffcd75d7 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Tue, 29 Sep 2020 23:55:21 +0100 Subject: [PATCH 15/27] Update PlatformPluginTest.java --- .../flutter/plugin/platform/PlatformPluginTest.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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 1be1ea8a1e4e8..51f947262048e 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -10,6 +10,7 @@ import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; +import android.content.ContentResolver; import android.content.Context; import android.media.RingtoneManager; import android.net.Uri; @@ -64,10 +65,16 @@ public void platformPlugin_getClipboardData() { clipboardManager.setPrimaryClip(clip); assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); - Uri uri = + Uri uri = Uri.parse("content://media/external_primary/images/media/"); + ContentResolver contentResolver = RuntimeEnvironment.application.getContentResolver(); + clip = ClipData.newUri(contentResolver, "URI", uri); + clipboardManager.setPrimaryClip(clip); + assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + + uri = RingtoneManager.getActualDefaultRingtoneUri( - fakeActivity.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); - clip = ClipData.newUri(fakeActivity.getContentResolver(), "URI", uri); + RuntimeEnvironment.application.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); + clip = ClipData.newUri(contentResolver, "URI", uri); clipboardManager.setPrimaryClip(clip); assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); } From b51174b79b97f0c674f745038e99522b21048671 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Wed, 30 Sep 2020 00:08:53 +0100 Subject: [PATCH 16/27] Update PlatformPluginTest.java --- .../test/io/flutter/plugin/platform/PlatformPluginTest.java | 6 ------ 1 file changed, 6 deletions(-) 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 51f947262048e..c9363fbc42e7d 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -65,12 +65,6 @@ public void platformPlugin_getClipboardData() { clipboardManager.setPrimaryClip(clip); assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); - Uri uri = Uri.parse("content://media/external_primary/images/media/"); - ContentResolver contentResolver = RuntimeEnvironment.application.getContentResolver(); - clip = ClipData.newUri(contentResolver, "URI", uri); - clipboardManager.setPrimaryClip(clip); - assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); - uri = RingtoneManager.getActualDefaultRingtoneUri( RuntimeEnvironment.application.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); From 7d5a882897e38ac69689cbc815e00ff54a8e489e Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Wed, 30 Sep 2020 00:14:18 +0100 Subject: [PATCH 17/27] Update PlatformPluginTest.java --- .../test/io/flutter/plugin/platform/PlatformPluginTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 c9363fbc42e7d..96aa65567cade 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -64,8 +64,9 @@ public void platformPlugin_getClipboardData() { ClipData clip = ClipData.newPlainText("label", "Text"); clipboardManager.setPrimaryClip(clip); assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); - - uri = + + ContentResolver contentResolver = RuntimeEnvironment.application.getContentResolver(); + Uri uri = RingtoneManager.getActualDefaultRingtoneUri( RuntimeEnvironment.application.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); clip = ClipData.newUri(contentResolver, "URI", uri); From 075248d7d78fffcc954d7529a51d0dc258022dea Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Wed, 30 Sep 2020 00:20:43 +0100 Subject: [PATCH 18/27] Update PlatformPluginTest.java --- .../test/io/flutter/plugin/platform/PlatformPluginTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 96aa65567cade..6041afc3c09c3 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -64,7 +64,7 @@ public void platformPlugin_getClipboardData() { ClipData clip = ClipData.newPlainText("label", "Text"); clipboardManager.setPrimaryClip(clip); assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); - + ContentResolver contentResolver = RuntimeEnvironment.application.getContentResolver(); Uri uri = RingtoneManager.getActualDefaultRingtoneUri( From a67c6beb1e4ab7f56a4087aff05fe0ed880c302f Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Wed, 30 Sep 2020 00:38:45 +0100 Subject: [PATCH 19/27] Update PlatformPluginTest.java --- .../io/flutter/plugin/platform/PlatformPluginTest.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) 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 6041afc3c09c3..02830bb6e2630 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -45,6 +45,7 @@ public void itIgnoresNewHapticEventsOnOldAndroidPlatforms() { platformPlugin.vibrateHapticFeedback(PlatformChannel.HapticFeedbackType.SELECTION_CLICK); } + @Config(sdk = 29) @Test public void platformPlugin_getClipboardData() { ClipboardManager clipboardManager = @@ -66,12 +67,10 @@ public void platformPlugin_getClipboardData() { assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); ContentResolver contentResolver = RuntimeEnvironment.application.getContentResolver(); - Uri uri = - RingtoneManager.getActualDefaultRingtoneUri( - RuntimeEnvironment.application.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); - clip = ClipData.newUri(contentResolver, "URI", uri); + Uri uri = Uri.parse("content://media/external_primary/images/media/"); + clip = ClipData.newUri(fakeActivity.getContentResolver(), "URI", uri); clipboardManager.setPrimaryClip(clip); - assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); } @Test From e57ea8a299ffb6c1fff0f9596abe6fee0df039db Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Wed, 30 Sep 2020 00:39:36 +0100 Subject: [PATCH 20/27] Update PlatformPluginTest.java --- .../test/io/flutter/plugin/platform/PlatformPluginTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 02830bb6e2630..1844215a2491f 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -68,7 +68,7 @@ public void platformPlugin_getClipboardData() { ContentResolver contentResolver = RuntimeEnvironment.application.getContentResolver(); Uri uri = Uri.parse("content://media/external_primary/images/media/"); - clip = ClipData.newUri(fakeActivity.getContentResolver(), "URI", uri); + clip = ClipData.newUri(contentResolver, "URI", uri); clipboardManager.setPrimaryClip(clip); assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); } From ccc1bb367bacd290491cca27c54001ccb6466ab3 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Wed, 30 Sep 2020 01:00:25 +0100 Subject: [PATCH 21/27] Update PlatformPluginTest.java --- .../test/io/flutter/plugin/platform/PlatformPluginTest.java | 1 - 1 file changed, 1 deletion(-) 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 1844215a2491f..3bb4f17b990ca 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -12,7 +12,6 @@ import android.content.ClipboardManager; import android.content.ContentResolver; import android.content.Context; -import android.media.RingtoneManager; import android.net.Uri; import android.view.View; import android.view.Window; From 051e3bd066f98af749aaffdf93ebf0147a299190 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Wed, 30 Sep 2020 08:53:29 +0100 Subject: [PATCH 22/27] Update PlatformPluginTest.java --- .../io/flutter/plugin/platform/PlatformPluginTest.java | 8 ++++++++ 1 file changed, 8 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 3bb4f17b990ca..91e2979d8e7b5 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -12,6 +12,7 @@ import android.content.ClipboardManager; import android.content.ContentResolver; import android.content.Context; +import android.media.RingtoneManager; import android.net.Uri; import android.view.View; import android.view.Window; @@ -70,6 +71,13 @@ public void platformPlugin_getClipboardData() { clip = ClipData.newUri(contentResolver, "URI", uri); clipboardManager.setPrimaryClip(clip); assertNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + + uri = + RingtoneManager.getActualDefaultRingtoneUri( + RuntimeEnvironment.application.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); + clip = ClipData.newUri(contentResolver, "URI", uri); + clipboardManager.setPrimaryClip(clip); + assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); } @Test From c87294f3c7a52d8dd50691a8f9f795061bc04ad9 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Thu, 8 Oct 2020 11:57:34 +0100 Subject: [PATCH 23/27] platformPlugin_getClipboardData: assertEquals Test --- .../io/flutter/plugin/platform/PlatformPluginTest.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 91e2979d8e7b5..ec82a0fb23e20 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -1,5 +1,6 @@ package io.flutter.plugin.platform; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; @@ -7,6 +8,9 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import java.io.ByteArrayInputStream; +import java.io.InputStream; + import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; @@ -77,7 +81,10 @@ public void platformPlugin_getClipboardData() { RuntimeEnvironment.application.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); clip = ClipData.newUri(contentResolver, "URI", uri); clipboardManager.setPrimaryClip(clip); - assertNotNull(platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat)); + String uriData = platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat).toString(); + InputStream uriInputStream = contentResolver.openInputStream(uri); + InputStream dataInputStream = new ByteArrayInputStream(uriData.getBytes()); + assertEquals(dataInputStream.read(), uriInputStream.read()); } @Test From 00b6be8c34e89c6f6a07674ddd5e3b1c969a0a92 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Thu, 8 Oct 2020 12:08:08 +0100 Subject: [PATCH 24/27] Update PlatformPluginTest.java --- .../io/flutter/plugin/platform/PlatformPluginTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 ec82a0fb23e20..84dea0ed9c4e1 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -8,9 +8,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import java.io.ByteArrayInputStream; -import java.io.InputStream; - import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; @@ -22,6 +19,8 @@ import android.view.Window; import io.flutter.embedding.engine.systemchannels.PlatformChannel; import io.flutter.embedding.engine.systemchannels.PlatformChannel.ClipboardContentFormat; +import java.io.ByteArrayInputStream; +import java.io.InputStream; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; @@ -81,7 +80,8 @@ public void platformPlugin_getClipboardData() { RuntimeEnvironment.application.getApplicationContext(), RingtoneManager.TYPE_RINGTONE); clip = ClipData.newUri(contentResolver, "URI", uri); clipboardManager.setPrimaryClip(clip); - String uriData = platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat).toString(); + String uriData = + platformPlugin.mPlatformMessageHandler.getClipboardData(clipboardFormat).toString(); InputStream uriInputStream = contentResolver.openInputStream(uri); InputStream dataInputStream = new ByteArrayInputStream(uriData.getBytes()); assertEquals(dataInputStream.read(), uriInputStream.read()); From 8d04b8c4e3347d795ce70abadfaaeca23a5a6f9d Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Thu, 8 Oct 2020 12:55:26 +0100 Subject: [PATCH 25/27] Update PlatformPluginTest.java --- .../test/io/flutter/plugin/platform/PlatformPluginTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 84dea0ed9c4e1..0d9e0ea88e16c 100644 --- a/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java +++ b/shell/platform/android/test/io/flutter/plugin/platform/PlatformPluginTest.java @@ -20,6 +20,7 @@ import io.flutter.embedding.engine.systemchannels.PlatformChannel; import io.flutter.embedding.engine.systemchannels.PlatformChannel.ClipboardContentFormat; import java.io.ByteArrayInputStream; +import java.io.IOException; import java.io.InputStream; import org.junit.Test; import org.junit.runner.RunWith; @@ -50,7 +51,7 @@ public void itIgnoresNewHapticEventsOnOldAndroidPlatforms() { @Config(sdk = 29) @Test - public void platformPlugin_getClipboardData() { + public void platformPlugin_getClipboardData() throws IOException { ClipboardManager clipboardManager = RuntimeEnvironment.application.getSystemService(ClipboardManager.class); From 5ebfcf4442b0ac92575614916a5a3b4766d272ec Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 8 Oct 2020 08:33:09 -0700 Subject: [PATCH 26/27] Update shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java --- .../android/io/flutter/plugin/platform/PlatformPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 0981671076772..9765ed7586892 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -10,7 +10,7 @@ import android.content.ClipboardManager; import android.content.Context; import android.os.Build; -import android.util.Log; +import io.flutter.Log; import android.view.HapticFeedbackConstants; import android.view.SoundEffectConstants; import android.view.View; From 06ca28b518fce5f222f6f4e372a8fa77f249ff31 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Thu, 8 Oct 2020 17:07:38 +0100 Subject: [PATCH 27/27] Update PlatformPlugin.java --- .../android/io/flutter/plugin/platform/PlatformPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 9765ed7586892..3f18d9472ede5 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -10,7 +10,6 @@ import android.content.ClipboardManager; import android.content.Context; import android.os.Build; -import io.flutter.Log; import android.view.HapticFeedbackConstants; import android.view.SoundEffectConstants; import android.view.View; @@ -18,6 +17,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; +import io.flutter.Log; import io.flutter.embedding.engine.systemchannels.PlatformChannel; import java.io.FileNotFoundException; import java.util.List;