mirror of
https://github.com/fork-maintainers/iceraven-browser
synced 2024-11-03 23:15:31 +00:00
[fenix] For https://github.com/mozilla-mobile/fenix/issues/16249 - ClipboardHandler cleans up returned text
This commit is contained in:
parent
90eb9cfad5
commit
8fd1fbcb80
@ -7,7 +7,9 @@ package org.mozilla.fenix.utils
|
||||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import androidx.core.content.getSystemService
|
||||
import mozilla.components.support.utils.SafeUrl
|
||||
import mozilla.components.support.utils.WebURLFinder
|
||||
|
||||
private const val MIME_TYPE_TEXT_PLAIN = "text/plain"
|
||||
@ -16,7 +18,7 @@ private const val MIME_TYPE_TEXT_HTML = "text/html"
|
||||
/**
|
||||
* A clipboard utility class that allows copying and pasting links/text to & from the clipboard
|
||||
*/
|
||||
class ClipboardHandler(context: Context) {
|
||||
class ClipboardHandler(val context: Context) {
|
||||
private val clipboard = context.getSystemService<ClipboardManager>()!!
|
||||
|
||||
var text: String?
|
||||
@ -25,7 +27,7 @@ class ClipboardHandler(context: Context) {
|
||||
(clipboard.isPrimaryClipPlainText() ||
|
||||
clipboard.isPrimaryClipHtmlText())
|
||||
) {
|
||||
return clipboard.firstPrimaryClipItem?.text.toString()
|
||||
return firstSafePrimaryClipItemText
|
||||
}
|
||||
return null
|
||||
}
|
||||
@ -51,4 +53,8 @@ class ClipboardHandler(context: Context) {
|
||||
|
||||
private val ClipboardManager.firstPrimaryClipItem: ClipData.Item?
|
||||
get() = primaryClip?.getItemAt(0)
|
||||
|
||||
@VisibleForTesting
|
||||
internal val firstSafePrimaryClipItemText: String?
|
||||
get() = SafeUrl.stripUnsafeUrlSchemes(context, clipboard.firstPrimaryClipItem?.text)
|
||||
}
|
||||
|
@ -30,4 +30,13 @@
|
||||
<item>@string/all</item>
|
||||
<item>@string/private_string</item>
|
||||
</string-array>
|
||||
|
||||
<string name="resource_scheme">"resource://"</string>
|
||||
<string name="chrome_scheme">"chrome://</string>
|
||||
<string name="about_scheme">"about:"</string>
|
||||
<string-array name="mozac_url_schemes_blocklist" >
|
||||
<item>@string/resource_scheme</item>
|
||||
<item>@string/chrome_scheme</item>
|
||||
<item>@string/about_scheme</item>
|
||||
</string-array>
|
||||
</resources>
|
@ -7,7 +7,13 @@ package org.mozilla.fenix.utils
|
||||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import io.mockk.every
|
||||
import io.mockk.mockkObject
|
||||
import io.mockk.spyk
|
||||
import io.mockk.unmockkObject
|
||||
import io.mockk.verify
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import mozilla.components.support.utils.SafeUrl
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
@ -59,4 +65,33 @@ class ClipboardHandlerTest {
|
||||
clipboard.setPrimaryClip(ClipData.newHtmlText("Html", clipboardUrl, clipboardUrl))
|
||||
assertEquals(clipboardUrl, clipboardHandler.url)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `text should return firstSafePrimaryClipItemText`() {
|
||||
val safeResult = "safeResult"
|
||||
clipboard.setPrimaryClip(ClipData.newPlainText(clipboardUrl, clipboardText))
|
||||
clipboardHandler = spyk(clipboardHandler)
|
||||
every { clipboardHandler getProperty "firstSafePrimaryClipItemText" } propertyType String::class returns safeResult
|
||||
|
||||
val result = clipboardHandler.text
|
||||
|
||||
verify { clipboardHandler getProperty "firstSafePrimaryClipItemText" }
|
||||
assertEquals(safeResult, result)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `firstSafePrimaryClipItemText should return the result of SafeUrl#stripUnsafeUrlSchemes`() {
|
||||
mockkObject(SafeUrl)
|
||||
try {
|
||||
every { SafeUrl.stripUnsafeUrlSchemes(any(), any()) } returns "safeResult"
|
||||
clipboard.setPrimaryClip(ClipData.newHtmlText("Html", clipboardUrl, clipboardUrl))
|
||||
|
||||
val result = clipboardHandler.firstSafePrimaryClipItemText
|
||||
|
||||
verify { SafeUrl.stripUnsafeUrlSchemes(testContext, clipboardUrl) }
|
||||
assertEquals("safeResult", result)
|
||||
} finally {
|
||||
unmockkObject(SafeUrl)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user