diff --git a/android/app/src/main/java/com/superproductivity/superproductivity/CapacitorMainActivity.kt b/android/app/src/main/java/com/superproductivity/superproductivity/CapacitorMainActivity.kt index 8c20bb6101..f9edbc4b4b 100644 --- a/android/app/src/main/java/com/superproductivity/superproductivity/CapacitorMainActivity.kt +++ b/android/app/src/main/java/com/superproductivity/superproductivity/CapacitorMainActivity.kt @@ -115,6 +115,11 @@ class CapacitorMainActivity : BridgeActivity() { } } + // We made it past the pre-flight version check and the WebView is alive. + // Persist the detected version so a transient mis-read on a later launch + // can't lock the user out, and clear any prior user override if healthy. + WebViewCompatibilityChecker.recordSuccessfulLoad(this, webViewCompatibility?.majorVersion) + // Hide the action bar supportActionBar?.hide() diff --git a/android/app/src/main/java/com/superproductivity/superproductivity/FullscreenActivity.kt b/android/app/src/main/java/com/superproductivity/superproductivity/FullscreenActivity.kt index 8e37f24bbd..069cb5a426 100644 --- a/android/app/src/main/java/com/superproductivity/superproductivity/FullscreenActivity.kt +++ b/android/app/src/main/java/com/superproductivity/superproductivity/FullscreenActivity.kt @@ -86,6 +86,11 @@ class FullscreenActivity : AppCompatActivity() { return } + // We made it past the pre-flight version check and the WebView is alive. + // Persist the detected version so a transient mis-read on a later launch + // can't lock the user out, and clear any prior user override if healthy. + WebViewCompatibilityChecker.recordSuccessfulLoad(this, compatibility.majorVersion) + // FOR TESTING HTML INPUTS QUICKLY //// webView = (application as App).wv // webView = WebHelper().instanceView(this) diff --git a/android/app/src/main/java/com/superproductivity/superproductivity/webview/WebViewBlockActivity.kt b/android/app/src/main/java/com/superproductivity/superproductivity/webview/WebViewBlockActivity.kt index 2150c52f8e..69afb594e4 100644 --- a/android/app/src/main/java/com/superproductivity/superproductivity/webview/WebViewBlockActivity.kt +++ b/android/app/src/main/java/com/superproductivity/superproductivity/webview/WebViewBlockActivity.kt @@ -1,11 +1,14 @@ package com.superproductivity.superproductivity.webview import android.app.Activity +import android.app.AlertDialog import android.content.Intent import android.os.Bundle +import android.view.View import android.widget.Button import android.widget.TextView import androidx.appcompat.app.AppCompatActivity +import com.superproductivity.superproductivity.FullscreenActivity import com.superproductivity.superproductivity.R class WebViewBlockActivity : AppCompatActivity() { @@ -14,6 +17,11 @@ class WebViewBlockActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_webview_block) + // Defense-in-depth against tapjacking: the override below is the only path to + // permanently disable the WebView block, so we drop touches when the window + // is partially obscured by an overlay app. + findViewById(android.R.id.content).filterTouchesWhenObscured = true + val minVersion = intent.getIntExtra(EXTRA_MIN_VERSION, WebViewCompatibilityChecker.MIN_CHROMIUM_VERSION) val detectedVersion = intent.getIntExtra(EXTRA_VERSION_MAJOR, -1) val versionName = intent.getStringExtra(EXTRA_VERSION_NAME) @@ -44,6 +52,36 @@ class WebViewBlockActivity : AppCompatActivity() { findViewById