summaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qtbug-70248
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@qt.io>2018-08-31 10:29:07 +0200
committerMichal Klocek <michal.klocek@qt.io>2018-09-12 10:22:28 +0000
commita5e680c2ef404693870aedfb10f22ffc83cd38e7 (patch)
treedcaf1c152848cb5cc0b710e241661b87e83bafa1 /tests/auto/quick/qtbug-70248
parent5b5b7d9a5f922ef5fa99cfac41da348e23970032 (diff)
Fix issues with qml bindings accessing non-existing adapter
We have currently two levels of initialization for WebEngineView: the profile initialization and the adapter initialization. The adapter initialization is delayed to first navigation request to pick the right initial site instance and avoid creating dummy/blank WebContents, which in turn would start unnecessary render process. Profile initialization is delayed to make sure we avoid unnecessary default profile creations. Created profiles use filestorage. Unfortunately qml will call QQuickItem::componentComplete() only when the root element is completed and the bindings can be already in use by that time. Profile initialization has to take place before adapter initialization. Construct adapter together with WebEngineView, but create and initialize profile before adapter initialization. Go through WebEngineView and fix emitting signals based on adapter initialization. Most of the signals are emitted on initializationFinished(). Task-number: QTBUG-70248 Change-Id: I2acd8bff761c692a360733cbf537de53e1295695 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests/auto/quick/qtbug-70248')
-rw-r--r--tests/auto/quick/qtbug-70248/qtbug-70248.pro5
-rw-r--r--tests/auto/quick/qtbug-70248/test.qml16
-rw-r--r--tests/auto/quick/qtbug-70248/test.qrc5
-rw-r--r--tests/auto/quick/qtbug-70248/tst_qtbug-70248.cpp57
4 files changed, 83 insertions, 0 deletions
diff --git a/tests/auto/quick/qtbug-70248/qtbug-70248.pro b/tests/auto/quick/qtbug-70248/qtbug-70248.pro
new file mode 100644
index 000000000..e1b18bc16
--- /dev/null
+++ b/tests/auto/quick/qtbug-70248/qtbug-70248.pro
@@ -0,0 +1,5 @@
+include(../tests.pri)
+QT += webengine webengine-private
+
+RESOURCES += \
+ test.qrc
diff --git a/tests/auto/quick/qtbug-70248/test.qml b/tests/auto/quick/qtbug-70248/test.qml
new file mode 100644
index 000000000..35962aff5
--- /dev/null
+++ b/tests/auto/quick/qtbug-70248/test.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.9
+import QtQuick.Window 2.2
+import QtWebEngine 1.3
+
+Window {
+ visible: true
+ width: 640
+ height: 480
+
+ property var url: view && view.url
+
+ WebEngineView {
+ id: view
+ anchors.fill: parent
+ }
+}
diff --git a/tests/auto/quick/qtbug-70248/test.qrc b/tests/auto/quick/qtbug-70248/test.qrc
new file mode 100644
index 000000000..83fea5eb0
--- /dev/null
+++ b/tests/auto/quick/qtbug-70248/test.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>test.qml</file>
+ </qresource>
+</RCC>
diff --git a/tests/auto/quick/qtbug-70248/tst_qtbug-70248.cpp b/tests/auto/quick/qtbug-70248/tst_qtbug-70248.cpp
new file mode 100644
index 000000000..3dffa1d84
--- /dev/null
+++ b/tests/auto/quick/qtbug-70248/tst_qtbug-70248.cpp
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** 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 <QQuickWebEngineProfile>
+#include <QQmlApplicationEngine>
+#include <QQuickWindow>
+#include <QTest>
+#include <QSignalSpy>
+
+class tst_qtbug_70248: public QObject {
+ Q_OBJECT
+public:
+ tst_qtbug_70248(){}
+private slots:
+ void test();
+};
+
+void tst_qtbug_70248::test()
+{
+ QtWebEngine::initialize();
+ QScopedPointer<QQmlApplicationEngine> engine;
+ QQuickWebEngineProfile::defaultProfile()->setOffTheRecord(true);
+ engine.reset(new QQmlApplicationEngine());
+ engine->load(QUrl(QStringLiteral("qrc:/test.qml")));
+ QQuickWindow *widnow = qobject_cast<QQuickWindow*>(engine->rootObjects().first());
+ QVERIFY(widnow);
+}
+
+#include "tst_qtbug-70248.moc"
+QTEST_MAIN(tst_qtbug_70248)
+