diff --git a/app/src/main/java/org/mozilla/fenix/utils/ClipboardHandler.kt b/app/src/main/java/org/mozilla/fenix/utils/ClipboardHandler.kt index eac1660d6..f1573d8a3 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/ClipboardHandler.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/ClipboardHandler.kt @@ -16,6 +16,7 @@ import mozilla.components.support.utils.WebURLFinder private const val MIME_TYPE_TEXT_PLAIN = "text/plain" private const val MIME_TYPE_TEXT_HTML = "text/html" +private const val MIME_TYPE_TEXT_URL = "text/x-moz-url" /** * A clipboard utility class that allows copying and pasting links/text to & from the clipboard @@ -32,11 +33,12 @@ class ClipboardHandler(val context: Context) { */ var text: String? get() { - if (!clipboard.isPrimaryClipEmpty() && - ( - clipboard.isPrimaryClipPlainText() || - clipboard.isPrimaryClipHtmlText() - ) + if (clipboard.isPrimaryClipEmpty()) { + return null + } + if (clipboard.isPrimaryClipPlainText() || + clipboard.isPrimaryClipHtmlText() || + clipboard.isPrimaryClipUrlText() ) { return firstSafePrimaryClipItemText } @@ -83,6 +85,9 @@ class ClipboardHandler(val context: Context) { private fun ClipboardManager.isPrimaryClipHtmlText() = primaryClipDescription?.hasMimeType(MIME_TYPE_TEXT_HTML) ?: false + private fun ClipboardManager.isPrimaryClipUrlText() = + primaryClipDescription?.hasMimeType(MIME_TYPE_TEXT_URL) ?: false + private fun ClipboardManager.isPrimaryClipEmpty() = primaryClip?.itemCount == 0 private val ClipboardManager.firstPrimaryClipItem: ClipData.Item? diff --git a/app/src/test/java/org/mozilla/fenix/utils/ClipboardHandlerTest.kt b/app/src/test/java/org/mozilla/fenix/utils/ClipboardHandlerTest.kt index 5161fc161..b4bca9c7a 100644 --- a/app/src/test/java/org/mozilla/fenix/utils/ClipboardHandlerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/utils/ClipboardHandlerTest.kt @@ -51,7 +51,7 @@ class ClipboardHandlerTest { } @Test - fun getUrl() { + fun `extract url from plaintext mime clipboard clip`() { assertEquals(null, clipboardHandler.extractURL()) clipboard.setPrimaryClip(ClipData.newPlainText("Text", clipboardUrl)) @@ -59,13 +59,23 @@ class ClipboardHandlerTest { } @Test - fun getUrlfromTextUrlMIME() { + fun `extract url from html mime clipboard clip`() { assertEquals(null, clipboardHandler.extractURL()) clipboard.setPrimaryClip(ClipData.newHtmlText("Html", clipboardUrl, clipboardUrl)) assertEquals(clipboardUrl, clipboardHandler.extractURL()) } + @Test + fun `extract url from url mime clipboard clip`() { + assertEquals(null, clipboardHandler.extractURL()) + + clipboard.setPrimaryClip( + ClipData(clipboardUrl, arrayOf("text/x-moz-url"), ClipData.Item(clipboardUrl)) + ) + assertEquals(clipboardUrl, clipboardHandler.extractURL()) + } + @Test fun `text should return firstSafePrimaryClipItemText`() { val safeResult = "safeResult"