diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-10-19 11:42:25 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-10-22 17:06:43 +0200 |
commit | 34cd9bb6006b854ef8029448be10822b14a2b7ac (patch) | |
tree | 2d04302f7d5c71b13ef73fc419937047b3a0f218 /tests | |
parent | 404201b9a41564512937a7d96e55d6b095bdcab0 (diff) | |
parent | 6fffee8bfb270eda4f06fa5dbe3a4b190036e90a (diff) |
Merge remote-tracking branch 'origin/5.11' into 5.12
Conflicts:
configure.json
src/3rdparty
src/core/content_browser_client_qt.cpp
src/core/content_browser_client_qt.h
src/core/login_delegate_qt.cpp
src/core/login_delegate_qt.h
src/core/net/url_request_context_getter_qt.cpp
src/core/net/url_request_context_getter_qt.h
src/core/qtwebengine.gni
3rdparty changes:
616a7f558c7e This is expected for us, so don't report it as an error.
c30febceaa1b Do not write <protocol>.json to source directory
9e68e4f2d92c Remove incomplete logic to detect AMD K2 CPU's
e0ed41c8e90a FIXUP: This is expected for us, so don't report it as an error.
f9fd9109b4b7 Fix --single-process --disable-gpu combination not to hit asserts
f305d65cc27e Reduce severity level of messages when kDisableGpu switch is used
5e3e5074bb78 Work around MSVC2017 optimizer bug when printing a page usind Pdfium
34f52ec3bae8 Bump maximum number of custom isolated world ids
f7a2f8153c82 Fix hunspell::NodeReader::affix_id_for_leaf bounds check
1e80090f7044 Fix resolve_proxy service permissions
2e498629651d Add proxy_resolver_manifest
Change-Id: I2b176c80aa315a0ae0a22b5707694fdcd407407b
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/proxypac/proxy.pac | 7 | ||||
-rw-r--r-- | tests/auto/widgets/proxypac/proxypac.pro | 28 | ||||
-rw-r--r-- | tests/auto/widgets/proxypac/proxyserver.cpp | 84 | ||||
-rw-r--r-- | tests/auto/widgets/proxypac/proxyserver.h | 62 | ||||
-rw-r--r-- | tests/auto/widgets/proxypac/tst_proxypac.cpp | 73 | ||||
-rw-r--r-- | tests/auto/widgets/widgets.pro | 3 |
6 files changed, 257 insertions, 0 deletions
diff --git a/tests/auto/widgets/proxypac/proxy.pac b/tests/auto/widgets/proxypac/proxy.pac new file mode 100644 index 000000000..1d29847b9 --- /dev/null +++ b/tests/auto/widgets/proxypac/proxy.pac @@ -0,0 +1,7 @@ +function FindProxyForURL(url, host) +{ + if (shExpMatch(host, "*.proxy1.com")) return "PROXY localhost:5551"; + if (shExpMatch(host, "*.proxy2.com")) return "PROXY localhost:5552"; + return "PROXY proxy.url:8080"; +} + diff --git a/tests/auto/widgets/proxypac/proxypac.pro b/tests/auto/widgets/proxypac/proxypac.pro new file mode 100644 index 000000000..00ae90977 --- /dev/null +++ b/tests/auto/widgets/proxypac/proxypac.pro @@ -0,0 +1,28 @@ +include(../tests.pri) +QT += webengine +HEADERS += proxyserver.h +SOURCES += proxyserver.cpp + +# QTBUG-71229 +xgd_desktop.name=XDG_CURRENT_DESKTOP +xgd_desktop.value=KDE +QT_TOOL_ENV += xgd_desktop + +kde_home.name=KDEHOME +kde_home.value=$$OUT_PWD +QT_TOOL_ENV += kde_home + +PROXY_CONFIG= \ + "[Proxy Settings]" \ + "Proxy Config Script=$$PWD/proxy.pac" \ + "ProxyType=2" + +mkpath($$OUT_PWD/share/config) +KDE_FILE = $$OUT_PWD/share/config/kioslaverc + +!build_pass { + write_file($$KDE_FILE, PROXY_CONFIG) +} + +QMAKE_DISTCLEAN += $$KDE_FILE + diff --git a/tests/auto/widgets/proxypac/proxyserver.cpp b/tests/auto/widgets/proxypac/proxyserver.cpp new file mode 100644 index 000000000..4d38c87c9 --- /dev/null +++ b/tests/auto/widgets/proxypac/proxyserver.cpp @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "proxyserver.h" +#include <QDataStream> +#include <QTcpSocket> +#include <QDebug> + +ProxyServer::ProxyServer(QObject *parent) : QObject(parent), + m_port(5555) +{ + connect(&m_server, &QTcpServer::newConnection, this, &ProxyServer::handleNewConnection); +} + +void ProxyServer::setPort(int port) +{ + m_port = port; +} + +bool ProxyServer::isListening() +{ + return m_server.isListening(); +} + +void ProxyServer::run() +{ + if (!m_server.listen(QHostAddress::LocalHost, m_port)) + qFatal("Could not start the test server"); +} + +void ProxyServer::handleNewConnection() +{ + // do one connection at the time + Q_ASSERT(m_data.isEmpty()); + QTcpSocket *socket = m_server.nextPendingConnection(); + Q_ASSERT(socket); + connect(socket, &QAbstractSocket::disconnected, socket, &QObject::deleteLater); + connect(socket, &QAbstractSocket::readyRead, this, &ProxyServer::handleReadReady); +} + +void ProxyServer::handleReadReady() +{ + QTcpSocket *socket = qobject_cast<QTcpSocket*>(sender()); + Q_ASSERT(socket); + + m_data.append(socket->readAll()); + + //simply wait for whole request + if (!m_data.endsWith("\r\n\r\n")) + return; + + // add fake proxy authetication + socket->write("HTTP/1.1 407 Proxy Auth Required\nProxy-Authenticate: " + "Basic realm=\"Proxy requires authentication\"\r\n\r\n"); + + m_data.clear(); + socket->disconnectFromHost(); + emit requestReceived(); +} diff --git a/tests/auto/widgets/proxypac/proxyserver.h b/tests/auto/widgets/proxypac/proxyserver.h new file mode 100644 index 000000000..ea68286a2 --- /dev/null +++ b/tests/auto/widgets/proxypac/proxyserver.h @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef PROXY_SERVER_H +#define PROXY_SERVER_H + +#include <QObject> +#include <QTcpServer> + +class ProxyServer : public QObject +{ + Q_OBJECT + +public: + explicit ProxyServer(QObject *parent = nullptr); + + void setPort(int port); + bool isListening(); + +signals: + void requestReceived(); + +public slots: + void run(); + +private slots: + void handleNewConnection(); + void handleReadReady(); + +private: + int m_port; + QByteArray m_data; + QTcpServer m_server; + +}; + +#endif // PROXY_SERVER_H diff --git a/tests/auto/widgets/proxypac/tst_proxypac.cpp b/tests/auto/widgets/proxypac/tst_proxypac.cpp new file mode 100644 index 000000000..f9340341b --- /dev/null +++ b/tests/auto/widgets/proxypac/tst_proxypac.cpp @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qtwebengineglobal.h" +#include "proxyserver.h" +#include <QTest> +#include <QSignalSpy> +#include <QWebEngineProfile> +#include <QWebEnginePage> +#include <QNetworkProxy> + + +class tst_ProxyPac : public QObject { + Q_OBJECT +public: + tst_ProxyPac(){} + +private slots: + void proxypac(); +}; + +void tst_ProxyPac::proxypac() +{ + ProxyServer proxyServer1; + proxyServer1.setPort(5551); + proxyServer1.run(); + QSignalSpy proxySpy1(&proxyServer1, &ProxyServer::requestReceived); + + ProxyServer proxyServer2; + proxyServer2.setPort(5552); + proxyServer2.run(); + QSignalSpy proxySpy2(&proxyServer2, &ProxyServer::requestReceived); + + QTRY_VERIFY2(proxyServer1.isListening(), "Could not setup proxy server 1"); + QTRY_VERIFY2(proxyServer2.isListening(), "Could not setup proxy server 2"); + + QWebEngineProfile profile; + QWebEnginePage page(&profile); + page.load(QUrl("http://test.proxy1.com")); + QTRY_COMPARE(proxySpy1.count() >= 1, true); + QVERIFY(proxySpy2.count() == 0); + page.load(QUrl("http://test.proxy2.com")); + QTRY_COMPARE(proxySpy2.count() >= 1 , true); +} + +#include "tst_proxypac.moc" +QTEST_MAIN(tst_ProxyPac) + diff --git a/tests/auto/widgets/widgets.pro b/tests/auto/widgets/widgets.pro index 05a4bfa59..eec8bb389 100644 --- a/tests/auto/widgets/widgets.pro +++ b/tests/auto/widgets/widgets.pro @@ -27,6 +27,9 @@ qtConfig(webengine-printing-and-pdf) { SUBDIRS += printing } +# QTBUG-71229 +linux:!boot2qt: SUBDIRS += proxypac + qtConfig(webengine-spellchecker):!cross_compile { !qtConfig(webengine-native-spellchecker) { SUBDIRS += spellchecking |