diff options
author | Michal Klocek <michal.klocek@qt.io> | 2018-08-31 10:29:07 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2018-09-12 10:22:28 +0000 |
commit | a5e680c2ef404693870aedfb10f22ffc83cd38e7 (patch) | |
tree | dcaf1c152848cb5cc0b710e241661b87e83bafa1 /tests/auto/quick/qtbug-70248 | |
parent | 5b5b7d9a5f922ef5fa99cfac41da348e23970032 (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.pro | 5 | ||||
-rw-r--r-- | tests/auto/quick/qtbug-70248/test.qml | 16 | ||||
-rw-r--r-- | tests/auto/quick/qtbug-70248/test.qrc | 5 | ||||
-rw-r--r-- | tests/auto/quick/qtbug-70248/tst_qtbug-70248.cpp | 57 |
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) + |