Skip to content

Commit 69f2c45

Browse files
committed
Moving https list check to worker thread
1 parent 901b4e4 commit 69f2c45

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

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

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import android.graphics.Bitmap
2121
import android.net.Uri
2222
import android.net.http.SslError
2323
import android.os.Build
24+
import android.support.annotation.AnyThread
25+
import android.support.annotation.UiThread
2426
import android.support.annotation.WorkerThread
2527
import android.webkit.*
2628
import androidx.core.net.toUri
@@ -32,6 +34,7 @@ import com.duckduckgo.app.statistics.pixels.Pixel.PixelName.HTTPS_UPGRADE_SITE_E
3234
import com.duckduckgo.app.statistics.pixels.Pixel.PixelParameter
3335
import timber.log.Timber
3436
import javax.inject.Inject
37+
import kotlin.concurrent.thread
3538

3639

3740
class BrowserWebViewClient @Inject constructor(
@@ -121,36 +124,45 @@ class BrowserWebViewClient @Inject constructor(
121124
override fun onReceivedError(view: WebView, errorCode: Int, description: String, failingUrl: String) {
122125
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
123126
val url = failingUrl.toUri()
124-
if (isHttpsUpgradeSite(url)) {
125-
reportHttpsUpgradeSiteError(url, statusCode = null, error = "WEB_RESOURCE_ERROR_$errorCode")
126-
}
127+
reportHttpsErrorIfInUpgradeList(url, statusCode = null, error = "WEB_RESOURCE_ERROR_$errorCode")
127128
}
128129
super.onReceivedError(view, errorCode, description, failingUrl)
129130
}
130131

131132
@TargetApi(Build.VERSION_CODES.M)
132133
override fun onReceivedError(view: WebView, request: WebResourceRequest, error: WebResourceError) {
133-
if (request.isForMainFrame && isHttpsUpgradeSite(request.url)) {
134-
reportHttpsUpgradeSiteError(request.url, statusCode = null, error = "WEB_RESOURCE_ERROR_${error.errorCode}")
134+
if (request.isForMainFrame) {
135+
reportHttpsErrorIfInUpgradeList(request.url, statusCode = null, error = "WEB_RESOURCE_ERROR_${error.errorCode}")
135136
}
136137
super.onReceivedError(view, request, error)
137138
}
138139

139140
override fun onReceivedHttpError(view: WebView, request: WebResourceRequest, errorResponse: WebResourceResponse) {
140-
if (request.isForMainFrame && isHttpsUpgradeSite(request.url)) {
141-
reportHttpsUpgradeSiteError(request.url, errorResponse.statusCode, error = null)
141+
if (request.isForMainFrame) {
142+
reportHttpsErrorIfInUpgradeList(request.url, errorResponse.statusCode, error = null)
142143
}
143144
super.onReceivedHttpError(view, request, errorResponse)
144145
}
145146

147+
@UiThread
146148
override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) {
147149
val uri = error.url.toUri()
148-
if (isHttpsUpgradeSite(uri)) {
149-
reportHttpsUpgradeSiteError(uri, null, "SSL_ERROR_${error.primaryError}")
150-
}
150+
reportHttpsErrorIfInUpgradeList(uri, null, "SSL_ERROR_${error.primaryError}")
151151
super.onReceivedSslError(view, handler, error)
152152
}
153153

154+
@AnyThread
155+
private fun reportHttpsErrorIfInUpgradeList(url: Uri, statusCode: Int?, error: String?) {
156+
157+
if (!url.isHttps) return
158+
159+
thread {
160+
if (httpsUpgrader.isInUpgradeList(url)) {
161+
reportHttpsUpgradeSiteError(url, statusCode, error)
162+
}
163+
}
164+
}
165+
154166
private fun reportHttpsUpgradeSiteError(url: Uri, statusCode: Int?, error: String?) {
155167
val params = mapOf(
156168
PixelParameter.URL to url.simpleUrl,
@@ -160,10 +172,6 @@ class BrowserWebViewClient @Inject constructor(
160172
pixel.fire(HTTPS_UPGRADE_SITE_ERROR, params)
161173
}
162174

163-
private fun isHttpsUpgradeSite(url: Uri): Boolean {
164-
return url.isHttps && httpsUpgrader.isInUpgradeList(url)
165-
}
166-
167175
/**
168176
* Utility to function to execute a function, and then return true
169177
*

0 commit comments

Comments
 (0)