summaryrefslogtreecommitdiffstats
path: root/Source/WebKit
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-01-13 21:26:34 +0100
committerLiang Qi <liang.qi@qt.io>2018-01-13 21:26:34 +0100
commitbeaeeb99881184fd368c121fcbb1a31c78b794a3 (patch)
tree0e078499d8fe3e8627e3612537e61f2dd1029625 /Source/WebKit
parentf7697030f444b5e16331c6d0a99712736b9ff026 (diff)
parent79143ccfc158ec4fffc49eee600d600edb342b16 (diff)
Merge remote-tracking branch 'origin/5.212' into dev
Diffstat (limited to 'Source/WebKit')
-rw-r--r--Source/WebKit/PlatformQt.cmake113
-rw-r--r--Source/WebKit/qt/Api/qwebsettings.cpp4
-rw-r--r--Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp16
-rw-r--r--Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h2
-rw-r--r--Source/WebKit/qt/WebCoreSupport/InspectorServerQt.cpp2
-rw-r--r--Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp2
-rw-r--r--Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp8
-rw-r--r--Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h3
-rw-r--r--Source/WebKit/qt/WidgetApi/qwebpage.cpp51
-rw-r--r--Source/WebKit/qt/WidgetApi/qwebpage.h4
-rw-r--r--Source/WebKit/qt/WidgetSupport/InitWebKitQt.cpp6
11 files changed, 176 insertions, 35 deletions
diff --git a/Source/WebKit/PlatformQt.cmake b/Source/WebKit/PlatformQt.cmake
index 3e50b2552..3792def6f 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}"
@@ -432,6 +444,13 @@ endif ()
if (ENABLE_DEVICE_ORIENTATION)
set(WEBKIT_PRI_RUNTIME_DEPS "sensors ${WEBKIT_PRI_RUNTIME_DEPS}")
endif ()
+if (USE_MEDIA_FOUNDATION)
+ set(WEBKIT_PRI_EXTRA_LIBS "-lmfuuid -lstrmiids ${WEBKIT_PRI_EXTRA_LIBS}")
+endif ()
+if (USE_QT_MULTIMEDIA)
+ set(WEBKIT_PKGCONGIG_DEPS "${WEBKIT_PKGCONGIG_DEPS} Qt5Multimedia")
+ set(WEBKIT_PRI_RUNTIME_DEPS "multimedia ${WEBKIT_PRI_RUNTIME_DEPS}")
+endif ()
set(WEBKITWIDGETS_PKGCONGIG_DEPS "${WEBKIT_PKGCONGIG_DEPS} Qt5Widgets Qt5WebKit")
set(WEBKITWIDGETS_PRI_DEPS "${WEBKIT_PRI_DEPS} widgets webkit")
@@ -445,24 +464,27 @@ if (ENABLE_PRINT_SUPPORT)
set(WEBKITWIDGETS_PRI_RUNTIME_DEPS "${WEBKITWIDGETS_PRI_RUNTIME_DEPS} printsupport")
endif ()
+if (USE_QT_MULTIMEDIA)
+ set(WEBKITWIDGETS_PKGCONGIG_DEPS "${WEBKITWIDGETS_PKGCONGIG_DEPS} Qt5MultimediaWidgets")
+ set(WEBKITWIDGETS_PRI_RUNTIME_DEPS "${WEBKITWIDGETS_PRI_RUNTIME_DEPS} multimediawidgets")
+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} ${JPEG_LIBRARIES} ${PNG_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 +492,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}")
@@ -479,6 +502,7 @@ endif ()
if (NOT MACOS_BUILD_FRAMEWORKS)
ecm_generate_pkgconfig_file(
BASE_NAME Qt5WebKit
+ DESCRIPTION "Qt WebKit module"
DEPS "${WEBKIT_PKGCONGIG_DEPS}"
FILENAME_VAR WebKit_PKGCONFIG_FILENAME
)
@@ -496,11 +520,19 @@ if (KDE_INSTALL_USE_QT_SYS_PATHS)
INCLUDE_INSTALL_DIR "$$QT_MODULE_LIB_BASE/QtWebKit.framework/Headers"
MODULE_CONFIG "lib_bundle"
)
+ list(APPEND WebKit_Private_PRI_ARGUMENTS
+ INCLUDE_INSTALL_DIR "$$QT_MODULE_LIB_BASE/QtWebKit.framework/Headers/${PROJECT_VERSION}"
+ INCLUDE_INSTALL_DIR2 "$$QT_MODULE_LIB_BASE/QtWebKit.framework/Headers/${PROJECT_VERSION}/QtWebKit"
+ )
else ()
list(APPEND WebKit_PRI_ARGUMENTS
INCLUDE_INSTALL_DIR "$$QT_MODULE_INCLUDE_BASE"
INCLUDE_INSTALL_DIR2 "$$QT_MODULE_INCLUDE_BASE/QtWebKit"
)
+ list(APPEND WebKit_Private_PRI_ARGUMENTS
+ INCLUDE_INSTALL_DIR "$$QT_MODULE_INCLUDE_BASE/QtWebKit/${PROJECT_VERSION}"
+ INCLUDE_INSTALL_DIR2 "$$QT_MODULE_INCLUDE_BASE/QtWebKit/${PROJECT_VERSION}/QtWebKit"
+ )
endif ()
else ()
set(WebKit_PRI_ARGUMENTS
@@ -511,14 +543,24 @@ else ()
INCLUDE_INSTALL_DIR "${LIB_INSTALL_DIR}/QtWebKit.framework/Headers"
MODULE_CONFIG "lib_bundle"
)
+ list(APPEND WebKit_Private_PRI_ARGUMENTS
+ INCLUDE_INSTALL_DIR "${LIB_INSTALL_DIR}/QtWebKit.framework/Headers/${PROJECT_VERSION}"
+ INCLUDE_INSTALL_DIR2 "${LIB_INSTALL_DIR}/QtWebKit.framework/Headers/${PROJECT_VERSION}/QtWebKit"
+ )
else ()
list(APPEND WebKit_PRI_ARGUMENTS
INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR}
INCLUDE_INSTALL_DIR2 "${KDE_INSTALL_INCLUDEDIR}/QtWebKit"
)
+ list(APPEND WebKit_Private_PRI_ARGUMENTS
+ INCLUDE_INSTALL_DIR "${KDE_INSTALL_INCLUDEDIR}/QtWebKit/${PROJECT_VERSION}"
+ INCLUDE_INSTALL_DIR2 "${KDE_INSTALL_INCLUDEDIR}/QtWebKit/${PROJECT_VERSION}/QtWebKit"
+ )
endif ()
endif ()
+list(APPEND WebKit_Private_PRI_ARGUMENTS MODULE_CONFIG "internal_module no_link")
+
if (MACOS_BUILD_FRAMEWORKS)
set(WebKit_OUTPUT_NAME QtWebKit)
else ()
@@ -538,7 +580,23 @@ ecm_generate_pri_file(
FILENAME_VAR WebKit_PRI_FILENAME
${WebKit_PRI_ARGUMENTS}
)
-install(FILES ${WebKit_PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR} COMPONENT Data)
+ecm_generate_pri_file(
+ BASE_NAME webkit_private
+ NAME "QtWebKit"
+ LIB_NAME " "
+ DEPS "webkit"
+ RUNTIME_DEPS " "
+ DEFINES " "
+ QT_MODULES webkit
+ EXTRA_LIBS " "
+ FILENAME_VAR WebKit_Private_PRI_FILENAME
+ ${WebKit_Private_PRI_ARGUMENTS}
+)
+install(
+ FILES ${WebKit_PRI_FILENAME} ${WebKit_Private_PRI_FILENAME}
+ DESTINATION ${ECM_MKSPECS_INSTALL_DIR}
+ COMPONENT Data
+)
if (QT_STATIC_BUILD)
set(WebKit_LIBRARY_TYPE STATIC)
@@ -669,6 +727,7 @@ install(
if (NOT MACOS_BUILD_FRAMEWORKS)
ecm_generate_pkgconfig_file(
BASE_NAME Qt5WebKitWidgets
+ DESCRIPTION "Qt WebKitWidgets module"
DEPS "${WEBKITWIDGETS_PKGCONFIG_DEPS}"
FILENAME_VAR WebKitWidgets_PKGCONFIG_FILENAME
)
@@ -685,11 +744,19 @@ if (KDE_INSTALL_USE_QT_SYS_PATHS)
INCLUDE_INSTALL_DIR "$$QT_MODULE_LIB_BASE/QtWebKitWidgets.framework/Headers"
MODULE_CONFIG "lib_bundle"
)
+ list(APPEND WebKitWidgets_Private_PRI_ARGUMENTS
+ INCLUDE_INSTALL_DIR "$$QT_MODULE_LIB_BASE/QtWebKitWidgets.framework/Headers/${PROJECT_VERSION}"
+ INCLUDE_INSTALL_DIR2 "$$QT_MODULE_LIB_BASE/QtWebKitWidgets.framework/Headers/${PROJECT_VERSION}/QtWebKitWidgets"
+ )
else ()
list(APPEND WebKitWidgets_PRI_ARGUMENTS
INCLUDE_INSTALL_DIR "$$QT_MODULE_INCLUDE_BASE"
INCLUDE_INSTALL_DIR2 "$$QT_MODULE_INCLUDE_BASE/QtWebKitWidgets"
)
+ list(APPEND WebKitWidgets_Private_PRI_ARGUMENTS
+ INCLUDE_INSTALL_DIR "$$QT_MODULE_INCLUDE_BASE/QtWebKitWidgets/${PROJECT_VERSION}"
+ INCLUDE_INSTALL_DIR2 "$$QT_MODULE_INCLUDE_BASE/QtWebKitWidgets/${PROJECT_VERSION}/QtWebKitWidgets"
+ )
endif ()
else ()
set(WebKitWidgets_PRI_ARGUMENTS
@@ -700,14 +767,24 @@ else ()
INCLUDE_INSTALL_DIR "${LIB_INSTALL_DIR}/QtWebKitWidgets.framework/Headers"
MODULE_CONFIG "lib_bundle"
)
+ list(APPEND WebKitWidgets_Private_PRI_ARGUMENTS
+ INCLUDE_INSTALL_DIR "${LIB_INSTALL_DIR}/QtWebKitWidgets.framework/Headers/${PROJECT_VERSION}"
+ INCLUDE_INSTALL_DIR2 "${LIB_INSTALL_DIR}/QtWebKitWidgets.framework/Headers/${PROJECT_VERSION}/QtWebKitWidgets"
+ )
else ()
list(APPEND WebKitWidgets_PRI_ARGUMENTS
INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR}
INCLUDE_INSTALL_DIR2 "${KDE_INSTALL_INCLUDEDIR}/QtWebKitWidgets"
)
+ list(APPEND WebKitWidgets_Private_PRI_ARGUMENTS
+ INCLUDE_INSTALL_DIR "${KDE_INSTALL_INCLUDEDIR}/QtWebKitWidgets/${PROJECT_VERSION}"
+ INCLUDE_INSTALL_DIR2 "${KDE_INSTALL_INCLUDEDIR}/QtWebKitWidgets/${PROJECT_VERSION}/QtWebKitWidgets"
+ )
endif ()
endif ()
+list(APPEND WebKitWidgets_Private_PRI_ARGUMENTS MODULE_CONFIG "internal_module no_link")
+
if (MACOS_BUILD_FRAMEWORKS)
set(WebKitWidgets_OUTPUT_NAME QtWebKitWidgets)
else ()
@@ -726,7 +803,23 @@ ecm_generate_pri_file(
FILENAME_VAR WebKitWidgets_PRI_FILENAME
${WebKitWidgets_PRI_ARGUMENTS}
)
-install(FILES ${WebKitWidgets_PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR} COMPONENT Data)
+ecm_generate_pri_file(
+ BASE_NAME webkitwidgets_private
+ NAME "QtWebKitWidgets"
+ LIB_NAME " "
+ DEPS "webkitwidgets"
+ RUNTIME_DEPS " "
+ DEFINES " "
+ QT_MODULES webkitwidgets
+ EXTRA_LIBS " "
+ FILENAME_VAR WebKitWidgets_Private_PRI_FILENAME
+ ${WebKitWidgets_Private_PRI_ARGUMENTS}
+)
+install(
+ FILES ${WebKitWidgets_PRI_FILENAME} ${WebKitWidgets_Private_PRI_FILENAME}
+ DESTINATION ${ECM_MKSPECS_INSTALL_DIR}
+ COMPONENT Data
+)
if (MSVC)
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
@@ -786,6 +879,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 +889,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/Api/qwebsettings.cpp b/Source/WebKit/qt/Api/qwebsettings.cpp
index e6b32f52a..d552cec17 100644
--- a/Source/WebKit/qt/Api/qwebsettings.cpp
+++ b/Source/WebKit/qt/Api/qwebsettings.cpp
@@ -173,10 +173,6 @@ void QWebSettingsPrivate::apply()
global->attributes.value(QWebSettings::WebGLEnabled));
settings->setWebGLEnabled(value);
-#if ENABLE(CSS_SHADERS)
- // For now, enable CSS shaders when WebGL is enabled.
- settings->setCSSCustomFilterEnabled(value);
-#endif
#endif
#if ENABLE(WEB_AUDIO)
value = attributes.value(QWebSettings::WebAudioEnabled, global->attributes.value(QWebSettings::WebAudioEnabled));
diff --git a/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
index 50f91e203..b3209a572 100644
--- a/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
+++ b/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
@@ -929,10 +929,12 @@ void FrameLoaderClientQt::convertMainResourceLoadToDownload(DocumentLoader* docu
QNetworkReply* reply = handler->release();
if (reply) {
- if (m_webFrame->pageAdapter->forwardUnsupportedContent)
+ if (m_webFrame->pageAdapter->forwardUnsupportedContent) {
emit unsupportedContent(reply);
- else
+ } else {
reply->abort();
+ reply->deleteLater();
+ }
}
}
@@ -1233,7 +1235,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)
@@ -1515,12 +1519,6 @@ String FrameLoaderClientQt::overrideMediaType() const
return String();
}
-QString FrameLoaderClientQt::chooseFile(const QString& oldFile)
-{
- QStringList result = m_webFrame->pageAdapter->chooseFiles(m_webFrame, /*allowMulti*/ false, (QStringList() << oldFile));
- return result.isEmpty() ? QString() : result.first();
-}
-
PassRefPtr<FrameNetworkingContext> FrameLoaderClientQt::createNetworkingContext()
{
QVariant value = m_webFrame->pageAdapter->handle()->property("_q_MIMESniffingDisabled");
diff --git a/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h b/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h
index a00bf6702..a20364f76 100644
--- a/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h
+++ b/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h
@@ -214,8 +214,6 @@ public:
void updateCachedDocumentLoader(DocumentLoader &) override;
void prefetchDNS(const WTF::String &) override;
- QString chooseFile(const QString& oldFile);
-
PassRefPtr<FrameNetworkingContext> createNetworkingContext() override;
const URL& lastRequestedUrl() const { return m_lastRequestedUrl; }
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..00dc0c488 100644
--- a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
+++ b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
@@ -390,7 +390,10 @@ QString QWebPageAdapter::selectedText() const
QString QWebPageAdapter::selectedHtml() const
{
- return page->focusController().focusedOrMainFrame().editor().selectedRange()->toHTML();
+ RefPtr<Range> range = page->focusController().focusedOrMainFrame().editor().selectedRange();
+ if (!range)
+ return QString();
+ return range->toHTML();
}
bool QWebPageAdapter::isContentEditable() const
@@ -434,6 +437,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)
diff --git a/Source/WebKit/qt/WidgetSupport/InitWebKitQt.cpp b/Source/WebKit/qt/WidgetSupport/InitWebKitQt.cpp
index d4afa40e7..8263aa17f 100644
--- a/Source/WebKit/qt/WidgetSupport/InitWebKitQt.cpp
+++ b/Source/WebKit/qt/WidgetSupport/InitWebKitQt.cpp
@@ -36,8 +36,10 @@ QWEBKITWIDGETS_EXPORT void initializeWebKitWidgets()
if (initialized)
return;
- setWebKitWidgetsInitCallback(QStyleFacadeImp::create);
- initializeWebKitQt();
+ if (qgetenv("QT_WEBKIT_THEME_NAME") != "mobile") {
+ setWebKitWidgetsInitCallback(QStyleFacadeImp::create);
+ initializeWebKitQt();
+ }
// QWebSettings::SearchCancelButtonGraphic
setImagePlatformResource("searchCancelButton", QApplication::style()->standardPixmap(QStyle::SP_DialogCloseButton));