* For #1695 - Detect HTML mime type for clipboard URLmaster
parent
204ead0827
commit
5eb5cdf361
|
@ -10,6 +10,7 @@ import android.content.Context
|
||||||
import mozilla.components.support.utils.WebURLFinder
|
import mozilla.components.support.utils.WebURLFinder
|
||||||
|
|
||||||
private const val MIME_TYPE_TEXT_PLAIN = "text/plain"
|
private const val MIME_TYPE_TEXT_PLAIN = "text/plain"
|
||||||
|
private const val MIME_TYPE_TEXT_HTML = "text/html"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A clipboard utility class that allows copying and pasting links/text to & from the clipboard
|
* A clipboard utility class that allows copying and pasting links/text to & from the clipboard
|
||||||
|
@ -19,29 +20,32 @@ class ClipboardHandler(context: Context) {
|
||||||
|
|
||||||
var text: String?
|
var text: String?
|
||||||
get() {
|
get() {
|
||||||
if (clipboard.isPrimaryClipEmpty() ||
|
if (!clipboard.isPrimaryClipEmpty() &&
|
||||||
!clipboard.isPrimaryClipPlainText()) {
|
(clipboard.isPrimaryClipPlainText() ||
|
||||||
return null
|
clipboard.isPrimaryClipHtmlText())
|
||||||
|
) {
|
||||||
|
return clipboard.firstPrimaryClipItem?.text.toString()
|
||||||
}
|
}
|
||||||
|
return null
|
||||||
return clipboard.firstPrimaryClipItem?.text.toString()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
set(value) {
|
set(value) {
|
||||||
clipboard.primaryClip = ClipData.newPlainText("Text", value)
|
clipboard.primaryClip = ClipData.newPlainText("Text", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
val url: String?
|
val url: String?
|
||||||
get() {
|
get() {
|
||||||
if (text == null) { return null }
|
return text?.let {
|
||||||
|
val finder = WebURLFinder(it)
|
||||||
val finder = WebURLFinder(text)
|
finder.bestWebURL()
|
||||||
return finder.bestWebURL()
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ClipboardManager.isPrimaryClipPlainText() =
|
private fun ClipboardManager.isPrimaryClipPlainText() =
|
||||||
primaryClipDescription?.hasMimeType(MIME_TYPE_TEXT_PLAIN) ?: false
|
primaryClipDescription?.hasMimeType(MIME_TYPE_TEXT_PLAIN) ?: false
|
||||||
|
|
||||||
|
private fun ClipboardManager.isPrimaryClipHtmlText() =
|
||||||
|
primaryClipDescription?.hasMimeType(MIME_TYPE_TEXT_HTML) ?: false
|
||||||
|
|
||||||
private fun ClipboardManager.isPrimaryClipEmpty() = primaryClip?.itemCount == 0
|
private fun ClipboardManager.isPrimaryClipEmpty() = primaryClip?.itemCount == 0
|
||||||
|
|
||||||
private val ClipboardManager.firstPrimaryClipItem: ClipData.Item?
|
private val ClipboardManager.firstPrimaryClipItem: ClipData.Item?
|
||||||
|
|
|
@ -54,4 +54,12 @@ class ClipboardHandlerTest {
|
||||||
clipboard.primaryClip = ClipData.newPlainText("Text", clipboardUrl)
|
clipboard.primaryClip = ClipData.newPlainText("Text", clipboardUrl)
|
||||||
assertEquals(clipboardUrl, clipboardHandler.url)
|
assertEquals(clipboardUrl, clipboardHandler.url)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun getUrlfromTextUrlMIME() {
|
||||||
|
assertEquals(null, clipboardHandler.url)
|
||||||
|
|
||||||
|
clipboard.primaryClip = ClipData.newHtmlText("Html", clipboardUrl, clipboardUrl)
|
||||||
|
assertEquals(clipboardUrl, clipboardHandler.url)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue