8000 Merge branch 'feature/site_parameter' of https://github.com/fylmr/And… · WindowxDeveloper/Android@2f448e3 · GitHub
[go: up one dir, main page]

Skip to content

Commit 2f448e3

Browse files
committed
Merge branch 'feature/site_parameter' of https://github.com/fylmr/Android into fylmr-feature/site_parameter
2 parents cce53a3 + 932b69b commit 2f448e3

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

app/src/androidTest/java/com/duckduckgo/app/browser/SpecialUrlDetectorImplTest.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,4 +127,16 @@ class SpecialUrlDetectorImplTest {
127127
val type = testee.determineType("smsto:123-555-12323") as Sms
128128
assertEquals("123-555-12323", type.telephoneNumber)
129129
}
130+
131+
@Test
132+
fun whenUrlIsCustomUriSchemeThenIntentTypeDetected() {
133+
val type = testee.determineType("myapp:foo bar") as IntentType
134+
assertEquals("myapp:foo bar", type.url)
135+
}
136+
137+
@Test
138+
fun whenUrlIsParametrizedQueryThenSearchQueryTypeDetected() {
139+
val type = testee.determineType("foo site:duckduckgo.com") as SearchQuery
140+
assertEquals("foo site:duckduckgo.com", type.query)
141+
}
130142
}

app/src/main/java/com/duckduckgo/app/browser/SpecialUrlDetector.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class SpecialUrlDetectorImpl : SpecialUrlDetector {
5252
HTTP_SCHEME, HTTPS_SCHEME, DATA_SCHEME -> UrlType.Web(uriString)
5353
ABOUT_SCHEME -> UrlType.Unknown(uriString)
5454
null -> UrlType.SearchQuery(uriString)
55-
else -> buildIntent(uriString)
55+
else -> checkForIntent(scheme, uriString)
5656
}
5757
}
5858

@@ -66,6 +66,15 @@ class SpecialUrlDetectorImpl : SpecialUrlDetector {
6666

6767
private fun buildSmsTo(uriString: String) = UrlType.Sms(uriString.removePrefix("$SMSTO_SCHEME:"))
6868

69+
private fun checkForIntent(scheme: String, uriString: String): UrlType {
70+
val validUriSchemeRegex = Regex("[a-z][a-zA-Z\\d+.-]+")
71+
if (scheme.matches(validUriSchemeRegex)){
72+
return buildIntent(uriString)
73+
}
74+
75+
return UrlType.SearchQuery(uriString)
76+
}
77+
6978
private fun buildIntent(uriString: String): UrlType {
7079
return try {
7180
val intent = Intent.parseUri(uriString, 0)

0 commit comments

Comments
 (0)
0