summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-11-25 09:47:18 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-11-25 09:47:18 +0100
commitcda76002257d56ffedbf8d28211cfd66a7226e73 (patch)
tree03e8a7fcdfa389771d6ade5afbe5d2536328eef2
parentb97f0eb87b6e6a6726b805c9de2159c6ad983f7d (diff)
parent631f1dd72027207cf6c49a380671c58f096a37a5 (diff)
Merge remote-tracking branch 'origin/5.15' into dev
Conflicts: src/core/api/qtbug-60565.cpp Change-Id: Iaad05aa248fb57a69033013161e10e3acddd48f6
-rw-r--r--configure.pri5
-rw-r--r--dist/changes-5.13.281
-rw-r--r--examples/webengine/customdialogs/main.cpp3
-rw-r--r--examples/webengine/minimal/main.cpp3
-rw-r--r--examples/webengine/quicknanobrowser/BrowserWindow.qml4
-rw-r--r--examples/webengine/quicknanobrowser/FindBar.qml6
-rw-r--r--examples/webengine/quicknanobrowser/main.cpp3
-rw-r--r--examples/webengine/recipebrowser/main.cpp3
-rw-r--r--examples/webengine/webengineaction/main.cpp4
-rw-r--r--examples/webenginewidgets/simplebrowser/browserwindow.cpp2
m---------src/3rdparty0
-rw-r--r--src/buildtools/config/common.pri2
-rw-r--r--src/buildtools/config/linux.pri2
-rw-r--r--src/buildtools/configure.json4
-rw-r--r--src/core/api/qtwebenginecoreglobal.cpp4
-rw-r--r--src/core/api/qwebenginefindtextresult.cpp24
-rw-r--r--src/core/api/qwebenginefindtextresult.h6
-rw-r--r--src/core/api/qwebengineurlrequestinfo.cpp2
-rw-r--r--src/core/browser_accessibility_manager_qt.cpp18
-rw-r--r--src/core/browser_accessibility_manager_qt.h2
-rw-r--r--src/core/browser_message_filter_qt.cpp23
-rw-r--r--src/core/browser_message_filter_qt.h4
-rw-r--r--src/core/certificate_error_controller.cpp6
-rw-r--r--src/core/certificate_error_controller.h2
-rw-r--r--src/core/certificate_error_controller_p.h2
-rw-r--r--src/core/chromium_overrides.cpp6
-rw-r--r--src/core/compositor/compositor_resource_fence.h2
-rw-r--r--src/core/compositor/delegated_frame_node.cpp14
-rw-r--r--src/core/compositor/stream_video_node.cpp4
-rw-r--r--src/core/configure.json6
-rw-r--r--src/core/content_browser_client_qt.cpp2
-rw-r--r--src/core/extensions/extension_system_qt.cpp70
-rw-r--r--src/core/extensions/extension_system_qt.h4
-rw-r--r--src/core/extensions/extension_web_contents_observer_qt.h4
-rw-r--r--src/core/extensions/extensions_browser_api_provider_qt.cpp11
-rw-r--r--src/core/extensions/extensions_browser_api_provider_qt.h3
-rw-r--r--src/core/extensions/extensions_browser_client_qt.cpp66
-rw-r--r--src/core/extensions/extensions_browser_client_qt.h8
-rw-r--r--src/core/extensions/mime_handler_view_guest_delegate_qt.cpp2
-rw-r--r--src/core/extensions/mime_handler_view_guest_delegate_qt.h2
-rw-r--r--src/core/extensions/pdf_web_contents_helper_client_qt.h13
-rw-r--r--src/core/find_text_helper.cpp4
-rw-r--r--src/core/find_text_helper.h2
-rw-r--r--src/core/media_capture_devices_dispatcher.cpp76
-rw-r--r--src/core/net/client_cert_override.h2
-rw-r--r--src/core/net/client_cert_store_data.cpp5
-rw-r--r--src/core/net/client_cert_store_data.h8
-rw-r--r--src/core/net/cookie_monster_delegate_qt.cpp26
-rw-r--r--src/core/net/cookie_monster_delegate_qt.h20
-rw-r--r--src/core/net/custom_protocol_handler.h3
-rw-r--r--src/core/net/network_delegate_qt.cpp89
-rw-r--r--src/core/net/network_delegate_qt.h50
-rw-r--r--src/core/net/proxy_config_service_qt.cpp16
-rw-r--r--src/core/net/proxy_config_service_qt.h8
-rw-r--r--src/core/net/qrc_url_scheme_handler.h3
-rw-r--r--src/core/net/restricted_cookie_manager_qt.cpp5
-rw-r--r--src/core/net/restricted_cookie_manager_qt.h6
-rw-r--r--src/core/net/ssl_host_state_delegate_qt.cpp19
-rw-r--r--src/core/net/ssl_host_state_delegate_qt.h20
-rw-r--r--src/core/net/url_request_context_getter_qt.h4
-rw-r--r--src/core/net/url_request_custom_job.cpp33
-rw-r--r--src/core/net/url_request_custom_job.h10
-rw-r--r--src/core/net/url_request_custom_job_delegate.cpp2
-rw-r--r--src/core/net/url_request_custom_job_delegate.h5
-rw-r--r--src/core/net/url_request_custom_job_proxy.cpp3
-rw-r--r--src/core/net/url_request_custom_job_proxy.h4
-rw-r--r--src/core/net/url_request_notification.cpp21
-rw-r--r--src/core/net/url_request_notification.h3
-rw-r--r--src/core/net/webui_controller_factory_qt.cpp6
-rw-r--r--src/core/net/webui_controller_factory_qt.h5
-rw-r--r--src/core/ozone/gl_surface_qt.cpp3
-rw-r--r--src/core/profile_adapter.cpp9
-rw-r--r--src/core/profile_io_data_qt.cpp10
-rw-r--r--src/core/profile_io_data_qt.h4
-rw-r--r--src/core/profile_qt.cpp1
-rw-r--r--src/core/render_widget_host_view_qt.cpp26
-rw-r--r--src/core/renderer/extensions/renderer_permissions_policy_delegate_qt.cpp3
-rw-r--r--src/core/renderer/extensions/renderer_permissions_policy_delegate_qt.h2
-rw-r--r--src/core/renderer/extensions/resource_request_policy_qt.cpp4
-rw-r--r--src/core/renderer/render_frame_observer_qt.h2
-rw-r--r--src/core/renderer_host/web_channel_ipc_transport_host.cpp12
-rw-r--r--src/core/type_conversion.cpp1
-rw-r--r--src/core/type_conversion.h2
-rw-r--r--src/core/web_contents_adapter.cpp29
-rw-r--r--src/core/web_engine_context.cpp4
-rw-r--r--src/core/web_engine_settings.cpp46
-rw-r--r--src/core/web_event_factory.cpp1
-rw-r--r--src/webengine/api/qquickwebenginedownloaditem_p.h12
-rw-r--r--src/webengine/api/qquickwebengineview_p.h10
-rw-r--r--src/webengine/api/qtwebengineglobal.cpp15
-rw-r--r--src/webengine/doc/src/qtwebengine-overview.qdoc2
-rw-r--r--src/webengine/doc/src/qtwebengine-platform-notes.qdoc4
-rw-r--r--src/webengine/doc/src/webengineview_lgpl.qdoc4
-rw-r--r--src/webengine/plugin/plugin.cpp5
-rw-r--r--src/webengine/plugin/plugins.qmltypes365
-rw-r--r--src/webenginewidgets/api/qwebenginecertificateerror.cpp8
-rw-r--r--src/webenginewidgets/api/qwebenginecertificateerror.h2
-rw-r--r--src/webenginewidgets/api/qwebenginedownloaditem.h8
-rw-r--r--src/webenginewidgets/api/qwebenginepage.cpp9
-rw-r--r--tests/auto/quick/dialogs/tst_dialogs.cpp5
-rw-r--r--tests/auto/quick/inspectorserver/BLACKLIST1
-rw-r--r--tests/auto/quick/inspectorserver/tst_inspectorserver.cpp2
-rw-r--r--tests/auto/quick/publicapi/tst_publicapi.cpp2
-rw-r--r--tests/auto/quick/qmltests/data/tst_findText.qml32
-rw-r--r--tests/auto/quick/shared/util.h12
-rw-r--r--tests/auto/widgets/certificateerror/tst_certificateerror.cpp16
-rw-r--r--tests/auto/widgets/devtools/tst_devtools.cpp4
-rw-r--r--tests/auto/widgets/faviconmanager/tst_faviconmanager.cpp34
-rw-r--r--tests/auto/widgets/loadsignals/tst_loadsignals.cpp2
-rw-r--r--tests/auto/widgets/origins/tst_origins.cpp155
-rw-r--r--tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp6
-rw-r--r--tests/auto/widgets/qwebenginehistory/resources/page5.html1
-rw-r--r--tests/auto/widgets/qwebenginehistory/tst_qwebenginehistory.cpp8
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp137
-rw-r--r--tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp139
-rw-r--r--tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp16
-rw-r--r--tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp4
-rw-r--r--tests/auto/widgets/schemes/tst_schemes.cpp2
-rw-r--r--tests/auto/widgets/util.h2
119 files changed, 1420 insertions, 653 deletions
diff --git a/configure.pri b/configure.pri
index 13ceb8cdc..3a144e3f8 100644
--- a/configure.pri
+++ b/configure.pri
@@ -367,11 +367,6 @@ defineTest(qtConfTest_hasThumbFlag) {
return(true)
}
-defineTest(qtConfTest_hasGcc6OrNewer) {
- greaterThan(QMAKE_GCC_MAJOR_VERSION, 5):return(true)
- return(false)
-}
-
defineTest(qtConfTest_detectSubmodule) {
isEmpty(QTWEBENGINE_ROOT) {
# topLevel build , add poor man's workaround
diff --git a/dist/changes-5.13.2 b/dist/changes-5.13.2
new file mode 100644
index 000000000..aeac5b000
--- /dev/null
+++ b/dist/changes-5.13.2
@@ -0,0 +1,81 @@
+Qt 5.13.2 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 5.13.0 through 5.13.1.
+
+For more details, refer to the online documentation included in this
+distribution. The documentation is also available online:
+
+https://doc.qt.io/qt-5/index.html
+
+The Qt version 5.13 series is binary compatible with the 5.12.x series.
+Applications compiled for 5.12 will continue to run with 5.13.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+https://bugreports.qt.io/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* Qt 5.13.2 Changes *
+****************************************************************************
+
+General
+-------
+
+ - [QTBUG-76329] Fixes extensions and PDF viewer when building with GCC 5.
+ - [QTBUG-77072, QTBUG-78084] Fixed flashing when closing combo box on
+ macOS.
+ - [QTBUG-77827] Fixed unbundling of libjpeg on Linux.
+ - [QTBUG-77977] Fixed invalid URL on profile change.
+ - [QTBUG-78016] Fixed crash with desktop sharing.
+ - [QTBUG-78206] Fixed accessibility events for combo boxes.
+ - [QTBUG-78316] Fixed XMLHttpRequest status with custom schemes.
+
+
+Chromium
+--------
+
+ - Security fixes from Chromium up to version 77.0.3865.120, including:
+
+ - CVE-2019-5869
+ - CVE-2019-5870
+ - CVE-2019-5872
+ - CVE-2019-5875
+ - CVE-2019-5876
+ - CVE-2019-13659
+ - CVE-2019-13660
+ - CVE-2019-13663
+ - CVE-2019-13664
+ - CVE-2019-13665
+ - CVE-2019-13673
+ - CVE-2019-13674
+ - CVE-2019-13675
+ - CVE-2019-13678/CVE-2019-13681
+ - CVE-2019-13687
+ - CVE-2019-13688
+ - CVE-2019-13691
+ - CVE-2019-13692
+ - CVE-2019-13693
+ - CVE-2019-13694
+ - CVE-2019-13695
+ - CVE-2019-13697
+ - Security issue 946351
+ - Security issue 946978
+ - Security issue 957160
+ - Security issue 960354
+ - Security issue 964938
+ - Security issue 971904
+ - Security issue 973628
+ - Security issue 974354
+ - Security issue 979373
+ - Security issue 981459
+ - Security issue 981597
+ - Security issue 986727
+ - Security issue 990234
+
+Qt WebEngine Widgets
+--------------------
+
+ - [QTBUG-77209] Fixed QWebEnginePage visibility state.
diff --git a/examples/webengine/customdialogs/main.cpp b/examples/webengine/customdialogs/main.cpp
index 82a3eca63..5aad8affb 100644
--- a/examples/webengine/customdialogs/main.cpp
+++ b/examples/webengine/customdialogs/main.cpp
@@ -67,9 +67,10 @@ int main(int argc, char *argv[])
{
QCoreApplication::setOrganizationName("QtExamples");
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
- Application app(argc, argv);
QtWebEngine::initialize();
+ Application app(argc, argv);
+
QQmlApplicationEngine engine;
Server *server = new Server(&engine);
diff --git a/examples/webengine/minimal/main.cpp b/examples/webengine/minimal/main.cpp
index 8bcd0e0e9..86109f97a 100644
--- a/examples/webengine/minimal/main.cpp
+++ b/examples/webengine/minimal/main.cpp
@@ -57,9 +57,8 @@ int main(int argc, char *argv[])
QCoreApplication::setOrganizationName("QtExamples");
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
- QGuiApplication app(argc, argv);
-
QtWebEngine::initialize();
+ QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
diff --git a/examples/webengine/quicknanobrowser/BrowserWindow.qml b/examples/webengine/quicknanobrowser/BrowserWindow.qml
index 39a13df59..2d3168382 100644
--- a/examples/webengine/quicknanobrowser/BrowserWindow.qml
+++ b/examples/webengine/quicknanobrowser/BrowserWindow.qml
@@ -57,7 +57,7 @@ import QtQuick.Controls.Styles 1.0
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.0
import QtQuick.Window 2.1
-import QtWebEngine 1.11
+import QtWebEngine 1.10
ApplicationWindow {
id: browserWindow
@@ -580,7 +580,7 @@ ApplicationWindow {
findBar.visible = true;
findBar.numberOfMatches = result.numberOfMatches;
- findBar.activeMatchOrdinal = result.activeMatchOrdinal;
+ findBar.activeMatch = result.activeMatch;
}
onLoadingChanged: function(loadRequest) {
diff --git a/examples/webengine/quicknanobrowser/FindBar.qml b/examples/webengine/quicknanobrowser/FindBar.qml
index 2d673592a..de407ac33 100644
--- a/examples/webengine/quicknanobrowser/FindBar.qml
+++ b/examples/webengine/quicknanobrowser/FindBar.qml
@@ -57,12 +57,12 @@ Rectangle {
id: root
property int numberOfMatches: 0
- property int activeMatchOrdinal: 0
+ property int activeMatch: 0
property alias text: findTextField.text
function reset() {
numberOfMatches = 0;
- activeMatchOrdinal = 0;
+ activeMatch = 0;
visible = false;
}
@@ -113,7 +113,7 @@ Rectangle {
}
Label {
- text: activeMatchOrdinal + "/" + numberOfMatches
+ text: activeMatch + "/" + numberOfMatches
visible: findTextField.text != ""
}
diff --git a/examples/webengine/quicknanobrowser/main.cpp b/examples/webengine/quicknanobrowser/main.cpp
index 8d032f5d8..d09abba3c 100644
--- a/examples/webengine/quicknanobrowser/main.cpp
+++ b/examples/webengine/quicknanobrowser/main.cpp
@@ -80,11 +80,10 @@ int main(int argc, char **argv)
{
QCoreApplication::setOrganizationName("QtExamples");
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+ QtWebEngine::initialize();
Application app(argc, argv);
- QtWebEngine::initialize();
-
QQmlApplicationEngine appEngine;
Utils utils;
appEngine.rootContext()->setContextProperty("utils", &utils);
diff --git a/examples/webengine/recipebrowser/main.cpp b/examples/webengine/recipebrowser/main.cpp
index 6e6d69804..e61b9e0f5 100644
--- a/examples/webengine/recipebrowser/main.cpp
+++ b/examples/webengine/recipebrowser/main.cpp
@@ -58,9 +58,10 @@ int main(int argc, char *argv[])
{
QCoreApplication::setOrganizationName("QtExamples");
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
- QGuiApplication app(argc, argv);
QtWebEngine::initialize();
+ QGuiApplication app(argc, argv);
+
QQuickStyle::setStyle(QStringLiteral("Material"));
QQmlApplicationEngine engine;
diff --git a/examples/webengine/webengineaction/main.cpp b/examples/webengine/webengineaction/main.cpp
index ce723a99b..f2dec9655 100644
--- a/examples/webengine/webengineaction/main.cpp
+++ b/examples/webengine/webengineaction/main.cpp
@@ -56,10 +56,10 @@ int main(int argc, char *argv[])
{
QCoreApplication::setOrganizationName("QtExamples");
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
- QGuiApplication app(argc, argv);
-
QtWebEngine::initialize();
+ QGuiApplication app(argc, argv);
+
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
diff --git a/examples/webenginewidgets/simplebrowser/browserwindow.cpp b/examples/webenginewidgets/simplebrowser/browserwindow.cpp
index 7b167ded7..c1d0ea359 100644
--- a/examples/webenginewidgets/simplebrowser/browserwindow.cpp
+++ b/examples/webenginewidgets/simplebrowser/browserwindow.cpp
@@ -532,7 +532,7 @@ void BrowserWindow::handleFindTextFinished(const QWebEngineFindTextResult &resul
statusBar()->showMessage(tr("\"%1\" not found.").arg(m_lastSearch));
} else {
statusBar()->showMessage(tr("\"%1\" found: %2/%3").arg(m_lastSearch,
- QString::number(result.activeMatchOrdinal()),
+ QString::number(result.activeMatch()),
QString::number(result.numberOfMatches())));
}
}
diff --git a/src/3rdparty b/src/3rdparty
-Subproject dc5221146d665f5634fab11fb4c9b5515c1ab07
+Subproject 88a931558e2e960eacccb32483713fcc4bbaf43
diff --git a/src/buildtools/config/common.pri b/src/buildtools/config/common.pri
index 23a134774..97d39535c 100644
--- a/src/buildtools/config/common.pri
+++ b/src/buildtools/config/common.pri
@@ -137,3 +137,5 @@ qtConfig(webengine-kerberos) {
ccache {
gn_args += cc_wrapper=\"ccache\"
}
+
+qtConfig(force_asserts): gn_args += dcheck_always_on=true
diff --git a/src/buildtools/config/linux.pri b/src/buildtools/config/linux.pri
index 493ea9766..f3c4fc953 100644
--- a/src/buildtools/config/linux.pri
+++ b/src/buildtools/config/linux.pri
@@ -179,7 +179,7 @@ host_build {
} else {
gn_args += use_system_harfbuzz=false
}
- !qtConfig(webengine-system-glib): gn_args += use_glib=false
+ gn_args += use_glib=false
qtConfig(webengine-pulseaudio) {
gn_args += use_pulseaudio=true
} else {
diff --git a/src/buildtools/configure.json b/src/buildtools/configure.json
index 535d8358b..a36d05320 100644
--- a/src/buildtools/configure.json
+++ b/src/buildtools/configure.json
@@ -150,9 +150,9 @@
]
},
"webengine-icu": {
- "label": "icu >= 63",
+ "label": "icu >= 64",
"sources": [
- { "type": "pkgConfig", "args": "icu-uc >= 63 icu-i18n >= 63" }
+ { "type": "pkgConfig", "args": "icu-uc >= 64 icu-i18n >= 64" }
]
},
"webengine-webp": {
diff --git a/src/core/api/qtwebenginecoreglobal.cpp b/src/core/api/qtwebenginecoreglobal.cpp
index 0fddacb15..9e2a4a5b1 100644
--- a/src/core/api/qtwebenginecoreglobal.cpp
+++ b/src/core/api/qtwebenginecoreglobal.cpp
@@ -108,7 +108,7 @@ Q_WEBENGINECORE_PRIVATE_EXPORT void initialize()
QCoreApplication *app = QCoreApplication::instance();
if (!app) {
- qFatal("QtWebEngine::initialize() must be called after the construction of the application object.");
+ qFatal("QtWebEngine::initialize() but no core application instance.");
return;
}
@@ -126,7 +126,7 @@ Q_WEBENGINECORE_PRIVATE_EXPORT void initialize()
shareContext = new QOpenGLContext;
QSurfaceFormat format = QSurfaceFormat::defaultFormat();
- format.setOption(QSurfaceFormat::ResetNotification);
+// format.setOption(QSurfaceFormat::ResetNotification);
shareContext->setFormat(format);
shareContext->create();
qAddPostRoutine(deleteShareContext);
diff --git a/src/core/api/qwebenginefindtextresult.cpp b/src/core/api/qwebenginefindtextresult.cpp
index ce1be359e..c0adc6177 100644
--- a/src/core/api/qwebenginefindtextresult.cpp
+++ b/src/core/api/qwebenginefindtextresult.cpp
@@ -44,7 +44,7 @@ QT_BEGIN_NAMESPACE
class QWebEngineFindTextResultPrivate : public QSharedData {
public:
int numberOfMatches = 0;
- int activeMatchOrdinal = 0;
+ int activeMatch = 0;
};
/*!
@@ -54,6 +54,18 @@ public:
\inmodule QtWebEngineCore
+ The string search can be initiated by the \l QWebEnginePage::findText() or
+ \l{WebEngineView::findText()}{WebEngineView.findText()} method. The results of the search
+ are highlighted in the view. The details of this result are passed as a
+ QWebEngineFindTextResult object that can be used to show a status message,
+ such as "2 of 2 matches". For example:
+
+ \code
+ QObject::connect(view.page(), &QWebEnginePage::findTextFinished, [](const QWebEngineFindTextResult &result) {
+ qInfo() << result.activeMatch() << "of" << result.numberOfMatches() << "matches";
+ });
+ \endcode
+
Results are passed to the user in the
\l QWebEnginePage::findTextFinished() and
\l{WebEngineView::findTextFinished()}{WebEngineView.findTextFinished()} signals.
@@ -67,11 +79,11 @@ QWebEngineFindTextResult::QWebEngineFindTextResult()
/*! \internal
*/
-QWebEngineFindTextResult::QWebEngineFindTextResult(int numberOfMatches, int activeMatchOrdinal)
+QWebEngineFindTextResult::QWebEngineFindTextResult(int numberOfMatches, int activeMatch)
: d(new QWebEngineFindTextResultPrivate)
{
d->numberOfMatches = numberOfMatches;
- d->activeMatchOrdinal = activeMatchOrdinal;
+ d->activeMatch = activeMatch;
}
/*! \internal
@@ -103,12 +115,12 @@ int QWebEngineFindTextResult::numberOfMatches() const
}
/*!
- \property QWebEngineFindTextResult::activeMatchOrdinal
+ \property QWebEngineFindTextResult::activeMatch
\brief The index of the currently highlighted match.
*/
-int QWebEngineFindTextResult::activeMatchOrdinal() const
+int QWebEngineFindTextResult::activeMatch() const
{
- return d->activeMatchOrdinal;
+ return d->activeMatch;
}
QT_END_NAMESPACE
diff --git a/src/core/api/qwebenginefindtextresult.h b/src/core/api/qwebenginefindtextresult.h
index 073a8135f..246e689c3 100644
--- a/src/core/api/qwebenginefindtextresult.h
+++ b/src/core/api/qwebenginefindtextresult.h
@@ -55,11 +55,11 @@ class QWebEngineFindTextResultPrivate;
class Q_WEBENGINECORE_EXPORT QWebEngineFindTextResult {
Q_GADGET
Q_PROPERTY(int numberOfMatches READ numberOfMatches CONSTANT FINAL)
- Q_PROPERTY(int activeMatchOrdinal READ activeMatchOrdinal CONSTANT FINAL)
+ Q_PROPERTY(int activeMatch READ activeMatch CONSTANT FINAL)
public:
int numberOfMatches() const;
- int activeMatchOrdinal() const;
+ int activeMatch() const;
QWebEngineFindTextResult();
QWebEngineFindTextResult(const QWebEngineFindTextResult &other);
@@ -67,7 +67,7 @@ public:
~QWebEngineFindTextResult();
private:
- QWebEngineFindTextResult(int numberOfMatches, int activeMatchOrdinal);
+ QWebEngineFindTextResult(int numberOfMatches, int activeMatch);
QSharedDataPointer<QWebEngineFindTextResultPrivate> d;
diff --git a/src/core/api/qwebengineurlrequestinfo.cpp b/src/core/api/qwebengineurlrequestinfo.cpp
index 5492b21d4..e44410099 100644
--- a/src/core/api/qwebengineurlrequestinfo.cpp
+++ b/src/core/api/qwebengineurlrequestinfo.cpp
@@ -216,7 +216,7 @@ QWebEngineUrlRequestInfo::ResourceType QWebEngineUrlRequestInfo::resourceType()
\value NavigationTypeFormSubmitted Navigation submits a form.
\value NavigationTypeBackForward Navigation initiated by a history action.
\value NavigationTypeReload Navigation initiated by refreshing the page.
- \value NavigationTypeRedirect Navigation triggered automatically by page content or remote server.
+ \value NavigationTypeRedirect Navigation triggered automatically by page content or remote server. (Added in Qt 5.14)
\value NavigationTypeOther None of the above.
*/
diff --git a/src/core/browser_accessibility_manager_qt.cpp b/src/core/browser_accessibility_manager_qt.cpp
index 7fb1386c5..8e3ee5940 100644
--- a/src/core/browser_accessibility_manager_qt.cpp
+++ b/src/core/browser_accessibility_manager_qt.cpp
@@ -146,6 +146,24 @@ void BrowserAccessibilityManagerQt::FireBlinkEvent(ax::mojom::Event event_type,
break;
}
}
+
+void BrowserAccessibilityManagerQt::FireGeneratedEvent(ui::AXEventGenerator::Event event_type,
+ BrowserAccessibility* node)
+{
+ BrowserAccessibilityQt *iface = static_cast<BrowserAccessibilityQt*>(node);
+
+ switch (event_type) {
+ case ui::AXEventGenerator::Event::VALUE_CHANGED:
+ if (iface->role() == QAccessible::EditableText) {
+ QAccessibleTextUpdateEvent event(iface, -1, QString(), QString());
+ QAccessible::updateAccessibility(&event);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
#endif // QT_NO_ACCESSIBILITY
}
diff --git a/src/core/browser_accessibility_manager_qt.h b/src/core/browser_accessibility_manager_qt.h
index 87c8875ba..16e2d1fe7 100644
--- a/src/core/browser_accessibility_manager_qt.h
+++ b/src/core/browser_accessibility_manager_qt.h
@@ -60,6 +60,8 @@ public:
~BrowserAccessibilityManagerQt() override;
void FireBlinkEvent(ax::mojom::Event event_type,
BrowserAccessibility* node) override;
+ void FireGeneratedEvent(ui::AXEventGenerator::Event event_type,
+ BrowserAccessibility* node) override;
QAccessibleInterface *rootParentAccessible();
bool isValid() const { return m_valid; }
diff --git a/src/core/browser_message_filter_qt.cpp b/src/core/browser_message_filter_qt.cpp
index c8fc88017..a4b75f075 100644
--- a/src/core/browser_message_filter_qt.cpp
+++ b/src/core/browser_message_filter_qt.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtWebEngine module of the Qt Toolkit.
@@ -40,19 +40,19 @@
#include "browser_message_filter_qt.h"
#include "chrome/browser/profiles/profile.h"
-#include "common/qt_messages.h"
#include "content/public/browser/plugin_service.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
-#include "type_conversion.h"
-#include "net/network_delegate_qt.h"
+#include "common/qt_messages.h"
+#include "profile_io_data_qt.h"
+#include "type_conversion.h"
namespace QtWebEngineCore {
BrowserMessageFilterQt::BrowserMessageFilterQt(int /*render_process_id*/, Profile *profile)
: BrowserMessageFilter(QtMsgStart)
- , m_profile(profile)
+ , m_profileData(ProfileIODataQt::FromBrowserContext(profile))
{
}
@@ -81,8 +81,7 @@ void BrowserMessageFilterQt::OnAllowDatabase(int /*render_frame_id*/,
const GURL &top_origin_url,
bool* allowed)
{
- NetworkDelegateQt *networkDelegate = static_cast<NetworkDelegateQt *>(m_profile->GetRequestContext()->GetURLRequestContext()->network_delegate());
- *allowed = networkDelegate->canGetCookies(top_origin_url, origin_url);
+ *allowed = m_profileData->canGetCookies(toQt(top_origin_url), toQt(origin_url));
}
void BrowserMessageFilterQt::OnAllowDOMStorage(int /*render_frame_id*/,
@@ -91,8 +90,7 @@ void BrowserMessageFilterQt::OnAllowDOMStorage(int /*render_frame_id*/,
bool /*local*/,
bool *allowed)
{
- NetworkDelegateQt *networkDelegate = static_cast<NetworkDelegateQt *>(m_profile->GetRequestContext()->GetURLRequestContext()->network_delegate());
- *allowed = networkDelegate->canGetCookies(top_origin_url, origin_url);
+ *allowed = m_profileData->canGetCookies(toQt(top_origin_url), toQt(origin_url));
}
void BrowserMessageFilterQt::OnAllowIndexedDB(int /*render_frame_id*/,
@@ -100,8 +98,7 @@ void BrowserMessageFilterQt::OnAllowIndexedDB(int /*render_frame_id*/,
const GURL &top_origin_url,
bool *allowed)
{
- NetworkDelegateQt *networkDelegate = static_cast<NetworkDelegateQt *>(m_profile->GetRequestContext()->GetURLRequestContext()->network_delegate());
- *allowed = networkDelegate->canGetCookies(top_origin_url, origin_url);
+ *allowed = m_profileData->canGetCookies(toQt(top_origin_url), toQt(origin_url));
}
void BrowserMessageFilterQt::OnRequestFileSystemAccessSync(int render_frame_id,
@@ -153,9 +150,7 @@ void BrowserMessageFilterQt::OnRequestFileSystemAccess(int /*render_frame_id*/,
base::Callback<void(bool)> callback)
{
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-
- NetworkDelegateQt *networkDelegate = static_cast<NetworkDelegateQt *>(m_profile->GetRequestContext()->GetURLRequestContext()->network_delegate());
- bool allowed = networkDelegate->canGetCookies(top_origin_url, origin_url);
+ bool allowed = m_profileData->canGetCookies(toQt(top_origin_url), toQt(origin_url));
callback.Run(allowed);
}
diff --git a/src/core/browser_message_filter_qt.h b/src/core/browser_message_filter_qt.h
index 3963fb9d5..4abc612f8 100644
--- a/src/core/browser_message_filter_qt.h
+++ b/src/core/browser_message_filter_qt.h
@@ -49,6 +49,8 @@ class Profile;
namespace QtWebEngineCore {
+class ProfileIODataQt;
+
class BrowserMessageFilterQt : public content::BrowserMessageFilter
{
public:
@@ -91,7 +93,7 @@ private:
const GURL &top_origin_url,
base::Callback<void(bool)> callback);
- Profile *m_profile;
+ ProfileIODataQt *m_profileData;
};
} // namespace QtWebEngineCore
diff --git a/src/core/certificate_error_controller.cpp b/src/core/certificate_error_controller.cpp
index bc83ed802..f3b16357b 100644
--- a/src/core/certificate_error_controller.cpp
+++ b/src/core/certificate_error_controller.cpp
@@ -93,7 +93,7 @@ CertificateErrorControllerPrivate::CertificateErrorControllerPrivate(int cert_er
if (auto cert = ssl_info.cert.get()) {
validStart = toQt(cert->valid_start());
validExpiry = toQt(cert->valid_expiry());
- chain = toCertificateChain(cert);
+ certificateChain = toCertificateChain(cert);
}
}
@@ -187,9 +187,9 @@ QString CertificateErrorController::errorString() const
return getQStringForMessageId(IDS_CERT_ERROR_UNKNOWN_ERROR_DESCRIPTION);
}
-QList<QSslCertificate> CertificateErrorController::chain() const
+QList<QSslCertificate> CertificateErrorController::certificateChain() const
{
- return d->chain;
+ return d->certificateChain;
}
QT_END_NAMESPACE
diff --git a/src/core/certificate_error_controller.h b/src/core/certificate_error_controller.h
index 7f5300dc8..d7e057adf 100644
--- a/src/core/certificate_error_controller.h
+++ b/src/core/certificate_error_controller.h
@@ -96,7 +96,7 @@ public:
QString errorString() const;
QDateTime validStart() const;
QDateTime validExpiry() const;
- QList<QSslCertificate> chain() const;
+ QList<QSslCertificate> certificateChain() const;
void accept(bool);
diff --git a/src/core/certificate_error_controller_p.h b/src/core/certificate_error_controller_p.h
index a11f2b6f0..ceae99853 100644
--- a/src/core/certificate_error_controller_p.h
+++ b/src/core/certificate_error_controller_p.h
@@ -71,7 +71,7 @@ public:
bool fatalError;
bool strictEnforcement;
const base::Callback<void(content::CertificateRequestResultType)> callback;
- QList<QSslCertificate> chain;
+ QList<QSslCertificate> certificateChain;
};
QT_END_NAMESPACE
diff --git a/src/core/chromium_overrides.cpp b/src/core/chromium_overrides.cpp
index 4920540a0..9d3e3f08a 100644
--- a/src/core/chromium_overrides.cpp
+++ b/src/core/chromium_overrides.cpp
@@ -118,7 +118,7 @@ std::unique_ptr<base::ListValue> GetFontList_SlowBlocking()
// TODO(yusukes): Support localized family names.
font_list->Append(std::move(font_item));
}
- return std::move(font_list);
+ return font_list;
}
} // namespace content
@@ -142,8 +142,8 @@ namespace content {
std::vector<AccessibilityTreeFormatter::TestPass> AccessibilityTreeFormatter::GetTestPasses()
{
return {
- {"blink", &AccessibilityTreeFormatterBlink::CreateBlink},
- {"native", &AccessibilityTreeFormatter::Create},
+ {"blink", &AccessibilityTreeFormatterBlink::CreateBlink, nullptr},
+ {"native", &AccessibilityTreeFormatter::Create, nullptr},
};
}
} // namespace content
diff --git a/src/core/compositor/compositor_resource_fence.h b/src/core/compositor/compositor_resource_fence.h
index 196297f78..574416b8b 100644
--- a/src/core/compositor/compositor_resource_fence.h
+++ b/src/core/compositor/compositor_resource_fence.h
@@ -52,7 +52,7 @@ public:
REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE();
CompositorResourceFence() {}
- CompositorResourceFence(const gl::TransferableFence &sync) : m_sync(sync) {};
+ CompositorResourceFence(const gl::TransferableFence &sync) : m_sync(sync) {}
~CompositorResourceFence() { release(); }
// May be used only by Qt Quick render thread.
diff --git a/src/core/compositor/delegated_frame_node.cpp b/src/core/compositor/delegated_frame_node.cpp
index 2a0df3acd..4d74937d9 100644
--- a/src/core/compositor/delegated_frame_node.cpp
+++ b/src/core/compositor/delegated_frame_node.cpp
@@ -858,7 +858,7 @@ void DelegatedFrameNode::handleQuad(
const viz::TextureDrawQuad *tquad = viz::TextureDrawQuad::MaterialCast(quad);
const CompositorResource *resource = findAndHoldResource(tquad->resource_id(), resourceTracker);
QSGTexture *texture =
- initAndHoldTexture(resource, quad->ShouldDrawWithBlending(), apiDelegate);
+ initAndHoldTexture(resource, quad->ShouldDrawWithBlending(true), apiDelegate);
QSizeF textureSize;
if (texture)
textureSize = texture->textureSize();
@@ -909,7 +909,7 @@ void DelegatedFrameNode::handleQuad(
const viz::TileDrawQuad *tquad = viz::TileDrawQuad::MaterialCast(quad);
const CompositorResource *resource = findAndHoldResource(tquad->resource_id(), resourceTracker);
nodeHandler->setupTextureContentNode(
- initAndHoldTexture(resource, quad->ShouldDrawWithBlending(), apiDelegate),
+ initAndHoldTexture(resource, quad->ShouldDrawWithBlending(true), apiDelegate),
toQt(quad->rect), toQt(tquad->tex_coord_rect),
QSGImageNode::NoTransform, currentLayerChain);
break;
@@ -930,10 +930,10 @@ void DelegatedFrameNode::handleQuad(
aResource = findAndHoldResource(vquad->a_plane_resource_id(), resourceTracker);
nodeHandler->setupYUVVideoNode(
- initAndHoldTexture(yResource, quad->ShouldDrawWithBlending()),
- initAndHoldTexture(uResource, quad->ShouldDrawWithBlending()),
- initAndHoldTexture(vResource, quad->ShouldDrawWithBlending()),
- aResource ? initAndHoldTexture(aResource, quad->ShouldDrawWithBlending()) : 0,
+ initAndHoldTexture(yResource, quad->ShouldDrawWithBlending(true)),
+ initAndHoldTexture(uResource, quad->ShouldDrawWithBlending(true)),
+ initAndHoldTexture(vResource, quad->ShouldDrawWithBlending(true)),
+ aResource ? initAndHoldTexture(aResource, quad->ShouldDrawWithBlending(true)) : 0,
toQt(vquad->ya_tex_coord_rect), toQt(vquad->uv_tex_coord_rect),
toQt(vquad->ya_tex_size), toQt(vquad->uv_tex_size), vquad->video_color_space,
vquad->resource_multiplier, vquad->resource_offset, toQt(quad->rect),
@@ -945,7 +945,7 @@ void DelegatedFrameNode::handleQuad(
const viz::StreamVideoDrawQuad *squad = viz::StreamVideoDrawQuad::MaterialCast(quad);
const CompositorResource *resource = findAndHoldResource(squad->resource_id(), resourceTracker);
MailboxTexture *texture = static_cast<MailboxTexture *>(
- initAndHoldTexture(resource, quad->ShouldDrawWithBlending(), apiDelegate, GL_TEXTURE_EXTERNAL_OES));
+ initAndHoldTexture(resource, quad->ShouldDrawWithBlending(true), apiDelegate, GL_TEXTURE_EXTERNAL_OES));
QMatrix4x4 qMatrix;
// convertToQt(squad->matrix.matrix(), qMatrix);
diff --git a/src/core/compositor/stream_video_node.cpp b/src/core/compositor/stream_video_node.cpp
index 29922f866..fb9501f24 100644
--- a/src/core/compositor/stream_video_node.cpp
+++ b/src/core/compositor/stream_video_node.cpp
@@ -47,7 +47,7 @@ class StreamVideoMaterialShader : public QSGMaterialShader
{
public:
StreamVideoMaterialShader(TextureTarget target) : m_target(target) { }
- virtual void updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial);
+ virtual void updateState(const RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) override;
char const *const *attributeNames() const override {
static const char *names[] = {
@@ -100,7 +100,7 @@ protected:
return shader2DRect;
}
- virtual void initialize() {
+ virtual void initialize() override {
m_id_matrix = program()->uniformLocation("matrix");
m_id_sTexture = program()->uniformLocation("s_texture");
m_id_texMatrix = program()->uniformLocation("texMatrix");
diff --git a/src/core/configure.json b/src/core/configure.json
index 9ee66bf61..d7f5a92f1 100644
--- a/src/core/configure.json
+++ b/src/core/configure.json
@@ -94,10 +94,6 @@
"label": "thumb instruction set",
"type": "hasThumbFlag"
},
- "webengine-extensions-gcc-version" : {
- "label": "GCC 6 or newer",
- "type": "hasGcc6OrNewer"
- },
"webengine-noexecstack" : {
"label": "linker supports -z noexecstack",
"type": "linkerSupportsFlag",
@@ -194,7 +190,7 @@
"label": "Extensions",
"purpose": "Enables Chromium extensions within certain limits. Currently used for enabling the pdf viewer.",
"section": "WebEngine",
- "condition": "features.webengine-printing-and-pdf && (tests.webengine-extensions-gcc-version || config.clang || !config.gcc)",
+ "condition": "features.webengine-printing-and-pdf",
"autoDetect": "features.webengine-printing-and-pdf",
"output": [ "publicFeature" ]
},
diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp
index 6fcd9ad5b..29b6e09ed 100644
--- a/src/core/content_browser_client_qt.cpp
+++ b/src/core/content_browser_client_qt.cpp
@@ -252,7 +252,7 @@ void ShareGroupQtQuick::AboutToAddFirstContext()
// This currently has to be setup by ::main in all applications using QQuickWebEngineView with delegated rendering.
QOpenGLContext *shareContext = qt_gl_global_share_context();
if (!shareContext) {
- qFatal("QWebEngine: OpenGL resource sharing is not set up in QtQuick. Please make sure to call QtWebEngine::initialize() in your main() function.");
+ qFatal("QWebEngine: OpenGL resource sharing is not set up in QtQuick. Please make sure to call QtWebEngine::initialize() in your main() function before QCoreApplication is created.");
}
m_shareContextQtQuick = new QtShareGLContext(shareContext);
#endif
diff --git a/src/core/extensions/extension_system_qt.cpp b/src/core/extensions/extension_system_qt.cpp
index 7278e50c1..fbe98099c 100644
--- a/src/core/extensions/extension_system_qt.cpp
+++ b/src/core/extensions/extension_system_qt.cpp
@@ -102,8 +102,7 @@ namespace extensions {
namespace {
-std::string GenerateId(const base::DictionaryValue *manifest,
- const base::FilePath &path)
+std::string GenerateId(const base::DictionaryValue *manifest, const base::FilePath &path)
{
std::string raw_key;
std::string id_input;
@@ -130,49 +129,36 @@ std::unique_ptr<base::DictionaryValue> ParseManifest(const std::string &manifest
} // namespace
// Dummy Content Verifier Delegate. Added to prevent crashes.
-class ContentVerifierDelegateQt
- : public ContentVerifierDelegate {
- public:
- ~ContentVerifierDelegateQt() override {}
-
- // This should return what verification mode is appropriate for the given
- // extension, if any.
- bool ShouldBeVerified(const Extension& extension) override
+class ContentVerifierDelegateQt : public ContentVerifierDelegate
+{
+public:
+ ~ContentVerifierDelegateQt() override {}
+
+ // This should return what verification mode is appropriate for the given
+ // extension, if any.
+ bool ShouldBeVerified(const Extension &extension) override { return false; }
+
+ // Should return the public key to use for validating signatures via the two
+ // out parameters.
+ ContentVerifierKey GetPublicKey() override { return ContentVerifierKey(); }
+ // This should return a URL that can be used to fetch the
+ // verified_contents.json containing signatures for the given extension
+ // id/version pair.
+ GURL GetSignatureFetchUrl(const std::string &extension_id, const base::Version &version) override { return GURL(); }
+
+ // This should return the set of file paths for images used within the
+ // browser process. (These may get transcoded during the install process).
+ std::set<base::FilePath> GetBrowserImagePaths(const extensions::Extension *extension) override
{
- return false;
+ return std::set<base::FilePath>();
}
- // Should return the public key to use for validating signatures via the two
- // out parameters.
- ContentVerifierKey GetPublicKey() override {
- return ContentVerifierKey();
- }
- // This should return a URL that can be used to fetch the
- // verified_contents.json containing signatures for the given extension
- // id/version pair.
- GURL GetSignatureFetchUrl(const std::string& extension_id,
- const base::Version& version) override {
- return GURL();
- }
-
- // This should return the set of file paths for images used within the
- // browser process. (These may get transcoded during the install process).
- std::set<base::FilePath> GetBrowserImagePaths(
- const extensions::Extension* extension) override {
- return std::set<base::FilePath>();
- }
-
- // Called when the content verifier detects that a read of a file inside
- // an extension did not match its expected hash.
- void VerifyFailed(const std::string& extension_id,
- ContentVerifyJob::FailureReason reason) override {
-
- }
-
- // Called when ExtensionSystem is shutting down.
- void Shutdown() override {
-
- }
+ // Called when the content verifier detects that a read of a file inside
+ // an extension did not match its expected hash.
+ void VerifyFailed(const std::string &extension_id, ContentVerifyJob::FailureReason reason) override {}
+
+ // Called when ExtensionSystem is shutting down.
+ void Shutdown() override {}
};
void ExtensionSystemQt::LoadExtension(std::string extension_id, std::unique_ptr<base::DictionaryValue> manifest, const base::FilePath &directory)
diff --git a/src/core/extensions/extension_system_qt.h b/src/core/extensions/extension_system_qt.h
index 4370f5cc3..04bffb74d 100644
--- a/src/core/extensions/extension_system_qt.h
+++ b/src/core/extensions/extension_system_qt.h
@@ -90,8 +90,8 @@ public:
ManagementPolicy *management_policy() override;
ServiceWorkerManager *service_worker_manager() override;
SharedUserScriptMaster *shared_user_script_master() override;
- StateStore* state_store() override;
- StateStore* rules_store() override;
+ StateStore *state_store() override;
+ StateStore *rules_store() override;
scoped_refptr<ValueStoreFactory> store_factory() override;
InfoMap *info_map() override;
QuotaService *quota_service() override;
diff --git a/src/core/extensions/extension_web_contents_observer_qt.h b/src/core/extensions/extension_web_contents_observer_qt.h
index 5f32562fc..a528b3856 100644
--- a/src/core/extensions/extension_web_contents_observer_qt.h
+++ b/src/core/extensions/extension_web_contents_observer_qt.h
@@ -50,8 +50,8 @@
namespace extensions {
class ExtensionWebContentsObserverQt
- : public ExtensionWebContentsObserver,
- public content::WebContentsUserData<ExtensionWebContentsObserverQt>
+ : public ExtensionWebContentsObserver
+ , public content::WebContentsUserData<ExtensionWebContentsObserverQt>
{
public:
explicit ExtensionWebContentsObserverQt(content::WebContents *web_contents);
diff --git a/src/core/extensions/extensions_browser_api_provider_qt.cpp b/src/core/extensions/extensions_browser_api_provider_qt.cpp
index cc1932c64..731dfb0fd 100644
--- a/src/core/extensions/extensions_browser_api_provider_qt.cpp
+++ b/src/core/extensions/extensions_browser_api_provider_qt.cpp
@@ -42,16 +42,13 @@
#include "extensions/browser/api/generated_api_registration.h"
namespace extensions {
-ExtensionsBrowserAPIProviderQt::ExtensionsBrowserAPIProviderQt() =
- default;
-ExtensionsBrowserAPIProviderQt::~ExtensionsBrowserAPIProviderQt() =
- default;
+ExtensionsBrowserAPIProviderQt::ExtensionsBrowserAPIProviderQt() = default;
+ExtensionsBrowserAPIProviderQt::~ExtensionsBrowserAPIProviderQt() = default;
-void ExtensionsBrowserAPIProviderQt::RegisterExtensionFunctions(
- ExtensionFunctionRegistry* registry) {
+void ExtensionsBrowserAPIProviderQt::RegisterExtensionFunctions(ExtensionFunctionRegistry *registry)
+{
api::GeneratedFunctionRegistry::RegisterAll(registry);
}
}
-
diff --git a/src/core/extensions/extensions_browser_api_provider_qt.h b/src/core/extensions/extensions_browser_api_provider_qt.h
index 612df3825..f1d10ac95 100644
--- a/src/core/extensions/extensions_browser_api_provider_qt.h
+++ b/src/core/extensions/extensions_browser_api_provider_qt.h
@@ -45,7 +45,8 @@
namespace extensions {
-class ExtensionsBrowserAPIProviderQt : public ExtensionsBrowserAPIProvider {
+class ExtensionsBrowserAPIProviderQt : public ExtensionsBrowserAPIProvider
+{
public:
ExtensionsBrowserAPIProviderQt();
~ExtensionsBrowserAPIProviderQt() override;
diff --git a/src/core/extensions/extensions_browser_client_qt.cpp b/src/core/extensions/extensions_browser_client_qt.cpp
index eb8c12bff..59c15d2f5 100644
--- a/src/core/extensions/extensions_browser_client_qt.cpp
+++ b/src/core/extensions/extensions_browser_client_qt.cpp
@@ -97,72 +97,57 @@ void DetermineCharset(const std::string &mime_type,
if (base::StartsWith(mime_type, "text/", base::CompareCase::INSENSITIVE_ASCII)) {
// All of our HTML files should be UTF-8 and for other resource types
// (like images), charset doesn't matter.
- DCHECK(base::IsStringUTF8(base::StringPiece(reinterpret_cast<const char*>(data->front()), data->size())));
+ DCHECK(base::IsStringUTF8(base::StringPiece(reinterpret_cast<const char *>(data->front()), data->size())));
*out_charset = "utf-8";
}
}
// A request for an extension resource in a Chrome .pak file. These are used
// by component extensions.
-class URLRequestResourceBundleJob : public net::URLRequestSimpleJob {
+class URLRequestResourceBundleJob : public net::URLRequestSimpleJob
+{
public:
- URLRequestResourceBundleJob(net::URLRequest *request,
- net::NetworkDelegate *network_delegate,
- const base::FilePath &filename,
- int resource_id,
- const std::string &content_security_policy,
- bool send_cors_header)
- : net::URLRequestSimpleJob(request, network_delegate)
- , filename_(filename)
- , resource_id_(resource_id)
- , weak_factory_(this)
+ URLRequestResourceBundleJob(net::URLRequest *request, net::NetworkDelegate *network_delegate,
+ const base::FilePath &filename, int resource_id,
+ const std::string &content_security_policy, bool send_cors_header)
+ : net::URLRequestSimpleJob(request, network_delegate)
+ , filename_(filename)
+ , resource_id_(resource_id)
+ , weak_factory_(this)
{
// Leave cache headers out of resource bundle requests.
response_info_.headers = extensions::BuildHttpHeaders(content_security_policy, send_cors_header, base::Time());
}
- int GetRefCountedData(std::string* mime_type,
- std::string* charset,
- scoped_refptr<base::RefCountedMemory>* data,
+ int GetRefCountedData(std::string *mime_type, std::string *charset, scoped_refptr<base::RefCountedMemory> *data,
net::CompletionOnceCallback callback) const override
{
- const ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
+ const ui::ResourceBundle &rb = ui::ResourceBundle::GetSharedInstance();
*data = rb.LoadDataResourceBytes(resource_id_);
// Add the Content-Length header now that we know the resource length.
- response_info_.headers->AddHeader(
- base::StringPrintf("%s: %s", net::HttpRequestHeaders::kContentLength,
- base::NumberToString((*data)->size()).c_str()));
+ response_info_.headers->AddHeader(base::StringPrintf("%s: %s", net::HttpRequestHeaders::kContentLength,
+ base::NumberToString((*data)->size()).c_str()));
- std::string* read_mime_type = new std::string;
+ std::string *read_mime_type = new std::string;
base::PostTaskWithTraitsAndReplyWithResult(
- FROM_HERE, {base::MayBlock()},
- base::BindOnce(&net::GetMimeTypeFromFile, filename_,
- base::Unretained(read_mime_type)),
- base::BindOnce(&URLRequestResourceBundleJob::OnMimeTypeRead,
- weak_factory_.GetWeakPtr(), mime_type, charset, *data,
- base::Owned(read_mime_type), std::move(callback)));
+ FROM_HERE, { base::MayBlock() },
+ base::BindOnce(&net::GetMimeTypeFromFile, filename_, base::Unretained(read_mime_type)),
+ base::BindOnce(&URLRequestResourceBundleJob::OnMimeTypeRead, weak_factory_.GetWeakPtr(), mime_type,
+ charset, *data, base::Owned(read_mime_type), std::move(callback)));
return net::ERR_IO_PENDING;
}
- void GetResponseInfo(net::HttpResponseInfo* info) override
- {
- *info = response_info_;
- }
+ void GetResponseInfo(net::HttpResponseInfo *info) override { *info = response_info_; }
private:
~URLRequestResourceBundleJob() override {}
- void OnMimeTypeRead(std::string *out_mime_type,
- std::string *charset,
- scoped_refptr<base::RefCountedMemory> data,
- std::string *read_mime_type,
- net::CompletionOnceCallback callback,
- bool read_result)
+ void OnMimeTypeRead(std::string *out_mime_type, std::string *charset, scoped_refptr<base::RefCountedMemory> data,
+ std::string *read_mime_type, net::CompletionOnceCallback callback, bool read_result)
{
response_info_.headers->AddHeader(
- base::StringPrintf("%s: %s", net::HttpRequestHeaders::kContentType,
- read_mime_type->c_str()));
+ base::StringPrintf("%s: %s", net::HttpRequestHeaders::kContentType, read_mime_type->c_str()));
*out_mime_type = *read_mime_type;
DetermineCharset(*read_mime_type, data.get(), charset);
int result = read_result ? net::OK : net::ERR_INVALID_URL;
@@ -444,8 +429,7 @@ bool ExtensionsBrowserClientQt::IsBackgroundUpdateAllowed()
return true;
}
-bool ExtensionsBrowserClientQt::IsMinBrowserVersionSupported(
- const std::string &min_version)
+bool ExtensionsBrowserClientQt::IsMinBrowserVersionSupported(const std::string &min_version)
{
return true;
}
@@ -482,7 +466,7 @@ KioskDelegate *ExtensionsBrowserClientQt::GetKioskDelegate()
return nullptr;
}
-bool ExtensionsBrowserClientQt::IsScreensaverInDemoMode(const std::string& app_id)
+bool ExtensionsBrowserClientQt::IsScreensaverInDemoMode(const std::string &app_id)
{
return false;
}
diff --git a/src/core/extensions/extensions_browser_client_qt.h b/src/core/extensions/extensions_browser_client_qt.h
index 056e65c9e..41cb2ce20 100644
--- a/src/core/extensions/extensions_browser_client_qt.h
+++ b/src/core/extensions/extensions_browser_client_qt.h
@@ -90,8 +90,7 @@ public:
void GetEarlyExtensionPrefsObservers(content::BrowserContext *context,
std::vector<EarlyExtensionPrefsObserver *> *observers) const override;
ProcessManagerDelegate *GetProcessManagerDelegate() const override;
- std::unique_ptr<ExtensionHostDelegate>
- CreateExtensionHostDelegate() override;
+ std::unique_ptr<ExtensionHostDelegate> CreateExtensionHostDelegate() override;
bool DidVersionUpdate(content::BrowserContext *context) override;
void PermitExternalProtocolHandler() override;
bool IsRunningInForcedAppMode() override;
@@ -110,8 +109,7 @@ public:
ExtensionCache *GetExtensionCache() override;
bool IsBackgroundUpdateAllowed() override;
bool IsMinBrowserVersionSupported(const std::string &min_version) override;
- ExtensionWebContentsObserver *GetExtensionWebContentsObserver(
- content::WebContents *web_contents) override;
+ ExtensionWebContentsObserver *GetExtensionWebContentsObserver(content::WebContents *web_contents) override;
KioskDelegate *GetKioskDelegate() override;
// Whether the browser context is associated with Chrome OS lock screen.
@@ -138,7 +136,7 @@ public:
// Returns the locale used by the application.
std::string GetApplicationLocale() override;
- bool IsScreensaverInDemoMode(const std::string& app_id) override;
+ bool IsScreensaverInDemoMode(const std::string &app_id) override;
// Sets the API client.
void SetAPIClientForTest(ExtensionsAPIClient *api_client);
diff --git a/src/core/extensions/mime_handler_view_guest_delegate_qt.cpp b/src/core/extensions/mime_handler_view_guest_delegate_qt.cpp
index 438b8a83e..022bc7db6 100644
--- a/src/core/extensions/mime_handler_view_guest_delegate_qt.cpp
+++ b/src/core/extensions/mime_handler_view_guest_delegate_qt.cpp
@@ -52,7 +52,7 @@
namespace extensions {
-MimeHandlerViewGuestDelegateQt::MimeHandlerViewGuestDelegateQt(MimeHandlerViewGuest *guest)
+MimeHandlerViewGuestDelegateQt::MimeHandlerViewGuestDelegateQt(MimeHandlerViewGuest *)
: MimeHandlerViewGuestDelegate()
{
}
diff --git a/src/core/extensions/mime_handler_view_guest_delegate_qt.h b/src/core/extensions/mime_handler_view_guest_delegate_qt.h
index b679c7a38..6cd80689c 100644
--- a/src/core/extensions/mime_handler_view_guest_delegate_qt.h
+++ b/src/core/extensions/mime_handler_view_guest_delegate_qt.h
@@ -66,8 +66,6 @@ public:
const content::ContextMenuParams &params) override;
private:
- MimeHandlerViewGuest *guest_; // Owns us.
-
DISALLOW_COPY_AND_ASSIGN(MimeHandlerViewGuestDelegateQt);
};
diff --git a/src/core/extensions/pdf_web_contents_helper_client_qt.h b/src/core/extensions/pdf_web_contents_helper_client_qt.h
index a22feb138..9a37375b3 100644
--- a/src/core/extensions/pdf_web_contents_helper_client_qt.h
+++ b/src/core/extensions/pdf_web_contents_helper_client_qt.h
@@ -10,20 +10,21 @@
namespace extensions {
-class PDFWebContentsHelperClientQt : public pdf::PDFWebContentsHelperClient {
+class PDFWebContentsHelperClientQt : public pdf::PDFWebContentsHelperClient
+{
public:
PDFWebContentsHelperClientQt();
~PDFWebContentsHelperClientQt() override;
private:
// pdf::PDFWebContentsHelperClient:
- void UpdateContentRestrictions(content::WebContents* contents, int content_restrictions) override;
- void OnPDFHasUnsupportedFeature(content::WebContents* contents) override;
- void OnSaveURL(content::WebContents* contents) override;
+ void UpdateContentRestrictions(content::WebContents *contents, int content_restrictions) override;
+ void OnPDFHasUnsupportedFeature(content::WebContents *contents) override;
+ void OnSaveURL(content::WebContents *contents) override;
DISALLOW_COPY_AND_ASSIGN(PDFWebContentsHelperClientQt);
};
-} // namespace extensions
+} // namespace extensions
-#endif // PDF_WEB_CONTENTS_HELPER_CLIENT_QT_H_
+#endif // PDF_WEB_CONTENTS_HELPER_CLIENT_QT_H_
diff --git a/src/core/find_text_helper.cpp b/src/core/find_text_helper.cpp
index effda529f..065fed38f 100644
--- a/src/core/find_text_helper.cpp
+++ b/src/core/find_text_helper.cpp
@@ -135,7 +135,7 @@ bool FindTextHelper::isFindTextInProgress() const
}
void FindTextHelper::handleFindReply(content::WebContents *source, int requestId, int numberOfMatches,
- const gfx::Rect &selectionRect, int activeMatchOrdinal, bool finalUpdate)
+ const gfx::Rect &selectionRect, int activeMatch, bool finalUpdate)
{
Q_UNUSED(selectionRect);
@@ -146,7 +146,7 @@ void FindTextHelper::handleFindReply(content::WebContents *source, int requestId
Q_ASSERT(m_currentFindRequestId == requestId);
m_lastCompletedFindRequestId = requestId;
- m_viewClient->findTextFinished(QWebEngineFindTextResult(numberOfMatches, activeMatchOrdinal));
+ m_viewClient->findTextFinished(QWebEngineFindTextResult(numberOfMatches, activeMatch));
invokeResultCallback(requestId, numberOfMatches);
}
diff --git a/src/core/find_text_helper.h b/src/core/find_text_helper.h
index e8f186272..9843dc8b5 100644
--- a/src/core/find_text_helper.h
+++ b/src/core/find_text_helper.h
@@ -78,7 +78,7 @@ public:
void startFinding(const QString &findText, bool caseSensitively, bool findBackward);
void stopFinding();
bool isFindTextInProgress() const;
- void handleFindReply(content::WebContents *source, int requestId, int numberOfMatches, const gfx::Rect &selectionRect, int activeMatchOrdinal, bool finalUpdate);
+ void handleFindReply(content::WebContents *source, int requestId, int numberOfMatches, const gfx::Rect &selectionRect, int activeMatch, bool finalUpdate);
void handleLoadCommitted();
private:
diff --git a/src/core/media_capture_devices_dispatcher.cpp b/src/core/media_capture_devices_dispatcher.cpp
index 04c68de4c..c94ff7eee 100644
--- a/src/core/media_capture_devices_dispatcher.cpp
+++ b/src/core/media_capture_devices_dispatcher.cpp
@@ -90,22 +90,25 @@ const blink::MediaStreamDevice *findDeviceWithId(const blink::MediaStreamDevices
return 0;
}
-// Based on chrome/browser/media/desktop_capture_access_handler.cc:
-void getDevicesForDesktopCapture(blink::MediaStreamDevices *devices, content::DesktopMediaID mediaId, bool captureAudio)
+// Based on chrome/browser/media/webrtc/desktop_capture_devices_util.cc:
+void getDevicesForDesktopCapture(blink::MediaStreamDevices *devices,
+ content::DesktopMediaID mediaId,
+ bool captureAudio,
+ MediaStreamType videoType,
+ MediaStreamType audioType)
{
DCHECK_CURRENTLY_ON(BrowserThread::UI);
// Add selected desktop source to the list.
- devices->push_back(blink::MediaStreamDevice(MediaStreamType::GUM_DESKTOP_VIDEO_CAPTURE, mediaId.ToString(), "Screen"));
+ devices->push_back(blink::MediaStreamDevice(videoType, mediaId.ToString(), mediaId.ToString()));
if (captureAudio) {
if (mediaId.type == content::DesktopMediaID::TYPE_WEB_CONTENTS) {
devices->push_back(
- blink::MediaStreamDevice(MediaStreamType::GUM_DESKTOP_AUDIO_CAPTURE,
- mediaId.ToString(), "Tab audio"));
+ blink::MediaStreamDevice(audioType, mediaId.ToString(), "Tab audio"));
} else {
// Use the special loopback device ID for system audio capture.
devices->push_back(blink::MediaStreamDevice(
- MediaStreamType::GUM_DESKTOP_AUDIO_CAPTURE,
+ audioType,
media::AudioDeviceDescription::kLoopbackInputDeviceId,
"System Audio"));
}
@@ -154,19 +157,27 @@ content::DesktopMediaID getDefaultScreenId()
WebContentsAdapterClient::MediaRequestFlags mediaRequestFlagsForRequest(const content::MediaStreamRequest &request)
{
- WebContentsAdapterClient::MediaRequestFlags requestFlags = WebContentsAdapterClient::MediaNone;
+ if (request.audio_type == MediaStreamType::DEVICE_AUDIO_CAPTURE &&
+ request.video_type == MediaStreamType::DEVICE_VIDEO_CAPTURE)
+ return {WebContentsAdapterClient::MediaAudioCapture, WebContentsAdapterClient::MediaVideoCapture};
- if (request.audio_type == MediaStreamType::DEVICE_AUDIO_CAPTURE)
- requestFlags |= WebContentsAdapterClient::MediaAudioCapture;
- else if (request.audio_type == MediaStreamType::GUM_DESKTOP_AUDIO_CAPTURE)
- requestFlags |= WebContentsAdapterClient::MediaDesktopAudioCapture;
+ if (request.audio_type == MediaStreamType::DEVICE_AUDIO_CAPTURE &&
+ request.video_type == MediaStreamType::NO_SERVICE)
+ return {WebContentsAdapterClient::MediaAudioCapture};
- if (request.video_type == MediaStreamType::DEVICE_VIDEO_CAPTURE)
- requestFlags |= WebContentsAdapterClient::MediaVideoCapture;
- else if (request.video_type == MediaStreamType::GUM_DESKTOP_VIDEO_CAPTURE)
- requestFlags |= WebContentsAdapterClient::MediaDesktopVideoCapture;
+ if (request.audio_type == MediaStreamType::NO_SERVICE &&
+ request.video_type == MediaStreamType::DEVICE_VIDEO_CAPTURE)
+ return {WebContentsAdapterClient::MediaVideoCapture};
- return requestFlags;
+ if (request.audio_type == MediaStreamType::GUM_DESKTOP_AUDIO_CAPTURE &&
+ request.video_type == MediaStreamType::GUM_DESKTOP_VIDEO_CAPTURE)
+ return {WebContentsAdapterClient::MediaDesktopAudioCapture, WebContentsAdapterClient::MediaDesktopVideoCapture};
+
+ if (request.video_type == MediaStreamType::GUM_DESKTOP_VIDEO_CAPTURE ||
+ request.video_type == MediaStreamType::DISPLAY_VIDEO_CAPTURE)
+ return {WebContentsAdapterClient::MediaDesktopVideoCapture};
+
+ return {};
}
// Based on MediaStreamCaptureIndicator::UIDelegate
@@ -235,14 +246,13 @@ void MediaCaptureDevicesDispatcher::handleMediaAccessPermissionResponse(content:
if (!securityOriginsMatch)
qWarning("Security origin mismatch for media access permission: %s requested and %s provided\n", qPrintable(requestSecurityOrigin.toString()), qPrintable(securityOrigin.toString()));
- bool microphoneRequested =
- (request.audio_type != MediaStreamType::NO_SERVICE && (authorizationFlags & WebContentsAdapterClient::MediaAudioCapture));
- bool webcamRequested =
- (request.video_type != MediaStreamType::NO_SERVICE && (authorizationFlags & WebContentsAdapterClient::MediaVideoCapture));
- bool desktopAudioRequested =
- (request.audio_type != MediaStreamType::NO_SERVICE && (authorizationFlags & WebContentsAdapterClient::MediaDesktopAudioCapture));
- bool desktopVideoRequested =
- (request.video_type != MediaStreamType::NO_SERVICE && (authorizationFlags & WebContentsAdapterClient::MediaDesktopVideoCapture));
+ WebContentsAdapterClient::MediaRequestFlags requestFlags = mediaRequestFlagsForRequest(request);
+ WebContentsAdapterClient::MediaRequestFlags finalFlags = requestFlags & authorizationFlags;
+
+ bool microphoneRequested = finalFlags.testFlag(WebContentsAdapterClient::MediaAudioCapture);
+ bool webcamRequested = finalFlags.testFlag(WebContentsAdapterClient::MediaVideoCapture);
+ bool desktopAudioRequested = finalFlags.testFlag(WebContentsAdapterClient::MediaDesktopAudioCapture);
+ bool desktopVideoRequested = finalFlags.testFlag(WebContentsAdapterClient::MediaDesktopVideoCapture);
if (securityOriginsMatch) {
if (microphoneRequested || webcamRequested) {
@@ -258,7 +268,8 @@ void MediaCaptureDevicesDispatcher::handleMediaAccessPermissionResponse(content:
break;
}
} else if (desktopVideoRequested) {
- getDevicesForDesktopCapture(&devices, getDefaultScreenId(), desktopAudioRequested);
+ getDevicesForDesktopCapture(&devices, getDefaultScreenId(), desktopAudioRequested,
+ request.video_type, request.audio_type);
}
}
@@ -315,13 +326,13 @@ void MediaCaptureDevicesDispatcher::processMediaAccessRequest(WebContentsAdapter
{
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- // Let's not support tab capture for now.
- if (request.video_type == MediaStreamType::GUM_TAB_VIDEO_CAPTURE || request.audio_type == MediaStreamType::GUM_TAB_AUDIO_CAPTURE) {
+ WebContentsAdapterClient::MediaRequestFlags flags = mediaRequestFlagsForRequest(request);
+ if (!flags) {
std::move(callback).Run(blink::MediaStreamDevices(), MediaStreamRequestResult::NOT_SUPPORTED, std::unique_ptr<content::MediaStreamUI>());
return;
}
- if (request.video_type == MediaStreamType::GUM_DESKTOP_VIDEO_CAPTURE || request.audio_type == MediaStreamType::GUM_DESKTOP_AUDIO_CAPTURE) {
+ if (flags.testFlag(WebContentsAdapterClient::MediaDesktopVideoCapture)) {
const bool screenCaptureEnabled =
adapterClient->webEngineSettings()->testAttribute(WebEngineSettings::ScreenCaptureEnabled);
const bool originIsSecure = content::IsOriginSecure(request.security_origin);
@@ -339,18 +350,13 @@ void MediaCaptureDevicesDispatcher::processMediaAccessRequest(WebContentsAdapter
enqueueMediaAccessRequest(webContents, request, std::move(callback));
// We might not require this approval for pepper requests.
- adapterClient->runMediaAccessPermissionRequest(toQt(request.security_origin), mediaRequestFlagsForRequest(request));
+ adapterClient->runMediaAccessPermissionRequest(toQt(request.security_origin), flags);
}
void MediaCaptureDevicesDispatcher::processDesktopCaptureAccessRequest(content::WebContents *webContents, const content::MediaStreamRequest &request, content::MediaResponseCallback callback)
{
blink::MediaStreamDevices devices;
- if (request.video_type != MediaStreamType::GUM_DESKTOP_VIDEO_CAPTURE || request.requested_video_device_id.empty()) {
- std::move(callback).Run(devices, MediaStreamRequestResult::INVALID_STATE, std::unique_ptr<content::MediaStreamUI>());
- return;
- }
-
content::WebContents *const web_contents_for_stream = content::WebContents::FromRenderFrameHost(
content::RenderFrameHost::FromID(request.render_process_id, request.render_frame_id));
content::RenderFrameHost *const main_frame = web_contents_for_stream ? web_contents_for_stream->GetMainFrame() : NULL;
@@ -375,7 +381,7 @@ void MediaCaptureDevicesDispatcher::processDesktopCaptureAccessRequest(content::
// Audio is only supported for screen capture streams.
bool capture_audio = (mediaId.type == content::DesktopMediaID::TYPE_SCREEN && request.audio_type == MediaStreamType::GUM_DESKTOP_AUDIO_CAPTURE);
- getDevicesForDesktopCapture(&devices, mediaId, capture_audio);
+ getDevicesForDesktopCapture(&devices, mediaId, capture_audio, request.video_type, request.audio_type);
if (devices.empty())
std::move(callback).Run(devices, MediaStreamRequestResult::INVALID_STATE,
diff --git a/src/core/net/client_cert_override.h b/src/core/net/client_cert_override.h
index 4f2734485..7fd28eaeb 100644
--- a/src/core/net/client_cert_override.h
+++ b/src/core/net/client_cert_override.h
@@ -71,5 +71,3 @@ private:
} // QtWebEngineCore
#endif
-
-
diff --git a/src/core/net/client_cert_store_data.cpp b/src/core/net/client_cert_store_data.cpp
index 5a62cb6fe..314e64145 100644
--- a/src/core/net/client_cert_store_data.cpp
+++ b/src/core/net/client_cert_store_data.cpp
@@ -59,7 +59,8 @@
namespace {
-class SSLPlatformKeyOverride : public net::ThreadedSSLPrivateKey::Delegate {
+class SSLPlatformKeyOverride : public net::ThreadedSSLPrivateKey::Delegate
+{
public:
SSLPlatformKeyOverride(const QByteArray &sslKeyInBytes)
{
@@ -126,7 +127,7 @@ scoped_refptr<net::SSLPrivateKey> wrapOpenSSLPrivateKey(const QByteArray &sslKey
net::GetSSLPlatformKeyTaskRunner());
}
-} // namespace
+} // namespace
namespace QtWebEngineCore {
diff --git a/src/core/net/client_cert_store_data.h b/src/core/net/client_cert_store_data.h
index 7f83f4b60..e47a909e4 100644
--- a/src/core/net/client_cert_store_data.h
+++ b/src/core/net/client_cert_store_data.h
@@ -57,8 +57,10 @@ class X509Certificate;
namespace QtWebEngineCore {
-struct ClientCertificateStoreData {
- struct Entry {
+struct ClientCertificateStoreData
+{
+ struct Entry
+ {
QSslKey key;
QSslCertificate certificate;
scoped_refptr<net::X509Certificate> certPtr;
@@ -69,7 +71,7 @@ struct ClientCertificateStoreData {
void remove(const QSslCertificate &certificate);
void clear();
- QVector<Entry*> extraCerts;
+ QVector<Entry *> extraCerts;
};
} // namespace QtWebEngineCore
diff --git a/src/core/net/cookie_monster_delegate_qt.cpp b/src/core/net/cookie_monster_delegate_qt.cpp
index 5f7b75f57..dad9a8db5 100644
--- a/src/core/net/cookie_monster_delegate_qt.cpp
+++ b/src/core/net/cookie_monster_delegate_qt.cpp
@@ -52,7 +52,8 @@
namespace QtWebEngineCore {
-static GURL sourceUrlForCookie(const QNetworkCookie &cookie) {
+static GURL sourceUrlForCookie(const QNetworkCookie &cookie)
+{
QString urlFragment = QStringLiteral("%1%2").arg(cookie.domain()).arg(cookie.path());
return net::cookie_util::CookieOriginToURL(urlFragment.toStdString(), /* is_https */ cookie.isSecure());
}
@@ -70,11 +71,10 @@ CookieMonsterDelegateQt::~CookieMonsterDelegateQt()
void CookieMonsterDelegateQt::AddStore(net::CookieStore *store)
{
- std::unique_ptr<net::CookieChangeSubscription> sub =
- store->GetChangeDispatcher().AddCallbackForAllChanges(
+ std::unique_ptr<net::CookieChangeSubscription> sub = store->GetChangeDispatcher().AddCallbackForAllChanges(
base::Bind(&CookieMonsterDelegateQt::OnCookieChanged,
- // this object's destruction will deregister the subscription.
- base::Unretained(this)));
+ // this object's destruction will deregister the subscription.
+ base::Unretained(this)));
m_subscriptions.push_back(std::move(sub));
}
@@ -87,7 +87,7 @@ bool CookieMonsterDelegateQt::hasCookieMonster()
void CookieMonsterDelegateQt::getAllCookies(quint64 callbackId)
{
net::CookieMonster::GetCookieListCallback callback =
- base::BindOnce(&CookieMonsterDelegateQt::GetAllCookiesCallbackOnIOThread, this, callbackId);
+ base::BindOnce(&CookieMonsterDelegateQt::GetAllCookiesCallbackOnIOThread, this, callbackId);
base::PostTaskWithTraits(FROM_HERE, {content::BrowserThread::IO},
base::BindOnce(&CookieMonsterDelegateQt::GetAllCookiesOnIOThread, this, std::move(callback)));
@@ -115,9 +115,8 @@ void CookieMonsterDelegateQt::setCookie(quint64 callbackId, const QNetworkCookie
gurl, cookie.toRawForm().toStdString(), std::move(callback)));
}
-void CookieMonsterDelegateQt::SetCookieOnIOThread(
- const GURL& url, const std::string& cookie_line,
- net::CookieMonster::SetCookiesCallback callback)
+void CookieMonsterDelegateQt::SetCookieOnIOThread(const GURL &url, const std::string &cookie_line,
+ net::CookieMonster::SetCookiesCallback callback)
{
net::CookieOptions options;
options.set_include_httponly();
@@ -138,7 +137,7 @@ void CookieMonsterDelegateQt::deleteCookie(const QNetworkCookie &cookie, const Q
gurl, cookie.name().toStdString()));
}
-void CookieMonsterDelegateQt::DeleteCookieOnIOThread(const GURL& url, const std::string& cookie_name)
+void CookieMonsterDelegateQt::DeleteCookieOnIOThread(const GURL &url, const std::string &cookie_name)
{
if (m_cookieMonster) {
net::CookieMonster::GetCookieListCallback callback =
@@ -147,7 +146,8 @@ void CookieMonsterDelegateQt::DeleteCookieOnIOThread(const GURL& url, const std:
}
}
-void CookieMonsterDelegateQt::GetCookiesToDeleteCallback(const std::string& cookie_name, const net::CookieList &cookies, const net::CookieStatusList &statusList)
+void CookieMonsterDelegateQt::GetCookiesToDeleteCallback(const std::string &cookie_name, const net::CookieList &cookies,
+ const net::CookieStatusList &statusList)
{
Q_UNUSED(statusList);
if (!m_cookieMonster)
@@ -197,7 +197,7 @@ void CookieMonsterDelegateQt::DeleteAllOnIOThread(net::CookieMonster::DeleteCall
m_cookieMonster->DeleteAllAsync(std::move(callback));
}
-void CookieMonsterDelegateQt::setCookieMonster(net::CookieMonster* monster)
+void CookieMonsterDelegateQt::setCookieMonster(net::CookieMonster *monster)
{
if (monster == m_cookieMonster)
return;
@@ -246,7 +246,7 @@ bool CookieMonsterDelegateQt::canGetCookies(const QUrl &firstPartyUrl, const QUr
return m_client->d_func()->canAccessCookies(firstPartyUrl, url);
}
-void CookieMonsterDelegateQt::OnCookieChanged(const net::CanonicalCookie& cookie, net::CookieChangeCause cause)
+void CookieMonsterDelegateQt::OnCookieChanged(const net::CanonicalCookie &cookie, net::CookieChangeCause cause)
{
if (!m_client)
return;
diff --git a/src/core/net/cookie_monster_delegate_qt.h b/src/core/net/cookie_monster_delegate_qt.h
index 2ac04acb4..23b803790 100644
--- a/src/core/net/cookie_monster_delegate_qt.h
+++ b/src/core/net/cookie_monster_delegate_qt.h
@@ -72,13 +72,14 @@ namespace QtWebEngineCore {
// cookies for the file:// scheme, which is disabled by default in Chromium.
// Since qrc:// is similar to file:// and there are some unknowns about how
// to correctly handle file:// cookies, qrc:// should only be used for testing.
-static const char* const kCookieableSchemes[] =
- { "http", "https", "qrc", "ws", "wss" };
+static const char *const kCookieableSchemes[] = { "http", "https", "qrc", "ws", "wss" };
-class Q_WEBENGINECORE_PRIVATE_EXPORT CookieMonsterDelegateQt : public base::RefCountedThreadSafe<CookieMonsterDelegateQt> {
+class Q_WEBENGINECORE_PRIVATE_EXPORT CookieMonsterDelegateQt : public base::RefCountedThreadSafe<CookieMonsterDelegateQt>
+{
QPointer<QWebEngineCookieStore> m_client;
net::CookieMonster *m_cookieMonster;
std::vector<std::unique_ptr<net::CookieChangeSubscription>> m_subscriptions;
+
public:
CookieMonsterDelegateQt();
~CookieMonsterDelegateQt();
@@ -91,7 +92,7 @@ public:
void deleteSessionCookies(quint64 callbackId);
void deleteAllCookies(quint64 callbackId);
- void setCookieMonster(net::CookieMonster* monster);
+ void setCookieMonster(net::CookieMonster *monster);
void setClient(QWebEngineCookieStore *client);
bool canSetCookie(const QUrl &firstPartyUrl, const QByteArray &cookieLine, const QUrl &url) const;
@@ -102,13 +103,16 @@ public:
private:
void GetAllCookiesOnIOThread(net::CookieMonster::GetCookieListCallback callback);
- void SetCookieOnIOThread(const GURL& url, const std::string& cookie_line, net::CookieMonster::SetCookiesCallback callback);
- void DeleteCookieOnIOThread(const GURL& url, const std::string& cookie_name);
+ void SetCookieOnIOThread(const GURL &url, const std::string &cookie_line,
+ net::CookieMonster::SetCookiesCallback callback);
+ void DeleteCookieOnIOThread(const GURL &url, const std::string &cookie_name);
void DeleteSessionCookiesOnIOThread(net::CookieMonster::DeleteCallback callback);
void DeleteAllOnIOThread(net::CookieMonster::DeleteCallback callback);
- void GetCookiesToDeleteCallback(const std::string& cookie_name, const net::CookieList &cookies, const net::CookieStatusList &statusList);
- void GetAllCookiesCallbackOnIOThread(qint64 callbackId, const net::CookieList &cookies, const net::CookieStatusList &statusList);
+ void GetCookiesToDeleteCallback(const std::string &cookie_name, const net::CookieList &cookies,
+ const net::CookieStatusList &statusList);
+ void GetAllCookiesCallbackOnIOThread(qint64 callbackId, const net::CookieList &cookies,
+ const net::CookieStatusList &statusList);
void SetCookieCallbackOnIOThread(qint64 callbackId, net::CanonicalCookie::CookieInclusionStatus status);
void DeleteCookiesCallbackOnIOThread(qint64 callbackId, uint numCookies);
diff --git a/src/core/net/custom_protocol_handler.h b/src/core/net/custom_protocol_handler.h
index 7b189763c..625afc1d5 100644
--- a/src/core/net/custom_protocol_handler.h
+++ b/src/core/net/custom_protocol_handler.h
@@ -71,7 +71,8 @@ class ProfileAdapter;
// Implements a ProtocolHandler for custom URL schemes.
// If |network_delegate_| is NULL then all file requests will fail with ERR_ACCESS_DENIED.
-class Q_WEBENGINECORE_PRIVATE_EXPORT CustomProtocolHandler : public net::URLRequestJobFactory::ProtocolHandler {
+class Q_WEBENGINECORE_PRIVATE_EXPORT CustomProtocolHandler : public net::URLRequestJobFactory::ProtocolHandler
+{
public:
CustomProtocolHandler(QPointer<ProfileAdapter> profileAdapter);
diff --git a/src/core/net/network_delegate_qt.cpp b/src/core/net/network_delegate_qt.cpp
index 68bf34d31..7d3801ffe 100644
--- a/src/core/net/network_delegate_qt.cpp
+++ b/src/core/net/network_delegate_qt.cpp
@@ -139,11 +139,11 @@ int NetworkDelegateQt::OnBeforeURLRequest(net::URLRequest *request, net::Complet
// Deprecated =begin
// quick peek if deprecated
- QWebEngineUrlRequestInterceptor* profileInterceptor = m_profileIOData->requestInterceptor();
- if (profileInterceptor && profileInterceptor->property("deprecated").toBool()) {
- profileInterceptor = nullptr;
- if (QWebEngineUrlRequestInterceptor* interceptor = m_profileIOData->acquireInterceptor()) {
- interceptor->interceptRequest(requestInfo);
+
+ if (m_profileIOData->isInterceptorDeprecated()) {
+ QWebEngineUrlRequestInterceptor *profileInterceptor = m_profileIOData->acquireInterceptor();
+ if (profileInterceptor && m_profileIOData->isInterceptorDeprecated()) {
+ profileInterceptor->interceptRequest(requestInfo);
m_profileIOData->releaseInterceptor();
if (requestInfo.changed()) {
int result = infoPrivate->shouldBlockRequest ? net::ERR_BLOCKED_BY_CLIENT : net::OK;
@@ -177,7 +177,9 @@ int NetworkDelegateQt::OnBeforeURLRequest(net::URLRequest *request, net::Complet
if (!resourceInfo)
return net::OK;
- if (!m_profileIOData->hasPageInterceptors() && !profileInterceptor && !content::IsResourceTypeFrame(resourceType))
+ // try to bail out
+ if (!m_profileIOData->hasPageInterceptors() && (!m_profileIOData->requestInterceptor() || m_profileIOData->isInterceptorDeprecated()) &&
+ !content::IsResourceTypeFrame(resourceType))
return net::OK;
auto webContentsGetter = resourceInfo->GetWebContentsGetterForRequest();
@@ -188,32 +190,26 @@ int NetworkDelegateQt::OnBeforeURLRequest(net::URLRequest *request, net::Complet
std::move(requestInfo),
webContentsGetter,
std::move(callback),
- profileInterceptor ? m_profileIOData->profileAdapter() : nullptr
+ m_profileIOData->profileAdapter()
);
// We'll run the callback after we notified the UI thread.
return net::ERR_IO_PENDING;
}
-void NetworkDelegateQt::OnURLRequestDestroyed(net::URLRequest*)
-{
-}
+void NetworkDelegateQt::OnURLRequestDestroyed(net::URLRequest *) {}
-void NetworkDelegateQt::OnCompleted(net::URLRequest */*request*/, bool /*started*/, int /*net_error*/)
-{
-}
+void NetworkDelegateQt::OnCompleted(net::URLRequest * /*request*/, bool /*started*/, int /*net_error*/) {}
-bool NetworkDelegateQt::OnCanSetCookie(const net::URLRequest& request,
- const net::CanonicalCookie & /*cookie*/,
- net::CookieOptions*,
- bool allowedFromCaller)
+bool NetworkDelegateQt::OnCanSetCookie(const net::URLRequest &request, const net::CanonicalCookie & /*cookie*/,
+ net::CookieOptions *, bool allowedFromCaller)
{
if (!allowedFromCaller)
return false;
return canSetCookies(request.site_for_cookies(), request.url(), std::string());
}
-bool NetworkDelegateQt::OnCanGetCookies(const net::URLRequest& request, const net::CookieList&, bool allowedFromCaller)
+bool NetworkDelegateQt::OnCanGetCookies(const net::URLRequest &request, const net::CookieList &, bool allowedFromCaller)
{
if (!allowedFromCaller)
return false;
@@ -223,8 +219,8 @@ bool NetworkDelegateQt::OnCanGetCookies(const net::URLRequest& request, const ne
bool NetworkDelegateQt::OnForcePrivacyMode(const GURL &url, const GURL &site_for_cookies) const
{
return false;
-// FIXME: This is what the NetworkContext implementation does (changes tst_QWebEngineCookieStore tests since 72)
-// return !canGetCookies(site_for_cookies, url);
+ // FIXME: This is what the NetworkContext implementation does (changes tst_QWebEngineCookieStore tests since 72)
+ // return !canGetCookies(site_for_cookies, url);
}
bool NetworkDelegateQt::canSetCookies(const GURL &first_party, const GURL &url, const std::string &cookie_line) const
@@ -244,71 +240,64 @@ int NetworkDelegateQt::OnBeforeStartTransaction(net::URLRequest *, net::Completi
return net::OK;
}
-void NetworkDelegateQt::OnBeforeSendHeaders(net::URLRequest* request, const net::ProxyInfo& proxy_info,
- const net::ProxyRetryInfoMap& proxy_retry_info, net::HttpRequestHeaders* headers)
-{
-}
+void NetworkDelegateQt::OnBeforeSendHeaders(net::URLRequest *request, const net::ProxyInfo &proxy_info,
+ const net::ProxyRetryInfoMap &proxy_retry_info,
+ net::HttpRequestHeaders *headers)
+{}
-void NetworkDelegateQt::OnStartTransaction(net::URLRequest *request, const net::HttpRequestHeaders &headers)
-{
-}
+void NetworkDelegateQt::OnStartTransaction(net::URLRequest *request, const net::HttpRequestHeaders &headers) {}
-int NetworkDelegateQt::OnHeadersReceived(net::URLRequest*, net::CompletionOnceCallback, const net::HttpResponseHeaders*, scoped_refptr<net::HttpResponseHeaders>*, GURL*)
+int NetworkDelegateQt::OnHeadersReceived(net::URLRequest *, net::CompletionOnceCallback, const net::HttpResponseHeaders *,
+ scoped_refptr<net::HttpResponseHeaders> *, GURL *)
{
return net::OK;
}
-void NetworkDelegateQt::OnBeforeRedirect(net::URLRequest*, const GURL&)
-{
-}
+void NetworkDelegateQt::OnBeforeRedirect(net::URLRequest *, const GURL &) {}
-void NetworkDelegateQt::OnResponseStarted(net::URLRequest*, int)
-{
-}
+void NetworkDelegateQt::OnResponseStarted(net::URLRequest *, int) {}
-void NetworkDelegateQt::OnNetworkBytesReceived(net::URLRequest*, int64_t)
-{
-}
+void NetworkDelegateQt::OnNetworkBytesReceived(net::URLRequest *, int64_t) {}
-void NetworkDelegateQt::OnNetworkBytesSent(net::URLRequest*, int64_t)
-{
-}
+void NetworkDelegateQt::OnNetworkBytesSent(net::URLRequest *, int64_t) {}
-void NetworkDelegateQt::OnPACScriptError(int, const base::string16&)
-{
-}
+void NetworkDelegateQt::OnPACScriptError(int, const base::string16 &) {}
-net::NetworkDelegate::AuthRequiredResponse NetworkDelegateQt::OnAuthRequired(net::URLRequest*, const net::AuthChallengeInfo&, AuthCallback, net::AuthCredentials*)
+net::NetworkDelegate::AuthRequiredResponse NetworkDelegateQt::OnAuthRequired(net::URLRequest *,
+ const net::AuthChallengeInfo &,
+ AuthCallback, net::AuthCredentials *)
{
return AUTH_REQUIRED_RESPONSE_NO_ACTION;
}
-bool NetworkDelegateQt::OnCanAccessFile(const net::URLRequest&, const base::FilePath&, const base::FilePath&) const
+bool NetworkDelegateQt::OnCanAccessFile(const net::URLRequest &, const base::FilePath &, const base::FilePath &) const
{
return true;
}
-bool NetworkDelegateQt::OnCancelURLRequestWithPolicyViolatingReferrerHeader(const net::URLRequest&, const GURL&, const GURL&) const
+bool NetworkDelegateQt::OnCancelURLRequestWithPolicyViolatingReferrerHeader(const net::URLRequest &, const GURL &,
+ const GURL &) const
{
return false;
}
-bool NetworkDelegateQt::OnCanQueueReportingReport(const url::Origin& origin) const
+bool NetworkDelegateQt::OnCanQueueReportingReport(const url::Origin &origin) const
{
return false;
}
-void NetworkDelegateQt::OnCanSendReportingReports(std::set<url::Origin> origins, base::OnceCallback<void(std::set<url::Origin>)> result_callback) const
+void NetworkDelegateQt::OnCanSendReportingReports(std::set<url::Origin> origins,
+ base::OnceCallback<void(std::set<url::Origin>)> result_callback) const
{
std::move(result_callback).Run(std::set<url::Origin>());
}
-bool NetworkDelegateQt::OnCanSetReportingClient(const url::Origin& origin, const GURL& endpoint) const
+bool NetworkDelegateQt::OnCanSetReportingClient(const url::Origin &origin, const GURL &endpoint) const
{
return false;
}
-bool NetworkDelegateQt::OnCanUseReportingClient(const url::Origin& origin, const GURL& endpoint) const
+bool NetworkDelegateQt::OnCanUseReportingClient(const url::Origin &origin, const GURL &endpoint) const
{
return false;
}
diff --git a/src/core/net/network_delegate_qt.h b/src/core/net/network_delegate_qt.h
index 53debadcd..f294c6c7c 100644
--- a/src/core/net/network_delegate_qt.h
+++ b/src/core/net/network_delegate_qt.h
@@ -54,36 +54,44 @@ namespace QtWebEngineCore {
class ProfileIODataQt;
-class NetworkDelegateQt : public net::NetworkDelegate {
+class NetworkDelegateQt : public net::NetworkDelegate
+{
ProfileIODataQt *m_profileIOData;
+
public:
NetworkDelegateQt(ProfileIODataQt *data);
// net::NetworkDelegate implementation
- int OnBeforeURLRequest(net::URLRequest* request, net::CompletionOnceCallback callback, GURL* new_url) override;
- void OnURLRequestDestroyed(net::URLRequest* request) override;
- bool OnCanSetCookie(const net::URLRequest& request, const net::CanonicalCookie& cookie, net::CookieOptions* options, bool) override;
- int OnBeforeStartTransaction(net::URLRequest *request, const net::CompletionOnceCallback callback, net::HttpRequestHeaders *headers) override;
- void OnBeforeSendHeaders(net::URLRequest* request, const net::ProxyInfo& proxy_info,
- const net::ProxyRetryInfoMap& proxy_retry_info, net::HttpRequestHeaders* headers) override;
+ int OnBeforeURLRequest(net::URLRequest *request, net::CompletionOnceCallback callback, GURL *new_url) override;
+ void OnURLRequestDestroyed(net::URLRequest *request) override;
+ bool OnCanSetCookie(const net::URLRequest &request, const net::CanonicalCookie &cookie, net::CookieOptions *options,
+ bool) override;
+ int OnBeforeStartTransaction(net::URLRequest *request, const net::CompletionOnceCallback callback,
+ net::HttpRequestHeaders *headers) override;
+ void OnBeforeSendHeaders(net::URLRequest *request, const net::ProxyInfo &proxy_info,
+ const net::ProxyRetryInfoMap &proxy_retry_info, net::HttpRequestHeaders *headers) override;
void OnStartTransaction(net::URLRequest *request, const net::HttpRequestHeaders &headers) override;
- int OnHeadersReceived(net::URLRequest*, net::CompletionOnceCallback, const net::HttpResponseHeaders*, scoped_refptr<net::HttpResponseHeaders>*, GURL*) override;
- void OnBeforeRedirect(net::URLRequest*, const GURL&) override;
- void OnResponseStarted(net::URLRequest*, int) override;
- void OnNetworkBytesReceived(net::URLRequest*, int64_t) override;
+ int OnHeadersReceived(net::URLRequest *, net::CompletionOnceCallback, const net::HttpResponseHeaders *,
+ scoped_refptr<net::HttpResponseHeaders> *, GURL *) override;
+ void OnBeforeRedirect(net::URLRequest *, const GURL &) override;
+ void OnResponseStarted(net::URLRequest *, int) override;
+ void OnNetworkBytesReceived(net::URLRequest *, int64_t) override;
void OnNetworkBytesSent(net::URLRequest *, int64_t) override;
void OnCompleted(net::URLRequest *request, bool started, int net_error) override;
- void OnPACScriptError(int, const base::string16&) override;
- net::NetworkDelegate::AuthRequiredResponse OnAuthRequired(net::URLRequest*, const net::AuthChallengeInfo&, AuthCallback, net::AuthCredentials*) override;
- bool OnCanGetCookies(const net::URLRequest&, const net::CookieList&, bool) override;
- bool OnCanAccessFile(const net::URLRequest&, const base::FilePath&, const base::FilePath&) const override;
- bool OnForcePrivacyMode(const GURL&, const GURL&) const override;
- bool OnCancelURLRequestWithPolicyViolatingReferrerHeader(const net::URLRequest&, const GURL&, const GURL&) const override;
+ void OnPACScriptError(int, const base::string16 &) override;
+ net::NetworkDelegate::AuthRequiredResponse OnAuthRequired(net::URLRequest *, const net::AuthChallengeInfo &,
+ AuthCallback, net::AuthCredentials *) override;
+ bool OnCanGetCookies(const net::URLRequest &, const net::CookieList &, bool) override;
+ bool OnCanAccessFile(const net::URLRequest &, const base::FilePath &, const base::FilePath &) const override;
+ bool OnForcePrivacyMode(const GURL &, const GURL &) const override;
+ bool OnCancelURLRequestWithPolicyViolatingReferrerHeader(const net::URLRequest &, const GURL &,
+ const GURL &) const override;
- bool OnCanQueueReportingReport(const url::Origin& origin) const override;
- void OnCanSendReportingReports(std::set<url::Origin> origins, base::OnceCallback<void(std::set<url::Origin>)> result_callback) const override;
- bool OnCanSetReportingClient(const url::Origin& origin, const GURL& endpoint) const override;
- bool OnCanUseReportingClient(const url::Origin& origin, const GURL& endpoint) const override;
+ bool OnCanQueueReportingReport(const url::Origin &origin) const override;
+ void OnCanSendReportingReports(std::set<url::Origin> origins,
+ base::OnceCallback<void(std::set<url::Origin>)> result_callback) const override;
+ bool OnCanSetReportingClient(const url::Origin &origin, const GURL &endpoint) const override;
+ bool OnCanUseReportingClient(const url::Origin &origin, const GURL &endpoint) const override;
bool canSetCookies(const GURL &first_party, const GURL &url, const std::string &cookie_line) const;
bool canGetCookies(const GURL &first_party, const GURL &url) const;
diff --git a/src/core/net/proxy_config_service_qt.cpp b/src/core/net/proxy_config_service_qt.cpp
index 00ff1c54d..8016c7e83 100644
--- a/src/core/net/proxy_config_service_qt.cpp
+++ b/src/core/net/proxy_config_service_qt.cpp
@@ -70,14 +70,14 @@ net::ProxyServer ProxyConfigServiceQt::fromQNetworkProxy(const QNetworkProxy &qt
}
ProxyConfigServiceQt::ProxyConfigServiceQt(std::unique_ptr<ProxyConfigService> baseService,
- const net::ProxyConfigWithAnnotation& initialConfig, ProxyPrefs::ConfigState initialState)
- : m_baseService(baseService.release()),
- m_usesSystemConfiguration(false),
- m_registeredObserver(false),
- m_prefConfig(initialConfig),
- m_perfState(initialState)
-{
-}
+ const net::ProxyConfigWithAnnotation &initialConfig,
+ ProxyPrefs::ConfigState initialState)
+ : m_baseService(baseService.release())
+ , m_usesSystemConfiguration(false)
+ , m_registeredObserver(false)
+ , m_prefConfig(initialConfig)
+ , m_perfState(initialState)
+{}
ProxyConfigServiceQt::~ProxyConfigServiceQt()
{
diff --git a/src/core/net/proxy_config_service_qt.h b/src/core/net/proxy_config_service_qt.h
index 09e88d445..4d8619055 100644
--- a/src/core/net/proxy_config_service_qt.h
+++ b/src/core/net/proxy_config_service_qt.h
@@ -51,14 +51,14 @@
#include <QNetworkProxy>
class ProxyConfigServiceQt
- : public net::ProxyConfigService
- , public net::ProxyConfigService::Observer {
+ : public net::ProxyConfigService
+ , public net::ProxyConfigService::Observer
+{
public:
-
static net::ProxyServer fromQNetworkProxy(const QNetworkProxy &);
explicit ProxyConfigServiceQt(std::unique_ptr<ProxyConfigService> baseService,
- const net::ProxyConfigWithAnnotation& initialConfig,
+ const net::ProxyConfigWithAnnotation &initialConfig,
ProxyPrefs::ConfigState initialState);
~ProxyConfigServiceQt() override;
diff --git a/src/core/net/qrc_url_scheme_handler.h b/src/core/net/qrc_url_scheme_handler.h
index f6ca92879..586147cdf 100644
--- a/src/core/net/qrc_url_scheme_handler.h
+++ b/src/core/net/qrc_url_scheme_handler.h
@@ -45,7 +45,8 @@
namespace QtWebEngineCore {
-class QrcUrlSchemeHandler final : public QWebEngineUrlSchemeHandler {
+class QrcUrlSchemeHandler final : public QWebEngineUrlSchemeHandler
+{
public:
void requestStarted(QWebEngineUrlRequestJob *) override;
};
diff --git a/src/core/net/restricted_cookie_manager_qt.cpp b/src/core/net/restricted_cookie_manager_qt.cpp
index e01969f4d..7f1ca163e 100644
--- a/src/core/net/restricted_cookie_manager_qt.cpp
+++ b/src/core/net/restricted_cookie_manager_qt.cpp
@@ -58,7 +58,8 @@
namespace QtWebEngineCore {
-class RestrictedCookieManagerListenerQt : public network::mojom::CookieChangeListener {
+class RestrictedCookieManagerListenerQt : public network::mojom::CookieChangeListener
+{
public:
RestrictedCookieManagerListenerQt(const GURL &url,
const GURL &site_for_cookies,
@@ -181,4 +182,4 @@ bool RestrictedCookieManagerQt::allowCookies(const GURL &url, const GURL &site_f
return m_profileIoData->canGetCookies(toQt(site_for_cookies), toQt(url));
}
-} // namespace QtWebEngineCore
+} // namespace QtWebEngineCore
diff --git a/src/core/net/restricted_cookie_manager_qt.h b/src/core/net/restricted_cookie_manager_qt.h
index a277c7c96..9154f671d 100644
--- a/src/core/net/restricted_cookie_manager_qt.h
+++ b/src/core/net/restricted_cookie_manager_qt.h
@@ -85,7 +85,7 @@ public:
CookiesEnabledForCallback callback) override;
// Internal:
- bool allowCookies(const GURL& url, const GURL &site_for_cookies) const;
+ bool allowCookies(const GURL &url, const GURL &site_for_cookies) const;
private:
base::WeakPtr<ProfileIODataQt> m_profileIoData;
@@ -95,6 +95,6 @@ private:
DISALLOW_COPY_AND_ASSIGN(RestrictedCookieManagerQt);
};
-} // namespace QtWebEngineCore
+} // namespace QtWebEngineCore
-#endif // RESTRICTED_COOKIE_MANAGER_QT_H
+#endif // RESTRICTED_COOKIE_MANAGER_QT_H
diff --git a/src/core/net/ssl_host_state_delegate_qt.cpp b/src/core/net/ssl_host_state_delegate_qt.cpp
index b6cdf68dc..0885475be 100644
--- a/src/core/net/ssl_host_state_delegate_qt.cpp
+++ b/src/core/net/ssl_host_state_delegate_qt.cpp
@@ -67,19 +67,15 @@ bool CertPolicy::Check(const net::X509Certificate &cert, int error) const
return false;
}
-void CertPolicy::Allow(const net::X509Certificate& cert, int error)
+void CertPolicy::Allow(const net::X509Certificate &cert, int error)
{
net::SHA256HashValue fingerprint = cert.CalculateChainFingerprint256();
m_allowed[fingerprint] |= error;
}
-SSLHostStateDelegateQt::SSLHostStateDelegateQt()
-{
-}
+SSLHostStateDelegateQt::SSLHostStateDelegateQt() {}
-SSLHostStateDelegateQt::~SSLHostStateDelegateQt()
-{
-}
+SSLHostStateDelegateQt::~SSLHostStateDelegateQt() {}
void SSLHostStateDelegateQt::AllowCert(const std::string &host, const net::X509Certificate &cert, int error)
{
@@ -87,7 +83,7 @@ void SSLHostStateDelegateQt::AllowCert(const std::string &host, const net::X509C
}
// Clear all allow preferences.
-void SSLHostStateDelegateQt::Clear(const base::Callback<bool(const std::string&)>& host_filter)
+void SSLHostStateDelegateQt::Clear(const base::Callback<bool(const std::string &)> &host_filter)
{
if (host_filter.is_null()) {
m_certPolicyforHost.clear();
@@ -107,9 +103,10 @@ void SSLHostStateDelegateQt::Clear(const base::Callback<bool(const std::string&)
// Queries whether |cert| is allowed for |host| and |error|. Returns true in
// |expired_previous_decision| if a previous user decision expired immediately
// prior to this query, otherwise false.
-content::SSLHostStateDelegate::CertJudgment SSLHostStateDelegateQt::QueryPolicy(
- const std::string &host, const net::X509Certificate &cert,
- int error, bool */*expired_previous_decision*/)
+content::SSLHostStateDelegate::CertJudgment SSLHostStateDelegateQt::QueryPolicy(const std::string &host,
+ const net::X509Certificate &cert,
+ int error,
+ bool * /*expired_previous_decision*/)
{
return m_certPolicyforHost[host].Check(cert, error) ? SSLHostStateDelegate::ALLOWED : SSLHostStateDelegate::DENIED;
}
diff --git a/src/core/net/ssl_host_state_delegate_qt.h b/src/core/net/ssl_host_state_delegate_qt.h
index 28e239304..e361aa0be 100644
--- a/src/core/net/ssl_host_state_delegate_qt.h
+++ b/src/core/net/ssl_host_state_delegate_qt.h
@@ -45,19 +45,21 @@
namespace QtWebEngineCore {
-class CertPolicy {
+class CertPolicy
+{
public:
CertPolicy();
~CertPolicy();
- bool Check(const net::X509Certificate& cert, int error) const;
- void Allow(const net::X509Certificate& cert, int error);
+ bool Check(const net::X509Certificate &cert, int error) const;
+ void Allow(const net::X509Certificate &cert, int error);
bool HasAllowException() const { return m_allowed.size() > 0; }
private:
std::map<net::SHA256HashValue, int> m_allowed;
};
-class SSLHostStateDelegateQt : public content::SSLHostStateDelegate {
+class SSLHostStateDelegateQt : public content::SSLHostStateDelegate
+{
public:
SSLHostStateDelegateQt();
@@ -65,11 +67,11 @@ public:
// content::SSLHostStateDelegate implementation:
void AllowCert(const std::string &, const net::X509Certificate &cert, int error) override;
- void Clear(const base::Callback<bool(const std::string&)>& host_filter) override;
- CertJudgment QueryPolicy(const std::string &host, const net::X509Certificate &cert,
- int error, bool *expired_previous_decision) override;
- void HostRanInsecureContent(const std::string& host, int child_id, InsecureContentType content_type) override;
- bool DidHostRunInsecureContent(const std::string& host, int child_id, InsecureContentType content_type) override;
+ void Clear(const base::Callback<bool(const std::string &)> &host_filter) override;
+ CertJudgment QueryPolicy(const std::string &host, const net::X509Certificate &cert, int error,
+ bool *expired_previous_decision) override;
+ void HostRanInsecureContent(const std::string &host, int child_id, InsecureContentType content_type) override;
+ bool DidHostRunInsecureContent(const std::string &host, int child_id, InsecureContentType content_type) override;
void RevokeUserAllowExceptions(const std::string &host) override;
bool HasAllowException(const std::string &host) override;
diff --git a/src/core/net/url_request_context_getter_qt.h b/src/core/net/url_request_context_getter_qt.h
index b6135cb16..a6ef6eae0 100644
--- a/src/core/net/url_request_context_getter_qt.h
+++ b/src/core/net/url_request_context_getter_qt.h
@@ -46,11 +46,13 @@ namespace QtWebEngineCore {
class ProfileIODataQt;
-class URLRequestContextGetterQt : public net::URLRequestContextGetter {
+class URLRequestContextGetterQt : public net::URLRequestContextGetter
+{
public:
URLRequestContextGetterQt(ProfileIODataQt *data);
net::URLRequestContext *GetURLRequestContext() override;
scoped_refptr<base::SingleThreadTaskRunner> GetNetworkTaskRunner() const override;
+
private:
virtual ~URLRequestContextGetterQt();
ProfileIODataQt *m_profileIOData;
diff --git a/src/core/net/url_request_custom_job.cpp b/src/core/net/url_request_custom_job.cpp
index 56ba79f35..607e8d232 100644
--- a/src/core/net/url_request_custom_job.cpp
+++ b/src/core/net/url_request_custom_job.cpp
@@ -41,6 +41,7 @@
#include "url_request_custom_job_proxy.h"
#include "api/qwebengineurlscheme.h"
+
#include "base/strings/stringprintf.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
@@ -67,7 +68,6 @@ URLRequestCustomJob::URLRequestCustomJob(URLRequest *request,
, m_pendingReadBuffer(nullptr)
, m_corsEnabled(QWebEngineUrlScheme::schemeByName(QByteArray::fromStdString(scheme))
.flags().testFlag(QWebEngineUrlScheme::CorsEnabled))
- , m_httpStatusCode(500)
{
}
@@ -132,7 +132,7 @@ bool URLRequestCustomJob::GetMimeType(std::string *mimeType) const
return false;
}
-bool URLRequestCustomJob::GetCharset(std::string* charset)
+bool URLRequestCustomJob::GetCharset(std::string *charset)
{
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
if (m_charset.size() > 0) {
@@ -142,27 +142,38 @@ bool URLRequestCustomJob::GetCharset(std::string* charset)
return false;
}
-void URLRequestCustomJob::GetResponseInfo(HttpResponseInfo* info)
+void URLRequestCustomJob::GetResponseInfo(HttpResponseInfo *info)
{
// Based on net::URLRequestRedirectJob::StartAsync()
- if (!m_corsEnabled)
+ if (m_error)
return;
std::string headers;
- headers += base::StringPrintf("HTTP/1.1 %i OK\n", m_httpStatusCode);
- if (m_redirect.is_valid())
+ if (m_redirect.is_valid()) {
+ headers += "HTTP/1.1 303 See Other\n";
headers += base::StringPrintf("Location: %s\n", m_redirect.spec().c_str());
- std::string origin;
- if (request_->extra_request_headers().GetHeader("Origin", &origin)) {
- headers += base::StringPrintf("Access-Control-Allow-Origin: %s\n", origin.c_str());
- headers += "Access-Control-Allow-Credentials: true\n";
+ } else {
+ headers += base::StringPrintf("HTTP/1.1 %i OK\n", 200);
+ if (m_mimeType.size() > 0) {
+ headers += base::StringPrintf("Content-Type: %s", m_mimeType.c_str());
+ if (m_charset.size() > 0)
+ headers += base::StringPrintf("; charset=%s", m_charset.c_str());
+ headers += "\n";
+ }
+ }
+ if (m_corsEnabled) {
+ std::string origin;
+ if (request_->extra_request_headers().GetHeader("Origin", &origin)) {
+ headers += base::StringPrintf("Access-Control-Allow-Origin: %s\n", origin.c_str());
+ headers += "Access-Control-Allow-Credentials: true\n";
+ }
}
info->headers = new HttpResponseHeaders(HttpUtil::AssembleRawHeaders(headers));
}
-bool URLRequestCustomJob::IsRedirectResponse(GURL* location, int* http_status_code, bool* /*insecure_scheme_was_upgraded*/)
+bool URLRequestCustomJob::IsRedirectResponse(GURL *location, int *http_status_code, bool * /*insecure_scheme_was_upgraded*/)
{
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
if (m_redirect.is_valid()) {
diff --git a/src/core/net/url_request_custom_job.h b/src/core/net/url_request_custom_job.h
index e1e8e9fba..af5a6f8e0 100644
--- a/src/core/net/url_request_custom_job.h
+++ b/src/core/net/url_request_custom_job.h
@@ -53,7 +53,8 @@ class URLRequestCustomJobDelegate;
class URLRequestCustomJobProxy;
// A request job that handles reading custom URL schemes
-class URLRequestCustomJob : public net::URLRequestJob {
+class URLRequestCustomJob : public net::URLRequestJob
+{
public:
URLRequestCustomJob(net::URLRequest *request,
net::NetworkDelegate *networkDelegate,
@@ -61,11 +62,11 @@ public:
QPointer<ProfileAdapter> profileAdapter);
void Start() override;
void Kill() override;
- int ReadRawData(net::IOBuffer *buf, int buf_size) override;
+ int ReadRawData(net::IOBuffer *buf, int buf_size) override;
bool GetMimeType(std::string *mimeType) const override;
bool GetCharset(std::string *charset) override;
- void GetResponseInfo(net::HttpResponseInfo* info) override;
- bool IsRedirectResponse(GURL* location, int* http_status_code, bool* insecure_scheme_was_upgraded) override;
+ void GetResponseInfo(net::HttpResponseInfo *info) override;
+ bool IsRedirectResponse(GURL *location, int *http_status_code, bool *insecure_scheme_was_upgraded) override;
protected:
virtual ~URLRequestCustomJob();
@@ -82,7 +83,6 @@ private:
int m_pendingReadPos;
net::IOBuffer *m_pendingReadBuffer;
const bool m_corsEnabled;
- int m_httpStatusCode;
friend class URLRequestCustomJobProxy;
diff --git a/src/core/net/url_request_custom_job_delegate.cpp b/src/core/net/url_request_custom_job_delegate.cpp
index b5a7a55a7..f73296cf0 100644
--- a/src/core/net/url_request_custom_job_delegate.cpp
+++ b/src/core/net/url_request_custom_job_delegate.cpp
@@ -117,7 +117,7 @@ void URLRequestCustomJobDelegate::redirect(const QUrl &url)
void URLRequestCustomJobDelegate::fail(Error error)
{
- int net_error = 0;
+ int net_error = 0;
switch (error) {
case NoError:
break;
diff --git a/src/core/net/url_request_custom_job_delegate.h b/src/core/net/url_request_custom_job_delegate.h
index 0ab1a82c7..93ae39e84 100644
--- a/src/core/net/url_request_custom_job_delegate.h
+++ b/src/core/net/url_request_custom_job_delegate.h
@@ -64,7 +64,8 @@ namespace QtWebEngineCore {
class URLRequestCustomJobProxy;
-class Q_WEBENGINECORE_PRIVATE_EXPORT URLRequestCustomJobDelegate : public QObject {
+class Q_WEBENGINECORE_PRIVATE_EXPORT URLRequestCustomJobDelegate : public QObject
+{
Q_OBJECT
public:
~URLRequestCustomJobDelegate();
@@ -84,7 +85,7 @@ public:
QMap<QByteArray, QByteArray> requestHeaders() const;
void reply(const QByteArray &contentType, QIODevice *device);
- void redirect(const QUrl& url);
+ void redirect(const QUrl &url);
void abort();
void fail(Error);
diff --git a/src/core/net/url_request_custom_job_proxy.cpp b/src/core/net/url_request_custom_job_proxy.cpp
index b9ccf7ea4..72d14450e 100644
--- a/src/core/net/url_request_custom_job_proxy.cpp
+++ b/src/core/net/url_request_custom_job_proxy.cpp
@@ -100,7 +100,6 @@ void URLRequestCustomJobProxy::reply(std::string mimeType, QIODevice *device)
m_job->set_expected_content_size(size);
if (m_job->m_device && m_job->m_device->isReadable()) {
m_started = true;
- m_job->m_httpStatusCode = 200;
m_job->NotifyHeadersComplete();
} else {
fail(ERR_INVALID_URL);
@@ -115,7 +114,6 @@ void URLRequestCustomJobProxy::redirect(GURL url)
if (m_job->m_device || m_job->m_error)
return;
m_job->m_redirect = url;
- m_job->m_httpStatusCode = 303;
m_started = true;
m_job->NotifyHeadersComplete();
}
@@ -140,7 +138,6 @@ void URLRequestCustomJobProxy::fail(int error)
if (!m_job)
return;
m_job->m_error = error;
- m_job->m_httpStatusCode = 500;
if (m_job->m_device)
m_job->m_device->close();
if (!m_started)
diff --git a/src/core/net/url_request_custom_job_proxy.h b/src/core/net/url_request_custom_job_proxy.h
index aa55db07c..d4cd7e208 100644
--- a/src/core/net/url_request_custom_job_proxy.h
+++ b/src/core/net/url_request_custom_job_proxy.h
@@ -56,8 +56,8 @@ class ProfileAdapter;
// Used to comunicate between URLRequestCustomJob living on the IO thread
// and URLRequestCustomJobDelegate living on the UI thread.
-class URLRequestCustomJobProxy
- : public base::RefCountedThreadSafe<URLRequestCustomJobProxy> {
+class URLRequestCustomJobProxy : public base::RefCountedThreadSafe<URLRequestCustomJobProxy>
+{
public:
URLRequestCustomJobProxy(URLRequestCustomJob *job,
diff --git a/src/core/net/url_request_notification.cpp b/src/core/net/url_request_notification.cpp
index e37ad35bc..fa6d61f65 100644
--- a/src/core/net/url_request_notification.cpp
+++ b/src/core/net/url_request_notification.cpp
@@ -53,11 +53,13 @@
namespace QtWebEngineCore {
// Calls cancel() when the URLRequest is destroyed.
-class UserData : public base::SupportsUserData::Data {
+class UserData : public base::SupportsUserData::Data
+{
public:
UserData(URLRequestNotification *ptr) : m_ptr(ptr) {}
~UserData() { m_ptr->cancel(); }
static const char key[];
+
private:
URLRequestNotification *m_ptr;
};
@@ -69,13 +71,10 @@ static content::ResourceType fromQt(QWebEngineUrlRequestInfo::ResourceType resou
return static_cast<content::ResourceType>(resourceType);
}
-URLRequestNotification::URLRequestNotification(net::URLRequest *request,
- bool isMainFrameRequest,
- GURL *newUrl,
- QWebEngineUrlRequestInfo &&requestInfo,
- content::ResourceRequestInfo::WebContentsGetter webContentsGetter,
- net::CompletionOnceCallback callback,
- QPointer<ProfileAdapter> adapter)
+URLRequestNotification::URLRequestNotification(net::URLRequest *request, bool isMainFrameRequest, GURL *newUrl,
+ QWebEngineUrlRequestInfo &&requestInfo,
+ content::ResourceRequestInfo::WebContentsGetter webContentsGetter,
+ net::CompletionOnceCallback callback, QPointer<ProfileAdapter> adapter)
: m_request(request)
, m_isMainFrameRequest(isMainFrameRequest)
, m_newUrl(newUrl)
@@ -107,8 +106,8 @@ void URLRequestNotification::notify()
if (webContents) {
- if (m_profileAdapter) {
- QWebEngineUrlRequestInterceptor* interceptor = m_profileAdapter->requestInterceptor();
+ if (m_profileAdapter && m_profileAdapter->requestInterceptor()) {
+ QWebEngineUrlRequestInterceptor *interceptor = m_profileAdapter->requestInterceptor();
if (!interceptor->property("deprecated").toBool())
interceptor->interceptRequest(m_requestInfo);
}
@@ -152,7 +151,7 @@ void URLRequestNotification::notify()
base::BindOnce(&URLRequestNotification::complete, base::Unretained(this), result));
}
-void URLRequestNotification::cancel()
+void URLRequestNotification::cancel()
{
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
diff --git a/src/core/net/url_request_notification.h b/src/core/net/url_request_notification.h
index 790ffeb7a..a43fdff00 100644
--- a/src/core/net/url_request_notification.h
+++ b/src/core/net/url_request_notification.h
@@ -58,7 +58,8 @@ class ProfileAdapter;
class ProfileIoDataQt;
// Notifies WebContentsAdapterClient of a new URLRequest.
-class URLRequestNotification {
+class URLRequestNotification
+{
public:
URLRequestNotification(net::URLRequest *request,
bool isMainFrameRequest,
diff --git a/src/core/net/webui_controller_factory_qt.cpp b/src/core/net/webui_controller_factory_qt.cpp
index 2bfd242e7..8c045bb7b 100644
--- a/src/core/net/webui_controller_factory_qt.cpp
+++ b/src/core/net/webui_controller_factory_qt.cpp
@@ -109,7 +109,7 @@ typedef std::unique_ptr<WebUIController> (*WebUIFactoryFunction)(WebUI *web_ui,
// Template for defining WebUIFactoryFunction.
template<class T>
-std::unique_ptr<WebUIController> NewWebUI(WebUI *web_ui, const GURL &/*url*/)
+std::unique_ptr<WebUIController> NewWebUI(WebUI *web_ui, const GURL & /*url*/)
{
return std::unique_ptr<WebUIController>(new T(web_ui));
}
@@ -130,8 +130,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI *web_ui, Profile *profile, co
return &NewWebUI<QuotaInternalsUI>;
if (url.SchemeIs(content::kChromeDevToolsScheme)) {
-// if (!DevToolsUIBindings::IsValidFrontendURL(url))
-// return nullptr;
+ // if (!DevToolsUIBindings::IsValidFrontendURL(url))
+ // return nullptr;
return &NewWebUI<DevToolsUI>;
}
if (url.host() == chrome::kChromeUIAccessibilityHost)
diff --git a/src/core/net/webui_controller_factory_qt.h b/src/core/net/webui_controller_factory_qt.h
index 20ea62193..1cc76349b 100644
--- a/src/core/net/webui_controller_factory_qt.h
+++ b/src/core/net/webui_controller_factory_qt.h
@@ -55,7 +55,8 @@ class RefCountedMemory;
namespace QtWebEngineCore {
-class WebUIControllerFactoryQt : public content::WebUIControllerFactory {
+class WebUIControllerFactoryQt : public content::WebUIControllerFactory
+{
public:
content::WebUI::TypeID GetWebUIType(content::BrowserContext *browserContext, const GURL &url) override;
bool UseWebUIForURL(content::BrowserContext *browserContext, const GURL &url) override;
@@ -76,4 +77,4 @@ private:
} // namespace QtWebEngineCore
-#endif // WEB_UI_CONTROLLER_FACTORY_QT_H_
+#endif // WEB_UI_CONTROLLER_FACTORY_QT_H_
diff --git a/src/core/ozone/gl_surface_qt.cpp b/src/core/ozone/gl_surface_qt.cpp
index 58a225b4e..e9da5e6a5 100644
--- a/src/core/ozone/gl_surface_qt.cpp
+++ b/src/core/ozone/gl_surface_qt.cpp
@@ -140,7 +140,7 @@ bool InitializeGLOneOffPlatform()
{
VSyncProviderWin::InitializeOneOff();
- if (GetGLImplementation() == kGLImplementationEGLGLES2)
+ if (GetGLImplementation() == kGLImplementationEGLGLES2 || GetGLImplementation() == kGLImplementationEGLANGLE)
return GLSurfaceEGLQt::InitializeOneOff();
if (GetGLImplementation() == kGLImplementationDesktopGL) {
@@ -173,6 +173,7 @@ CreateOffscreenGLSurfaceWithFormat(const gfx::Size& size, GLSurfaceFormat format
return surface;
break;
}
+ case kGLImplementationEGLANGLE:
case kGLImplementationEGLGLES2: {
surface = new GLSurfaceEGLQt(size);
if (surface->Initialize(format))
diff --git a/src/core/profile_adapter.cpp b/src/core/profile_adapter.cpp
index 551663cf0..d421edf00 100644
--- a/src/core/profile_adapter.cpp
+++ b/src/core/profile_adapter.cpp
@@ -183,7 +183,16 @@ void ProfileAdapter::setRequestInterceptor(QWebEngineUrlRequestInterceptor *inte
{
if (m_requestInterceptor == interceptor)
return;
+
+ if (m_requestInterceptor)
+ disconnect(m_requestInterceptor, &QObject::destroyed, this, nullptr);
m_requestInterceptor = interceptor;
+ if (m_requestInterceptor)
+ connect(m_requestInterceptor, &QObject::destroyed, this, [this] () {
+ m_profile->m_profileIOData->updateRequestInterceptor();
+ Q_ASSERT(!m_profile->m_profileIOData->requestInterceptor());
+ });
+
if (m_profile->m_urlRequestContextGetter.get())
m_profile->m_profileIOData->updateRequestInterceptor();
}
diff --git a/src/core/profile_io_data_qt.cpp b/src/core/profile_io_data_qt.cpp
index 2e0e378ac..68be09ad2 100644
--- a/src/core/profile_io_data_qt.cpp
+++ b/src/core/profile_io_data_qt.cpp
@@ -613,7 +613,6 @@ void ProfileIODataQt::setRequestContextData(content::ProtocolHandlerMap *protoco
void ProfileIODataQt::setFullConfiguration()
{
Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- m_requestInterceptor = m_profileAdapter->requestInterceptor();
m_persistentCookiesPolicy = m_profileAdapter->persistentCookiesPolicy();
m_cookiesPath = m_profileAdapter->cookiesPath();
m_httpAcceptLanguage = m_profileAdapter->httpAcceptLanguage();
@@ -738,9 +737,18 @@ void ProfileIODataQt::updateRequestInterceptor()
const std::lock_guard<QRecursiveMutex> lock(m_mutex);
m_requestInterceptor = m_profileAdapter->requestInterceptor();
m_hasPageInterceptors = m_profileAdapter->hasPageRequestInterceptor();
+ if (m_requestInterceptor)
+ m_isInterceptorDeprecated = m_requestInterceptor->property("deprecated").toBool();
+ else
+ m_isInterceptorDeprecated = false;
// We in this case do not need to regenerate any Chromium classes.
}
+bool ProfileIODataQt::isInterceptorDeprecated() const
+{
+ return m_isInterceptorDeprecated;
+}
+
QWebEngineUrlRequestInterceptor *ProfileIODataQt::acquireInterceptor()
{
m_mutex.lock();
diff --git a/src/core/profile_io_data_qt.h b/src/core/profile_io_data_qt.h
index 8f11a9ce2..ec0a3dac9 100644
--- a/src/core/profile_io_data_qt.h
+++ b/src/core/profile_io_data_qt.h
@@ -130,7 +130,8 @@ public:
void setGlobalCertificateVerification();
// Used in NetworkDelegateQt::OnBeforeURLRequest.
- QWebEngineUrlRequestInterceptor *acquireInterceptor();
+ bool isInterceptorDeprecated() const; // Remove for Qt6
+ QWebEngineUrlRequestInterceptor *acquireInterceptor(); // Remove for Qt6
void releaseInterceptor();
QWebEngineUrlRequestInterceptor *requestInterceptor();
@@ -220,6 +221,7 @@ private:
base::WeakPtrFactory<ProfileIODataQt> m_weakPtrFactory; // this should be always the last member
QString m_dataPath;
bool m_pendingStorageRequestGeneration = false;
+ volatile bool m_isInterceptorDeprecated = false; // Remove for Qt6
DISALLOW_COPY_AND_ASSIGN(ProfileIODataQt);
friend class BrowsingDataRemoverObserverQt;
diff --git a/src/core/profile_qt.cpp b/src/core/profile_qt.cpp
index 94b22fbea..be55e7c49 100644
--- a/src/core/profile_qt.cpp
+++ b/src/core/profile_qt.cpp
@@ -235,6 +235,7 @@ net::URLRequestContextGetter *ProfileQt::CreateRequestContext(
m_profileIOData->setRequestContextData(protocol_handlers, std::move(request_interceptors));
m_profileIOData->updateStorageSettings();
+ m_profileIOData->updateRequestInterceptor();
m_urlRequestContextGetter = new URLRequestContextGetterQt(m_profileIOData.get());
return m_urlRequestContextGetter.get();
}
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 7633aa44c..e2fd074ae 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -538,6 +538,7 @@ void RenderWidgetHostViewQt::DisplayCursor(const content::WebCursor &webCursor)
ui::CursorType auraType = ui::CursorType::kNull;
#endif
switch (cursorInfo.type) {
+ case ui::CursorType::kNull:
case ui::CursorType::kPointer:
shape = Qt::ArrowCursor;
break;
@@ -561,6 +562,7 @@ void RenderWidgetHostViewQt::DisplayCursor(const content::WebCursor &webCursor)
case ui::CursorType::kEastWestResize:
case ui::CursorType::kEastPanning:
case ui::CursorType::kWestPanning:
+ case ui::CursorType::kMiddlePanningHorizontal:
shape = Qt::SizeHorCursor;
break;
case ui::CursorType::kNorthResize:
@@ -568,6 +570,7 @@ void RenderWidgetHostViewQt::DisplayCursor(const content::WebCursor &webCursor)
case ui::CursorType::kNorthSouthResize:
case ui::CursorType::kNorthPanning:
case ui::CursorType::kSouthPanning:
+ case ui::CursorType::kMiddlePanningVertical:
shape = Qt::SizeVerCursor;
break;
case ui::CursorType::kNorthEastResize:
@@ -597,9 +600,15 @@ void RenderWidgetHostViewQt::DisplayCursor(const content::WebCursor &webCursor)
case ui::CursorType::kProgress:
shape = Qt::BusyCursor;
break;
+ case ui::CursorType::kDndNone:
+ case ui::CursorType::kDndMove:
+ shape = Qt::DragMoveCursor;
+ break;
+ case ui::CursorType::kDndCopy:
case ui::CursorType::kCopy:
shape = Qt::DragCopyCursor;
break;
+ case ui::CursorType::kDndLink:
case ui::CursorType::kAlias:
shape = Qt::DragLinkCursor;
break;
@@ -1009,15 +1018,22 @@ QSGNode *RenderWidgetHostViewQt::updatePaintNode(QSGNode *oldNode)
void RenderWidgetHostViewQt::notifyShown()
{
if (m_enableViz) {
+ // Handle possible frame eviction:
+ if (!m_dfhLocalSurfaceIdAllocator.HasValidLocalSurfaceIdAllocation())
+ m_dfhLocalSurfaceIdAllocator.GenerateId();
if (m_visible)
return;
m_visible = true;
+ }
+
+ host()->WasShown(base::nullopt);
+
+ if (m_enableViz) {
m_delegatedFrameHost->AttachToCompositor(m_uiCompositor.get());
m_delegatedFrameHost->WasShown(GetLocalSurfaceIdAllocation().local_surface_id(),
m_viewRectInDips.size(),
base::nullopt);
}
- host()->WasShown(base::nullopt);
}
void RenderWidgetHostViewQt::notifyHidden()
@@ -1304,6 +1320,14 @@ void RenderWidgetHostViewQt::handleKeyEvent(QKeyEvent *ev)
}
}
+ // Ignore autorepeating KeyRelease events so that the generated web events
+ // conform to the spec, which requires autorepeat to result in a sequence of
+ // keypress events and only one final keyup event:
+ // https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Auto-repeat_handling
+ // https://w3c.github.io/uievents/#dom-keyboardevent-repeat
+ if (ev->type() == QEvent::KeyRelease && ev->isAutoRepeat())
+ return;
+
content::NativeWebKeyboardEvent webEvent = WebEventFactory::toWebKeyboardEvent(ev);
if (webEvent.GetType() == blink::WebInputEvent::kRawKeyDown && !m_editCommand.empty()) {
ui::LatencyInfo latency;
diff --git a/src/core/renderer/extensions/renderer_permissions_policy_delegate_qt.cpp b/src/core/renderer/extensions/renderer_permissions_policy_delegate_qt.cpp
index 39412b76c..aef4903b7 100644
--- a/src/core/renderer/extensions/renderer_permissions_policy_delegate_qt.cpp
+++ b/src/core/renderer/extensions/renderer_permissions_policy_delegate_qt.cpp
@@ -47,8 +47,7 @@
namespace QtWebEngineCore {
-RendererPermissionsPolicyDelegateQt::RendererPermissionsPolicyDelegateQt(extensions::Dispatcher *dispatcher)
- : m_dispatcher(dispatcher)
+RendererPermissionsPolicyDelegateQt::RendererPermissionsPolicyDelegateQt(extensions::Dispatcher *)
{
extensions::PermissionsData::SetPolicyDelegate(this);
}
diff --git a/src/core/renderer/extensions/renderer_permissions_policy_delegate_qt.h b/src/core/renderer/extensions/renderer_permissions_policy_delegate_qt.h
index e2af47657..385b7a4b0 100644
--- a/src/core/renderer/extensions/renderer_permissions_policy_delegate_qt.h
+++ b/src/core/renderer/extensions/renderer_permissions_policy_delegate_qt.h
@@ -58,8 +58,6 @@ public:
bool IsRestrictedUrl(const GURL &, std::string *) override;
private:
- extensions::Dispatcher *m_dispatcher;
-
DISALLOW_COPY_AND_ASSIGN(RendererPermissionsPolicyDelegateQt);
};
diff --git a/src/core/renderer/extensions/resource_request_policy_qt.cpp b/src/core/renderer/extensions/resource_request_policy_qt.cpp
index a64b1fef8..efe44521d 100644
--- a/src/core/renderer/extensions/resource_request_policy_qt.cpp
+++ b/src/core/renderer/extensions/resource_request_policy_qt.cpp
@@ -154,9 +154,9 @@ bool ResourceRequestPolicyQt::CanRequestResource(const GURL &resource_url,
// hybrid hosted/packaged apps. The one exception is access to icons, since
// some extensions want to be able to do things like create their own
// launchers.
- base::StringPiece resource_root_relative_path =
+ /*base::StringPiece resource_root_relative_path =
resource_url.path_piece().empty() ? base::StringPiece()
- : resource_url.path_piece().substr(1);
+ : resource_url.path_piece().substr(1);*/
if (extension->is_hosted_app() /*&& !IconsInfo::GetIcons(extension).ContainsPath(resource_root_relative_path)*/) {
LOG(ERROR) << "Denying load of " << resource_url.spec() << " from "
<< "hosted app.";
diff --git a/src/core/renderer/render_frame_observer_qt.h b/src/core/renderer/render_frame_observer_qt.h
index 3c54761f3..fb9fd3869 100644
--- a/src/core/renderer/render_frame_observer_qt.h
+++ b/src/core/renderer/render_frame_observer_qt.h
@@ -78,7 +78,7 @@ public:
private:
DISALLOW_COPY_AND_ASSIGN(RenderFrameObserverQt);
- void ReadyToCommitNavigation(blink::WebDocumentLoader *);
+ void ReadyToCommitNavigation(blink::WebDocumentLoader *) override;
bool m_isFrameDetached;
service_manager::BinderRegistry registry_;
diff --git a/src/core/renderer_host/web_channel_ipc_transport_host.cpp b/src/core/renderer_host/web_channel_ipc_transport_host.cpp
index e1929e4cd..4547b7fcf 100644
--- a/src/core/renderer_host/web_channel_ipc_transport_host.cpp
+++ b/src/core/renderer_host/web_channel_ipc_transport_host.cpp
@@ -52,11 +52,9 @@
#include <QJsonObject>
#include <QLoggingCategory>
-#include <QtCore/private/qjson_p.h>
-
namespace QtWebEngineCore {
-Q_LOGGING_CATEGORY(log, "qt.webengine.webchanneltransport");
+Q_LOGGING_CATEGORY(log, "qt.webengine.webchanneltransport")
inline QDebug operator<<(QDebug stream, content::RenderFrameHost *frame)
{
@@ -142,12 +140,8 @@ void WebChannelIPCTransportHost::DispatchWebChannelMessage(const std::vector<uin
return;
}
- QJsonDocument doc;
- // QJsonDocument::fromRawData does not check the length before it starts
- // parsing the QJsonPrivate::Header and QJsonPrivate::Base structures.
- if (binaryJson.size() >= sizeof(QJsonPrivate::Header) + sizeof(QJsonPrivate::Base))
- doc = QJsonDocument::fromRawData(reinterpret_cast<const char *>(binaryJson.data()),
- binaryJson.size());
+ QJsonDocument doc = QJsonDocument::fromRawData(
+ reinterpret_cast<const char *>(binaryJson.data()), binaryJson.size());
if (!doc.isObject()) {
qCCritical(log).nospace() << "received invalid webchannel message from " << frame;
diff --git a/src/core/type_conversion.cpp b/src/core/type_conversion.cpp
index ddadeb9f2..aea924dbd 100644
--- a/src/core/type_conversion.cpp
+++ b/src/core/type_conversion.cpp
@@ -58,6 +58,7 @@ QImage toQImage(const SkBitmap &bitmap)
case kUnknown_SkColorType:
case kRGBA_F16_SkColorType:
case kRGBA_F32_SkColorType:
+ case kRGBA_F16Norm_SkColorType:
qWarning("Unknown or unsupported skia image format");
break;
case kAlpha_8_SkColorType:
diff --git a/src/core/type_conversion.h b/src/core/type_conversion.h
index dfd8e8fef..2275ae82e 100644
--- a/src/core/type_conversion.h
+++ b/src/core/type_conversion.h
@@ -217,7 +217,7 @@ inline QDateTime toQt(base::Time time)
}
inline base::Time toTime(const QDateTime &dateTime) {
- return base::Time::FromInternalValue(dateTime.toMSecsSinceEpoch());
+ return base::Time::FromJavaTime(dateTime.toMSecsSinceEpoch());
}
inline QNetworkCookie toQt(const net::CanonicalCookie & cookie)
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index 3eb52409d..4cfcf6acd 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -134,7 +134,7 @@ namespace QtWebEngineCore {
static const int kTestWindowWidth = 800;
static const int kTestWindowHeight = 600;
-static const int kHistoryStreamVersion = 3;
+static const int kHistoryStreamVersion = 4;
static QVariant fromJSValue(const base::Value *result)
{
@@ -279,6 +279,9 @@ static void serializeNavigationHistory(content::NavigationController &controller
output << entry->GetIsOverridingUserAgent();
output << static_cast<qint64>(entry->GetTimestamp().ToInternalValue());
output << entry->GetHttpStatusCode();
+ // kHistoryStreamVersion >= 4
+ content::FaviconStatus &favicon = entry->GetFavicon();
+ output << (favicon.valid ? toQt(favicon.url) : QUrl());
}
}
}
@@ -287,8 +290,8 @@ static void deserializeNavigationHistory(QDataStream &input, int *currentIndex,
{
int version;
input >> version;
- if (version != kHistoryStreamVersion) {
- // We do not try to decode previous history stream versions.
+ if (version < 3 || version > kHistoryStreamVersion) {
+ // We do not try to decode history stream versions before 3.
// Make sure that our history is cleared and mark the rest of the stream as invalid.
input.setStatus(QDataStream::ReadCorruptData);
*currentIndex = -1;
@@ -301,7 +304,7 @@ static void deserializeNavigationHistory(QDataStream &input, int *currentIndex,
entries->reserve(count);
// Logic taken from SerializedNavigationEntry::ReadFromPickle and ToNavigationEntries.
for (int i = 0; i < count; ++i) {
- QUrl virtualUrl, referrerUrl, originalRequestUrl;
+ QUrl virtualUrl, referrerUrl, originalRequestUrl, iconUrl;
QString title;
QByteArray pageState;
qint32 transitionType, referrerPolicy;
@@ -319,6 +322,9 @@ static void deserializeNavigationHistory(QDataStream &input, int *currentIndex,
input >> isOverridingUserAgent;
input >> timestamp;
input >> httpStatusCode;
+ // kHistoryStreamVersion >= 4
+ if (version >= 4)
+ input >> iconUrl;
// If we couldn't unpack the entry successfully, abort everything.
if (input.status() != QDataStream::Ok) {
@@ -351,6 +357,14 @@ static void deserializeNavigationHistory(QDataStream &input, int *currentIndex,
entry->SetIsOverridingUserAgent(isOverridingUserAgent);
entry->SetTimestamp(base::Time::FromInternalValue(timestamp));
entry->SetHttpStatusCode(httpStatusCode);
+ if (iconUrl.isValid()) {
+ // Note: we don't set .image below as we don't have it and chromium will refetch favicon
+ // anyway. However, we set .url and .valid to let QWebEngineHistory items restored from
+ // a stream receive valid icon URLs via our getNavigationEntryIconUrl calls.
+ content::FaviconStatus &favicon = entry->GetFavicon();
+ favicon.url = toGurl(iconUrl);
+ favicon.valid = true;
+ }
entries->push_back(std::move(entry));
}
}
@@ -778,7 +792,7 @@ QUrl WebContentsAdapter::iconUrl() const
{
CHECK_INITIALIZED(QUrl());
if (content::NavigationEntry* entry = m_webContents->GetController().GetVisibleEntry()) {
- content::FaviconStatus favicon = entry->GetFavicon();
+ content::FaviconStatus &favicon = entry->GetFavicon();
if (favicon.valid)
return toQt(favicon.url);
}
@@ -935,7 +949,7 @@ QUrl WebContentsAdapter::getNavigationEntryIconUrl(int index)
content::NavigationEntry *entry = m_webContents->GetController().GetEntryAtIndex(index);
if (!entry)
return QUrl();
- content::FaviconStatus favicon = entry->GetFavicon();
+ content::FaviconStatus &favicon = entry->GetFavicon();
return favicon.valid ? toQt(favicon.url) : QUrl();
}
@@ -1439,8 +1453,7 @@ void WebContentsAdapter::startDragging(QObject *dragSource, const content::DropD
});
QMimeData *mimeData = mimeDataFromDropData(*m_currentDropData);
- if (handleDropDataFileContents(dropData, mimeData))
- allowedActions = Qt::MoveAction;
+ handleDropDataFileContents(dropData, mimeData);
drag->setMimeData(mimeData);
if (!pixmap.isNull()) {
diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp
index d4dfaba28..a4ceb3a97 100644
--- a/src/core/web_engine_context.cpp
+++ b/src/core/web_engine_context.cpp
@@ -378,6 +378,7 @@ ProxyAuthentication WebEngineContext::qProxyNetworkAuthentication(QString host,
const static char kChromiumFlagsEnv[] = "QTWEBENGINE_CHROMIUM_FLAGS";
const static char kDisableSandboxEnv[] = "QTWEBENGINE_DISABLE_SANDBOX";
+const static char kDisableInProcGpuThread[] = "QTWEBENGINE_DISABLE_GPU_THREAD";
static void appendToFeatureList(std::string &featureList, const char *feature)
{
@@ -508,6 +509,7 @@ WebEngineContext::WebEngineContext()
#ifndef QT_NO_OPENGL
threadedGpu = QOpenGLContext::supportsThreadedOpenGL();
#endif
+ threadedGpu = threadedGpu && !qEnvironmentVariableIsSet(kDisableInProcGpuThread);
bool enableViz = ((threadedGpu && !parsedCommandLine->HasSwitch("disable-viz-display-compositor"))
|| parsedCommandLine->HasSwitch("enable-viz-display-compositor"));
@@ -585,7 +587,7 @@ WebEngineContext::WebEngineContext()
|| usingANGLE())
{
if (qt_gl_global_share_context()->isOpenGLES()) {
- glType = gl::kGLImplementationEGLName;
+ glType = usingANGLE() ? gl::kGLImplementationANGLEName : gl::kGLImplementationEGLName;
} else {
QOpenGLContext context;
QSurfaceFormat format;
diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp
index 9bc1279ba..49006ec20 100644
--- a/src/core/web_engine_settings.cpp
+++ b/src/core/web_engine_settings.cpp
@@ -53,7 +53,9 @@
#include "content/public/common/webrtc_ip_handling_policy.h"
#include "media/base/media_switches.h"
#include "third_party/blink/public/mojom/renderer_preferences.mojom.h"
+#include "ui/base/ui_base_switches.h"
#include "ui/events/event_switches.h"
+#include "ui/native_theme/native_theme.h"
#include <QFont>
#include <QTimer>
@@ -399,6 +401,50 @@ void WebEngineSettings::applySettingsToWebPreferences(content::WebPreferences *p
prefs->minimum_font_size = fontSize(MinimumFontSize);
prefs->minimum_logical_font_size = fontSize(MinimumLogicalFontSize);
prefs->default_encoding = defaultTextEncoding().toStdString();
+
+ // Set the theme colors. Based on chrome_content_browser_client.cc:
+ const ui::NativeTheme *webTheme = ui::NativeTheme::GetInstanceForWeb();
+ if (webTheme) {
+#if !defined(OS_MACOSX)
+ // Mac has a concept of high contrast that does not relate to forced colors.
+ prefs->forced_colors = webTheme->UsesHighContrastColors()
+ ? blink::ForcedColors::kActive
+ : blink::ForcedColors::kNone;
+#endif // !defined(OS_MACOSX)
+ switch (webTheme->GetPreferredColorScheme()) {
+ case ui::NativeTheme::PreferredColorScheme::kDark:
+ prefs->preferred_color_scheme = blink::PreferredColorScheme::kDark;
+ break;
+ case ui::NativeTheme::PreferredColorScheme::kLight:
+ prefs->preferred_color_scheme = blink::PreferredColorScheme::kLight;
+ break;
+ case ui::NativeTheme::PreferredColorScheme::kNoPreference:
+ prefs->preferred_color_scheme = blink::PreferredColorScheme::kNoPreference;
+ }
+ }
+
+ // Apply native CaptionStyle parameters.
+ base::Optional<ui::CaptionStyle> style;
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kForceCaptionStyle)) {
+ style = ui::CaptionStyle::FromSpec(
+ base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(switches::kForceCaptionStyle));
+ }
+
+ // Apply system caption style.
+ if (!style && webTheme)
+ style = webTheme->GetSystemCaptionStyle();
+
+ if (style) {
+ prefs->text_track_background_color = style->background_color;
+ prefs->text_track_text_color = style->text_color;
+ prefs->text_track_text_size = style->text_size;
+ prefs->text_track_text_shadow = style->text_shadow;
+ prefs->text_track_font_family = style->font_family;
+ prefs->text_track_font_variant = style->font_variant;
+ prefs->text_track_window_color = style->window_color;
+ prefs->text_track_window_padding = style->window_padding;
+ prefs->text_track_window_radius = style->window_radius;
+ }
}
bool WebEngineSettings::applySettingsToRendererPreferences(blink::mojom::RendererPreferences *prefs)
diff --git a/src/core/web_event_factory.cpp b/src/core/web_event_factory.cpp
index 3598c1c78..ba04806d5 100644
--- a/src/core/web_event_factory.cpp
+++ b/src/core/web_event_factory.cpp
@@ -1292,6 +1292,7 @@ static inline WebInputEvent::Modifiers modifiersForEvent(const QInputEvent* even
if (keyEvent->isAutoRepeat())
result |= WebInputEvent::kIsAutoRepeat;
result |= modifierForKeyCode(qtKeyForKeyEvent(keyEvent));
+ break;
}
default:
break;
diff --git a/src/webengine/api/qquickwebenginedownloaditem_p.h b/src/webengine/api/qquickwebenginedownloaditem_p.h
index 96ef0daf0..beb359622 100644
--- a/src/webengine/api/qquickwebenginedownloaditem_p.h
+++ b/src/webengine/api/qquickwebenginedownloaditem_p.h
@@ -137,10 +137,10 @@ public:
Q_PROPERTY(bool isPaused READ isPaused NOTIFY isPausedChanged REVISION 5 FINAL)
Q_PROPERTY(bool isSavePageDownload READ isSavePageDownload CONSTANT REVISION 6 FINAL)
Q_PROPERTY(QQuickWebEngineView *view READ view CONSTANT REVISION 7 FINAL)
- Q_PROPERTY(QUrl url READ url CONSTANT REVISION 8 FINAL)
- Q_PROPERTY(QString suggestedFileName READ suggestedFileName CONSTANT REVISION 8 FINAL)
- Q_PROPERTY(QString downloadDirectory READ downloadDirectory WRITE setDownloadDirectory NOTIFY downloadDirectoryChanged REVISION 8 FINAL)
- Q_PROPERTY(QString downloadFileName READ downloadFileName WRITE setDownloadFileName NOTIFY downloadFileNameChanged REVISION 8 FINAL)
+ Q_PROPERTY(QUrl url READ url CONSTANT REVISION 10 FINAL)
+ Q_PROPERTY(QString suggestedFileName READ suggestedFileName CONSTANT REVISION 10 FINAL)
+ Q_PROPERTY(QString downloadDirectory READ downloadDirectory WRITE setDownloadDirectory NOTIFY downloadDirectoryChanged REVISION 10 FINAL)
+ Q_PROPERTY(QString downloadFileName READ downloadFileName WRITE setDownloadFileName NOTIFY downloadFileNameChanged REVISION 10 FINAL)
Q_INVOKABLE void accept();
Q_INVOKABLE void cancel();
@@ -181,8 +181,8 @@ Q_SIGNALS:
Q_REVISION(4) void interruptReasonChanged();
Q_REVISION(5) void isFinishedChanged();
Q_REVISION(5) void isPausedChanged();
- Q_REVISION(8) void downloadDirectoryChanged();
- Q_REVISION(8) void downloadFileNameChanged();
+ Q_REVISION(10) void downloadDirectoryChanged();
+ Q_REVISION(10) void downloadFileNameChanged();
private:
QQuickWebEngineDownloadItem(QQuickWebEngineDownloadItemPrivate*, QObject *parent = 0);
diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h
index 4a88e3c28..618f9407e 100644
--- a/src/webengine/api/qquickwebengineview_p.h
+++ b/src/webengine/api/qquickwebengineview_p.h
@@ -139,8 +139,8 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineView : public QQuickItem {
Q_PROPERTY(QQuickWebEngineTestSupport *testSupport READ testSupport WRITE setTestSupport NOTIFY testSupportChanged FINAL)
#endif
- Q_PROPERTY(LifecycleState lifecycleState READ lifecycleState WRITE setLifecycleState NOTIFY lifecycleStateChanged REVISION 11 FINAL)
- Q_PROPERTY(LifecycleState recommendedState READ recommendedState NOTIFY recommendedStateChanged REVISION 11 FINAL)
+ Q_PROPERTY(LifecycleState lifecycleState READ lifecycleState WRITE setLifecycleState NOTIFY lifecycleStateChanged REVISION 10 FINAL)
+ Q_PROPERTY(LifecycleState recommendedState READ recommendedState NOTIFY recommendedStateChanged REVISION 10 FINAL)
public:
QQuickWebEngineView(QQuickItem *parent = 0);
@@ -573,9 +573,9 @@ Q_SIGNALS:
Q_REVISION(8) void printRequested();
Q_REVISION(9) void selectClientCertificate(QQuickWebEngineClientCertificateSelection *clientCertSelection);
Q_REVISION(10) void tooltipRequested(QQuickWebEngineTooltipRequest *request);
- Q_REVISION(11) void lifecycleStateChanged(LifecycleState state);
- Q_REVISION(11) void recommendedStateChanged(LifecycleState state);
- Q_REVISION(11) void findTextFinished(const QWebEngineFindTextResult &result);
+ Q_REVISION(10) void lifecycleStateChanged(LifecycleState state);
+ Q_REVISION(10) void recommendedStateChanged(LifecycleState state);
+ Q_REVISION(10) void findTextFinished(const QWebEngineFindTextResult &result);
#if QT_CONFIG(webengine_testsupport)
void testSupportChanged();
diff --git a/src/webengine/api/qtwebengineglobal.cpp b/src/webengine/api/qtwebengineglobal.cpp
index a11618dba..4346832c9 100644
--- a/src/webengine/api/qtwebengineglobal.cpp
+++ b/src/webengine/api/qtwebengineglobal.cpp
@@ -38,6 +38,7 @@
****************************************************************************/
#include "qtwebengineglobal.h"
+#include <QCoreApplication>
namespace QtWebEngineCore
{
@@ -62,8 +63,8 @@ namespace QtWebEngine {
/*!
\fn QtWebEngine::initialize()
- Sets up an OpenGL Context that can be shared between threads. This has to be done after
- QGuiApplication is created, but before a Qt Quick window is created.
+ Sets up an OpenGL Context that can be shared between threads. This has to be done before
+ QGuiApplication is created and before window's QPlatformOpenGLContext is created.
This has the same effect as setting the Qt::AA_ShareOpenGLContexts
attribute with QCoreApplication::setAttribute before constructing
@@ -71,7 +72,15 @@ namespace QtWebEngine {
*/
void initialize()
{
- QtWebEngineCore::initialize();
+ QCoreApplication *app = QCoreApplication::instance();
+ if (app) {
+ qWarning("QtWebEngine::initialize() called with QCoreApplication object already created and should be call before. "\
+ "This is depreciated and may fail in the future.");
+ QtWebEngineCore::initialize();
+ return;
+ }
+ // call initialize the same way as widgets do
+ qAddPreRoutine(QtWebEngineCore::initialize);
}
} // namespace QtWebEngine
diff --git a/src/webengine/doc/src/qtwebengine-overview.qdoc b/src/webengine/doc/src/qtwebengine-overview.qdoc
index 6aa1af89e..3533b0327 100644
--- a/src/webengine/doc/src/qtwebengine-overview.qdoc
+++ b/src/webengine/doc/src/qtwebengine-overview.qdoc
@@ -89,7 +89,7 @@
\l{https://chromium.googlesource.com/chromium/src/+/master/docs/chromium_browser_vs_google_chrome.md}{overview}
that is part of the documentation in the \l {Chromium Project} upstream source tree.
- This version of \QWE is based on Chromium version 73.0.3683, with additional security
+ This version of \QWE is based on Chromium version 77.0.3865, with additional security
fixes from newer versions.
\section2 Qt WebEngine Process
diff --git a/src/webengine/doc/src/qtwebengine-platform-notes.qdoc b/src/webengine/doc/src/qtwebengine-platform-notes.qdoc
index 5d32fa6c7..1b8320c0c 100644
--- a/src/webengine/doc/src/qtwebengine-platform-notes.qdoc
+++ b/src/webengine/doc/src/qtwebengine-platform-notes.qdoc
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
@@ -75,7 +75,7 @@
\li Visual Studio 2017 version 15.8 or later
\li Active Template Library (ATL), usually included in the Visual Studio
installation
- \li Windows 10 SDK
+ \li Windows 10 SDK version 10.0.18362 or later
\endlist
\QWE can only be built on 64-bit Windows, with a x64-bit toolchain.
diff --git a/src/webengine/doc/src/webengineview_lgpl.qdoc b/src/webengine/doc/src/webengineview_lgpl.qdoc
index 3a7717bd2..df956f03e 100644
--- a/src/webengine/doc/src/webengineview_lgpl.qdoc
+++ b/src/webengine/doc/src/webengineview_lgpl.qdoc
@@ -1599,7 +1599,7 @@
*/
/*!
- \qmlproperty int FindTextResult::activeMatchOrdinal
+ \qmlproperty int FindTextResult::activeMatch
\readonly
\brief The index of the currently highlighted match.
@@ -1607,7 +1607,7 @@
/*!
\qmlsignal WebEngineView::findTextFinished(FindTextResult result)
- \since QtWebEngine 1.11
+ \since QtWebEngine 1.10
This signal is emitted when a string search on a page is completed. \a result is
the result of the string search.
diff --git a/src/webengine/plugin/plugin.cpp b/src/webengine/plugin/plugin.cpp
index 5fb48d867..3acf7d058 100644
--- a/src/webengine/plugin/plugin.cpp
+++ b/src/webengine/plugin/plugin.cpp
@@ -97,7 +97,6 @@ public:
qmlRegisterType<QQuickWebEngineView, 8>(uri, 1, 8, "WebEngineView");
qmlRegisterType<QQuickWebEngineView, 9>(uri, 1, 9, "WebEngineView");
qmlRegisterType<QQuickWebEngineView, 10>(uri, 1, 10, "WebEngineView");
- qmlRegisterType<QQuickWebEngineView, 11>(uri, 1, 11, "WebEngineView");
qmlRegisterType<QQuickWebEngineProfile>(uri, 1, 1, "WebEngineProfile");
qmlRegisterType<QQuickWebEngineProfile, 1>(uri, 1, 2, "WebEngineProfile");
qmlRegisterType<QQuickWebEngineProfile, 2>(uri, 1, 3, "WebEngineProfile");
@@ -122,7 +121,7 @@ public:
msgUncreatableType("WebEngineDownloadItem"));
qmlRegisterUncreatableType<QQuickWebEngineDownloadItem, 7>(uri, 1, 8, "WebEngineDownloadItem",
msgUncreatableType("WebEngineDownloadItem"));
- qmlRegisterUncreatableType<QQuickWebEngineDownloadItem, 8>(uri, 1, 10, "WebEngineDownloadItem",
+ qmlRegisterUncreatableType<QQuickWebEngineDownloadItem, 10>(uri, 1, 10, "WebEngineDownloadItem",
msgUncreatableType("WebEngineDownloadItem"));
qmlRegisterUncreatableType<QQuickWebEngineNewViewRequest>(uri, 1, 1, "WebEngineNewViewRequest", msgUncreatableType("WebEngineNewViewRequest"));
qmlRegisterUncreatableType<QQuickWebEngineNewViewRequest, 1>(uri, 1, 5, "WebEngineNewViewRequest", tr("Cannot create separate instance of WebEngineNewViewRequest"));
@@ -174,7 +173,7 @@ public:
qmlRegisterUncreatableType<QQuickWebEngineTooltipRequest>(uri, 1, 10, "TooltipRequest",
msgUncreatableType("TooltipRequest"));
qRegisterMetaType<QWebEngineFindTextResult>();
- qmlRegisterUncreatableType<QWebEngineFindTextResult>(uri, 1, 11, "FindTextResult", msgUncreatableType("FindTextResult"));
+ qmlRegisterUncreatableType<QWebEngineFindTextResult>(uri, 1, 10, "FindTextResult", msgUncreatableType("FindTextResult"));
}
private:
diff --git a/src/webengine/plugin/plugins.qmltypes b/src/webengine/plugin/plugins.qmltypes
index 0037861e5..a23d1c3c0 100644
--- a/src/webengine/plugin/plugins.qmltypes
+++ b/src/webengine/plugin/plugins.qmltypes
@@ -4,11 +4,285 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -defaultplatform -dependencies dependencies.json QtWebEngine 1.9'
+// 'qmlplugindump -nonrelocatable -defaultplatform -dependencies dependencies.json QtWebEngine 1.10'
Module {
dependencies: ["QtQuick 2.8"]
Component {
+ name: "QAbstractItemModel"
+ prototype: "QObject"
+ Enum {
+ name: "LayoutChangeHint"
+ values: {
+ "NoLayoutChangeHint": 0,
+ "VerticalSortHint": 1,
+ "HorizontalSortHint": 2
+ }
+ }
+ Enum {
+ name: "CheckIndexOption"
+ values: {
+ "NoOption": 0,
+ "IndexIsValid": 1,
+ "DoNotUseParent": 2,
+ "ParentIsInvalid": 4
+ }
+ }
+ Signal {
+ name: "dataChanged"
+ Parameter { name: "topLeft"; type: "QModelIndex" }
+ Parameter { name: "bottomRight"; type: "QModelIndex" }
+ Parameter { name: "roles"; type: "QVector<int>" }
+ }
+ Signal {
+ name: "dataChanged"
+ Parameter { name: "topLeft"; type: "QModelIndex" }
+ Parameter { name: "bottomRight"; type: "QModelIndex" }
+ }
+ Signal {
+ name: "headerDataChanged"
+ Parameter { name: "orientation"; type: "Qt::Orientation" }
+ Parameter { name: "first"; type: "int" }
+ Parameter { name: "last"; type: "int" }
+ }
+ Signal {
+ name: "layoutChanged"
+ Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
+ Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" }
+ }
+ Signal {
+ name: "layoutChanged"
+ Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
+ }
+ Signal { name: "layoutChanged" }
+ Signal {
+ name: "layoutAboutToBeChanged"
+ Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
+ Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" }
+ }
+ Signal {
+ name: "layoutAboutToBeChanged"
+ Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" }
+ }
+ Signal { name: "layoutAboutToBeChanged" }
+ Signal {
+ name: "rowsAboutToBeInserted"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ Parameter { name: "first"; type: "int" }
+ Parameter { name: "last"; type: "int" }
+ }
+ Signal {
+ name: "rowsInserted"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ Parameter { name: "first"; type: "int" }
+ Parameter { name: "last"; type: "int" }
+ }
+ Signal {
+ name: "rowsAboutToBeRemoved"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ Parameter { name: "first"; type: "int" }
+ Parameter { name: "last"; type: "int" }
+ }
+ Signal {
+ name: "rowsRemoved"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ Parameter { name: "first"; type: "int" }
+ Parameter { name: "last"; type: "int" }
+ }
+ Signal {
+ name: "columnsAboutToBeInserted"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ Parameter { name: "first"; type: "int" }
+ Parameter { name: "last"; type: "int" }
+ }
+ Signal {
+ name: "columnsInserted"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ Parameter { name: "first"; type: "int" }
+ Parameter { name: "last"; type: "int" }
+ }
+ Signal {
+ name: "columnsAboutToBeRemoved"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ Parameter { name: "first"; type: "int" }
+ Parameter { name: "last"; type: "int" }
+ }
+ Signal {
+ name: "columnsRemoved"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ Parameter { name: "first"; type: "int" }
+ Parameter { name: "last"; type: "int" }
+ }
+ Signal { name: "modelAboutToBeReset" }
+ Signal { name: "modelReset" }
+ Signal {
+ name: "rowsAboutToBeMoved"
+ Parameter { name: "sourceParent"; type: "QModelIndex" }
+ Parameter { name: "sourceStart"; type: "int" }
+ Parameter { name: "sourceEnd"; type: "int" }
+ Parameter { name: "destinationParent"; type: "QModelIndex" }
+ Parameter { name: "destinationRow"; type: "int" }
+ }
+ Signal {
+ name: "rowsMoved"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ Parameter { name: "start"; type: "int" }
+ Parameter { name: "end"; type: "int" }
+ Parameter { name: "destination"; type: "QModelIndex" }
+ Parameter { name: "row"; type: "int" }
+ }
+ Signal {
+ name: "columnsAboutToBeMoved"
+ Parameter { name: "sourceParent"; type: "QModelIndex" }
+ Parameter { name: "sourceStart"; type: "int" }
+ Parameter { name: "sourceEnd"; type: "int" }
+ Parameter { name: "destinationParent"; type: "QModelIndex" }
+ Parameter { name: "destinationColumn"; type: "int" }
+ }
+ Signal {
+ name: "columnsMoved"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ Parameter { name: "start"; type: "int" }
+ Parameter { name: "end"; type: "int" }
+ Parameter { name: "destination"; type: "QModelIndex" }
+ Parameter { name: "column"; type: "int" }
+ }
+ Method { name: "submit"; type: "bool" }
+ Method { name: "revert" }
+ Method {
+ name: "hasIndex"
+ type: "bool"
+ Parameter { name: "row"; type: "int" }
+ Parameter { name: "column"; type: "int" }
+ Parameter { name: "parent"; type: "QModelIndex" }
+ }
+ Method {
+ name: "hasIndex"
+ type: "bool"
+ Parameter { name: "row"; type: "int" }
+ Parameter { name: "column"; type: "int" }
+ }
+ Method {
+ name: "index"
+ type: "QModelIndex"
+ Parameter { name: "row"; type: "int" }
+ Parameter { name: "column"; type: "int" }
+ Parameter { name: "parent"; type: "QModelIndex" }
+ }
+ Method {
+ name: "index"
+ type: "QModelIndex"
+ Parameter { name: "row"; type: "int" }
+ Parameter { name: "column"; type: "int" }
+ }
+ Method {
+ name: "parent"
+ type: "QModelIndex"
+ Parameter { name: "child"; type: "QModelIndex" }
+ }
+ Method {
+ name: "sibling"
+ type: "QModelIndex"
+ Parameter { name: "row"; type: "int" }
+ Parameter { name: "column"; type: "int" }
+ Parameter { name: "idx"; type: "QModelIndex" }
+ }
+ Method {
+ name: "rowCount"
+ type: "int"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ }
+ Method { name: "rowCount"; type: "int" }
+ Method {
+ name: "columnCount"
+ type: "int"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ }
+ Method { name: "columnCount"; type: "int" }
+ Method {
+ name: "hasChildren"
+ type: "bool"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ }
+ Method { name: "hasChildren"; type: "bool" }
+ Method {
+ name: "data"
+ type: "QVariant"
+ Parameter { name: "index"; type: "QModelIndex" }
+ Parameter { name: "role"; type: "int" }
+ }
+ Method {
+ name: "data"
+ type: "QVariant"
+ Parameter { name: "index"; type: "QModelIndex" }
+ }
+ Method {
+ name: "setData"
+ type: "bool"
+ Parameter { name: "index"; type: "QModelIndex" }
+ Parameter { name: "value"; type: "QVariant" }
+ Parameter { name: "role"; type: "int" }
+ }
+ Method {
+ name: "setData"
+ type: "bool"
+ Parameter { name: "index"; type: "QModelIndex" }
+ Parameter { name: "value"; type: "QVariant" }
+ }
+ Method {
+ name: "headerData"
+ type: "QVariant"
+ Parameter { name: "section"; type: "int" }
+ Parameter { name: "orientation"; type: "Qt::Orientation" }
+ Parameter { name: "role"; type: "int" }
+ }
+ Method {
+ name: "headerData"
+ type: "QVariant"
+ Parameter { name: "section"; type: "int" }
+ Parameter { name: "orientation"; type: "Qt::Orientation" }
+ }
+ Method {
+ name: "fetchMore"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ }
+ Method {
+ name: "canFetchMore"
+ type: "bool"
+ Parameter { name: "parent"; type: "QModelIndex" }
+ }
+ Method {
+ name: "flags"
+ type: "Qt::ItemFlags"
+ Parameter { name: "index"; type: "QModelIndex" }
+ }
+ Method {
+ name: "match"
+ type: "QModelIndexList"
+ Parameter { name: "start"; type: "QModelIndex" }
+ Parameter { name: "role"; type: "int" }
+ Parameter { name: "value"; type: "QVariant" }
+ Parameter { name: "hits"; type: "int" }
+ Parameter { name: "flags"; type: "Qt::MatchFlags" }
+ }
+ Method {
+ name: "match"
+ type: "QModelIndexList"
+ Parameter { name: "start"; type: "QModelIndex" }
+ Parameter { name: "role"; type: "int" }
+ Parameter { name: "value"; type: "QVariant" }
+ Parameter { name: "hits"; type: "int" }
+ }
+ Method {
+ name: "match"
+ type: "QModelIndexList"
+ Parameter { name: "start"; type: "QModelIndex" }
+ Parameter { name: "role"; type: "int" }
+ Parameter { name: "value"; type: "QVariant" }
+ }
+ }
+ Component { name: "QAbstractListModel"; prototype: "QAbstractItemModel" }
+ Component {
name: "QQuickWebEngineAction"
prototype: "QObject"
exports: ["QtWebEngine/WebEngineAction 1.8"]
@@ -202,6 +476,7 @@ Module {
prototype: "QObject"
exports: [
"QtWebEngine/WebEngineDownloadItem 1.1",
+ "QtWebEngine/WebEngineDownloadItem 1.10",
"QtWebEngine/WebEngineDownloadItem 1.2",
"QtWebEngine/WebEngineDownloadItem 1.3",
"QtWebEngine/WebEngineDownloadItem 1.4",
@@ -211,7 +486,7 @@ Module {
"QtWebEngine/WebEngineDownloadItem 1.8"
]
isCreatable: false
- exportMetaObjectRevisions: [0, 1, 2, 3, 4, 5, 6, 7]
+ exportMetaObjectRevisions: [0, 10, 1, 2, 3, 4, 5, 6, 7]
Enum {
name: "DownloadState"
values: {
@@ -294,12 +569,18 @@ Module {
isReadonly: true
isPointer: true
}
+ Property { name: "url"; revision: 10; type: "QUrl"; isReadonly: true }
+ Property { name: "suggestedFileName"; revision: 10; type: "string"; isReadonly: true }
+ Property { name: "downloadDirectory"; revision: 10; type: "string" }
+ Property { name: "downloadFileName"; revision: 10; type: "string" }
Signal { name: "savePageFormatChanged"; revision: 2 }
Signal { name: "mimeTypeChanged"; revision: 1 }
Signal { name: "typeChanged"; revision: 3 }
Signal { name: "interruptReasonChanged"; revision: 4 }
Signal { name: "isFinishedChanged"; revision: 5 }
Signal { name: "isPausedChanged"; revision: 5 }
+ Signal { name: "downloadDirectoryChanged"; revision: 10 }
+ Signal { name: "downloadFileNameChanged"; revision: 10 }
Method { name: "accept" }
Method { name: "cancel" }
Method { name: "pause" }
@@ -625,10 +906,11 @@ Module {
"QtWebEngine/WebEngineSettings 1.5",
"QtWebEngine/WebEngineSettings 1.6",
"QtWebEngine/WebEngineSettings 1.7",
- "QtWebEngine/WebEngineSettings 1.8"
+ "QtWebEngine/WebEngineSettings 1.8",
+ "QtWebEngine/WebEngineSettings 1.9"
]
isCreatable: false
- exportMetaObjectRevisions: [0, 1, 2, 3, 4, 5, 6, 7]
+ exportMetaObjectRevisions: [0, 1, 2, 3, 4, 5, 6, 7, 8]
Enum {
name: "UnknownUrlSchemePolicy"
values: {
@@ -704,12 +986,32 @@ Module {
}
}
Component {
+ name: "QQuickWebEngineTooltipRequest"
+ prototype: "QObject"
+ exports: ["QtWebEngine/TooltipRequest 1.10"]
+ isCreatable: false
+ exportMetaObjectRevisions: [0]
+ Enum {
+ name: "RequestType"
+ values: {
+ "Show": 0,
+ "Hide": 1
+ }
+ }
+ Property { name: "x"; type: "int"; isReadonly: true }
+ Property { name: "y"; type: "int"; isReadonly: true }
+ Property { name: "text"; type: "string"; isReadonly: true }
+ Property { name: "type"; type: "RequestType"; isReadonly: true }
+ Property { name: "accepted"; type: "bool" }
+ }
+ Component {
name: "QQuickWebEngineView"
defaultProperty: "data"
prototype: "QQuickItem"
exports: [
"QtWebEngine/WebEngineView 1.0",
"QtWebEngine/WebEngineView 1.1",
+ "QtWebEngine/WebEngineView 1.10",
"QtWebEngine/WebEngineView 1.2",
"QtWebEngine/WebEngineView 1.3",
"QtWebEngine/WebEngineView 1.4",
@@ -719,7 +1021,7 @@ Module {
"QtWebEngine/WebEngineView 1.8",
"QtWebEngine/WebEngineView 1.9"
]
- exportMetaObjectRevisions: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+ exportMetaObjectRevisions: [0, 1, 10, 2, 3, 4, 5, 6, 7, 8, 9]
Enum {
name: "NavigationRequestAction"
values: {
@@ -735,7 +1037,8 @@ Module {
"FormSubmittedNavigation": 2,
"BackForwardNavigation": 3,
"ReloadNavigation": 4,
- "OtherNavigation": 5
+ "OtherNavigation": 5,
+ "RedirectNavigation": 6
}
}
Enum {
@@ -994,6 +1297,14 @@ Module {
"Landscape": 1
}
}
+ Enum {
+ name: "LifecycleState"
+ values: {
+ "Active": 0,
+ "Frozen": 1,
+ "Discarded": 2
+ }
+ }
Property { name: "url"; type: "QUrl" }
Property { name: "icon"; type: "QUrl"; isReadonly: true }
Property { name: "loading"; type: "bool"; isReadonly: true }
@@ -1035,7 +1346,8 @@ Module {
Property { name: "webChannelWorld"; revision: 3; type: "uint" }
Property { name: "inspectedView"; revision: 7; type: "QQuickWebEngineView"; isPointer: true }
Property { name: "devToolsView"; revision: 7; type: "QQuickWebEngineView"; isPointer: true }
- Property { name: "testSupport"; type: "QQuickWebEngineTestSupport"; isPointer: true }
+ Property { name: "lifecycleState"; revision: 10; type: "LifecycleState" }
+ Property { name: "recommendedState"; revision: 10; type: "LifecycleState"; isReadonly: true }
Signal {
name: "loadingChanged"
Parameter { name: "loadRequest"; type: "QQuickWebEngineLoadRequest"; isPointer: true }
@@ -1194,6 +1506,26 @@ Module {
isPointer: true
}
}
+ Signal {
+ name: "tooltipRequested"
+ revision: 10
+ Parameter { name: "request"; type: "QQuickWebEngineTooltipRequest"; isPointer: true }
+ }
+ Signal {
+ name: "lifecycleStateChanged"
+ revision: 10
+ Parameter { name: "state"; type: "LifecycleState" }
+ }
+ Signal {
+ name: "recommendedStateChanged"
+ revision: 10
+ Parameter { name: "state"; type: "LifecycleState" }
+ }
+ Signal {
+ name: "findTextFinished"
+ revision: 10
+ Parameter { name: "result"; type: "QWebEngineFindTextResult" }
+ }
Method {
name: "runJavaScript"
Parameter { type: "string" }
@@ -1320,26 +1652,25 @@ Module {
}
}
Component {
+ name: "QWebEngineFindTextResult"
+ exports: ["QtWebEngine/FindTextResult 1.10"]
+ isCreatable: false
+ exportMetaObjectRevisions: [0]
+ Property { name: "numberOfMatches"; type: "int"; isReadonly: true }
+ Property { name: "activeMatchOrdinal"; type: "int"; isReadonly: true }
+ }
+ Component {
name: "QWebEngineNotification"
prototype: "QObject"
exports: ["QtWebEngine/WebEngineNotification 1.9"]
isCreatable: false
exportMetaObjectRevisions: [0]
- Enum {
- name: "Direction"
- values: {
- "LeftToRight": 0,
- "RightToLeft": 1,
- "DirectionAuto": 2
- }
- }
Property { name: "origin"; type: "QUrl"; isReadonly: true }
- Property { name: "icon"; type: "QIcon"; isReadonly: true }
Property { name: "title"; type: "string"; isReadonly: true }
Property { name: "message"; type: "string"; isReadonly: true }
Property { name: "tag"; type: "string"; isReadonly: true }
Property { name: "language"; type: "string"; isReadonly: true }
- Property { name: "direction"; type: "Direction"; isReadonly: true }
+ Property { name: "direction"; type: "Qt::LayoutDirection"; isReadonly: true }
Signal { name: "closed" }
Method { name: "show" }
Method { name: "click" }
diff --git a/src/webenginewidgets/api/qwebenginecertificateerror.cpp b/src/webenginewidgets/api/qwebenginecertificateerror.cpp
index 45277e19d..3f20b6483 100644
--- a/src/webenginewidgets/api/qwebenginecertificateerror.cpp
+++ b/src/webenginewidgets/api/qwebenginecertificateerror.cpp
@@ -79,7 +79,7 @@ public:
QUrl url;
bool overridable;
QString errorDescription;
- QList<QSslCertificate> chain;
+ QList<QSslCertificate> certificateChain;
bool answered = false, deferred = false;
QWeakPointer<CertificateErrorController> controller;
@@ -107,7 +107,7 @@ QWebEngineCertificateError::QWebEngineCertificateError(const QSharedPointer<Cert
controller->overridable(), controller->errorString()))
{
d->controller = controller;
- d->chain = controller->chain();
+ d->certificateChain = controller->certificateChain();
}
QWebEngineCertificateError::QWebEngineCertificateError(const QWebEngineCertificateError &) = default;
@@ -255,9 +255,9 @@ bool QWebEngineCertificateError::answered() const
Chain starts with the peer's immediate certificate and ending with the CA's certificate.
*/
-QList<QSslCertificate> QWebEngineCertificateError::chain() const
+QList<QSslCertificate> QWebEngineCertificateError::certificateChain() const
{
- return d->chain;
+ return d->certificateChain;
}
QT_END_NAMESPACE
diff --git a/src/webenginewidgets/api/qwebenginecertificateerror.h b/src/webenginewidgets/api/qwebenginecertificateerror.h
index b2dd65a9f..d3a19edfc 100644
--- a/src/webenginewidgets/api/qwebenginecertificateerror.h
+++ b/src/webenginewidgets/api/qwebenginecertificateerror.h
@@ -90,7 +90,7 @@ public:
void ignoreCertificateError();
bool answered() const;
- QList<QSslCertificate> chain() const;
+ QList<QSslCertificate> certificateChain() const;
private:
friend class QWebEnginePagePrivate;
diff --git a/src/webenginewidgets/api/qwebenginedownloaditem.h b/src/webenginewidgets/api/qwebenginedownloaditem.h
index 27fca6f8a..8d98799a3 100644
--- a/src/webenginewidgets/api/qwebenginedownloaditem.h
+++ b/src/webenginewidgets/api/qwebenginedownloaditem.h
@@ -118,8 +118,12 @@ public:
qint64 receivedBytes() const;
QUrl url() const;
QString mimeType() const;
- QString Q_DECL_DEPRECATED path() const;
- void Q_DECL_DEPRECATED setPath(QString path);
+#if QT_DEPRECATED_SINCE(5, 14)
+ QT_DEPRECATED_VERSION_X(5, 14, "Use downloadDirectory() and downloadFileName() instead")
+ QString path() const;
+ QT_DEPRECATED_VERSION_X(5, 14, "Use setDownloadDirectory() and setDownloadFileName() instead")
+ void setPath(QString path);
+#endif
bool isFinished() const;
bool isPaused() const;
SavePageFormat savePageFormat() const;
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index db3efa521..524df0425 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -2671,16 +2671,13 @@ void QContextMenuBuilder::addMenuItem(ContextMenuItem menuItem)
switch (menuItem) {
case ContextMenuItem::Back:
- action = new QAction(QIcon::fromTheme(QStringLiteral("go-previous")), QWebEnginePage::tr("&Back"), m_menu);
- QObject::connect(action, &QAction::triggered, thisRef->d_ptr->view, &QWebEngineView::back);
+ action = thisRef->action(QWebEnginePage::Back);
break;
case ContextMenuItem::Forward:
- action = new QAction(QIcon::fromTheme(QStringLiteral("go-next")), QWebEnginePage::tr("&Forward"), m_menu);
- QObject::connect(action, &QAction::triggered, thisRef->d_ptr->view, &QWebEngineView::forward);
+ action = thisRef->action(QWebEnginePage::Forward);
break;
case ContextMenuItem::Reload:
- action = new QAction(QIcon::fromTheme(QStringLiteral("view-refresh")), QWebEnginePage::tr("&Reload"), m_menu);
- QObject::connect(action, &QAction::triggered, thisRef->d_ptr->view, &QWebEngineView::reload);
+ action = thisRef->action(QWebEnginePage::Reload);
break;
case ContextMenuItem::Cut:
action = thisRef->action(QWebEnginePage::Cut);
diff --git a/tests/auto/quick/dialogs/tst_dialogs.cpp b/tests/auto/quick/dialogs/tst_dialogs.cpp
index eee6b2bb6..82ea3be37 100644
--- a/tests/auto/quick/dialogs/tst_dialogs.cpp
+++ b/tests/auto/quick/dialogs/tst_dialogs.cpp
@@ -28,6 +28,7 @@
#include "testhandler.h"
#include "server.h"
+#include "util.h"
#include <QtWebEngine/private/qquickwebenginedialogrequests_p.h>
#include <QtWebEngine/private/qquickwebenginecontextmenurequest_p.h>
#include <QQuickWebEngineProfile>
@@ -43,6 +44,7 @@ class tst_Dialogs : public QObject {
public:
tst_Dialogs(){}
+
private slots:
void initTestCase();
void init();
@@ -64,7 +66,6 @@ private:
void tst_Dialogs::initTestCase()
{
- QtWebEngine::initialize();
QQuickWebEngineProfile::defaultProfile()->setOffTheRecord(true);
qmlRegisterType<TestHandler>("io.qt.tester", 1, 0, "TestHandler");
m_engine.reset(new QQmlApplicationEngine());
@@ -230,5 +231,5 @@ void tst_Dialogs::javaScriptDialogRequested()
}
#include "tst_dialogs.moc"
-QTEST_MAIN(tst_Dialogs)
+W_QTEST_MAIN(tst_Dialogs)
diff --git a/tests/auto/quick/inspectorserver/BLACKLIST b/tests/auto/quick/inspectorserver/BLACKLIST
index f80823bf3..92c76505a 100644
--- a/tests/auto/quick/inspectorserver/BLACKLIST
+++ b/tests/auto/quick/inspectorserver/BLACKLIST
@@ -3,3 +3,4 @@ osx
[openRemoteDebuggingSession]
osx
+msvc-2019
diff --git a/tests/auto/quick/inspectorserver/tst_inspectorserver.cpp b/tests/auto/quick/inspectorserver/tst_inspectorserver.cpp
index 922c7769e..224814f7e 100644
--- a/tests/auto/quick/inspectorserver/tst_inspectorserver.cpp
+++ b/tests/auto/quick/inspectorserver/tst_inspectorserver.cpp
@@ -167,7 +167,7 @@ void tst_InspectorServer::openRemoteDebuggingSession()
// - The page list didn't return a valid inspector URL
// - Or the front-end couldn't be loaded through the inspector HTTP server
// - Or the web socket connection couldn't be established between the front-end and the page through the inspector server
- QTRY_VERIFY_WITH_TIMEOUT(inspectorWebView->title().startsWith("DevTools -"), 20000);
+ QTRY_VERIFY_WITH_TIMEOUT(inspectorWebView->title().startsWith("DevTools -"), 30000);
}
QTEST_MAIN(tst_InspectorServer)
diff --git a/tests/auto/quick/publicapi/tst_publicapi.cpp b/tests/auto/quick/publicapi/tst_publicapi.cpp
index 9f7dfa8ad..321972057 100644
--- a/tests/auto/quick/publicapi/tst_publicapi.cpp
+++ b/tests/auto/quick/publicapi/tst_publicapi.cpp
@@ -279,7 +279,7 @@ static const QStringList expectedAPI = QStringList()
<< "QQuickWebEngineFileDialogRequest.dialogReject() --> void"
<< "QQuickWebEngineFileDialogRequest.mode --> FileMode"
<< "QWebEngineFindTextResult.numberOfMatches --> int"
- << "QWebEngineFindTextResult.activeMatchOrdinal --> int"
+ << "QWebEngineFindTextResult.activeMatch --> int"
<< "QQuickWebEngineFormValidationMessageRequest.Hide --> RequestType"
<< "QQuickWebEngineFormValidationMessageRequest.Move --> RequestType"
<< "QQuickWebEngineFormValidationMessageRequest.Show --> RequestType"
diff --git a/tests/auto/quick/qmltests/data/tst_findText.qml b/tests/auto/quick/qmltests/data/tst_findText.qml
index 040d324e6..c02a1348e 100644
--- a/tests/auto/quick/qmltests/data/tst_findText.qml
+++ b/tests/auto/quick/qmltests/data/tst_findText.qml
@@ -113,7 +113,7 @@ TestWebEngineView {
verify(!findFailed)
tryCompare(findTextSpy, "count", 1)
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 1)
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 1)
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 1)
}
function test_findTextCaseInsensitive() {
@@ -127,7 +127,7 @@ TestWebEngineView {
verify(!findFailed)
tryCompare(findTextSpy, "count", 1)
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 1)
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 1)
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 1)
}
function test_findTextManyMatches() {
@@ -141,7 +141,7 @@ TestWebEngineView {
verify(!findFailed)
tryCompare(findTextSpy, "count", 1)
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 100)
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 1)
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 1)
}
@@ -156,7 +156,7 @@ TestWebEngineView {
verify(findFailed)
tryCompare(findTextSpy, "count", 1)
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 0)
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 0)
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 0)
}
function test_findTextNotFound() {
@@ -170,7 +170,7 @@ TestWebEngineView {
verify(findFailed)
tryCompare(findTextSpy, "count", 1)
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 0)
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 0)
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 0)
}
function test_findTextAfterNotFound() {
@@ -184,7 +184,7 @@ TestWebEngineView {
verify(findFailed)
tryCompare(findTextSpy, "count", 1)
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 0)
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 0)
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 0)
webEngineView.url = Qt.resolvedUrl("test1.html")
verify(webEngineView.waitForLoadSucceeded())
@@ -195,7 +195,7 @@ TestWebEngineView {
verify(!findFailed)
tryCompare(findTextSpy, "count", 1)
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 1)
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 1)
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 1)
}
function test_findTextInModifiedDOMAfterNotFound() {
@@ -212,7 +212,7 @@ TestWebEngineView {
verify(findFailed)
tryCompare(findTextSpy, "count", 1)
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 0)
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 0)
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 0)
runJavaScript("document.body.innerHTML = 'blahellobla'");
tryVerify(function() { return getBodyInnerHTML() == "blahellobla"; }, 20000);
@@ -223,7 +223,7 @@ TestWebEngineView {
verify(!findFailed)
tryCompare(findTextSpy, "count", 1)
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 1)
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 1)
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 1)
}
function test_findTextInterruptedByLoad() {
@@ -276,7 +276,7 @@ TestWebEngineView {
findTextSpy.wait();
compare(findTextSpy.count, i);
compare(findTextSpy.signalArguments[i-1][0].numberOfMatches, 3);
- compare(findTextSpy.signalArguments[i-1][0].activeMatchOrdinal, i);
+ compare(findTextSpy.signalArguments[i-1][0].activeMatch, i);
}
// The last match is followed by the fist one.
@@ -285,7 +285,7 @@ TestWebEngineView {
findTextSpy.wait();
compare(findTextSpy.count, 1);
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 3);
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 1);
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 1);
// The first match is preceded by the last one.
webEngineView.clear();
@@ -293,23 +293,23 @@ TestWebEngineView {
findTextSpy.wait();
compare(findTextSpy.count, 1);
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 3);
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 3);
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 3);
- // Finding another word resets the activeMatchOrdinal.
+ // Finding another word resets the activeMatch.
webEngineView.clear();
webEngineView.findText("bar");
findTextSpy.wait();
compare(findTextSpy.count, 1);
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 2);
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 1);
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 1);
- // If no match activeMatchOrdinal is 0.
+ // If no match activeMatch is 0.
webEngineView.clear();
webEngineView.findText("bla");
findTextSpy.wait();
compare(findTextSpy.count, 1);
compare(findTextSpy.signalArguments[0][0].numberOfMatches, 0);
- compare(findTextSpy.signalArguments[0][0].activeMatchOrdinal, 0);
+ compare(findTextSpy.signalArguments[0][0].activeMatch, 0);
}
}
}
diff --git a/tests/auto/quick/shared/util.h b/tests/auto/quick/shared/util.h
index c2e7d3e19..bc5ae445b 100644
--- a/tests/auto/quick/shared/util.h
+++ b/tests/auto/quick/shared/util.h
@@ -36,6 +36,7 @@
#include <QtTest/QtTest>
#include <QtWebEngine/private/qquickwebengineview_p.h>
#include <QtWebEngine/private/qquickwebengineloadrequest_p.h>
+#include <QGuiApplication>
#if !defined(TESTS_SOURCE_DIR)
#define TESTS_SOURCE_DIR ""
@@ -182,4 +183,15 @@ inline QString activeElementId(QQuickWebEngineView *webEngineView)
return arguments.at(1).toString();
}
+#define W_QTEST_MAIN(TestObject) \
+int main(int argc, char *argv[]) \
+{ \
+ QtWebEngine::initialize(); \
+ QGuiApplication app(argc, argv); \
+ app.setAttribute(Qt::AA_Use96Dpi, true); \
+ TestObject tc; \
+ QTEST_SET_MAIN_SOURCE_PATH \
+ return QTest::qExec(&tc, argc, argv); \
+}
#endif /* UTIL_H */
+
diff --git a/tests/auto/widgets/certificateerror/tst_certificateerror.cpp b/tests/auto/widgets/certificateerror/tst_certificateerror.cpp
index 5fd765ed5..f11d9236c 100644
--- a/tests/auto/widgets/certificateerror/tst_certificateerror.cpp
+++ b/tests/auto/widgets/certificateerror/tst_certificateerror.cpp
@@ -48,13 +48,13 @@ private Q_SLOTS:
struct PageWithCertificateErrorHandler : QWebEnginePage
{
PageWithCertificateErrorHandler(bool defer, bool accept, QObject *p = nullptr)
- : QWebEnginePage(p), deferError(defer), acceptCertificate(accept) {
- connect(this, &QWebEnginePage::loadFinished, [&] (bool result) { spyLoad(result); });
+ : QWebEnginePage(p), deferError(defer), acceptCertificate(accept)
+ , loadSpy(this, &QWebEnginePage::loadFinished) {
}
bool deferError, acceptCertificate;
- CallbackSpy<bool> spyLoad;
+ QSignalSpy loadSpy;
QScopedPointer<QWebEngineCertificateError> error;
bool certificateError(const QWebEngineCertificateError &e) override {
@@ -96,7 +96,7 @@ void tst_CertificateError::handleError()
page.setUrl(server.url());
QTRY_VERIFY(page.error);
QVERIFY(page.error->isOverridable());
- auto chain = page.error->chain();
+ auto chain = page.error->certificateChain();
QCOMPARE(chain.size(), 2);
QCOMPARE(chain[0].serialNumber(), "3b:dd:1a:b7:2f:40:32:3b:c1:bf:37:d4:86:bd:56:c1:d0:6b:2a:43");
QCOMPARE(chain[1].serialNumber(), "6d:52:fb:b4:57:3b:b2:03:c8:62:7b:7e:44:45:5c:d3:08:87:74:17");
@@ -104,7 +104,7 @@ void tst_CertificateError::handleError()
if (deferError) {
QVERIFY(page.error->deferred());
QVERIFY(!page.error->answered());
- QVERIFY(!page.spyLoad.wasCalled());
+ QCOMPARE(page.loadSpy.count(), 0);
QCOMPARE(toPlainTextSync(&page), QString());
if (acceptCertificate)
@@ -115,10 +115,8 @@ void tst_CertificateError::handleError()
QVERIFY(page.error->answered());
page.error.reset();
}
-
- bool loadResult = page.spyLoad.waitForResult();
- QVERIFY(page.spyLoad.wasCalled());
- QCOMPARE(loadResult, acceptCertificate);
+ QTRY_COMPARE_WITH_TIMEOUT(page.loadSpy.count(), 1, 30000);
+ QCOMPARE(page.loadSpy.takeFirst().value(0).toBool(), acceptCertificate);
QCOMPARE(toPlainTextSync(&page), expectedContent);
}
diff --git a/tests/auto/widgets/devtools/tst_devtools.cpp b/tests/auto/widgets/devtools/tst_devtools.cpp
index 8f3b90a14..3026b3931 100644
--- a/tests/auto/widgets/devtools/tst_devtools.cpp
+++ b/tests/auto/widgets/devtools/tst_devtools.cpp
@@ -46,7 +46,7 @@ void tst_DevTools::attachAndDestroyPageFirst()
QSignalSpy spy(page, &QWebEnginePage::loadFinished);
page->load(QUrl("data:text/plain,foobarbaz"));
- QTRY_COMPARE(spy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 1, 12000);
inspector->setInspectedPage(page);
page->triggerAction(QWebEnginePage::InspectElement);
@@ -67,7 +67,7 @@ void tst_DevTools::attachAndDestroyInspectorFirst()
QSignalSpy spy(page, &QWebEnginePage::loadFinished);
page->setHtml(QStringLiteral("<body><h1>FOO BAR!</h1></body>"));
- QTRY_COMPARE(spy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 1, 12000);
page->triggerAction(QWebEnginePage::InspectElement);
diff --git a/tests/auto/widgets/faviconmanager/tst_faviconmanager.cpp b/tests/auto/widgets/faviconmanager/tst_faviconmanager.cpp
index 540c8d505..1469ddb15 100644
--- a/tests/auto/widgets/faviconmanager/tst_faviconmanager.cpp
+++ b/tests/auto/widgets/faviconmanager/tst_faviconmanager.cpp
@@ -107,7 +107,7 @@ void tst_FaviconManager::faviconLoad()
QUrl url = QUrl::fromLocalFile(TESTS_SOURCE_DIR + QLatin1String("faviconmanager/resources/favicon-single.html"));
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QTRY_COMPARE(iconUrlChangedSpy.count(), 1);
QTRY_COMPARE(iconChangedSpy.count(), 1);
@@ -132,7 +132,7 @@ void tst_FaviconManager::faviconLoadFromResources()
QUrl url("qrc:/resources/favicon-single.html");
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QTRY_COMPARE(iconUrlChangedSpy.count(), 1);
QTRY_COMPARE(iconChangedSpy.count(), 1);
@@ -161,7 +161,7 @@ void tst_FaviconManager::faviconLoadEncodedUrl()
QUrl url(urlString + QLatin1String("?favicon=load should work with#whitespace!"));
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QTRY_COMPARE(iconUrlChangedSpy.count(), 1);
QTRY_COMPARE(iconChangedSpy.count(), 1);
@@ -189,7 +189,7 @@ void tst_FaviconManager::noFavicon()
QUrl url = QUrl::fromLocalFile(TESTS_SOURCE_DIR + QLatin1String("faviconmanager/resources/test1.html"));
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QCOMPARE(iconUrlChangedSpy.count(), 0);
QCOMPARE(iconChangedSpy.count(), 0);
@@ -206,7 +206,7 @@ void tst_FaviconManager::aboutBlank()
QUrl url("about:blank");
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QCOMPARE(iconUrlChangedSpy.count(), 0);
QCOMPARE(iconChangedSpy.count(), 0);
@@ -226,7 +226,7 @@ void tst_FaviconManager::unavailableFavicon()
QUrl url = QUrl::fromLocalFile(TESTS_SOURCE_DIR + QLatin1String("faviconmanager/resources/favicon-unavailable.html"));
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QCOMPARE(iconUrlChangedSpy.count(), 0);
QCOMPARE(iconChangedSpy.count(), 0);
@@ -245,7 +245,7 @@ void tst_FaviconManager::errorPageEnabled()
QUrl url("http://url.invalid");
m_page->load(url);
- QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 20000);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QCOMPARE(iconUrlChangedSpy.count(), 0);
QCOMPARE(iconChangedSpy.count(), 0);
@@ -264,7 +264,7 @@ void tst_FaviconManager::errorPageDisabled()
QUrl url("http://url.invalid");
m_page->load(url);
- QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 12000);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QCOMPARE(iconUrlChangedSpy.count(), 0);
QCOMPARE(iconChangedSpy.count(), 0);
@@ -288,7 +288,7 @@ void tst_FaviconManager::bestFavicon()
url = QUrl::fromLocalFile(TESTS_SOURCE_DIR + QLatin1String("faviconmanager/resources/favicon-misc.html"));
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QTRY_COMPARE(iconUrlChangedSpy.count(), 1);
QTRY_COMPARE(iconChangedSpy.count(), 1);
@@ -311,7 +311,7 @@ void tst_FaviconManager::bestFavicon()
url = QUrl::fromLocalFile(TESTS_SOURCE_DIR + QLatin1String("faviconmanager/resources/favicon-shortcut.html"));
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QTRY_VERIFY(iconUrlChangedSpy.count() >= 1);
QTRY_VERIFY(iconChangedSpy.count() >= 1);
@@ -347,7 +347,7 @@ void tst_FaviconManager::touchIcon()
QUrl url = QUrl::fromLocalFile(TESTS_SOURCE_DIR + QLatin1String("faviconmanager/resources/favicon-touch.html"));
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QCOMPARE(iconUrlChangedSpy.count(), 0);
QCOMPARE(iconChangedSpy.count(), 0);
@@ -367,7 +367,7 @@ void tst_FaviconManager::multiIcon()
QUrl url = QUrl::fromLocalFile(TESTS_SOURCE_DIR + QLatin1String("faviconmanager/resources/favicon-multi.html"));
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QTRY_COMPARE(iconUrlChangedSpy.count(), 1);
QTRY_COMPARE(iconChangedSpy.count(), 1);
@@ -395,7 +395,7 @@ void tst_FaviconManager::candidateIcon()
QUrl url = QUrl::fromLocalFile(TESTS_SOURCE_DIR + QLatin1String("faviconmanager/resources/favicon-shortcut.html"));
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QTRY_COMPARE(iconUrlChangedSpy.count(), 1);
QTRY_COMPARE(iconChangedSpy.count(), 1);
@@ -432,7 +432,7 @@ void tst_FaviconManager::downloadIconsDisabled()
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QCOMPARE(iconUrlChangedSpy.count(), 0);
QCOMPARE(iconChangedSpy.count(), 0);
@@ -465,7 +465,7 @@ void tst_FaviconManager::downloadTouchIconsEnabled()
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QTRY_COMPARE(iconUrlChangedSpy.count(), 1);
QTRY_COMPARE(iconChangedSpy.count(), 1);
@@ -494,7 +494,7 @@ void tst_FaviconManager::dynamicFavicon()
m_page->setHtml("<html>"
"<link rel='icon' type='image/png' href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII='/>"
"</html>");
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QTRY_COMPARE(iconUrlChangedSpy.count(), 1);
QTRY_COMPARE(iconChangedSpy.count(), 1);
@@ -525,7 +525,7 @@ void tst_FaviconManager::touchIconWithSameURL()
QTRY_COMPARE(loadFinishedSpy.count(), 1);
// The default favicon has to be loaded even if its URL is also set as a touch icon while touch icons are disabled.
- QTRY_COMPARE(iconUrlChangedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QCOMPARE(m_page->iconUrl().toString(), icon);
QTRY_COMPARE(iconChangedSpy.count(), 1);
diff --git a/tests/auto/widgets/loadsignals/tst_loadsignals.cpp b/tests/auto/widgets/loadsignals/tst_loadsignals.cpp
index c0bb8d5c5..20e5fbf0d 100644
--- a/tests/auto/widgets/loadsignals/tst_loadsignals.cpp
+++ b/tests/auto/widgets/loadsignals/tst_loadsignals.cpp
@@ -234,7 +234,7 @@ void tst_LoadSignals::fileDownloadDoesNotTriggerLoadSignals_qtbug66661()
QTemporaryDir tempDir;
QWebEngineDownloadItem::DownloadState downloadState = QWebEngineDownloadItem::DownloadRequested;
connect(view->page()->profile(), &QWebEngineProfile::downloadRequested,
- [this, &downloadState, &tempDir](QWebEngineDownloadItem* item){
+ [&downloadState, &tempDir](QWebEngineDownloadItem* item){
connect(item, &QWebEngineDownloadItem::stateChanged, [&downloadState](QWebEngineDownloadItem::DownloadState newState){
downloadState = newState;
});
diff --git a/tests/auto/widgets/origins/tst_origins.cpp b/tests/auto/widgets/origins/tst_origins.cpp
index 02d5bfba3..c63f4d690 100644
--- a/tests/auto/widgets/origins/tst_origins.cpp
+++ b/tests/auto/widgets/origins/tst_origins.cpp
@@ -134,6 +134,13 @@ void registerSchemes()
scheme.setFlags(QWebEngineUrlScheme::CorsEnabled);
QWebEngineUrlScheme::registerScheme(scheme);
}
+
+ {
+ QWebEngineUrlScheme scheme(QBAL("cors"));
+ scheme.setFlags(QWebEngineUrlScheme::CorsEnabled);
+ QWebEngineUrlScheme::registerScheme(scheme);
+ }
+
}
Q_CONSTRUCTOR_FUNCTION(registerSchemes)
@@ -159,6 +166,7 @@ public:
profile->installUrlSchemeHandler(QBAL("HostPortAndUserInformationSyntax"), this);
profile->installUrlSchemeHandler(QBAL("redirect1"), this);
profile->installUrlSchemeHandler(QBAL("redirect2"), this);
+ profile->installUrlSchemeHandler(QBAL("cors"), this);
}
QVector<QUrl> &requests() { return m_requests; }
@@ -198,8 +206,9 @@ class tst_Origins final : public QObject {
private Q_SLOTS:
void initTestCase();
- void cleanup();
void cleanupTestCase();
+ void init();
+ void cleanup();
void jsUrlCanon();
void jsUrlRelative();
@@ -220,12 +229,12 @@ private Q_SLOTS:
void redirect();
private:
- bool load(const QUrl &url)
+ bool verifyLoad(const QUrl &url)
{
QSignalSpy spy(m_page, &QWebEnginePage::loadFinished);
m_page->load(url);
- return (!spy.empty() || spy.wait(20000))
- && spy.front().value(0).toBool();
+ [&spy]() { QTRY_VERIFY_WITH_TIMEOUT(!spy.isEmpty(), 90000); }();
+ return !spy.isEmpty() && spy.front().value(0).toBool();
}
QVariant eval(const QString &code)
@@ -244,26 +253,32 @@ void tst_Origins::initTestCase()
QtWarningMsg,
QRegularExpression("Please register the custom scheme 'tst'.*"));
- m_page = new QWebEnginePage(&m_profile, nullptr);
m_handler = new TstUrlSchemeHandler(&m_profile);
}
-void tst_Origins::cleanup()
+void tst_Origins::cleanupTestCase()
{
- m_handler->requests().clear();
+ QVERIFY(!m_page);
+ delete m_handler;
}
-void tst_Origins::cleanupTestCase()
+void tst_Origins::init()
+{
+ m_page = new QWebEnginePage(&m_profile, nullptr);
+}
+
+void tst_Origins::cleanup()
{
- delete m_handler;
delete m_page;
+ m_page = nullptr;
+ m_handler->requests().clear();
}
// Test URL parsing and canonicalization in Blink. The implementation of this
// part is mostly shared between Blink and Chromium proper.
void tst_Origins::jsUrlCanon()
{
- QVERIFY(load(QSL("about:blank")));
+ QVERIFY(verifyLoad(QSL("about:blank")));
// Standard schemes are biased towards the authority part.
QCOMPARE(eval(QSL("new URL(\"http:foo/bar\").href")), QVariant(QSL("http://foo/bar")));
@@ -325,7 +340,7 @@ void tst_Origins::jsUrlCanon()
// Test relative URL resolution.
void tst_Origins::jsUrlRelative()
{
- QVERIFY(load(QSL("about:blank")));
+ QVERIFY(verifyLoad(QSL("about:blank")));
// Schemes with hosts, like http, work as expected.
QCOMPARE(eval(QSL("new URL('bar', 'http://foo').href")), QVariant(QSL("http://foo/bar")));
@@ -374,7 +389,7 @@ void tst_Origins::jsUrlRelative()
// blink::SecurityOrigin as opposed to GURL and url::Origin.
void tst_Origins::jsUrlOrigin()
{
- QVERIFY(load(QSL("about:blank")));
+ QVERIFY(verifyLoad(QSL("about:blank")));
// For network protocols the origin string must include the domain and port.
QCOMPARE(eval(QSL("new URL(\"http://foo.com/page.html\").origin")), QVariant(QSL("http://foo.com")));
@@ -440,15 +455,15 @@ void tst_Origins::subdirWithAccess()
{
ScopedAttribute sa(m_page->settings(), QWebEngineSettings::LocalContentCanAccessFileUrls, true);
- QVERIFY(load(QSL("file:" THIS_DIR "resources/subdir/index.html")));
+ QVERIFY(verifyLoad(QSL("file:" THIS_DIR "resources/subdir/index.html")));
QCOMPARE(eval(QSL("msg[0]")), QVariant(QSL("hello")));
QCOMPARE(eval(QSL("msg[1]")), QVariant(QSL("world")));
- QVERIFY(load(QSL("qrc:/resources/subdir/index.html")));
+ QVERIFY(verifyLoad(QSL("qrc:/resources/subdir/index.html")));
QCOMPARE(eval(QSL("msg[0]")), QVariant(QSL("hello")));
QCOMPARE(eval(QSL("msg[1]")), QVariant(QSL("world")));
- QVERIFY(load(QSL("tst:/resources/subdir/index.html")));
+ QVERIFY(verifyLoad(QSL("tst:/resources/subdir/index.html")));
QCOMPARE(eval(QSL("msg[0]")), QVariant(QSL("hello")));
QCOMPARE(eval(QSL("msg[1]")), QVariant(QSL("world")));
}
@@ -466,15 +481,15 @@ void tst_Origins::subdirWithoutAccess()
{
ScopedAttribute sa(m_page->settings(), QWebEngineSettings::LocalContentCanAccessFileUrls, false);
- QVERIFY(load(QSL("file:" THIS_DIR "resources/subdir/index.html")));
+ QVERIFY(verifyLoad(QSL("file:" THIS_DIR "resources/subdir/index.html")));
QCOMPARE(eval(QSL("msg[0]")), QVariant());
QCOMPARE(eval(QSL("msg[1]")), QVariant());
- QVERIFY(load(QSL("qrc:/resources/subdir/index.html")));
+ QVERIFY(verifyLoad(QSL("qrc:/resources/subdir/index.html")));
QCOMPARE(eval(QSL("msg[0]")), QVariant(QSL("hello")));
QCOMPARE(eval(QSL("msg[1]")), QVariant(QSL("world")));
- QVERIFY(load(QSL("tst:/resources/subdir/index.html")));
+ QVERIFY(verifyLoad(QSL("tst:/resources/subdir/index.html")));
QCOMPARE(eval(QSL("msg[0]")), QVariant(QSL("hello")));
QCOMPARE(eval(QSL("msg[1]")), QVariant(QSL("world")));
}
@@ -489,7 +504,7 @@ void tst_Origins::subdirWithoutAccess()
// file: scheme.
void tst_Origins::mixedSchemes()
{
- QVERIFY(load(QSL("file:" THIS_DIR "resources/mixedSchemes.html")));
+ QVERIFY(verifyLoad(QSL("file:" THIS_DIR "resources/mixedSchemes.html")));
eval(QSL("setIFrameUrl('file:" THIS_DIR "resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadAndAccess")));
eval(QSL("setIFrameUrl('qrc:/resources/mixedSchemes_frame.html')"));
@@ -497,7 +512,7 @@ void tst_Origins::mixedSchemes()
eval(QSL("setIFrameUrl('tst:/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadButNotAccess")));
- QVERIFY(load(QSL("qrc:/resources/mixedSchemes.html")));
+ QVERIFY(verifyLoad(QSL("qrc:/resources/mixedSchemes.html")));
eval(QSL("setIFrameUrl('file:" THIS_DIR "resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadButNotAccess")));
eval(QSL("setIFrameUrl('qrc:/resources/mixedSchemes_frame.html')"));
@@ -505,7 +520,7 @@ void tst_Origins::mixedSchemes()
eval(QSL("setIFrameUrl('tst:/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadButNotAccess")));
- QVERIFY(load(QSL("tst:/resources/mixedSchemes.html")));
+ QVERIFY(verifyLoad(QSL("tst:/resources/mixedSchemes.html")));
eval(QSL("setIFrameUrl('file:" THIS_DIR "resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("cannotLoad")));
eval(QSL("setIFrameUrl('qrc:/resources/mixedSchemes_frame.html')"));
@@ -513,7 +528,7 @@ void tst_Origins::mixedSchemes()
eval(QSL("setIFrameUrl('tst:/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadAndAccess")));
- QVERIFY(load(QSL("PathSyntax:/resources/mixedSchemes.html")));
+ QVERIFY(verifyLoad(QSL("PathSyntax:/resources/mixedSchemes.html")));
eval(QSL("setIFrameUrl('PathSyntax:/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadAndAccess")));
eval(QSL("setIFrameUrl('PathSyntax-Local:/resources/mixedSchemes_frame.html')"));
@@ -523,7 +538,7 @@ void tst_Origins::mixedSchemes()
eval(QSL("setIFrameUrl('PathSyntax-NoAccessAllowed:/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadButNotAccess")));
- QVERIFY(load(QSL("PathSyntax-LocalAccessAllowed:/resources/mixedSchemes.html")));
+ QVERIFY(verifyLoad(QSL("PathSyntax-LocalAccessAllowed:/resources/mixedSchemes.html")));
eval(QSL("setIFrameUrl('PathSyntax:/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadButNotAccess")));
eval(QSL("setIFrameUrl('PathSyntax-Local:/resources/mixedSchemes_frame.html')"));
@@ -533,7 +548,7 @@ void tst_Origins::mixedSchemes()
eval(QSL("setIFrameUrl('PathSyntax-NoAccessAllowed:/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadButNotAccess")));
- QVERIFY(load(QSL("PathSyntax-NoAccessAllowed:/resources/mixedSchemes.html")));
+ QVERIFY(verifyLoad(QSL("PathSyntax-NoAccessAllowed:/resources/mixedSchemes.html")));
eval(QSL("setIFrameUrl('PathSyntax:/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadButNotAccess")));
eval(QSL("setIFrameUrl('PathSyntax-Local:/resources/mixedSchemes_frame.html')"));
@@ -543,7 +558,7 @@ void tst_Origins::mixedSchemes()
eval(QSL("setIFrameUrl('PathSyntax-NoAccessAllowed:/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadButNotAccess")));
- QVERIFY(load(QSL("HostSyntax://a/resources/mixedSchemes.html")));
+ QVERIFY(verifyLoad(QSL("HostSyntax://a/resources/mixedSchemes.html")));
eval(QSL("setIFrameUrl('HostSyntax://a/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadAndAccess")));
eval(QSL("setIFrameUrl('HostSyntax://b/resources/mixedSchemes_frame.html')"));
@@ -553,13 +568,13 @@ void tst_Origins::mixedSchemes()
// Like mixedSchemes but adds a Content-Security-Policy: frame-src 'none' header.
void tst_Origins::mixedSchemesWithCsp()
{
- QVERIFY(load(QSL("HostSyntax://a/resources/mixedSchemesWithCsp.html")));
+ QVERIFY(verifyLoad(QSL("HostSyntax://a/resources/mixedSchemesWithCsp.html")));
eval(QSL("setIFrameUrl('HostSyntax://a/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadButNotAccess")));
eval(QSL("setIFrameUrl('HostSyntax://b/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadButNotAccess")));
- QVERIFY(load(QSL("HostSyntax-ContentSecurityPolicyIgnored://a/resources/mixedSchemesWithCsp.html")));
+ QVERIFY(verifyLoad(QSL("HostSyntax-ContentSecurityPolicyIgnored://a/resources/mixedSchemesWithCsp.html")));
eval(QSL("setIFrameUrl('HostSyntax-ContentSecurityPolicyIgnored://a/resources/mixedSchemes_frame.html')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadAndAccess")));
eval(QSL("setIFrameUrl('HostSyntax-ContentSecurityPolicyIgnored://b/resources/mixedSchemes_frame.html')"));
@@ -569,10 +584,12 @@ void tst_Origins::mixedSchemesWithCsp()
// Load the main page over one scheme, then make an XMLHttpRequest to a
// different scheme.
//
-// XMLHttpRequests can only be made to http, https, data, and chrome.
+// Cross-origin XMLHttpRequests can only be made to CORS-enabled schemes. These
+// include the builtin schemes http, https, data, and chrome, as well as custom
+// schemes with the CorsEnabled flag.
void tst_Origins::mixedXHR()
{
- QVERIFY(load(QSL("file:" THIS_DIR "resources/mixedXHR.html")));
+ QVERIFY(verifyLoad(QSL("file:" THIS_DIR "resources/mixedXHR.html")));
eval(QSL("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
eval(QSL("sendXHR('qrc:/resources/mixedXHR.txt')"));
@@ -581,8 +598,10 @@ void tst_Origins::mixedXHR()
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
eval(QSL("sendXHR('data:,ok')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+ eval(QSL("sendXHR('cors:/resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
- QVERIFY(load(QSL("qrc:/resources/mixedXHR.html")));
+ QVERIFY(verifyLoad(QSL("qrc:/resources/mixedXHR.html")));
eval(QSL("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
eval(QSL("sendXHR('qrc:/resources/mixedXHR.txt')"));
@@ -591,8 +610,10 @@ void tst_Origins::mixedXHR()
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
eval(QSL("sendXHR('data:,ok')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+ eval(QSL("sendXHR('cors:/resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
- QVERIFY(load(QSL("tst:/resources/mixedXHR.html")));
+ QVERIFY(verifyLoad(QSL("tst:/resources/mixedXHR.html")));
eval(QSL("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
eval(QSL("sendXHR('qrc:/resources/mixedXHR.txt')"));
@@ -601,6 +622,8 @@ void tst_Origins::mixedXHR()
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
eval(QSL("sendXHR('data:,ok')"));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+ eval(QSL("sendXHR('cors:/resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
}
#if defined(WEBSOCKETS)
@@ -656,18 +679,18 @@ void tst_Origins::webSocket()
m_page->setWebChannel(&channel);
QVERIFY(echoServer.listen());
- QVERIFY(load(QSL("file:" THIS_DIR "resources/websocket.html")));
+ QVERIFY(verifyLoad(QSL("file:" THIS_DIR "resources/websocket.html")));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
- QVERIFY(load(QSL("qrc:/resources/websocket.html")));
+ QVERIFY(verifyLoad(QSL("qrc:/resources/websocket.html")));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
// Unregistered schemes can also open WebSockets (since Chromium 71)
- QVERIFY(load(QSL("tst:/resources/websocket.html")));
+ QVERIFY(verifyLoad(QSL("tst:/resources/websocket.html")));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
// Even an insecure registered scheme can open WebSockets.
- QVERIFY(load(QSL("PathSyntax:/resources/websocket.html")));
+ QVERIFY(verifyLoad(QSL("PathSyntax:/resources/websocket.html")));
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
}
#endif
@@ -675,26 +698,26 @@ void tst_Origins::webSocket()
// one page, there is not much need for security restrictions.
void tst_Origins::dedicatedWorker()
{
- QVERIFY(load(QSL("file:" THIS_DIR "resources/dedicatedWorker.html")));
+ QVERIFY(verifyLoad(QSL("file:" THIS_DIR "resources/dedicatedWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QCOMPARE(eval(QSL("result")), QVariant(42));
- QVERIFY(load(QSL("qrc:/resources/dedicatedWorker.html")));
+ QVERIFY(verifyLoad(QSL("qrc:/resources/dedicatedWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QCOMPARE(eval(QSL("result")), QVariant(42));
// Unregistered schemes can also create Workers (since Chromium 71)
- QVERIFY(load(QSL("tst:/resources/dedicatedWorker.html")));
+ QVERIFY(verifyLoad(QSL("tst:/resources/dedicatedWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QCOMPARE(eval(QSL("result")), QVariant(42));
// Even an insecure registered scheme can create Workers.
- QVERIFY(load(QSL("PathSyntax:/resources/dedicatedWorker.html")));
+ QVERIFY(verifyLoad(QSL("PathSyntax:/resources/dedicatedWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QCOMPARE(eval(QSL("result")), QVariant(42));
// But not if the NoAccessAllowed flag is set.
- QVERIFY(load(QSL("PathSyntax-NoAccessAllowed:/resources/dedicatedWorker.html")));
+ QVERIFY(verifyLoad(QSL("PathSyntax-NoAccessAllowed:/resources/dedicatedWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QVERIFY(eval(QSL("error")).toString()
.contains(QSL("cannot be accessed from origin 'null'")));
@@ -706,31 +729,31 @@ void tst_Origins::sharedWorker()
{
{
ScopedAttribute sa(m_page->settings(), QWebEngineSettings::LocalContentCanAccessFileUrls, false);
- QVERIFY(load(QSL("file:" THIS_DIR "resources/sharedWorker.html")));
- QTRY_VERIFY(eval(QSL("done")).toBool());
+ QVERIFY(verifyLoad(QSL("file:" THIS_DIR "resources/sharedWorker.html")));
+ QTRY_VERIFY_WITH_TIMEOUT(eval(QSL("done")).toBool(), 10000);
QVERIFY(eval(QSL("error")).toString()
.contains(QSL("cannot be accessed from origin 'null'")));
}
{
ScopedAttribute sa(m_page->settings(), QWebEngineSettings::LocalContentCanAccessFileUrls, true);
- QVERIFY(load(QSL("file:" THIS_DIR "resources/sharedWorker.html")));
- QTRY_VERIFY(eval(QSL("done")).toBool());
+ QVERIFY(verifyLoad(QSL("file:" THIS_DIR "resources/sharedWorker.html")));
+ QTRY_VERIFY_WITH_TIMEOUT(eval(QSL("done")).toBool(), 10000);
QCOMPARE(eval(QSL("result")), QVariant(42));
}
- QVERIFY(load(QSL("qrc:/resources/sharedWorker.html")));
- QTRY_VERIFY(eval(QSL("done")).toBool());
+ QVERIFY(verifyLoad(QSL("qrc:/resources/sharedWorker.html")));
+ QTRY_VERIFY_WITH_TIMEOUT(eval(QSL("done")).toBool(), 10000);
QCOMPARE(eval(QSL("result")), QVariant(42));
// Unregistered schemes should not create SharedWorkers.
- QVERIFY(load(QSL("PathSyntax:/resources/sharedWorker.html")));
- QTRY_VERIFY(eval(QSL("done")).toBool());
+ QVERIFY(verifyLoad(QSL("PathSyntax:/resources/sharedWorker.html")));
+ QTRY_VERIFY_WITH_TIMEOUT(eval(QSL("done")).toBool(), 10000);
QCOMPARE(eval(QSL("result")), QVariant(42));
- QVERIFY(load(QSL("PathSyntax-NoAccessAllowed:/resources/sharedWorker.html")));
- QTRY_VERIFY(eval(QSL("done")).toBool());
+ QVERIFY(verifyLoad(QSL("PathSyntax-NoAccessAllowed:/resources/sharedWorker.html")));
+ QTRY_VERIFY_WITH_TIMEOUT(eval(QSL("done")).toBool(), 10000);
QVERIFY(eval(QSL("error")).toString()
.contains(QSL("denied to origin 'null'")));
}
@@ -738,41 +761,41 @@ void tst_Origins::sharedWorker()
// Service workers have to be explicitly enabled for a scheme.
void tst_Origins::serviceWorker()
{
- QVERIFY(load(QSL("file:" THIS_DIR "resources/serviceWorker.html")));
+ QVERIFY(verifyLoad(QSL("file:" THIS_DIR "resources/serviceWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QVERIFY(eval(QSL("error")).toString()
.contains(QSL("The URL protocol of the current origin ('file://') is not supported.")));
- QVERIFY(load(QSL("qrc:/resources/serviceWorker.html")));
+ QVERIFY(verifyLoad(QSL("qrc:/resources/serviceWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QVERIFY(eval(QSL("error")).toString()
.contains(QSL("The URL protocol of the current origin ('qrc:') is not supported.")));
- QVERIFY(load(QSL("tst:/resources/serviceWorker.html")));
+ QVERIFY(verifyLoad(QSL("tst:/resources/serviceWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QVERIFY(eval(QSL("error")).toString()
.contains(QSL("Cannot read property 'register' of undefined")));
- QVERIFY(load(QSL("PathSyntax:/resources/serviceWorker.html")));
+ QVERIFY(verifyLoad(QSL("PathSyntax:/resources/serviceWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QVERIFY(eval(QSL("error")).toString()
.contains(QSL("Cannot read property 'register' of undefined")));
- QVERIFY(load(QSL("PathSyntax-Secure:/resources/serviceWorker.html")));
+ QVERIFY(verifyLoad(QSL("PathSyntax-Secure:/resources/serviceWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QVERIFY(eval(QSL("error")).toString()
.contains(QSL("The URL protocol of the current origin ('pathsyntax-secure:') is not supported.")));
- QVERIFY(load(QSL("PathSyntax-ServiceWorkersAllowed:/resources/serviceWorker.html")));
+ QVERIFY(verifyLoad(QSL("PathSyntax-ServiceWorkersAllowed:/resources/serviceWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QVERIFY(eval(QSL("error")).toString()
.contains(QSL("Cannot read property 'register' of undefined")));
- QVERIFY(load(QSL("PathSyntax-Secure-ServiceWorkersAllowed:/resources/serviceWorker.html")));
+ QVERIFY(verifyLoad(QSL("PathSyntax-Secure-ServiceWorkersAllowed:/resources/serviceWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QCOMPARE(eval(QSL("error")), QVariant());
- QVERIFY(load(QSL("PathSyntax-NoAccessAllowed:/resources/serviceWorker.html")));
+ QVERIFY(verifyLoad(QSL("PathSyntax-NoAccessAllowed:/resources/serviceWorker.html")));
QTRY_VERIFY(eval(QSL("done")).toBool());
QVERIFY(eval(QSL("error")).toString()
.contains(QSL("Cannot read property 'register' of undefined")));
@@ -781,40 +804,40 @@ void tst_Origins::serviceWorker()
// Support for view-source must be enabled explicitly.
void tst_Origins::viewSource()
{
- QVERIFY(load(QSL("view-source:file:" THIS_DIR "resources/viewSource.html")));
+ QVERIFY(verifyLoad(QSL("view-source:file:" THIS_DIR "resources/viewSource.html")));
#ifdef Q_OS_WIN
QCOMPARE(m_page->requestedUrl().toString(), QSL("file:///" THIS_DIR "resources/viewSource.html"));
#else
QCOMPARE(m_page->requestedUrl().toString(), QSL("file://" THIS_DIR "resources/viewSource.html"));
#endif
- QVERIFY(load(QSL("view-source:qrc:/resources/viewSource.html")));
+ QVERIFY(verifyLoad(QSL("view-source:qrc:/resources/viewSource.html")));
QCOMPARE(m_page->requestedUrl().toString(), QSL("qrc:/resources/viewSource.html"));
- QVERIFY(load(QSL("view-source:tst:/resources/viewSource.html")));
+ QVERIFY(verifyLoad(QSL("view-source:tst:/resources/viewSource.html")));
QCOMPARE(m_page->requestedUrl().toString(), QSL("about:blank"));
- QVERIFY(load(QSL("view-source:PathSyntax:/resources/viewSource.html")));
+ QVERIFY(verifyLoad(QSL("view-source:PathSyntax:/resources/viewSource.html")));
QCOMPARE(m_page->requestedUrl().toString(), QSL("about:blank"));
- QVERIFY(load(QSL("view-source:PathSyntax-ViewSourceAllowed:/resources/viewSource.html")));
+ QVERIFY(verifyLoad(QSL("view-source:PathSyntax-ViewSourceAllowed:/resources/viewSource.html")));
QCOMPARE(m_page->requestedUrl().toString(), QSL("pathsyntax-viewsourceallowed:/resources/viewSource.html"));
}
void tst_Origins::createObjectURL()
{
// Legal for registered custom schemes.
- QVERIFY(load(QSL("qrc:/resources/createObjectURL.html")));
+ QVERIFY(verifyLoad(QSL("qrc:/resources/createObjectURL.html")));
QVERIFY(eval(QSL("result")).toString().startsWith(QSL("blob:qrc:")));
// Also legal for unregistered schemes (since Chromium 71)
- QVERIFY(load(QSL("tst:/resources/createObjectURL.html")));
+ QVERIFY(verifyLoad(QSL("tst:/resources/createObjectURL.html")));
QVERIFY(eval(QSL("result")).toString().startsWith(QSL("blob:tst:")));
}
void tst_Origins::redirect()
{
- QVERIFY(load(QSL("redirect1:/resources/redirect.html")));
+ QVERIFY(verifyLoad(QSL("redirect1:/resources/redirect.html")));
QTRY_COMPARE(m_handler->requests().size(), 7);
QCOMPARE(m_handler->requests()[0], QUrl(QStringLiteral("redirect1:/resources/redirect.html")));
QCOMPARE(m_handler->requests()[1], QUrl(QStringLiteral("redirect2:/resources/redirect.html")));
diff --git a/tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp b/tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp
index 6dc7f03c1..d34e3cefe 100644
--- a/tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp
+++ b/tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp
@@ -77,7 +77,9 @@ private Q_SLOTS:
void downloadToDefaultLocation();
void downloadToNonExistentDir();
void downloadToReadOnlyDir();
+#if QT_DEPRECATED_SINCE(5, 14)
void downloadPathValidation();
+#endif
void downloadToDirectoryWithFileName();
private:
@@ -1109,7 +1111,7 @@ void tst_QWebEngineDownloadItem::downloadToReadOnlyDir()
suggestedFileName = item->suggestedFileName();
downloadItem = item;
item->accept();
- connect(item, &QWebEngineDownloadItem::finished, [&, item]() {
+ connect(item, &QWebEngineDownloadItem::finished, [&]() {
downloadFinished = true;
});
downloadAccepted = true;
@@ -1135,6 +1137,7 @@ void tst_QWebEngineDownloadItem::downloadToReadOnlyDir()
QFile(m_profile->downloadPath()).setPermissions(QFileDevice::WriteOwner);
}
+#if QT_DEPRECATED_SINCE(5, 14)
void tst_QWebEngineDownloadItem::downloadPathValidation()
{
const QString fileName = "test.txt";
@@ -1251,6 +1254,7 @@ void tst_QWebEngineDownloadItem::downloadPathValidation()
#endif // !defined(Q_OS_WIN)
QDir::setCurrent(oldPath);
}
+#endif
void tst_QWebEngineDownloadItem::downloadToDirectoryWithFileName()
{
diff --git a/tests/auto/widgets/qwebenginehistory/resources/page5.html b/tests/auto/widgets/qwebenginehistory/resources/page5.html
index 859355279..cad6d964e 100644
--- a/tests/auto/widgets/qwebenginehistory/resources/page5.html
+++ b/tests/auto/widgets/qwebenginehistory/resources/page5.html
@@ -1 +1,2 @@
+<link rel="icon" href="qrc:/qt-project.org/qmessagebox/images/qtlogo-64.png">
<title>page5</title><body><h1>page5</h1></body>
diff --git a/tests/auto/widgets/qwebenginehistory/tst_qwebenginehistory.cpp b/tests/auto/widgets/qwebenginehistory/tst_qwebenginehistory.cpp
index 6209401cb..bdb486793 100644
--- a/tests/auto/widgets/qwebenginehistory/tst_qwebenginehistory.cpp
+++ b/tests/auto/widgets/qwebenginehistory/tst_qwebenginehistory.cpp
@@ -51,6 +51,7 @@ public Q_SLOTS:
private Q_SLOTS:
void title();
void lastVisited();
+ void iconUrl();
void count();
void back();
void forward();
@@ -126,6 +127,11 @@ void tst_QWebEngineHistory::lastVisited()
QVERIFY(qAbs(hist->itemAt(0).lastVisited().secsTo(QDateTime::currentDateTime())) < 60);
}
+void tst_QWebEngineHistory::iconUrl()
+{
+ QTRY_COMPARE(hist->currentItem().iconUrl(), QUrl("qrc:/qt-project.org/qmessagebox/images/qtlogo-64.png"));
+}
+
/**
* Check QWebEngineHistory::count() method
*/
@@ -336,6 +342,7 @@ void tst_QWebEngineHistory::serialize_3()
QDateTime lastVisited(a.lastVisited());
QUrl originalUrl(a.originalUrl());
QUrl url(a.url());
+ QUrl iconUrl(a.iconUrl());
save << *hist;
QVERIFY(save.status() == QDataStream::Ok);
@@ -351,6 +358,7 @@ void tst_QWebEngineHistory::serialize_3()
QTRY_COMPARE(b.lastVisited(), lastVisited);
QTRY_COMPARE(b.originalUrl(), originalUrl);
QTRY_COMPARE(b.url(), url);
+ QTRY_COMPARE(b.iconUrl(), iconUrl);
//Check if all data was read
QVERIFY(load.atEnd());
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index 5edd778e2..27aa7a1f7 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -158,6 +158,7 @@ private Q_SLOTS:
void setHtmlWithStylesheetResource();
void setHtmlWithBaseURL();
void setHtmlWithJSAlert();
+ void setHtmlWithModuleImport();
void baseUrl_data();
void baseUrl();
void scrollPosition();
@@ -322,7 +323,7 @@ void tst_QWebEnginePage::acceptNavigationRequest()
page.setHtml(QString("<html><body><form name='tstform' action='data:text/html,foo'method='get'>"
"<input type='text'><input type='submit'></form></body></html>"), QUrl());
- QTRY_COMPARE(loadSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 20000);
evaluateJavaScriptSync(&page, "tstform.submit();");
QTRY_COMPARE(loadSpy.count(), 2);
@@ -388,7 +389,7 @@ void tst_QWebEnginePage::geolocationRequestJS()
QSignalSpy spyLoadFinished(newPage, SIGNAL(loadFinished(bool)));
newPage->setHtml(QString("<html><body>test</body></html>"), QUrl("qrc://secure/origin"));
- QTRY_COMPARE(spyLoadFinished.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(spyLoadFinished.count(), 1, 20000);
// Geolocation is only enabled for visible WebContents.
view.show();
@@ -415,7 +416,7 @@ void tst_QWebEnginePage::loadFinished()
page.load(QUrl("data:text/html,<frameset cols=\"25%,75%\"><frame src=\"data:text/html,"
"<head><meta http-equiv='refresh' content='1'></head>foo \">"
"<frame src=\"data:text/html,bar\"></frameset>"));
- QTRY_COMPARE(spyLoadFinished.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(spyLoadFinished.count(), 1, 20000);
QEXPECT_FAIL("", "Behavior change: Load signals are emitted only for the main frame in QtWebEngine.", Continue);
QTRY_VERIFY_WITH_TIMEOUT(spyLoadStarted.count() > 1, 100);
@@ -475,9 +476,9 @@ void tst_QWebEnginePage::pasteImage()
QClipboard *clipboard = QGuiApplication::clipboard();
clipboard->setImage(origImage);
QWebEnginePage *page = m_view->page();
- page->load(QUrl("qrc:///resources/pasteimage.html"));
QSignalSpy spyFinished(m_view, &QWebEngineView::loadFinished);
- QVERIFY(spyFinished.wait());
+ page->load(QUrl("qrc:///resources/pasteimage.html"));
+ QTRY_VERIFY_WITH_TIMEOUT(!spyFinished.isEmpty(), 20000);
page->triggerAction(QWebEnginePage::Paste);
QTRY_VERIFY(evaluateJavaScriptSync(page,
"window.myImageDataURL ? window.myImageDataURL.length : 0").toInt() > 0);
@@ -568,11 +569,11 @@ void tst_QWebEnginePage::acceptNavigationRequestNavigationType()
QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool)));
page.load(QUrl("qrc:///resources/script.html"));
- QTRY_COMPARE(loadSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 20000);
QTRY_COMPARE(page.navigations.count(), 1);
page.load(QUrl("qrc:///resources/content.html"));
- QTRY_COMPARE(loadSpy.count(), 2);
+ QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 2, 20000);
QTRY_COMPARE(page.navigations.count(), 2);
page.triggerAction(QWebEnginePage::Stop);
@@ -587,7 +588,7 @@ void tst_QWebEnginePage::acceptNavigationRequestNavigationType()
QTRY_COMPARE(page.navigations.count(), 4);
page.load(QUrl("qrc:///resources/reload.html"));
- QTRY_COMPARE(loadSpy.count(), 6);
+ QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 6, 20000);
QTRY_COMPARE(page.navigations.count(), 6);
QList<QWebEnginePage::NavigationType> expectedList;
@@ -613,7 +614,7 @@ void tst_QWebEnginePage::popupFormSubmission()
page.setHtml("<form name='form1' method=get action='' target='myNewWin'>"
" <input type='hidden' name='foo' value='bar'>"
"</form>");
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 20000);
page.runJavaScript("window.open('', 'myNewWin', 'width=500,height=300,toolbar=0');");
evaluateJavaScriptSync(&page, "document.form1.submit();");
@@ -666,8 +667,8 @@ void tst_QWebEnginePage::multipleProfilesAndLocalStorage()
page1.setHtml(QString("<html><body> </body></html>"), QUrl("http://wwww.example.com"));
page2.setHtml(QString("<html><body> </body></html>"), QUrl("http://wwww.example.com"));
- QTRY_COMPARE(loadSpy1.count(), 1);
- QTRY_COMPARE(loadSpy2.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadSpy1.count(), 1, 20000);
+ QTRY_COMPARE_WITH_TIMEOUT(loadSpy2.count(), 1, 20000);
evaluateJavaScriptSync(&page1, "localStorage.setItem('test', 'value1');");
evaluateJavaScriptSync(&page2, "localStorage.setItem('test', 'value2');");
@@ -727,7 +728,7 @@ void tst_QWebEnginePage::textSelection()
page->setView(&view);
QSignalSpy loadSpy(&view, SIGNAL(loadFinished(bool)));
page->setHtml(content);
- QTRY_COMPARE(loadSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 20000);
// these actions must exist
QVERIFY(page->action(QWebEnginePage::SelectAll) != 0);
@@ -759,7 +760,7 @@ void tst_QWebEnginePage::backActionUpdate()
QSignalSpy loadSpy(page, SIGNAL(loadFinished(bool)));
QUrl url = QUrl("qrc:///resources/framedindex.html");
page->load(url);
- QTRY_COMPARE(loadSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 20000);
QVERIFY(!action->isEnabled());
QTest::mouseClick(&view, Qt::LeftButton, 0, QPoint(10, 10));
QEXPECT_FAIL("", "Behavior change: Load signals are emitted only for the main frame in QtWebEngine.", Continue);
@@ -782,8 +783,8 @@ void tst_QWebEnginePage::localStorageVisibility()
QSignalSpy loadSpy2(&webPage2, &QWebEnginePage::loadFinished);
webPage1.setHtml(QString("<html><body>test</body></html>"), QUrl("http://www.example.com/"));
webPage2.setHtml(QString("<html><body>test</body></html>"), QUrl("http://www.example.com/"));
- QTRY_COMPARE(loadSpy1.count(), 1);
- QTRY_COMPARE(loadSpy2.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadSpy1.count(), 1, 20000);
+ QTRY_COMPARE_WITH_TIMEOUT(loadSpy2.count(), 1, 20000);
// The attribute determines the visibility of the window.localStorage object.
QVERIFY(evaluateJavaScriptSync(&webPage1, QString("(window.localStorage != undefined)")).toBool());
@@ -900,7 +901,7 @@ void tst_QWebEnginePage::testJSPrompt()
bool res;
QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool)));
page.setHtml(QStringLiteral("<html><body></body></html>"));
- QTRY_COMPARE(loadSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 20000);
// OK + QString()
res = evaluateJavaScriptSync(&page,
@@ -999,7 +1000,7 @@ void tst_QWebEnginePage::findTextResult()
if (findTextSpy.count() != 1)
return QVector<int>({-1, -1});
auto r = findTextSpy.takeFirst().value(0).value<QWebEngineFindTextResult>();
- return QVector<int>({ r.numberOfMatches(), r.activeMatchOrdinal() });
+ return QVector<int>({ r.numberOfMatches(), r.activeMatch() });
};
// findText will abort in blink if the view has an empty size.
@@ -1037,7 +1038,7 @@ void tst_QWebEnginePage::findTextSuccessiveShouldCallAllCallbacks()
CallbackSpy<bool> spy5;
QSignalSpy loadSpy(m_view, SIGNAL(loadFinished(bool)));
m_view->setHtml(QString("<html><head></head><body><div>abcdefg abcdefg abcdefg abcdefg abcdefg</div></body></html>"));
- QTRY_COMPARE(loadSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 20000);
m_page->findText("abcde", 0, spy1.ref());
m_page->findText("abcd", 0, spy2.ref());
m_page->findText("abc", 0, spy3.ref());
@@ -1104,7 +1105,7 @@ void tst_QWebEnginePage::findTextActiveMatchOrdinal()
QTRY_COMPARE(findTextSpy.count(), 1);
result = findTextSpy.takeFirst().value(0).value<QWebEngineFindTextResult>();
QCOMPARE(result.numberOfMatches(), 3);
- QCOMPARE(result.activeMatchOrdinal(), i);
+ QCOMPARE(result.activeMatch(), i);
}
// The last match is followed by the fist one.
@@ -1112,28 +1113,28 @@ void tst_QWebEnginePage::findTextActiveMatchOrdinal()
QTRY_COMPARE(findTextSpy.count(), 1);
result = findTextSpy.takeFirst().value(0).value<QWebEngineFindTextResult>();
QCOMPARE(result.numberOfMatches(), 3);
- QCOMPARE(result.activeMatchOrdinal(), 1);
+ QCOMPARE(result.activeMatch(), 1);
// The first match is preceded by the last one.
m_view->page()->findText("foo", QWebEnginePage::FindBackward);
QTRY_COMPARE(findTextSpy.count(), 1);
result = findTextSpy.takeFirst().value(0).value<QWebEngineFindTextResult>();
QCOMPARE(result.numberOfMatches(), 3);
- QCOMPARE(result.activeMatchOrdinal(), 3);
+ QCOMPARE(result.activeMatch(), 3);
- // Finding another word resets the activeMatchOrdinal.
+ // Finding another word resets the activeMatch.
m_view->page()->findText("bar", 0);
QTRY_COMPARE(findTextSpy.count(), 1);
result = findTextSpy.takeFirst().value(0).value<QWebEngineFindTextResult>();
QCOMPARE(result.numberOfMatches(), 2);
- QCOMPARE(result.activeMatchOrdinal(), 1);
+ QCOMPARE(result.activeMatch(), 1);
- // If no match activeMatchOrdinal is 0.
+ // If no match activeMatch is 0.
m_view->page()->findText("bla", 0);
QTRY_COMPARE(findTextSpy.count(), 1);
result = findTextSpy.takeFirst().value(0).value<QWebEngineFindTextResult>();
QCOMPARE(result.numberOfMatches(), 0);
- QCOMPARE(result.activeMatchOrdinal(), 0);
+ QCOMPARE(result.activeMatch(), 0);
}
static QWindow *findNewTopLevelWindow(const QWindowList &oldTopLevelWindows)
@@ -1177,6 +1178,12 @@ void tst_QWebEnginePage::comboBoxPopupPositionAfterMove()
auto jsViewPosition = [&view]() {
QLatin1String script("(function() { return [window.screenX, window.screenY]; })()");
QVariantList posList = evaluateJavaScriptSync(view.page(), script).toList();
+
+ if (posList.count() != 2) {
+ qWarning("jsViewPosition failed.");
+ return QPoint();
+ }
+
return QPoint(posList.at(0).toInt(), posList.at(1).toInt());
};
@@ -1190,6 +1197,8 @@ void tst_QWebEnginePage::comboBoxPopupPositionAfterMove()
QTRY_VERIFY(QGuiApplication::topLevelWindows().contains(popup));
QTRY_VERIFY(!popup->position().isNull());
QCOMPARE(popupPos + offset, popup->position());
+ QTest::mouseClick(window, Qt::LeftButton, Qt::KeyboardModifiers(), QPoint(1, 1));
+ QTRY_VERIFY(!QGuiApplication::topLevelWindows().contains(popup));
}
void tst_QWebEnginePage::comboBoxPopupPositionAfterChildMove()
@@ -1331,7 +1340,7 @@ void tst_QWebEnginePage::loadSignalsOrder()
QSignalSpy spyLoadSpy(&loadSpy, &SpyForLoadSignalsOrder::started);
QVERIFY(spyLoadSpy.wait(500));
page.load(url);
- QTRY_VERIFY(loadSpy.isFinished());
+ QTRY_VERIFY_WITH_TIMEOUT(loadSpy.isFinished(), 20000);
}
void tst_QWebEnginePage::renderWidgetHostViewNotShowTopLevel()
@@ -1373,16 +1382,21 @@ public:
load(QUrl("qrc:///resources/content.html"));
}
- void jsGetUserMedia(const QString & constraints)
+ void jsGetMedia(const QString &call)
{
evaluateJavaScriptSync(this,
QStringLiteral(
"var promiseFulfilled = false;"
"var promiseRejected = false;"
- "navigator.mediaDevices.getUserMedia(%1)"
+ "navigator.mediaDevices.%1"
".then(stream => { promiseFulfilled = true})"
".catch(err => { promiseRejected = true})")
- .arg(constraints));
+ .arg(call));
+ }
+
+ void jsGetUserMedia(const QString &constraints)
+ {
+ jsGetMedia(QStringLiteral("getUserMedia(%1)").arg(constraints));
}
bool jsPromiseFulfilled()
@@ -1439,43 +1453,45 @@ private:
void tst_QWebEnginePage::getUserMediaRequest_data()
{
- QTest::addColumn<QString>("constraints");
+ QTest::addColumn<QString>("call");
QTest::addColumn<QWebEnginePage::Feature>("feature");
QTest::addRow("device audio")
- << "{audio: true}" << QWebEnginePage::MediaAudioCapture;
+ << "getUserMedia({audio: true})" << QWebEnginePage::MediaAudioCapture;
QTest::addRow("device video")
- << "{video: true}" << QWebEnginePage::MediaVideoCapture;
+ << "getUserMedia({video: true})" << QWebEnginePage::MediaVideoCapture;
QTest::addRow("device audio+video")
- << "{audio: true, video: true}" << QWebEnginePage::MediaAudioVideoCapture;
+ << "getUserMedia({audio: true, video: true})" << QWebEnginePage::MediaAudioVideoCapture;
QTest::addRow("desktop video")
- << "{video: { mandatory: { chromeMediaSource: 'desktop' }}}"
+ << "getUserMedia({video: { mandatory: { chromeMediaSource: 'desktop' }}})"
<< QWebEnginePage::DesktopVideoCapture;
QTest::addRow("desktop audio+video")
- << "{audio: { mandatory: { chromeMediaSource: 'desktop' }}, video: { mandatory: { chromeMediaSource: 'desktop' }}}"
+ << "getUserMedia({audio: { mandatory: { chromeMediaSource: 'desktop' }}, video: { mandatory: { chromeMediaSource: 'desktop' }}})"
<< QWebEnginePage::DesktopAudioVideoCapture;
+ QTest::addRow("display video")
+ << "getDisplayMedia()" << QWebEnginePage::DesktopVideoCapture;
}
void tst_QWebEnginePage::getUserMediaRequest()
{
- QFETCH(QString, constraints);
+ QFETCH(QString, call);
QFETCH(QWebEnginePage::Feature, feature);
GetUserMediaTestPage page;
+ QWebEngineView view;
if (feature == QWebEnginePage::DesktopVideoCapture || feature == QWebEnginePage::DesktopAudioVideoCapture) {
// Desktop capture needs to be on a desktop.
- QWebEngineView view;
view.setPage(&page);
view.resize(640, 480);
view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view));
}
- QTRY_VERIFY_WITH_TIMEOUT(page.loadSucceeded(), 20000);
+ QTRY_VERIFY_WITH_TIMEOUT(page.loadSucceeded(), 60000);
page.settings()->setAttribute(QWebEngineSettings::ScreenCaptureEnabled, true);
// 1. Rejecting request on C++ side should reject promise on JS side.
- page.jsGetUserMedia(constraints);
+ page.jsGetMedia(call);
QTRY_VERIFY(page.gotFeatureRequest(feature));
page.rejectPendingRequest();
QTRY_VERIFY(!page.jsPromiseFulfilled() && page.jsPromiseRejected());
@@ -1485,13 +1501,13 @@ void tst_QWebEnginePage::getUserMediaRequest()
// deeper in the content layer we cannot guarantee that the promise will
// always be fulfilled, however in this case an error should be returned to
// JS instead of leaving the Promise in limbo.
- page.jsGetUserMedia(constraints);
+ page.jsGetMedia(call);
QTRY_VERIFY(page.gotFeatureRequest(feature));
page.acceptPendingRequest();
QTRY_VERIFY(page.jsPromiseFulfilled() || page.jsPromiseRejected());
// 3. Media feature permissions are not remembered.
- page.jsGetUserMedia(constraints);
+ page.jsGetMedia(call);
QTRY_VERIFY(page.gotFeatureRequest(feature));
page.acceptPendingRequest();
QTRY_VERIFY(page.jsPromiseFulfilled() || page.jsPromiseRejected());
@@ -1812,7 +1828,7 @@ void tst_QWebEnginePage::runJavaScriptDisabled()
// Settings changes take effect asynchronously. The load and wait ensure
// that the settings are applied by the time we start to execute JavaScript.
page.load(QStringLiteral("about:blank"));
- QTRY_COMPARE(spy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 1, 20000);
QCOMPARE(evaluateJavaScriptSyncInWorld(&page, QStringLiteral("1+1"), QWebEngineScript::MainWorld),
QVariant());
QCOMPARE(evaluateJavaScriptSyncInWorld(&page, QStringLiteral("1+1"), QWebEngineScript::ApplicationWorld),
@@ -1938,7 +1954,7 @@ void tst_QWebEnginePage::symmetricUrl()
// loading is _not_ immediate, so the text isn't set just yet.
QVERIFY(toPlainTextSync(view.page()).isEmpty());
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 20000);
QCOMPARE(view.history()->count(), 1);
QCOMPARE(toPlainTextSync(view.page()), QString("Test"));
@@ -2268,6 +2284,41 @@ void tst_QWebEnginePage::setHtmlWithJSAlert()
QCOMPARE(toHtmlSync(&page), html);
}
+void tst_QWebEnginePage::setHtmlWithModuleImport()
+{
+ HttpServer server;
+ connect(&server, &HttpServer::newRequest, [&](HttpReqRep *rr) {
+ if (rr->requestMethod() == "GET" && rr->requestPath() == "/fibonacci.mjs") {
+ rr->setResponseBody("export function fib(n) {\n"
+ " return n < 2 ? n : fib(n-1) + fib(n-2)\n"
+ "}\n");
+ rr->setResponseHeader("Content-Type", "text/javascript");
+ rr->sendResponse();
+ } else {
+ rr->setResponseStatus(404);
+ rr->sendResponse();
+ }
+ });
+ QVERIFY(server.start());
+
+ QString html("<html>\n"
+ " <head>\n"
+ " <script type='module'>\n"
+ " import {fib} from './fibonacci.mjs'\n"
+ " window.fib7 = fib(7)\n"
+ " </script>\n"
+ " </head>\n"
+ " <body></body>\n"
+ "</html>\n");
+
+ QWebEnginePage page;
+ QSignalSpy spy(&page, &QWebEnginePage::loadFinished);
+ page.setHtml(html, server.url());
+ QVERIFY(spy.count() || spy.wait());
+
+ QCOMPARE(evaluateJavaScriptSync(&page, "fib7"), QVariant(13));
+}
+
void tst_QWebEnginePage::baseUrl_data()
{
QTest::addColumn<QString>("html");
diff --git a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp
index 25afa5849..a7a5ba62a 100644
--- a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp
+++ b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp
@@ -40,6 +40,11 @@
#include <QtWebEngineWidgets/qwebengineview.h>
#include <QtWebEngineWidgets/qwebenginedownloaditem.h>
+#if QT_CONFIG(webengine_webchannel)
+#include <QWebChannel>
+#endif
+
+#include <map>
#include <mutex>
class tst_QWebEngineProfile : public QObject
@@ -60,6 +65,8 @@ private Q_SLOTS:
void urlSchemeHandlerStreaming();
void urlSchemeHandlerRequestHeaders();
void urlSchemeHandlerInstallation();
+ void urlSchemeHandlerXhrStatus();
+ void urlSchemeHandlerScriptModule();
void customUserAgent();
void httpAcceptLanguage();
void downloadItem();
@@ -80,6 +87,7 @@ void tst_QWebEngineProfile::initTestCase()
stream.setDefaultPort(8080);
letterto.setSyntax(QWebEngineUrlScheme::Syntax::Path);
aviancarrier.setSyntax(QWebEngineUrlScheme::Syntax::Path);
+ aviancarrier.setFlags(QWebEngineUrlScheme::CorsEnabled);
QWebEngineUrlScheme::registerScheme(foo);
QWebEngineUrlScheme::registerScheme(stream);
QWebEngineUrlScheme::registerScheme(letterto);
@@ -575,6 +583,137 @@ void tst_QWebEngineProfile::urlSchemeHandlerInstallation()
profile.removeUrlScheme("tst");
}
+#if QT_CONFIG(webengine_webchannel)
+class XhrStatusHost : public QObject
+{
+ Q_OBJECT
+public:
+ std::map<QUrl, int> requests;
+
+ bool isReady()
+ {
+ static const auto sig = QMetaMethod::fromSignal(&XhrStatusHost::load);
+ return isSignalConnected(sig);
+ }
+
+Q_SIGNALS:
+ void load(QUrl url);
+
+public Q_SLOTS:
+ void loadFinished(QUrl url, int status)
+ {
+ requests[url] = status;
+ }
+
+private:
+};
+
+class XhrStatusUrlSchemeHandler : public QWebEngineUrlSchemeHandler
+{
+public:
+ void requestStarted(QWebEngineUrlRequestJob *job)
+ {
+ QString path = job->requestUrl().path();
+ if (path == "/") {
+ QBuffer *buffer = new QBuffer(job);
+ buffer->open(QBuffer::ReadWrite);
+ buffer->write(QByteArrayLiteral(R"(
+<html>
+ <body>
+ <script src="qwebchannel.js"></script>
+ <script>
+ new QWebChannel(qt.webChannelTransport, (channel) => {
+ const host = channel.objects.host;
+ host.load.connect((url) => {
+ const xhr = new XMLHttpRequest();
+ xhr.onload = () => { host.loadFinished(url, xhr.status); };
+ xhr.onerror = () => { host.loadFinished(url, -1); };
+ xhr.open("GET", url, true);
+ xhr.send();
+ });
+ });
+ </script>
+ </body>
+</html>
+)"));
+ buffer->seek(0);
+ job->reply("text/html", buffer);
+ } else if (path == "/qwebchannel.js") {
+ QFile *file = new QFile(":/qtwebchannel/qwebchannel.js", job);
+ file->open(QFile::ReadOnly);
+ job->reply("application/javascript", file);
+ } else if (path == "/ok") {
+ QBuffer *buffer = new QBuffer(job);
+ buffer->buffer() = QByteArrayLiteral("ok");
+ job->reply("text/plain", buffer);
+ } else if (path == "/redirect") {
+ QUrl url = job->requestUrl();
+ url.setPath("/ok");
+ job->redirect(url);
+ } else if (path == "/fail") {
+ job->fail(QWebEngineUrlRequestJob::RequestFailed);
+ } else {
+ job->fail(QWebEngineUrlRequestJob::UrlNotFound);
+ }
+ }
+};
+#endif
+
+void tst_QWebEngineProfile::urlSchemeHandlerXhrStatus()
+{
+#if QT_CONFIG(webengine_webchannel)
+ XhrStatusUrlSchemeHandler handler;
+ XhrStatusHost host;
+ QWebEngineProfile profile;
+ QWebEnginePage page(&profile);
+ QWebChannel channel;
+ channel.registerObject("host", &host);
+ profile.installUrlSchemeHandler("aviancarrier", &handler);
+ page.setWebChannel(&channel);
+ page.load(QUrl("aviancarrier:/"));
+ QTRY_VERIFY(host.isReady());
+ host.load(QUrl("aviancarrier:/ok"));
+ host.load(QUrl("aviancarrier:/redirect"));
+ host.load(QUrl("aviancarrier:/fail"));
+ host.load(QUrl("aviancarrier:/notfound"));
+ QTRY_COMPARE(host.requests.size(), 4u);
+ QCOMPARE(host.requests[QUrl("aviancarrier:/ok")], 200);
+ QCOMPARE(host.requests[QUrl("aviancarrier:/redirect")], 200);
+ QCOMPARE(host.requests[QUrl("aviancarrier:/fail")], -1);
+ QCOMPARE(host.requests[QUrl("aviancarrier:/notfound")], -1);
+#else
+ QSKIP("No QtWebChannel");
+#endif
+}
+
+class ScriptsUrlSchemeHandler : public QWebEngineUrlSchemeHandler
+{
+public:
+ void requestStarted(QWebEngineUrlRequestJob *job)
+ {
+ auto *script = new QBuffer(job);
+ script->setData(QByteArrayLiteral("window.test = 'SUCCESS';"));
+ job->reply("text/javascript", script);
+ }
+};
+
+void tst_QWebEngineProfile::urlSchemeHandlerScriptModule()
+{
+ ScriptsUrlSchemeHandler handler;
+ QWebEngineProfile profile;
+ profile.installUrlSchemeHandler("aviancarrier", &handler);
+ QWebEnginePage page(&profile);
+ QSignalSpy loadFinishedSpy(&page, SIGNAL(loadFinished(bool)));
+ page.setHtml(QStringLiteral("<html><head><script src=\"aviancarrier:///\"></script></head><body>Test1</body></html>"));
+ QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QCOMPARE(evaluateJavaScriptSync(&page, QStringLiteral("test")).toString(), QStringLiteral("SUCCESS"));
+
+ loadFinishedSpy.clear();
+ page.setHtml(QStringLiteral("<html><head><script type=\"module\" src=\"aviancarrier:///\"></script></head><body>Test2</body></html>"));
+ QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QCOMPARE(evaluateJavaScriptSync(&page, QStringLiteral("test")).toString(), QStringLiteral("SUCCESS"));
+}
+
void tst_QWebEngineProfile::customUserAgent()
{
QString defaultUserAgent = QWebEngineProfile::defaultProfile()->httpUserAgent();
diff --git a/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp b/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp
index 2e8687d9b..2044f0df4 100644
--- a/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp
+++ b/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp
@@ -180,23 +180,23 @@ void tst_QWebEngineScript::loadEvents()
// Single frame / setHtml
page.setHtml(QStringLiteral("<!DOCTYPE html><html><head><title>mr</title></head><body></body></html>"));
- QTRY_COMPARE(page.spy.count(), 1);
- QCOMPARE(page.spy.takeFirst().value(0).toBool(), true);
+ QTRY_COMPARE_WITH_TIMEOUT(page.spy.count(), 1, 20000);
+ QVERIFY(page.spy.takeFirst().value(0).toBool());
QVERIFY(verifyOrder(page.eval("window.log", QWebEngineScript::MainWorld).toStringList()));
QVERIFY(verifyOrder(page.eval("window.log", QWebEngineScript::ApplicationWorld).toStringList()));
// After discard
page.setLifecycleState(QWebEnginePage::LifecycleState::Discarded);
page.setLifecycleState(QWebEnginePage::LifecycleState::Active);
- QTRY_COMPARE(page.spy.count(), 1);
- QCOMPARE(page.spy.takeFirst().value(0).toBool(), true);
+ QTRY_COMPARE_WITH_TIMEOUT(page.spy.count(), 1, 20000);
+ QVERIFY(page.spy.takeFirst().value(0).toBool());
QVERIFY(verifyOrder(page.eval("window.log", QWebEngineScript::MainWorld).toStringList()));
QVERIFY(verifyOrder(page.eval("window.log", QWebEngineScript::ApplicationWorld).toStringList()));
// Multiple frames
page.load(QUrl("qrc:/resources/test_iframe_main.html"));
- QTRY_COMPARE(page.spy.count(), 1);
- QCOMPARE(page.spy.takeFirst().value(0).toBool(), true);
+ QTRY_COMPARE_WITH_TIMEOUT(page.spy.count(), 1, 20000);
+ QVERIFY(page.spy.takeFirst().value(0).toBool());
QVERIFY(verifyOrder(page.eval("window.log", QWebEngineScript::MainWorld).toStringList()));
QVERIFY(verifyOrder(page.eval("window.log", QWebEngineScript::ApplicationWorld).toStringList()));
QVERIFY(verifyOrder(page.eval("window[0].log", QWebEngineScript::MainWorld).toStringList()));
@@ -207,14 +207,14 @@ void tst_QWebEngineScript::loadEvents()
// Cross-process navigation
page.load(QUrl("chrome://gpu"));
QTRY_COMPARE_WITH_TIMEOUT(page.spy.count(), 1, 20000);
- QCOMPARE(page.spy.takeFirst().value(0).toBool(), true);
+ QVERIFY(page.spy.takeFirst().value(0).toBool());
QVERIFY(verifyOrder(page.eval("window.log", QWebEngineScript::MainWorld).toStringList()));
QVERIFY(verifyOrder(page.eval("window.log", QWebEngineScript::ApplicationWorld).toStringList()));
// Using window.open from JS
QVERIFY(profile.pages.size() == 1);
page.load(QUrl("qrc:/resources/test_window_open.html"));
- QTRY_VERIFY(profile.pages.size() == 2);
+ QTRY_COMPARE(profile.pages.size(), 2);
QTRY_COMPARE(profile.pages.front().spy.count(), 1);
QTRY_COMPARE(profile.pages.back().spy.count(), 1);
QVERIFY(verifyOrder(profile.pages.front().eval("window.log", QWebEngineScript::MainWorld).toStringList()));
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
index 71c4aa9b5..044fac9d7 100644
--- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
+++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
@@ -1531,7 +1531,7 @@ void tst_QWebEngineView::postData()
eventloop.quit();
});
- connect(socket, &QIODevice::readyRead, this, [this, socket, &server, &postData](){
+ connect(socket, &QIODevice::readyRead, this, [socket, &server, &postData](){
QByteArray rawData = socket->readAll();
QStringList lines = QString::fromLocal8Bit(rawData).split("\r\n");
@@ -3125,7 +3125,7 @@ void tst_QWebEngineView::webUIURLs()
view.settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, false);
QSignalSpy loadFinishedSpy(&view, SIGNAL(loadFinished(bool)));
view.load(url);
- QVERIFY(loadFinishedSpy.wait());
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 30000);
QCOMPARE(loadFinishedSpy.takeFirst().at(0).toBool(), supported);
}
diff --git a/tests/auto/widgets/schemes/tst_schemes.cpp b/tests/auto/widgets/schemes/tst_schemes.cpp
index 6da34efd8..1b6093571 100644
--- a/tests/auto/widgets/schemes/tst_schemes.cpp
+++ b/tests/auto/widgets/schemes/tst_schemes.cpp
@@ -103,7 +103,7 @@ void tst_Schemes::unknownUrlSchemePolicy()
});
}
- QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.size(), 2, 15000);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.size(), 2, 60000);
QCOMPARE(page.acceptNavigationRequestCalls, shouldAccept ? 1 : 0);
}
}
diff --git a/tests/auto/widgets/util.h b/tests/auto/widgets/util.h
index f27466225..eba974f33 100644
--- a/tests/auto/widgets/util.h
+++ b/tests/auto/widgets/util.h
@@ -85,7 +85,7 @@ public:
T waitForResult() {
if (!called) {
- timeoutTimer.start(10000);
+ timeoutTimer.start(20000);
eventLoop.exec();
}
return result;