    def _on_ssl_errors(self, error):
        self._has_ssl_errors = True

        url = error.url()
        log.webview.debug("Certificate error: {}".format(error))

        if error.is_overridable():
            error.ignore = shared.ignore_certificate_errors(
                url, [error], abort_on=[self.abort_questions])
        else:
            log.webview.error("Non-overridable certificate error: "
                              "{}".format(error))

        log.webview.debug("ignore {}, URL {}, requested {}".format(
            error.ignore, url, self.url(requested=True)))

        # WORKAROUND for https://bugreports.qt.io/browse/QTBUG-56207
        show_cert_error = (
            not qtutils.version_check('5.9') and
            not error.ignore
        )
        # WORKAROUND for https://codereview.qt-project.org/c/qt/qtwebengine/+/270556
        show_non_overr_cert_error = (
            not error.is_overridable() and (
                # Affected Qt versions:
                # 5.13 before 5.13.2
                # 5.12 before 5.12.6
                # < 5.12
                (qtutils.version_check('5.13') and
                 not qtutils.version_check('5.13.2')) or
                (qtutils.version_check('5.12') and
                 not qtutils.version_check('5.12.6')) or
                not qtutils.version_check('5.12')
            )
        )

        # We can't really know when to show an error page, as the error might
        # have happened when loading some resource.
        # However, self.url() is not available yet and the requested URL
        # might not match the URL we get from the error - so we just apply a
        # heuristic here.
        if ((show_cert_error or show_non_overr_cert_error) and
                url.matches(self.data.last_navigation.url, QUrl.RemoveScheme)):
            self._show_error_page(url, str(error))
The code does not function according to its published specifications, potentially leading to incorrect usage.