11package io .flutter .plugin .platform ;
22
3+ import static org .junit .Assert .assertEquals ;
34import static org .junit .Assert .assertFalse ;
45import static org .junit .Assert .assertNotNull ;
56import static org .junit .Assert .assertNull ;
1011import android .app .Activity ;
1112import android .content .ClipData ;
1213import android .content .ClipboardManager ;
14+ import android .content .ContentResolver ;
1315import android .content .Context ;
16+ import android .media .RingtoneManager ;
17+ import android .net .Uri ;
1418import android .view .View ;
1519import android .view .Window ;
1620import io .flutter .embedding .engine .systemchannels .PlatformChannel ;
1721import io .flutter .embedding .engine .systemchannels .PlatformChannel .ClipboardContentFormat ;
22+ import java .io .ByteArrayInputStream ;
23+ import java .io .IOException ;
24+ import java .io .InputStream ;
1825import org .junit .Test ;
1926import org .junit .runner .RunWith ;
2027import org .robolectric .RobolectricTestRunner ;
@@ -42,8 +49,9 @@ public void itIgnoresNewHapticEventsOnOldAndroidPlatforms() {
4249 platformPlugin .vibrateHapticFeedback (PlatformChannel .HapticFeedbackType .SELECTION_CLICK );
4350 }
4451
52+ @ Config (sdk = 29 )
4553 @ Test
46- public void platformPlugin_getClipboardData () {
54+ public void platformPlugin_getClipboardData () throws IOException {
4755 ClipboardManager clipboardManager =
4856 RuntimeEnvironment .application .getSystemService (ClipboardManager .class );
4957
@@ -61,6 +69,23 @@ public void platformPlugin_getClipboardData() {
6169 ClipData clip = ClipData .newPlainText ("label" , "Text" );
6270 clipboardManager .setPrimaryClip (clip );
6371 assertNotNull (platformPlugin .mPlatformMessageHandler .getClipboardData (clipboardFormat ));
72+
73+ ContentResolver contentResolver = RuntimeEnvironment .application .getContentResolver ();
74+ Uri uri = Uri .parse ("content://media/external_primary/images/media/" );
75+ clip = ClipData .newUri (contentResolver , "URI" , uri );
76+ clipboardManager .setPrimaryClip (clip );
77+ assertNull (platformPlugin .mPlatformMessageHandler .getClipboardData (clipboardFormat ));
78+
79+ uri =
80+ RingtoneManager .getActualDefaultRingtoneUri (
81+ RuntimeEnvironment .application .getApplicationContext (), RingtoneManager .TYPE_RINGTONE );
82+ clip = ClipData .newUri (contentResolver , "URI" , uri );
83+ clipboardManager .setPrimaryClip (clip );
84+ String uriData =
85+ platformPlugin .mPlatformMessageHandler .getClipboardData (clipboardFormat ).toString ();
86+ InputStream uriInputStream = contentResolver .openInputStream (uri );
87+ InputStream dataInputStream = new ByteArrayInputStream (uriData .getBytes ());
88+ assertEquals (dataInputStream .read (), uriInputStream .read ());
6489 }
6590
6691 @ Test
0 commit comments