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..9375342206 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();
}
@@ -67,7 +61,7 @@ %messageShort%
-
+