For #26706 - Change TopSite.containsQueryParameters as Uri extension function
parent
2f1f6f3213
commit
070bf5ac24
@ -0,0 +1,34 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.fenix.ext
|
||||
|
||||
import android.net.Uri
|
||||
|
||||
/**
|
||||
* Returns true if the url contains any query parameters specified by the [searchParameters].
|
||||
*
|
||||
* @param searchParameters [String] of the following forms:
|
||||
* - "" (empty) - Don't search for any params
|
||||
* - "key" - Search param named "key" with any or no value
|
||||
* - "key=" - Search param named "key" with no value
|
||||
* - "key=value" - Search param named "key" with value "value"
|
||||
*/
|
||||
fun Uri.containsQueryParameters(searchParameters: String): Boolean {
|
||||
if (searchParameters.isBlank()) {
|
||||
return false
|
||||
}
|
||||
val params = searchParameters.split("=")
|
||||
return when (params.size) {
|
||||
1 -> {
|
||||
this.queryParameterNames.contains(params.first()) &&
|
||||
this.getQueryParameter(params.first()).isNullOrBlank()
|
||||
}
|
||||
2 -> {
|
||||
this.queryParameterNames.contains(params.first()) &&
|
||||
this.getQueryParameter(params.first()) == params.last()
|
||||
}
|
||||
else -> false
|
||||
}
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.fenix.ext
|
||||
|
||||
import android.net.Uri
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.settings.SupportUtils
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class UriTest {
|
||||
@Test
|
||||
fun `WHEN urlContainsQueryParameters is invoked THEN the result should be true only if the url contains the search parameters`() {
|
||||
var searchParameters = ""
|
||||
val googleSite = Uri.parse(SupportUtils.GOOGLE_URL)
|
||||
val querySite = Uri.parse("test.com/?q=value")
|
||||
val blankQuerySite = Uri.parse("test.com/?q=")
|
||||
|
||||
assertFalse(googleSite.containsQueryParameters(searchParameters))
|
||||
assertFalse(querySite.containsQueryParameters(searchParameters))
|
||||
assertFalse(blankQuerySite.containsQueryParameters(searchParameters))
|
||||
|
||||
searchParameters = "q"
|
||||
|
||||
assertFalse(googleSite.containsQueryParameters(searchParameters))
|
||||
assertFalse(querySite.containsQueryParameters(searchParameters))
|
||||
assertTrue(blankQuerySite.containsQueryParameters(searchParameters))
|
||||
|
||||
searchParameters = "q="
|
||||
|
||||
assertFalse(googleSite.containsQueryParameters(searchParameters))
|
||||
assertFalse(querySite.containsQueryParameters(searchParameters))
|
||||
assertTrue(blankQuerySite.containsQueryParameters(searchParameters))
|
||||
|
||||
searchParameters = "q=value"
|
||||
|
||||
assertFalse(googleSite.containsQueryParameters(searchParameters))
|
||||
assertTrue(querySite.containsQueryParameters(searchParameters))
|
||||
assertFalse(blankQuerySite.containsQueryParameters(searchParameters))
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue