1
0
Fork 0

For #1695 - Detect HTML mime type for clipboard URL (#6612)

* For #1695 - Detect HTML mime type for clipboard URL
master
Patrick Martin 2019-11-15 12:23:52 -08:00 committed by Emily Kager
parent 204ead0827
commit 5eb5cdf361
2 changed files with 22 additions and 10 deletions

View File

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

View File

@ -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)
}
} }