summaryrefslogtreecommitdiff
path: root/Source/WebKit/qt/WidgetApi/qwebpage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/qt/WidgetApi/qwebpage.cpp')
-rw-r--r--Source/WebKit/qt/WidgetApi/qwebpage.cpp51
1 files changed, 47 insertions, 4 deletions
diff --git a/Source/WebKit/qt/WidgetApi/qwebpage.cpp b/Source/WebKit/qt/WidgetApi/qwebpage.cpp
index be8bd3edb..f8d8c0abc 100644
--- a/Source/WebKit/qt/WidgetApi/qwebpage.cpp
+++ b/Source/WebKit/qt/WidgetApi/qwebpage.cpp
@@ -3161,6 +3161,50 @@ bool QWebPage::extension(Extension extension, const ExtensionOption *option, Ext
}
#endif
+ if (extension == ErrorPageExtension) {
+ auto* errorOption = static_cast<const ErrorPageExtensionOption*>(option);
+
+ QString errorCode;
+ switch (errorOption->domain) {
+ case QWebPage::Http:
+ errorCode = tr("HTTP Error %0").arg(errorOption->error);
+ break;
+ case QWebPage::QtNetwork:
+ errorCode = tr("QtNetwork Error %0").arg(errorOption->error);
+ break;
+ case QWebPage::WebKit:
+ errorCode = tr("WebKit Error %0").arg(errorOption->error);
+ break;
+ }
+
+ QString pageHeader = errorOption->errorString;
+ if (pageHeader.isEmpty())
+ pageHeader = errorCode;
+ else if (pageHeader.endsWith(QLatin1Char('.')))
+ pageHeader.chop(1);
+
+ auto* pageOutput = static_cast<ErrorPageExtensionReturn*>(output);
+ pageOutput->baseUrl = errorOption->url;
+ QString escapedUrl = errorOption->url.toDisplayString().toHtmlEscaped();
+ pageOutput->content = QStringLiteral("<html><head>"
+ "<meta charset=\"utf-8\">"
+ "<title>%0</title>"
+ "<style>"
+ "html{font-family:sans;background:#EEE;color:#000;}"
+ "body{max-width:600px;margin:150px auto 0;padding:10px;}"
+ "pre{text-align:right;color:#999;}"
+ "</style>"
+ "</head><body>"
+ "<h1>%0</h1><hr>"
+ "<p>%1</p><pre>%2</pre>"
+ "</body></html>").arg(
+ pageHeader.toHtmlEscaped(),
+ tr("Failed to load URL %0.").toHtmlEscaped().arg(QLatin1String("<a href=\"") + escapedUrl + QLatin1String("\">") + escapedUrl + QLatin1String("</a>")),
+ errorCode.toHtmlEscaped()).toUtf8();
+
+ return true;
+ }
+
return false;
}
@@ -3172,11 +3216,10 @@ bool QWebPage::extension(Extension extension, const ExtensionOption *option, Ext
bool QWebPage::supportsExtension(Extension extension) const
{
#ifndef QT_NO_FILEDIALOG
- return extension == ChooseMultipleFilesExtension;
-#else
- Q_UNUSED(extension);
- return false;
+ if (extension == ChooseMultipleFilesExtension)
+ return true;
#endif
+ return extension == ErrorPageExtension;
}
/*!