From 84913b6ce33b982d903c610e60abab3c150b2df6 Mon Sep 17 00:00:00 2001
From: haanhvu
Date: Tue, 7 Jan 2025 19:27:03 +0700
Subject: [PATCH 1/6] Chromium: Show error pages when errors happen
Currently when errors happen when loading a website, Wolvic with Chromium backend just returns a blank page. This fix allows Wolvic with Chromium backend to return an error page customized to each error.
Fix #1615
---
.../browser/api/impl/TabWebContentsDelegate.java | 2 +-
.../browser/api/impl/TabWebContentsObserver.java | 3 ++-
.../com/igalia/wolvic/browser/api/WSession.java | 9 +++++++++
.../com/igalia/wolvic/browser/engine/Session.java | 5 +++++
.../com/igalia/wolvic/utils/InternalPages.java | 13 ++++++++++++-
app/src/main/res/raw/error_pages.html | 8 +-------
6 files changed, 30 insertions(+), 10 deletions(-)
diff --git a/app/src/common/chromium/com/igalia/wolvic/browser/api/impl/TabWebContentsDelegate.java b/app/src/common/chromium/com/igalia/wolvic/browser/api/impl/TabWebContentsDelegate.java
index 86be9a226d..754e1328e3 100644
--- a/app/src/common/chromium/com/igalia/wolvic/browser/api/impl/TabWebContentsDelegate.java
+++ b/app/src/common/chromium/com/igalia/wolvic/browser/api/impl/TabWebContentsDelegate.java
@@ -86,7 +86,7 @@ public void navigationStateChanged(int flags) {
}
}
- @Override
+ //@Override
public void onWebAppManifest(WebContents webContents, @NonNull String manifest) {
@Nullable WSession.ContentDelegate delegate = mSession.getContentDelegate();
if (delegate == null)
diff --git a/app/src/common/chromium/com/igalia/wolvic/browser/api/impl/TabWebContentsObserver.java b/app/src/common/chromium/com/igalia/wolvic/browser/api/impl/TabWebContentsObserver.java
index ce77dc15af..e1d0e82ff6 100644
--- a/app/src/common/chromium/com/igalia/wolvic/browser/api/impl/TabWebContentsObserver.java
+++ b/app/src/common/chromium/com/igalia/wolvic/browser/api/impl/TabWebContentsObserver.java
@@ -116,7 +116,7 @@ public void didFailLoad(boolean isInPrimaryMainFrame, int errorCode, GURL failin
WSession.NavigationDelegate navigationDelegate = mSession.getNavigationDelegate();
if (navigationDelegate != null) {
- navigationDelegate.onLoadError(mSession, failingUrl.getSpec(), new WWebRequestError() {
+ byte[] errorData = navigationDelegate.onLoadErrorData(mSession, failingUrl.getSpec(), new WWebRequestError() {
@Override
public int code() {
return errorCode;
@@ -135,6 +135,7 @@ public X509Certificate certificate() {
return null;
}
});
+ mSession.loadData(errorData, "text/html");
}
}
diff --git a/app/src/common/shared/com/igalia/wolvic/browser/api/WSession.java b/app/src/common/shared/com/igalia/wolvic/browser/api/WSession.java
index 021355b5b3..0f1e41016e 100644
--- a/app/src/common/shared/com/igalia/wolvic/browser/api/WSession.java
+++ b/app/src/common/shared/com/igalia/wolvic/browser/api/WSession.java
@@ -516,6 +516,15 @@ WResult onLoadError(
@NonNull final WWebRequestError error) {
return null;
}
+
+ @UiThread
+ default @Nullable
+ byte[] onLoadErrorData(
+ @NonNull final WSession session,
+ @Nullable final String uri,
+ @NonNull final WWebRequestError error) {
+ return null;
+ }
}
@Retention(RetentionPolicy.SOURCE)
diff --git a/app/src/common/shared/com/igalia/wolvic/browser/engine/Session.java b/app/src/common/shared/com/igalia/wolvic/browser/engine/Session.java
index 37a2f269d1..621e33d968 100644
--- a/app/src/common/shared/com/igalia/wolvic/browser/engine/Session.java
+++ b/app/src/common/shared/com/igalia/wolvic/browser/engine/Session.java
@@ -1244,6 +1244,11 @@ public WResult onLoadError(@NonNull WSession session, @Nullable String u
return WResult.fromValue(InternalPages.createErrorPageDataURI(mContext, uri, error.code()));
}
+ @Override
+ public byte[] onLoadErrorData(@NonNull WSession session, @Nullable String uri, @NonNull WWebRequestError error) {
+ return InternalPages.createErrorPageData(mContext, uri, error.code());
+ }
+
// Progress Listener
@Override
diff --git a/app/src/common/shared/com/igalia/wolvic/utils/InternalPages.java b/app/src/common/shared/com/igalia/wolvic/utils/InternalPages.java
index 77806548dd..597e97a506 100644
--- a/app/src/common/shared/com/igalia/wolvic/utils/InternalPages.java
+++ b/app/src/common/shared/com/igalia/wolvic/utils/InternalPages.java
@@ -14,6 +14,8 @@
import mozilla.components.browser.errorpages.ErrorType;
+import org.chromium.net.NetError;
+
public class InternalPages {
private static ErrorType fromSessionErrorToErrorType(int error) {
@@ -21,6 +23,7 @@ private static ErrorType fromSessionErrorToErrorType(int error) {
case WWebRequestError.ERROR_SECURITY_SSL: {
return ErrorType.ERROR_SECURITY_SSL;
}
+ case NetError.ERR_CERT_DATE_INVALID:
case WWebRequestError.ERROR_SECURITY_BAD_CERT: {
return ErrorType.ERROR_SECURITY_BAD_CERT;
}
@@ -117,11 +120,19 @@ public static PageResources create(int html, int css) {
public static String createErrorPageDataURI(Context context,
@Nullable String uri,
int sessionError) {
+
+ return "data:text/html;base64," + Base64.encodeToString(createErrorPageData(context, uri, sessionError), Base64.NO_WRAP);
+ }
+
+ public static byte[] createErrorPageData(Context context,
+ @Nullable String uri,
+ int sessionError) {
String html = readRawResourceString(context, R.raw.error_pages);
String css = readRawResourceString(context, R.raw.error_style);
boolean showSSLAdvanced;
switch (sessionError) {
+ case NetError.ERR_CERT_DATE_INVALID:
case WWebRequestError.ERROR_SECURITY_SSL:
case WWebRequestError.ERROR_SECURITY_BAD_CERT:
showSSLAdvanced = true;
@@ -143,7 +154,7 @@ public static String createErrorPageDataURI(Context context,
html = html.replace("%url%", uri);
}
- return "data:text/html;base64," + Base64.encodeToString(html.getBytes(), Base64.NO_WRAP);
+ return html.getBytes();
}
public static byte[] createAboutPage(Context context,
diff --git a/app/src/main/res/raw/error_pages.html b/app/src/main/res/raw/error_pages.html
index 2205c19027..d278b873df 100644
--- a/app/src/main/res/raw/error_pages.html
+++ b/app/src/main/res/raw/error_pages.html
@@ -23,13 +23,7 @@
advancedVisible = !advancedVisible;
}
function acceptAndContinue(temporary) {
- document.addCertException(temporary).then(() => {
- location.reload();
- },
- err => {
- console.error("Unexpected error: " + err)
- }
- );
+ window.certificateErrorPageController.proceed();
}
From 4a0365cab55b6df0e63224894240d6e2346593f9 Mon Sep 17 00:00:00 2001
From: haanhvu
Date: Tue, 7 Jan 2025 22:11:22 +0700
Subject: [PATCH 2/6] Revert "Upgrade AGP to 8.7.2"
This reverts commit dd638d2ba91ba5f5f4911492f780a850fc51d03e.
---
versions.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/versions.gradle b/versions.gradle
index 7d9f33a913..a2c1bd59f0 100644
--- a/versions.gradle
+++ b/versions.gradle
@@ -45,7 +45,7 @@ versions.atsl_runner = "1.5.2"
versions.atsl_rules = "1.5.0"
versions.atsl_junit = "1.1.5"
versions.espresso = "3.5.1"
-versions.android_gradle_plugin = '8.7.2'
+versions.android_gradle_plugin = '8.7.1'
versions.kotlin = "1.9.21"
versions.kotlin_coroutines = "1.7.3"
versions.snakeyaml = "2.0"
From 4e19de0e0b8bb0a938ac6fb44041048e58289e40 Mon Sep 17 00:00:00 2001
From: haanhvu
Date: Tue, 7 Jan 2025 22:11:35 +0700
Subject: [PATCH 3/6] Revert "Migrate to Gradle v8.9"
This reverts commit 63e622fe47f5bd86f82df1bfb8b0f5ea3b0e81c5.
---
app/build.gradle | 7 +++++--
gradle/wrapper/gradle-wrapper.properties | 2 +-
versions.gradle | 2 +-
3 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index b74d955a05..b426cd6a39 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -619,13 +619,16 @@ android {
lint {
disable 'ExtraTranslation'
}
- androidResources {
+
+ aaptOptions {
+ noCompress 'ja'
+ noCompress 'dat'
+ noCompress 'bin'
noCompress 'pak'
noCompress 'ja'
noCompress 'dat'
noCompress 'bin'
}
-
}
configurations {
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 7836febc39..7f7ce3dc42 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Wed Jul 21 16:13:31 CEST 2021
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/versions.gradle b/versions.gradle
index a2c1bd59f0..d35d6fc99c 100644
--- a/versions.gradle
+++ b/versions.gradle
@@ -45,7 +45,7 @@ versions.atsl_runner = "1.5.2"
versions.atsl_rules = "1.5.0"
versions.atsl_junit = "1.1.5"
versions.espresso = "3.5.1"
-versions.android_gradle_plugin = '8.7.1'
+versions.android_gradle_plugin = "8.2.1"
versions.kotlin = "1.9.21"
versions.kotlin_coroutines = "1.7.3"
versions.snakeyaml = "2.0"
From 46ae3248f14c560c43d86409309b97db940f3a5d Mon Sep 17 00:00:00 2001
From: haanhvu
Date: Wed, 22 Jan 2025 22:16:39 +0700
Subject: [PATCH 4/6] Enable going back to previous page from error page
(temporary solution)
---
app/src/main/res/raw/error_pages.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/src/main/res/raw/error_pages.html b/app/src/main/res/raw/error_pages.html
index d278b873df..9375342206 100644
--- a/app/src/main/res/raw/error_pages.html
+++ b/app/src/main/res/raw/error_pages.html
@@ -61,7 +61,7 @@ %messageShort%
-
+
From a4b5732a0dfa178e190662097ae9d4c0a1fb0ffe Mon Sep 17 00:00:00 2001
From: haanhvu
Date: Wed, 22 Jan 2025 22:19:42 +0700
Subject: [PATCH 5/6] Reapply "Migrate to Gradle v8.9"
This reverts commit 4e19de0e0b8bb0a938ac6fb44041048e58289e40.
---
app/build.gradle | 7 ++-----
gradle/wrapper/gradle-wrapper.properties | 2 +-
versions.gradle | 2 +-
3 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index b426cd6a39..b74d955a05 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -619,16 +619,13 @@ android {
lint {
disable 'ExtraTranslation'
}
-
- aaptOptions {
- noCompress 'ja'
- noCompress 'dat'
- noCompress 'bin'
+ androidResources {
noCompress 'pak'
noCompress 'ja'
noCompress 'dat'
noCompress 'bin'
}
+
}
configurations {
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 7f7ce3dc42..7836febc39 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Wed Jul 21 16:13:31 CEST 2021
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/versions.gradle b/versions.gradle
index d35d6fc99c..a2c1bd59f0 100644
--- a/versions.gradle
+++ b/versions.gradle
@@ -45,7 +45,7 @@ versions.atsl_runner = "1.5.2"
versions.atsl_rules = "1.5.0"
versions.atsl_junit = "1.1.5"
versions.espresso = "3.5.1"
-versions.android_gradle_plugin = "8.2.1"
+versions.android_gradle_plugin = '8.7.1'
versions.kotlin = "1.9.21"
versions.kotlin_coroutines = "1.7.3"
versions.snakeyaml = "2.0"
From c6f3d8b7d164dc98f503680162041eb84d42eb3a Mon Sep 17 00:00:00 2001
From: haanhvu
Date: Wed, 22 Jan 2025 22:19:59 +0700
Subject: [PATCH 6/6] Reapply "Upgrade AGP to 8.7.2"
This reverts commit 4a0365cab55b6df0e63224894240d6e2346593f9.
---
versions.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/versions.gradle b/versions.gradle
index a2c1bd59f0..7d9f33a913 100644
--- a/versions.gradle
+++ b/versions.gradle
@@ -45,7 +45,7 @@ versions.atsl_runner = "1.5.2"
versions.atsl_rules = "1.5.0"
versions.atsl_junit = "1.1.5"
versions.espresso = "3.5.1"
-versions.android_gradle_plugin = '8.7.1'
+versions.android_gradle_plugin = '8.7.2'
versions.kotlin = "1.9.21"
versions.kotlin_coroutines = "1.7.3"
versions.snakeyaml = "2.0"