For #23697: Treat text/x-moz-url mime type clipboard text as url

It seems like this is the MIME type we're getting from the clipboard in
certain scenarios, e.g. after copying a link from Chrome or Gmail on
some devices.
upstream-sync
Grigory Kruglov 2 years ago committed by mergify[bot]
parent 5674a4066b
commit fc39c187cd

@ -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?

@ -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"

Loading…
Cancel
Save