Skip to content

Commit e250d01

Browse files
authored
Merge pull request #1976 from Infomaniak/version-webview
Changing the way we log the version of WebViews and also handling only official WebViews from Google
2 parents 55d906c + e2d4402 commit e250d01

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListViewModel.kt

+23-9
Original file line numberDiff line numberDiff line change
@@ -66,18 +66,32 @@ class ThreadListViewModel @Inject constructor(
6666
}
6767

6868
fun checkWebViewVersion(canShowWebViewOutdated: Boolean) {
69-
val (webViewVersionName, webViewMajorVersion) =
70-
WebViewCompat.getCurrentWebViewPackage(appContext)?.versionName?.let { versionName ->
71-
val majorVersion = runCatching { versionName.substringBefore('.').toInt() }.getOrDefault(0)
72-
versionName to majorVersion
73-
} ?: (null to 0)
69+
val webViewPackage = WebViewCompat.getCurrentWebViewPackage(appContext)
70+
val webViewPackageName = webViewPackage?.packageName
7471

75-
val badMajorVersion = webViewMajorVersion < WEBVIEW_MIN_VERSION
76-
if (badMajorVersion) SentryDebug.sendWebViewVersionName(webViewVersionName, webViewMajorVersion)
77-
isWebViewOutdated.value = canShowWebViewOutdated && badMajorVersion
72+
val (webViewVersionName, webViewMajorVersion) = webViewPackage?.versionName?.let { versionName ->
73+
val majorVersion = runCatching {
74+
versionName.substringBefore('.').toInt()
75+
}.getOrDefault(defaultValue = DEFAULT_WEBVIEW_VERSION)
76+
77+
return@let versionName to majorVersion
78+
} ?: (null to DEFAULT_WEBVIEW_VERSION)
79+
80+
val hasOutdatedMajorVersion = when (webViewPackageName) {
81+
WEBVIEW_OFFICIAL_PACKAGE_NAME -> webViewMajorVersion < WEBVIEW_OFFICIAL_MIN_VERSION
82+
else -> false // We'll add other package names in the future if needed here
83+
}
84+
85+
// TODO: (23/07) Remove this log in a few weeks/month if we don't have any Sentry anymore
86+
if (hasOutdatedMajorVersion) {
87+
SentryDebug.sendWebViewVersionName(webViewPackageName, webViewVersionName, webViewMajorVersion)
88+
}
89+
isWebViewOutdated.value = canShowWebViewOutdated && hasOutdatedMajorVersion
7890
}
7991

8092
companion object {
81-
private const val WEBVIEW_MIN_VERSION = 124
93+
private const val WEBVIEW_OFFICIAL_PACKAGE_NAME = "com.google.android.webview"
94+
private const val WEBVIEW_OFFICIAL_MIN_VERSION = 124
95+
private const val DEFAULT_WEBVIEW_VERSION = 0
8296
}
8397
}

app/src/main/java/com/infomaniak/mail/utils/SentryDebug.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -299,10 +299,11 @@ object SentryDebug {
299299
}
300300
}
301301

302-
fun sendWebViewVersionName(webViewVersionName: String?, majorVersion: Int) {
302+
fun sendWebViewVersionName(webViewPackageName: String?, webViewVersionName: String?, majorVersion: Int) {
303303
Sentry.withScope { scope ->
304-
scope.setExtra("webViewVersionName", webViewVersionName.toString())
305-
scope.setExtra("majorVersion", "$majorVersion")
304+
scope.setTag("webViewPackageName", "$webViewPackageName")
305+
scope.setTag("webViewVersionName", "$webViewVersionName")
306+
scope.setTag("majorVersion", "$majorVersion")
306307
Sentry.captureMessage(
307308
"WebView version name might be null on some devices. Checking that the version name is ok.",
308309
SentryLevel.INFO,

0 commit comments

Comments
 (0)