diff options
Diffstat (limited to 'Source/WebKit')
-rw-r--r-- | Source/WebKit/PlatformQt.cmake | 27 | ||||
-rw-r--r-- | Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp | 4 | ||||
-rw-r--r-- | Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp | 2 | ||||
-rw-r--r-- | Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp | 2 | ||||
-rw-r--r-- | Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp | 3 | ||||
-rw-r--r-- | Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h | 3 | ||||
-rw-r--r-- | Source/WebKit/qt/WidgetApi/qwebpage.cpp | 51 | ||||
-rw-r--r-- | Source/WebKit/qt/WidgetApi/qwebpage.h | 4 |
8 files changed, 80 insertions, 16 deletions
diff --git a/Source/WebKit/PlatformQt.cmake b/Source/WebKit/PlatformQt.cmake index 3e50b2552..a192fbd48 100644 --- a/Source/WebKit/PlatformQt.cmake +++ b/Source/WebKit/PlatformQt.cmake @@ -16,10 +16,22 @@ macro(generate_version_header _file _var _prefix) set_source_files_properties(${_file} PROPERTIES GENERATED TRUE) endmacro() +macro(append_lib_names_to_list _lib_names_list) + foreach (_lib_filename ${ARGN}) + get_filename_component(_lib_name_we ${_lib_filename} NAME_WE) + if (NOT MSVC) + string(REGEX REPLACE "^lib" "" _lib_name_we ${_lib_name_we}) + endif () + list(APPEND ${_lib_names_list} ${_lib_name_we}) + endforeach () +endmacro() + if (${JavaScriptCore_LIBRARY_TYPE} MATCHES STATIC) add_definitions(-DSTATICALLY_LINKED_WITH_WTF -DSTATICALLY_LINKED_WITH_JavaScriptCore) endif () +QTWEBKIT_SKIP_AUTOMOC(WebKit) + list(APPEND WebKit_INCLUDE_DIRECTORIES "${WEBCORE_DIR}" "${DERIVED_SOURCES_DIR}" @@ -446,23 +458,21 @@ if (ENABLE_PRINT_SUPPORT) endif () if (QT_STATIC_BUILD) - if (MSVC) - set(LIB_PREFIX "lib") - endif () set(WEBKITWIDGETS_PKGCONGIG_DEPS "${WEBKITWIDGETS_PKGCONGIG_DEPS} Qt5PrintSupport") set(WEBKITWIDGETS_PRI_DEPS "${WEBKITWIDGETS_PRI_DEPS} printsupport") - set(EXTRA_LIBS_NAMES WebCore JavaScriptCore WTF xml2) + set(EXTRA_LIBS_NAMES WebCore JavaScriptCore WTF) + append_lib_names_to_list(EXTRA_LIBS_NAMES ${LIBXML2_LIBRARIES} ${SQLITE_LIBRARIES} ${ZLIB_LIBRARIES}) if (NOT USE_SYSTEM_MALLOC) list(APPEND EXTRA_LIBS_NAMES bmalloc) endif () if (ENABLE_XSLT) - list(APPEND EXTRA_LIBS_NAMES xslt) + append_lib_names_to_list(EXTRA_LIBS_NAMES ${LIBXSLT_LIBRARIES}) endif () if (USE_LIBHYPHEN) - list(APPEND EXTRA_LIBS_NAMES hyphen) + append_lib_names_to_list(EXTRA_LIBS_NAMES ${HYPHEN_LIBRARIES}) endif () if (USE_WEBP) - list(APPEND EXTRA_LIBS_NAMES webp) + append_lib_names_to_list(EXTRA_LIBS_NAMES ${WEBP_LIBRARIES}) endif () if (USE_WOFF2) list(APPEND EXTRA_LIBS_NAMES woff2 brotli) @@ -470,6 +480,7 @@ if (QT_STATIC_BUILD) if (APPLE) list(APPEND EXTRA_LIBS_NAMES icucore) endif () + list(REMOVE_DUPLICATES EXTRA_LIBS_NAMES) foreach (LIB_NAME ${EXTRA_LIBS_NAMES}) set(WEBKIT_PKGCONGIG_DEPS "${WEBKIT_PKGCONGIG_DEPS} ${LIB_PREFIX}${LIB_NAME}") set(WEBKIT_PRI_EXTRA_LIBS "${WEBKIT_PRI_EXTRA_LIBS} -l${LIB_PREFIX}${LIB_NAME}") @@ -786,6 +797,7 @@ if (COMPILER_IS_GCC_OR_CLANG) set_source_files_properties( qt/Api/qwebdatabase.cpp qt/Api/qwebelement.cpp + qt/Api/qwebfullscreenrequest.cpp qt/Api/qwebhistory.cpp qt/Api/qwebhistoryinterface.cpp qt/Api/qwebpluginfactory.cpp @@ -795,7 +807,6 @@ if (COMPILER_IS_GCC_OR_CLANG) qt/WidgetApi/qgraphicswebview.cpp qt/WidgetApi/qwebframe.cpp - qt/WidgetApi/qwebfullscreenrequest.cpp qt/WidgetApi/qwebinspector.cpp qt/WidgetApi/qwebpage.cpp qt/WidgetApi/qwebview.cpp diff --git a/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp index 50f91e203..7312792ce 100644 --- a/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp +++ b/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp @@ -1233,7 +1233,9 @@ void FrameLoaderClientQt::startDownload(const WebCore::ResourceRequest& request, if (!m_webFrame) return; - m_webFrame->pageAdapter->emitDownloadRequested(request.toNetworkRequest(m_frame->loader().networkingContext())); + QNetworkRequest r = request.toNetworkRequest(m_frame->loader().networkingContext()); + if (r.url().isValid()) + m_webFrame->pageAdapter->emitDownloadRequested(r); } RefPtr<Frame> FrameLoaderClientQt::createFrame(const URL& url, const String& name, HTMLFrameOwnerElement* ownerElement, const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) diff --git a/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp b/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp index 79dfb906f..72563a1f9 100644 --- a/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp +++ b/Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp @@ -357,7 +357,7 @@ void InspectorServerRequestHandlerQt::webSocketReadyRead() if (m_inspectorClient) { InspectorController& inspectorController = m_inspectorClient->m_inspectedWebPage->page->inspectorController(); - inspectorController.dispatchMessageFromFrontend(QString::fromUtf8(payload)); + inspectorController.dispatchMessageFromFrontend(String::fromUTF8(payload.data(), payload.size())); } } } diff --git a/Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp b/Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp index e6145b6ff..df28e9f21 100644 --- a/Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp +++ b/Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp @@ -961,6 +961,8 @@ void QWebFrameAdapter::setViewportSize(const QSize& size) FrameView* view = frame->view(); ASSERT(view); view->resize(size); + if (view->needsLayout()) + view->layout(); view->adjustViewSize(); } diff --git a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp index ab9fb1382..89e872fb2 100644 --- a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp +++ b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp @@ -434,6 +434,9 @@ bool QWebPageAdapter::findText(const QString& subString, FindFlag options) if (options & FindBeginsInSelection) webCoreFindOptions |= WebCore::StartInSelection; + if (options & FindAtWordEndingsOnly) + webCoreFindOptions |= WebCore::AtWordEnds; + if (options & HighlightAllOccurrences) { if (subString.isEmpty()) { page->unmarkAllTextMatches(); diff --git a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h index 969ce8700..1b7199a9c 100644 --- a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h +++ b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h @@ -122,7 +122,8 @@ public: HighlightAllOccurrences = 8, FindAtWordBeginningsOnly = 16, TreatMedialCapitalAsWordBeginning = 32, - FindBeginsInSelection = 64 + FindBeginsInSelection = 64, + FindAtWordEndingsOnly = 128 }; // valid values matching those from ScrollTypes.h 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; } /*! diff --git a/Source/WebKit/qt/WidgetApi/qwebpage.h b/Source/WebKit/qt/WidgetApi/qwebpage.h index bff0852d7..c3e469102 100644 --- a/Source/WebKit/qt/WidgetApi/qwebpage.h +++ b/Source/WebKit/qt/WidgetApi/qwebpage.h @@ -207,7 +207,9 @@ public: HighlightAllOccurrences = 8, FindAtWordBeginningsOnly = 16, TreatMedialCapitalAsWordBeginning = 32, - FindBeginsInSelection = 64 + FindBeginsInSelection = 64, + FindAtWordEndingsOnly = 128, + FindExactMatchOnly = (FindAtWordBeginningsOnly | FindAtWordEndingsOnly) }; Q_DECLARE_FLAGS(FindFlags, FindFlag) |