From 84d848d10fdbcdfb039cf3abd948e6d2a7d466e6 Mon Sep 17 00:00:00 2001 From: mcarare Date: Mon, 30 May 2022 15:34:12 +0300 Subject: [PATCH] [fenix] For https://github.com/mozilla-mobile/fenix/issues/25435: Handle ERROR_BAD_HSTS_CERT error. --- .../mozilla/fenix/AppRequestInterceptor.kt | 1 + app/src/main/assets/lowMediumErrorPages.js | 19 +++++++++++++++++++ .../mozilla/fenix/AppRequestInterceptor.kt | 1 + 3 files changed, 21 insertions(+) diff --git a/app/src/androidTest/java/org/mozilla/fenix/AppRequestInterceptor.kt b/app/src/androidTest/java/org/mozilla/fenix/AppRequestInterceptor.kt index b60ef45a3f..9ece78639f 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/AppRequestInterceptor.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/AppRequestInterceptor.kt @@ -188,6 +188,7 @@ class AppRequestInterceptor(private val context: Context) : RequestInterceptor { ErrorType.ERROR_UNKNOWN_PROXY_HOST, ErrorType.ERROR_NO_INTERNET, ErrorType.ERROR_HTTPS_ONLY, + ErrorType.ERROR_BAD_HSTS_CERT, ErrorType.ERROR_UNKNOWN_PROTOCOL -> RiskLevel.Low ErrorType.ERROR_SECURITY_BAD_CERT, diff --git a/app/src/main/assets/lowMediumErrorPages.js b/app/src/main/assets/lowMediumErrorPages.js index 6f6249f806..8b9520a020 100644 --- a/app/src/main/assets/lowMediumErrorPages.js +++ b/app/src/main/assets/lowMediumErrorPages.js @@ -12,6 +12,7 @@ function parseQuery(queryString) { const query = Object.fromEntries(new URLSearchParams(queryString).entries()); injectValues(query); updateShowSSL(query); + updateShowHSTS(query); }; /** @@ -71,6 +72,24 @@ function updateShowSSL(queryMap) { } }; +/** + * Used to show or hide the "advanced" button based for the HSTS error page + */ +function updateShowHSTS(queryMap) { + /** @type {'true' | 'false'} */ + const showHSTS = queryMap.showHSTS; + if (typeof document.addCertException === "undefined") { + document.getElementById('advancedButton').style.display='none'; + } else { + if (showHSTS === 'true') { + document.getElementById('advancedButton').style.display='block'; + document.getElementById('advancedPanelAcceptButton').style.display='none'; + } else { + document.getElementById('advancedButton').style.display='none'; + } + } +} + /** * Used to display information about the SSL certificate in `error_pages.html` */ diff --git a/app/src/main/java/org/mozilla/fenix/AppRequestInterceptor.kt b/app/src/main/java/org/mozilla/fenix/AppRequestInterceptor.kt index e02143e9ab..61820688ae 100644 --- a/app/src/main/java/org/mozilla/fenix/AppRequestInterceptor.kt +++ b/app/src/main/java/org/mozilla/fenix/AppRequestInterceptor.kt @@ -151,6 +151,7 @@ class AppRequestInterceptor( ErrorType.ERROR_UNKNOWN_PROXY_HOST, ErrorType.ERROR_NO_INTERNET, ErrorType.ERROR_HTTPS_ONLY, + ErrorType.ERROR_BAD_HSTS_CERT, ErrorType.ERROR_UNKNOWN_PROTOCOL -> RiskLevel.Low ErrorType.ERROR_SECURITY_BAD_CERT,