summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-11-03 07:31:53 +0100
committerLiang Qi <liang.qi@qt.io>2017-11-03 07:31:53 +0100
commitb045cf0ab9756a67a5a1037c231199ee9bf2d074 (patch)
tree43831df602905b64552cf31a233127bed9904fc8 /tests
parent0bbaf0d5d7b2d406eda57d40370b00fb79cc0aeb (diff)
parent7f7af6290a63bdab76855da5866881c8a53f045c (diff)
Merge remote-tracking branch 'origin/5.10' into dev
Conflicts: src/3rdparty Change-Id: Ie6b1922db2269e0e0561022162228a7c8609c9ba
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/quick/quick.pro1
-rw-r--r--tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp85
-rw-r--r--tests/auto/widgets/tests.pri1
-rw-r--r--tests/auto/widgets/widgets.pro8
4 files changed, 90 insertions, 5 deletions
diff --git a/tests/auto/quick/quick.pro b/tests/auto/quick/quick.pro
index 75217c1ec..2e6343469 100644
--- a/tests/auto/quick/quick.pro
+++ b/tests/auto/quick/quick.pro
@@ -1,4 +1,3 @@
-include($$QTWEBENGINE_OUT_ROOT/qtwebengine-config.pri)
QT_FOR_CONFIG += webengine-private
TEMPLATE = subdirs
diff --git a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp
index 093bc2e43..400105152 100644
--- a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp
+++ b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp
@@ -49,6 +49,7 @@ private Q_SLOTS:
void urlSchemeHandlers();
void urlSchemeHandlerFailRequest();
void urlSchemeHandlerFailOnRead();
+ void urlSchemeHandlerStreaming();
void customUserAgent();
void httpAcceptLanguage();
void downloadItem();
@@ -178,6 +179,74 @@ public:
}
};
+class StreamingIODevice : public QIODevice {
+ Q_OBJECT
+public:
+ StreamingIODevice(QObject *parent) : QIODevice(parent), m_bytesRead(0), m_bytesAvailable(0)
+ {
+ setOpenMode(QIODevice::ReadOnly);
+ m_timer.start(100, this);
+ }
+ bool isSequential() const override { return true; }
+ qint64 bytesAvailable() const override
+ { return m_bytesAvailable; }
+ bool atEnd() const override
+ {
+ return (m_data.size() >= 1000 && m_bytesRead >= 1000);
+ }
+protected:
+ void timerEvent(QTimerEvent *) override
+ {
+ QMutexLocker lock(&m_mutex);
+ m_bytesAvailable += 200;
+ m_data.append(200, 'c');
+ emit readyRead();
+ if (m_data.size() >= 1000) {
+ m_timer.stop();
+ emit readChannelFinished();
+ }
+ }
+
+ qint64 readData(char *data, qint64 maxlen) override
+ {
+ QMutexLocker lock(&m_mutex);
+ qint64 len = qMin(qint64(m_bytesAvailable), maxlen);
+ if (len) {
+ memcpy(data, m_data.constData() + m_bytesRead, len);
+ m_bytesAvailable -= len;
+ m_bytesRead += len;
+ } else if (m_data.size() > 0)
+ return -1;
+
+ return len;
+ }
+ qint64 writeData(const char *, qint64) override
+ {
+ return 0;
+ }
+
+private:
+ QMutex m_mutex;
+ QByteArray m_data;
+ QBasicTimer m_timer;
+ int m_bytesRead;
+ int m_bytesAvailable;
+};
+
+class StreamingUrlSchemeHandler : public QWebEngineUrlSchemeHandler
+{
+public:
+ StreamingUrlSchemeHandler(QObject *parent = nullptr)
+ : QWebEngineUrlSchemeHandler(parent)
+ {
+ }
+
+ void requestStarted(QWebEngineUrlRequestJob *job)
+ {
+ job->reply("text/plain;charset=utf-8", new StreamingIODevice(job));
+ }
+};
+
static bool loadSync(QWebEngineView *view, const QUrl &url, int timeout = 5000)
{
// Ripped off QTRY_VERIFY.
@@ -310,6 +379,22 @@ void tst_QWebEngineProfile::urlSchemeHandlerFailOnRead()
QCOMPARE(toPlainTextSync(view.page()), QString());
}
+void tst_QWebEngineProfile::urlSchemeHandlerStreaming()
+{
+ StreamingUrlSchemeHandler handler;
+ QWebEngineProfile profile;
+ profile.installUrlSchemeHandler("stream", &handler);
+ QWebEngineView view;
+ QSignalSpy loadFinishedSpy(&view, SIGNAL(loadFinished(bool)));
+ view.setPage(new QWebEnginePage(&profile, &view));
+ view.settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, false);
+ view.load(QUrl(QStringLiteral("stream://whatever")));
+ QVERIFY(loadFinishedSpy.wait());
+ QByteArray result;
+ result.append(1000, 'c');
+ QCOMPARE(toPlainTextSync(view.page()), QString::fromLatin1(result));
+}
+
void tst_QWebEngineProfile::customUserAgent()
{
QString defaultUserAgent = QWebEngineProfile::defaultProfile()->httpUserAgent();
diff --git a/tests/auto/widgets/tests.pri b/tests/auto/widgets/tests.pri
index dc0461e2b..7bd00834c 100644
--- a/tests/auto/widgets/tests.pri
+++ b/tests/auto/widgets/tests.pri
@@ -1,4 +1,3 @@
-include($$QTWEBENGINE_OUT_ROOT/qtwebengine-config.pri)
QT_FOR_CONFIG += webengine-private
TEMPLATE = app
diff --git a/tests/auto/widgets/widgets.pro b/tests/auto/widgets/widgets.pro
index e007df711..fbabdeaad 100644
--- a/tests/auto/widgets/widgets.pro
+++ b/tests/auto/widgets/widgets.pro
@@ -1,10 +1,8 @@
-include($$QTWEBENGINE_OUT_ROOT/qtwebengine-config.pri)
-QT_FOR_CONFIG += webengine-private
+QT_FOR_CONFIG += webengine
TEMPLATE = subdirs
SUBDIRS += \
- qwebengineaccessibility \
qwebenginedefaultsurfaceformat \
qwebenginedownloads \
qwebenginefaviconmanager \
@@ -18,6 +16,10 @@ SUBDIRS += \
qwebenginesettings \
qwebengineview
+qtConfig(accessibility) {
+ SUBDIRS += qwebengineaccessibility
+}
+
qtConfig(spellchecker):!cross_compile {
!qtConfig(native-spellchecker) {
SUBDIRS += qwebenginespellcheck