summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2025-08-06 13:11:09 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2025-08-26 08:46:13 +0200
commitb02b9fb4346bd99164256f43d02b4bd85637b11b (patch)
tree3a5f1c263c9275d1de42c1c697e8f75d76e7c83e /src
parent8768693c8d45d7c4d99ebc51f226d1baae7a1af1 (diff)
Remove unnecessary QQmlEngine usage
Reverts most of f5fbc34fc16fc9c6e7f7e8bbbf60f5b343b9466d, relying on better implicit QML conversion since. Fixes: QTBUG-138881 Pick-to: 6.10 6.9 6.8 Change-Id: Ic23579e421f737b9a4d85c7e4f1a4019323c4be9 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/core/api/qwebenginescriptcollection.h1
-rw-r--r--src/webenginequick/CMakeLists.txt2
-rw-r--r--src/webenginequick/api/qquickwebengineforeigntypes_p.h2
-rw-r--r--src/webenginequick/api/qquickwebengineprofile.cpp18
-rw-r--r--src/webenginequick/api/qquickwebengineprofile.h1
-rw-r--r--src/webenginequick/api/qquickwebengineprofileprototype.cpp1
-rw-r--r--src/webenginequick/api/qquickwebenginescriptcollection.cpp91
-rw-r--r--src/webenginequick/api/qquickwebenginescriptcollection_p.h17
-rw-r--r--src/webenginequick/api/qquickwebenginescriptcollection_p_p.h38
-rw-r--r--src/webenginequick/api/qquickwebenginesingleton.cpp8
-rw-r--r--src/webenginequick/api/qquickwebengineview.cpp14
11 files changed, 19 insertions, 174 deletions
diff --git a/src/core/api/qwebenginescriptcollection.h b/src/core/api/qwebenginescriptcollection.h
index a2733f99a..82df7ab7d 100644
--- a/src/core/api/qwebenginescriptcollection.h
+++ b/src/core/api/qwebenginescriptcollection.h
@@ -35,7 +35,6 @@ private:
friend class QWebEngineProfilePrivate;
friend class QQuickWebEngineProfilePrivate;
friend class QQuickWebEngineViewPrivate;
- friend class QQuickWebEngineScriptCollectionPrivate;
QWebEngineScriptCollection(QWebEngineScriptCollectionPrivate *);
QScopedPointer<QWebEngineScriptCollectionPrivate> d;
diff --git a/src/webenginequick/CMakeLists.txt b/src/webenginequick/CMakeLists.txt
index 0476ba8be..12b3197d5 100644
--- a/src/webenginequick/CMakeLists.txt
+++ b/src/webenginequick/CMakeLists.txt
@@ -24,7 +24,7 @@ qt_internal_add_qml_module(WebEngineQuick
api/qquickwebenginefaviconprovider_p_p.h
api/qquickwebenginenewwindowrequest.cpp api/qquickwebenginenewwindowrequest_p.h
api/qquickwebengineprofile.cpp api/qquickwebengineprofile.h api/qquickwebengineprofile_p.h
- api/qquickwebenginescriptcollection.cpp api/qquickwebenginescriptcollection_p.h api/qquickwebenginescriptcollection_p_p.h
+ api/qquickwebenginescriptcollection.cpp api/qquickwebenginescriptcollection_p.h
api/qquickwebenginesettings.cpp api/qquickwebenginesettings_p.h
api/qquickwebenginesingleton.cpp api/qquickwebenginesingleton_p.h
api/qquickwebenginetouchhandleprovider.cpp
diff --git a/src/webenginequick/api/qquickwebengineforeigntypes_p.h b/src/webenginequick/api/qquickwebengineforeigntypes_p.h
index c2892d33c..6e9484370 100644
--- a/src/webenginequick/api/qquickwebengineforeigntypes_p.h
+++ b/src/webenginequick/api/qquickwebengineforeigntypes_p.h
@@ -118,10 +118,10 @@ struct ForeignWebEngineScript
{
Q_GADGET
QML_FOREIGN(QWebEngineScript)
+ QML_STRUCTURED_VALUE
QML_NAMED_ELEMENT(webEngineScript)
QML_ADDED_IN_VERSION(1, 1)
QML_EXTRA_VERSION(2, 0)
- QML_UNCREATABLE("")
};
struct ForeignWebEngineHistory
diff --git a/src/webenginequick/api/qquickwebengineprofile.cpp b/src/webenginequick/api/qquickwebengineprofile.cpp
index 80e4ec5ac..51996b6d9 100644
--- a/src/webenginequick/api/qquickwebengineprofile.cpp
+++ b/src/webenginequick/api/qquickwebengineprofile.cpp
@@ -6,7 +6,6 @@
#include "qquickwebenginedownloadrequest.h"
#include "qquickwebenginesettings_p.h"
#include "qquickwebenginescriptcollection_p.h"
-#include "qquickwebenginescriptcollection_p_p.h"
#include "qquickwebengineview_p_p.h"
#include "profile_adapter.h"
@@ -23,7 +22,6 @@
#include <QtCore/qdir.h>
#include <QtCore/qfileinfo.h>
-#include <QtQml/qqmlcontext.h>
#include <QtQml/qqmlengine.h>
#include <QtQml/qqmlinfo.h>
@@ -332,16 +330,12 @@ void QQuickWebEngineProfilePrivate::clearHttpCacheCompleted()
QQuickWebEngineScriptCollection *QQuickWebEngineProfilePrivate::getUserScripts()
{
- Q_Q(QQuickWebEngineProfile);
if (!m_scriptCollection)
m_scriptCollection.reset(
new QQuickWebEngineScriptCollection(
- new QQuickWebEngineScriptCollectionPrivate(
+ new QWebEngineScriptCollection(
new QWebEngineScriptCollectionPrivate(
- m_profileAdapter->userResourceController()))));
-
- if (!m_scriptCollection->qmlEngine())
- m_scriptCollection->setQmlEngine(qmlEngine(q));
+ profileAdapter()->userResourceController()))));
return m_scriptCollection.data();
}
@@ -1336,14 +1330,6 @@ QList<QWebEnginePermission> QQuickWebEngineProfile::listPermissionsForPermission
return d->profileAdapter()->listPermissions(QUrl(), permissionType);
}
-void QQuickWebEngineProfile::ensureQmlContext(const QObject *object)
-{
- if (!qmlContext(this)) {
- auto engine = qmlEngine(object);
- QQmlEngine::setContextForObject(this, new QQmlContext(engine, engine));
- }
-}
-
QT_END_NAMESPACE
#include "moc_qquickwebengineprofile.cpp"
diff --git a/src/webenginequick/api/qquickwebengineprofile.h b/src/webenginequick/api/qquickwebengineprofile.h
index 0995538be..b4e623cbc 100644
--- a/src/webenginequick/api/qquickwebengineprofile.h
+++ b/src/webenginequick/api/qquickwebengineprofile.h
@@ -168,7 +168,6 @@ private:
Q_DECLARE_PRIVATE(QQuickWebEngineProfile)
QQuickWebEngineProfile(QQuickWebEngineProfilePrivate *, QObject *parent = nullptr);
QQuickWebEngineSettings *settings() const;
- void ensureQmlContext(const QObject *object);
friend class FaviconImageRequester;
friend class QQuickWebEngineSingleton;
diff --git a/src/webenginequick/api/qquickwebengineprofileprototype.cpp b/src/webenginequick/api/qquickwebengineprofileprototype.cpp
index d32d63ce7..dcd8f2b9e 100644
--- a/src/webenginequick/api/qquickwebengineprofileprototype.cpp
+++ b/src/webenginequick/api/qquickwebengineprofileprototype.cpp
@@ -336,7 +336,6 @@ void QQuickWebEngineProfilePrototype::componentComplete()
d_ptr->profile.reset(new QQuickWebEngineProfile(
new QQuickWebEngineProfilePrivate(profileAdapter), this->parent()));
- d_ptr->profile->ensureQmlContext(this);
d_ptr->m_isComponentComplete = true;
}
diff --git a/src/webenginequick/api/qquickwebenginescriptcollection.cpp b/src/webenginequick/api/qquickwebenginescriptcollection.cpp
index 546633fb1..2283291c8 100644
--- a/src/webenginequick/api/qquickwebenginescriptcollection.cpp
+++ b/src/webenginequick/api/qquickwebenginescriptcollection.cpp
@@ -2,11 +2,8 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qquickwebenginescriptcollection_p.h"
-#include "qquickwebenginescriptcollection_p_p.h"
#include <QtWebEngineCore/qwebenginescriptcollection.h>
#include <QtWebEngineCore/private/qwebenginescriptcollection_p.h>
-#include <QtQml/qqmlinfo.h>
-#include <QtQml/qqmlengine.h>
/*!
\qmltype WebEngineScriptCollection
@@ -63,52 +60,8 @@
*/
-QWebEngineScript parseScript(const QJSValue &value, bool *ok)
-{
- QWebEngineScript s;
- if (ok)
- *ok = false;
-
- if (value.isObject()) {
-
- if (value.hasProperty(QStringLiteral("name")))
- s.setName(value.property(QStringLiteral("name")).toString());
-
- if (value.hasProperty(QStringLiteral("sourceUrl")))
- s.setSourceUrl(value.property(QStringLiteral("sourceUrl")).toString());
-
- if (value.hasProperty(QStringLiteral("injectionPoint")))
- s.setInjectionPoint(QWebEngineScript::InjectionPoint(
- value.property(QStringLiteral("injectionPoint")).toUInt()));
-
- if (value.hasProperty(QStringLiteral("sourceCode")))
- s.setSourceCode(value.property(QStringLiteral("sourceCode")).toString());
-
- if (value.hasProperty(QStringLiteral("worldId")))
- s.setWorldId(QWebEngineScript::ScriptWorldId(
- value.property(QStringLiteral("worldId")).toUInt()));
-
- if (value.hasProperty(QStringLiteral("runOnSubframes")))
- s.setRunsOnSubFrames(value.property(QStringLiteral("runOnSubframes")).toBool());
-
- if (ok)
- *ok = true;
- }
- return s;
-}
-
-QQuickWebEngineScriptCollectionPrivate::QQuickWebEngineScriptCollectionPrivate(QWebEngineScriptCollectionPrivate *p)
- : QWebEngineScriptCollection(p)
-{
-
-}
-
-QQuickWebEngineScriptCollectionPrivate::~QQuickWebEngineScriptCollectionPrivate()
-{
-}
-
-QQuickWebEngineScriptCollection::QQuickWebEngineScriptCollection(QQuickWebEngineScriptCollectionPrivate *p)
- : d(p)
+QQuickWebEngineScriptCollection::QQuickWebEngineScriptCollection(QWebEngineScriptCollection *collection)
+ : d(collection)
{
}
@@ -188,37 +141,13 @@ void QQuickWebEngineScriptCollection::clear()
This property holds a JavaScript array of user script objects. The array can
take webEngineScript basic type or a JavaScript dictionary as values.
*/
-QJSValue QQuickWebEngineScriptCollection::collection() const
+QList<QWebEngineScript> QQuickWebEngineScriptCollection::collection() const
{
- if (!d->m_qmlEngine) {
- qmlWarning(this) << "Scripts collection doesn't have QML engine set! Undefined value is returned.";
- return QJSValue();
- }
-
- const QList<QWebEngineScript> &list = d->toList();
- QJSValue scriptArray = d->m_qmlEngine->newArray(list.size());
- uint32_t i = 0;
- for (const auto &val : list)
- scriptArray.setProperty(i++, d->m_qmlEngine->toScriptValue(val));
- return scriptArray;
+ return d->toList();
}
-void QQuickWebEngineScriptCollection::setCollection(const QJSValue &scripts)
+void QQuickWebEngineScriptCollection::setCollection(const QList<QWebEngineScript> &scriptList)
{
- if (!scripts.isArray())
- return;
-
- QList<QWebEngineScript> scriptList;
- quint32 length = scripts.property(QStringLiteral("length")).toUInt();
- for (quint32 i = 0; i < length; ++i) {
- bool ok;
- QWebEngineScript s = parseScript(scripts.property(i), &ok);
- if (!ok) {
- qmlWarning(this) << "Unsupported script type";
- return;
- }
- scriptList.append(s);
- }
if (scriptList != d->toList()) {
clear();
insert(scriptList);
@@ -226,14 +155,4 @@ void QQuickWebEngineScriptCollection::setCollection(const QJSValue &scripts)
}
}
-QQmlEngine* QQuickWebEngineScriptCollection::qmlEngine()
-{
- return d->m_qmlEngine;
-}
-
-void QQuickWebEngineScriptCollection::setQmlEngine(QQmlEngine *engine)
-{
- Q_ASSERT(engine);
- d->m_qmlEngine = engine;
-}
#include "moc_qquickwebenginescriptcollection_p.cpp"
diff --git a/src/webenginequick/api/qquickwebenginescriptcollection_p.h b/src/webenginequick/api/qquickwebenginescriptcollection_p.h
index fbcc8dde7..0807283e7 100644
--- a/src/webenginequick/api/qquickwebenginescriptcollection_p.h
+++ b/src/webenginequick/api/qquickwebenginescriptcollection_p.h
@@ -18,19 +18,18 @@
#include <QtCore/qlist.h>
#include <QtCore/qobject.h>
#include <QtCore/qscopedpointer.h>
-#include <QtQml/qjsvalue.h>
+#include <QtCore/qvariant.h>
#include <QtWebEngineCore/qwebenginescript.h>
#include <QtWebEngineQuick/private/qtwebenginequickglobal_p.h>
QT_BEGIN_NAMESPACE
-class QQmlEngine;
-class QQuickWebEngineScriptCollectionPrivate;
+class QWebEngineScriptCollection;
class Q_WEBENGINEQUICK_EXPORT QQuickWebEngineScriptCollection : public QObject
{
Q_OBJECT
public:
- Q_PROPERTY(QJSValue collection READ collection WRITE setCollection NOTIFY collectionChanged)
+ Q_PROPERTY(QList<QWebEngineScript> collection READ collection WRITE setCollection NOTIFY collectionChanged)
~QQuickWebEngineScriptCollection();
Q_INVOKABLE bool contains(const QWebEngineScript &value) const;
@@ -40,20 +39,18 @@ public:
Q_INVOKABLE bool remove(const QWebEngineScript &);
Q_INVOKABLE void clear();
- QJSValue collection() const;
- void setCollection(const QJSValue &scripts);
+ QList<QWebEngineScript> collection() const;
+ void setCollection(const QList<QWebEngineScript> &scripts);
Q_SIGNALS:
void collectionChanged();
private:
Q_DISABLE_COPY(QQuickWebEngineScriptCollection)
- QQuickWebEngineScriptCollection(QQuickWebEngineScriptCollectionPrivate *d);
- QScopedPointer<QQuickWebEngineScriptCollectionPrivate> d;
+ QQuickWebEngineScriptCollection(QWebEngineScriptCollection *d);
+ QScopedPointer<QWebEngineScriptCollection> d;
friend class QQuickWebEngineProfilePrivate;
friend class QQuickWebEngineViewPrivate;
- QQmlEngine* qmlEngine();
- void setQmlEngine(QQmlEngine *engine);
};
QT_END_NAMESPACE
diff --git a/src/webenginequick/api/qquickwebenginescriptcollection_p_p.h b/src/webenginequick/api/qquickwebenginescriptcollection_p_p.h
deleted file mode 100644
index 54a9bc16d..000000000
--- a/src/webenginequick/api/qquickwebenginescriptcollection_p_p.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (C) 2022 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
-
-#ifndef QQUICKWEBENGINESCRIPTCOLLECTIONPRIVATE_H
-#define QQUICKWEBENGINESCRIPTCOLLECTIONPRIVATE_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtWebEngineCore/qwebenginescriptcollection.h>
-
-#include <QPointer>
-
-QT_BEGIN_NAMESPACE
-
-class QQmlEngine;
-
-class QQuickWebEngineScriptCollectionPrivate : public QWebEngineScriptCollection
-{
-public:
- QQuickWebEngineScriptCollectionPrivate(QWebEngineScriptCollectionPrivate *d);
- ~QQuickWebEngineScriptCollectionPrivate();
-
- Q_DISABLE_COPY(QQuickWebEngineScriptCollectionPrivate)
- QPointer<QQmlEngine> m_qmlEngine;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/webenginequick/api/qquickwebenginesingleton.cpp b/src/webenginequick/api/qquickwebenginesingleton.cpp
index 215d46896..45f306820 100644
--- a/src/webenginequick/api/qquickwebenginesingleton.cpp
+++ b/src/webenginequick/api/qquickwebenginesingleton.cpp
@@ -54,13 +54,7 @@ QQuickWebEngineSettings *QQuickWebEngineSingleton::settings() const
*/
QQuickWebEngineProfile *QQuickWebEngineSingleton::defaultProfile() const
{
- auto profile = QQuickWebEngineProfile::defaultProfile();
-
- // MEMO first ever call to default profile will create one without context
- // it needs something to get qml engine from (WebEngine singleton is created in qml land)
- profile->ensureQmlContext(this);
-
- return profile;
+ return QQuickWebEngineProfile::defaultProfile();
}
/*!
diff --git a/src/webenginequick/api/qquickwebengineview.cpp b/src/webenginequick/api/qquickwebengineview.cpp
index 619cbaef6..8d95e9239 100644
--- a/src/webenginequick/api/qquickwebengineview.cpp
+++ b/src/webenginequick/api/qquickwebengineview.cpp
@@ -10,7 +10,6 @@
#include "qquickwebengineprofile.h"
#include "qquickwebengineprofile_p.h"
#include "qquickwebenginescriptcollection_p.h"
-#include "qquickwebenginescriptcollection_p_p.h"
#include "qquickwebenginesettings_p.h"
#include "qquickwebenginetouchhandleprovider_p_p.h"
#include "qquickwebenginetouchhandle_p.h"
@@ -345,14 +344,9 @@ void QQuickWebEngineViewPrivate::initializeProfile()
Q_ASSERT(!adapter->isInitialized());
m_profileInitialized = true;
- if (!m_profile) {
+ if (!m_profile)
m_profile = QQuickWebEngineProfile::defaultProfile();
- // MEMO first ever call to default profile will create one without context
- // it needs something to get qml engine from (and view is created in qml land)
- m_profile->ensureQmlContext(q_ptr);
- }
-
m_profile->d_ptr->addWebContentsAdapterClient(this);
m_settings.reset(new QQuickWebEngineSettings(m_profile->settings()));
adapter->setClient(this);
@@ -1161,17 +1155,13 @@ void QQuickWebEngineViewPrivate::updateEditActions()
QQuickWebEngineScriptCollection *QQuickWebEngineViewPrivate::getUserScripts()
{
- Q_Q(QQuickWebEngineView);
if (!m_scriptCollection)
m_scriptCollection.reset(
new QQuickWebEngineScriptCollection(
- new QQuickWebEngineScriptCollectionPrivate(
+ new QWebEngineScriptCollection(
new QWebEngineScriptCollectionPrivate(
profileAdapter()->userResourceController(), adapter))));
- if (!m_scriptCollection->qmlEngine())
- m_scriptCollection->setQmlEngine(qmlEngine(q));
-
return m_scriptCollection.data();
}