From f613095208911cfa6b8609f8b87b4984dc55e69c Mon Sep 17 00:00:00 2001 From: Michal Klocek Date: Tue, 25 Aug 2020 11:37:34 +0200 Subject: Reuse qwebenginescript in qml Reuse core class and adopt api: * add missing setUrlSource to c++ class * fix typing for setRunsOnSubFrames * remove all invokable from setters in qml, we use properties for that anyway. * remove invokable toString , since we have debug stream operator in c++ [ChangeLog] In qml websetttings.runOnSubframes is now websettings.runsOnSubFrames Change-Id: Iba822a7aa6a59940484c972726d710a1b66cb20d Reviewed-by: Allan Sandfeld Jensen --- src/core/api/qwebenginescript.cpp | 36 ++ src/core/api/qwebenginescript.h | 25 +- .../renderer_host/user_resource_controller_host.h | 1 + src/webengine/api/qquickwebenginescript.cpp | 387 --------------------- src/webengine/api/qquickwebenginescript.h | 111 ------ .../api/qquickwebenginescriptcollection.cpp | 52 +-- .../api/qquickwebenginescriptcollection.h | 16 +- .../api/qquickwebenginescriptcollection_p.h | 14 +- src/webengine/api/qquickwebenginesingleton.cpp | 4 +- src/webengine/api/qquickwebenginesingleton_p.h | 6 +- src/webengine/api/qquickwebengineview.cpp | 26 +- src/webengine/api/qquickwebengineview_p.h | 1 - src/webengine/module.pro | 2 - src/webengine/plugin/plugin.cpp | 5 +- 14 files changed, 120 insertions(+), 566 deletions(-) delete mode 100644 src/webengine/api/qquickwebenginescript.cpp delete mode 100644 src/webengine/api/qquickwebenginescript.h (limited to 'src') diff --git a/src/core/api/qwebenginescript.cpp b/src/core/api/qwebenginescript.cpp index e56017166..e3917566a 100644 --- a/src/core/api/qwebenginescript.cpp +++ b/src/core/api/qwebenginescript.cpp @@ -41,9 +41,12 @@ #include "user_script.h" #include +#include using QtWebEngineCore::UserScript; +QT_BEGIN_NAMESPACE + /*! \class QWebEngineScript \inmodule QtWebEngineCore @@ -172,6 +175,37 @@ void QWebEngineScript::setName(const QString &scriptName) d->setName(scriptName); } + +QUrl QWebEngineScript::sourceUrl() const +{ + return d->sourceUrl(); +} + +void QWebEngineScript::setSourceUrl(const QUrl &url) +{ + if (url == sourceUrl()) + return; + + d->setSourceUrl(url); + + QFile file; + if (url.scheme().compare(QLatin1String("qrc"), Qt::CaseInsensitive) == 0) { + if (url.authority().isEmpty()) + file.setFileName(QLatin1Char(':') + url.path()); + return; + } else { + file.setFileName(url.toLocalFile()); + } + + if (!file.open(QIODevice::ReadOnly)) { + qWarning() << "Can't open user script " << url; + return; + } + + QString source = QString::fromUtf8(file.readAll()); + setSourceCode(source); +} + /*! Returns the source of the script. */ @@ -291,3 +325,5 @@ QDebug operator<<(QDebug d, const QWebEngineScript &script) return d.space(); } #endif + +QT_END_NAMESPACE diff --git a/src/core/api/qwebenginescript.h b/src/core/api/qwebenginescript.h index 628e24ed5..42a98e3e2 100644 --- a/src/core/api/qwebenginescript.h +++ b/src/core/api/qwebenginescript.h @@ -41,9 +41,9 @@ #define QWEBENGINESCRIPT_H #include - -#include -#include +#include +#include +#include namespace QtWebEngineCore { class UserScript; @@ -52,19 +52,33 @@ class UserScript; QT_BEGIN_NAMESPACE class Q_WEBENGINECORE_EXPORT QWebEngineScript { + + Q_GADGET + Q_PROPERTY(QString name READ name WRITE setName FINAL) + Q_PROPERTY(QUrl sourceUrl READ sourceUrl WRITE setSourceUrl FINAL) + Q_PROPERTY(QString sourceCode READ sourceCode WRITE setSourceCode FINAL) + Q_PROPERTY(InjectionPoint injectionPoint READ injectionPoint WRITE setInjectionPoint FINAL) + Q_PROPERTY(quint32 worldId READ worldId WRITE setWorldId FINAL) + Q_PROPERTY(bool runsOnSubFrames READ runsOnSubFrames WRITE setRunsOnSubFrames FINAL) + public: + enum InjectionPoint { Deferred, DocumentReady, DocumentCreation }; + Q_ENUM(InjectionPoint) + enum ScriptWorldId { MainWorld = 0, ApplicationWorld, UserWorld }; + Q_ENUM(ScriptWorldId) + QWebEngineScript(); QWebEngineScript(const QWebEngineScript &other); ~QWebEngineScript(); @@ -76,6 +90,9 @@ public: QString name() const; void setName(const QString &); + QUrl sourceUrl() const; + void setSourceUrl(const QUrl &url); + QString sourceCode() const; void setSourceCode(const QString &); @@ -93,8 +110,8 @@ public: { return !operator==(other); } void swap(QWebEngineScript &other) { qSwap(d, other.d); } - private: + friend class QQuickWebEngineScriptCollectionPrivate; friend class QWebEngineScriptCollectionPrivate; friend class QWebEngineScriptCollection; QWebEngineScript(const QtWebEngineCore::UserScript &); diff --git a/src/core/renderer_host/user_resource_controller_host.h b/src/core/renderer_host/user_resource_controller_host.h index 7b89cb893..76954e0cc 100644 --- a/src/core/renderer_host/user_resource_controller_host.h +++ b/src/core/renderer_host/user_resource_controller_host.h @@ -64,6 +64,7 @@ class WebContents; namespace QtWebEngineCore { +class UserScript; class WebContentsAdapter; class Q_WEBENGINECORE_PRIVATE_EXPORT UserResourceControllerHost diff --git a/src/webengine/api/qquickwebenginescript.cpp b/src/webengine/api/qquickwebenginescript.cpp deleted file mode 100644 index 81fd0b925..000000000 --- a/src/webengine/api/qquickwebenginescript.cpp +++ /dev/null @@ -1,387 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 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:LGPL$ -** 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 Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** 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-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickwebenginescript.h" - -#include -#include -#include -#include -#include "renderer_host/user_resource_controller_host.h" - -using QtWebEngineCore::UserScript; - -QT_BEGIN_NAMESPACE - -/*! - \class QQuickWebEngineScript - \brief Enables the injection of scripts in the JavaScript engine. - \inmodule QtWebEngine - \since 5.9 - - The QQuickWebEngineScript type enables the programmatic injection of so called \e {user scripts} in - the JavaScript engine at different points, determined by injectionPoint, during the loading of - web content. - - Scripts can be executed either in the main JavaScript \e world, along with the rest of the - JavaScript coming from the web contents, or in their own isolated world. While the DOM of the - page can be accessed from any world, JavaScript variables of a function defined in one world are - not accessible from a different one. The worldId property provides some predefined IDs for this - purpose. -*/ - -/*! - \enum QQuickWebEngineScript::InjectionPoint - - The point in the loading process at which the script will be executed. - - \value DocumentCreation - The script will be executed as soon as the document is created. This is not suitable for - any DOM operation. - \value DocumentReady - The script will run as soon as the DOM is ready. This is equivalent to the - \c DOMContentLoaded event firing in JavaScript. - \value Deferred - The script will run when the page load finishes, or 500 ms after the document is ready, - whichever comes first. -*/ - -/*! - \enum QQuickWebEngineScript::ScriptWorldId - - The world ID defining which isolated world the script is executed in. Besides these predefined - IDs custom IDs can be used, but must be integers between \c 0 and \c 256. - - \value MainWorld - The world used by the page's web contents. It can be useful in order to expose custom - functionality to web contents in certain scenarios. - \value ApplicationWorld - The default isolated world used for application level functionality implemented in - JavaScript. - \value UserWorld - The first isolated world to be used by scripts set by users if the application is not - making use of more worlds. As a rule of thumb, if that functionality is exposed to the - application users, each individual script should probably get its own isolated world. -*/ - -/*! - \qmltype WebEngineScript - \instantiates QQuickWebEngineScript - \inqmlmodule QtWebEngine - \since QtWebEngine 1.1 - \brief Enables the programmatic injection of scripts in the JavaScript engine. - - The WebEngineScript type enables the programmatic injection of so called \e {user scripts} in - the JavaScript engine at different points, determined by injectionPoint, during the loading of - web content. - - Scripts can be executed either in the main JavaScript \e world, along with the rest of the - JavaScript coming from the web contents, or in their own isolated world. While the DOM of the - page can be accessed from any world, JavaScript variables of a function defined in one world are - not accessible from a different one. The worldId property provides some predefined IDs for this - purpose. - - The following \l Greasemonkey attributes are supported since Qt 5.8: - \c @exclude, \c @include, \c @name, \c @match, and \c @run-at. - - Use \l{WebEngineView::userScripts}{WebEngineView.userScripts} to access a list of scripts - attached to the web view. -*/ - -/*! - Constructs a new QQuickWebEngineScript with the parent \a parent. -*/ -QQuickWebEngineScript::QQuickWebEngineScript() : d(new QtWebEngineCore::UserScript) { } - -/*! - \internal -*/ -QQuickWebEngineScript::~QQuickWebEngineScript() -{ -} - -QQuickWebEngineScript::QQuickWebEngineScript(const QQuickWebEngineScript &other) : d(other.d) { } - -QQuickWebEngineScript &QQuickWebEngineScript::operator=(const QQuickWebEngineScript &other) -{ - d = other.d; - return *this; -} - -bool QQuickWebEngineScript::operator==(const QQuickWebEngineScript &other) const -{ - return d == other.d || *d == *(other.d); -} - -/*! - Returns the script object as string. -*/ -QString QQuickWebEngineScript::toString() const -{ - if (d->isNull()) - return QStringLiteral("QWebEngineScript()"); - QString ret = QStringLiteral("QWebEngineScript(") % d->name() % QStringLiteral(", "); - switch (d->injectionPoint()) { - case UserScript::DocumentElementCreation: - ret.append(QStringLiteral("WebEngineScript::DocumentCreation, ")); - break; - case UserScript::DocumentLoadFinished: - ret.append(QStringLiteral("WebEngineScript::DocumentReady, ")); - break; - case UserScript::AfterLoad: - ret.append(QStringLiteral("WebEngineScript::Deferred, ")); - break; - } - ret.append(QString::number(d->worldId()) % QStringLiteral(", ") - % (d->runsOnSubFrames() ? QStringLiteral("true") : QStringLiteral("false")) - % QStringLiteral(", ") % d->sourceCode() % QLatin1Char(')')); - return ret; -} - -/*! - \property QQuickWebEngineScript::name - \brief The name of the script. - - Can be useful to retrieve a particular script from - QQuickWebEngineProfile::userScripts. -*/ - -/*! - \qmlproperty string WebEngineScript::name - - The name of the script. Can be useful to retrieve a particular script from - \l{WebEngineView::userScripts}{WebEngineView.userScripts}. -*/ -QString QQuickWebEngineScript::name() const -{ - return d->name(); -} - -/*! - \property QQuickWebEngineScript::sourceUrl - \brief The remote source location of the user script (if any). - - Unlike \l sourceCode, this property allows referring to user scripts that - are not already loaded in memory, for instance, when stored on disk. - - Setting this property will change the \l sourceCode of the script. - - \note At present, only file-based sources are supported. - - \sa QQuickWebEngineScript::sourceCode -*/ - -/*! - \qmlproperty url WebEngineScript::sourceUrl - - This property holds the remote source location of the user script (if any). - - Unlike \l sourceCode, this property allows referring to user scripts that - are not already loaded in memory, for instance, when stored on disk. - - Setting this property will change the \l sourceCode of the script. - - \note At present, only file-based sources are supported. - - \sa sourceCode -*/ -QUrl QQuickWebEngineScript::sourceUrl() const -{ - return d->sourceUrl(); -} - -/*! - \property QQuickWebEngineScript::sourceCode - \brief The JavaScript source code of the user script. - - \sa QQuickWebEngineScript::sourceUrl -*/ - -/*! - \qmlproperty string WebEngineScript::sourceCode - - This property holds the JavaScript source code of the user script. - - \sa sourceUrl -*/ -QString QQuickWebEngineScript::sourceCode() const -{ - return d->sourceCode(); -} - -ASSERT_ENUMS_MATCH(QQuickWebEngineScript::Deferred, UserScript::AfterLoad) -ASSERT_ENUMS_MATCH(QQuickWebEngineScript::DocumentReady, UserScript::DocumentLoadFinished) -ASSERT_ENUMS_MATCH(QQuickWebEngineScript::DocumentCreation, UserScript::DocumentElementCreation) - -/*! - \property QQuickWebEngineScript::injectionPoint - \brief The point in the loading process at which the script will be executed. - - The default value is \c Deferred. -*/ - -/*! - \qmlproperty enumeration WebEngineScript::injectionPoint - - The point in the loading process at which the script will be executed. - The default value is \c Deferred. - - \value WebEngineScript.DocumentCreation - The script will be executed as soon as the document is created. This is not suitable for - any DOM operation. - \value WebEngineScript.DocumentReady - The script will run as soon as the DOM is ready. This is equivalent to the - \c DOMContentLoaded event firing in JavaScript. - \value WebEngineScript.Deferred - The script will run when the page load finishes, or 500 ms after the document is ready, - whichever comes first. -*/ -QQuickWebEngineScript::InjectionPoint QQuickWebEngineScript::injectionPoint() const -{ - return static_cast(d->injectionPoint()); -} - -/*! - \property QQuickWebEngineScript::worldId - \brief The world ID defining which isolated world the script is executed in. -*/ - -/*! - \qmlproperty enumeration WebEngineScript::worldId - - The world ID defining which isolated world the script is executed in. - - \value WebEngineScript.MainWorld - The world used by the page's web contents. It can be useful in order to expose custom - functionality to web contents in certain scenarios. - \value WebEngineScript.ApplicationWorld - The default isolated world used for application level functionality implemented in - JavaScript. - \value WebEngineScript.UserWorld - The first isolated world to be used by scripts set by users if the application is not - making use of more worlds. As a rule of thumb, if that functionality is exposed to the - application users, each individual script should probably get its own isolated world. -*/ -QQuickWebEngineScript::ScriptWorldId QQuickWebEngineScript::worldId() const -{ - return static_cast(d->worldId()); -} - -/*! - \property QQuickWebEngineScript::runOnSubframes - \brief Whether the script is executed on every frame or only on the main frame. - - Set this property to \c true if the script is executed on every frame in the page, or \c false - if it is only run for the main frame. - The default value is \c{false}. -*/ - -/*! - \qmlproperty int WebEngineScript::runOnSubframes - - Set this property to \c true if the script is executed on every frame in the page, or \c false - if it is only ran for the main frame. - The default value is \c{false}. - */ -bool QQuickWebEngineScript::runOnSubframes() const -{ - return d->runsOnSubFrames(); -} - -void QQuickWebEngineScript::setName(const QString &name) -{ - if (name == QQuickWebEngineScript::name()) - return; - d->setName(name); -} - -void QQuickWebEngineScript::setSourceCode(const QString &code) -{ - if (code == sourceCode()) - return; - - // setting the source directly resets the sourceUrl - if (d->sourceUrl() != QUrl()) { - d->setSourceUrl(QUrl()); - } - - d->setSourceCode(code); -} - -void QQuickWebEngineScript::setSourceUrl(const QUrl &url) -{ - if (url == sourceUrl()) - return; - - d->setSourceUrl(url); - - QFile f(QQmlFile::urlToLocalFileOrQrc(url)); - if (!f.open(QIODevice::ReadOnly)) { - qWarning() << "Can't open user script " << url; - return; - } - - QString source = QString::fromUtf8(f.readAll()); - d->setSourceCode(source); -} - -void QQuickWebEngineScript::setInjectionPoint(QQuickWebEngineScript::InjectionPoint injectionPoint) -{ - if (injectionPoint == QQuickWebEngineScript::injectionPoint()) - return; - d->setInjectionPoint(static_cast(injectionPoint)); -} - - -void QQuickWebEngineScript::setWorldId(QQuickWebEngineScript::ScriptWorldId scriptWorldId) -{ - if (scriptWorldId == worldId()) - return; - d->setWorldId(scriptWorldId); -} - - -void QQuickWebEngineScript::setRunOnSubframes(bool on) -{ - if (on == runOnSubframes()) - return; - d->setRunsOnSubFrames(on); -} - -QT_END_NAMESPACE diff --git a/src/webengine/api/qquickwebenginescript.h b/src/webengine/api/qquickwebenginescript.h deleted file mode 100644 index a5f20bc50..000000000 --- a/src/webengine/api/qquickwebenginescript.h +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 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:LGPL$ -** 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 Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** 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-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKWEBENGINESCRIPT_H -#define QQUICKWEBENGINESCRIPT_H - -#include -#include -#include - -namespace QtWebEngineCore { -class UserScript; -} // namespace - -QT_BEGIN_NAMESPACE -class QQuickWebEngineView; - -class Q_WEBENGINE_EXPORT QQuickWebEngineScript -{ - Q_GADGET - Q_PROPERTY(QString name READ name WRITE setName FINAL) - Q_PROPERTY(QUrl sourceUrl READ sourceUrl WRITE setSourceUrl FINAL) - Q_PROPERTY(QString sourceCode READ sourceCode WRITE setSourceCode FINAL) - Q_PROPERTY(InjectionPoint injectionPoint READ injectionPoint WRITE setInjectionPoint FINAL) - Q_PROPERTY(ScriptWorldId worldId READ worldId WRITE setWorldId FINAL) - Q_PROPERTY(bool runOnSubframes READ runOnSubframes WRITE setRunOnSubframes FINAL) - -public: - enum InjectionPoint { - Deferred, - DocumentReady, - DocumentCreation - }; - Q_ENUM(InjectionPoint) - - enum ScriptWorldId { - MainWorld = 0, - ApplicationWorld, - UserWorld - }; - Q_ENUM(ScriptWorldId) - - explicit QQuickWebEngineScript(); - ~QQuickWebEngineScript(); - QQuickWebEngineScript(const QQuickWebEngineScript &other); - QQuickWebEngineScript &operator=(const QQuickWebEngineScript &other); - bool operator==(const QQuickWebEngineScript &other) const; - inline bool operator!=(const QQuickWebEngineScript &other) const { return !operator==(other); } - - QString name() const; - QUrl sourceUrl() const; - QString sourceCode() const; - InjectionPoint injectionPoint() const; - ScriptWorldId worldId() const; - bool runOnSubframes() const; - - Q_INVOKABLE QString toString() const; - Q_INVOKABLE void setName(const QString &name); - Q_INVOKABLE void setSourceUrl(const QUrl &url); - Q_INVOKABLE void setSourceCode(const QString &code); - Q_INVOKABLE void setInjectionPoint(InjectionPoint injectionPoint); - Q_INVOKABLE void setWorldId(ScriptWorldId scriptWorldId); - Q_INVOKABLE void setRunOnSubframes(bool on); - - -private: - QQuickWebEngineScript(const QtWebEngineCore::UserScript &); - QSharedDataPointer d; - friend class QQuickWebEngineProfilePrivate; - friend class QQuickWebEngineViewPrivate; - friend class QQuickWebEngineScriptCollectionPrivate; -}; -QT_END_NAMESPACE - -#endif // QQUICKWEBENGINESCRIPT_H diff --git a/src/webengine/api/qquickwebenginescriptcollection.cpp b/src/webengine/api/qquickwebenginescriptcollection.cpp index b02e9f84d..f3faa2591 100644 --- a/src/webengine/api/qquickwebenginescriptcollection.cpp +++ b/src/webengine/api/qquickwebenginescriptcollection.cpp @@ -45,9 +45,9 @@ #include #include -QQuickWebEngineScript parseScript(const QJSValue &value, bool *ok) +QWebEngineScript parseScript(const QJSValue &value, bool *ok) { - QQuickWebEngineScript s; + QWebEngineScript s; if (ok) *ok = false; @@ -60,18 +60,18 @@ QQuickWebEngineScript parseScript(const QJSValue &value, bool *ok) s.setSourceUrl(value.property(QStringLiteral("sourceUrl")).toString()); if (value.hasProperty(QStringLiteral("injectionPoint"))) - s.setInjectionPoint(QQuickWebEngineScript::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(QQuickWebEngineScript::ScriptWorldId( + s.setWorldId(QWebEngineScript::ScriptWorldId( value.property(QStringLiteral("worldId")).toUInt())); if (value.hasProperty(QStringLiteral("runOnSubframes"))) - s.setRunOnSubframes(value.property(QStringLiteral("runOnSubframes")).toBool()); + s.setRunsOnSubFrames(value.property(QStringLiteral("runOnSubframes")).toBool()); if (ok) *ok = true; @@ -92,34 +92,34 @@ int QQuickWebEngineScriptCollection::count() const return d->count(); } -bool QQuickWebEngineScriptCollection::contains(const QQuickWebEngineScript &value) const +bool QQuickWebEngineScriptCollection::contains(const QWebEngineScript &value) const { return d->contains(value); } -QQuickWebEngineScript QQuickWebEngineScriptCollection::findScript(const QString &name) const +QWebEngineScript QQuickWebEngineScriptCollection::findScript(const QString &name) const { return d->find(name); } -QList QQuickWebEngineScriptCollection::findScripts(const QString &name) const +QList QQuickWebEngineScriptCollection::findScripts(const QString &name) const { return d->toList(name); } -void QQuickWebEngineScriptCollection::insert(const QQuickWebEngineScript &s) +void QQuickWebEngineScriptCollection::insert(const QWebEngineScript &s) { d->insert(s); } -void QQuickWebEngineScriptCollection::insert(const QList &list) +void QQuickWebEngineScriptCollection::insert(const QList &list) { d->reserve(list.size()); - for (const QQuickWebEngineScript &s : list) + for (const QWebEngineScript &s : list) d->insert(s); } -bool QQuickWebEngineScriptCollection::remove(const QQuickWebEngineScript &script) +bool QQuickWebEngineScriptCollection::remove(const QWebEngineScript &script) { return d->remove(script); } @@ -129,7 +129,7 @@ void QQuickWebEngineScriptCollection::clear() d->clear(); } -QList QQuickWebEngineScriptCollection::toList() const +QList QQuickWebEngineScriptCollection::toList() const { return d->toList(); } @@ -146,41 +146,41 @@ int QQuickWebEngineScriptCollectionPrivate::count() const return m_scripts.count(); } -bool QQuickWebEngineScriptCollectionPrivate::contains(const QQuickWebEngineScript &s) const +bool QQuickWebEngineScriptCollectionPrivate::contains(const QWebEngineScript &s) const { return m_scripts.contains(s); } -void QQuickWebEngineScriptCollectionPrivate::insert(const QQuickWebEngineScript &script) +void QQuickWebEngineScriptCollectionPrivate::insert(const QWebEngineScript &script) { m_scripts.append(script); if (!m_contents || m_contents->isInitialized()) m_scriptController->addUserScript(*script.d, m_contents.data()); } -bool QQuickWebEngineScriptCollectionPrivate::remove(const QQuickWebEngineScript &script) +bool QQuickWebEngineScriptCollectionPrivate::remove(const QWebEngineScript &script) { if (!m_contents || m_contents->isInitialized()) m_scriptController->removeUserScript(*script.d, m_contents.data()); return m_scripts.removeAll(script); } -QList +QList QQuickWebEngineScriptCollectionPrivate::toList(const QString &scriptName) const { - QList ret; - for (const QQuickWebEngineScript &script : qAsConst(m_scripts)) + QList ret; + for (const QWebEngineScript &script : qAsConst(m_scripts)) if (scriptName == script.name()) ret.append(script); return ret; } -QQuickWebEngineScript QQuickWebEngineScriptCollectionPrivate::find(const QString &name) const +QWebEngineScript QQuickWebEngineScriptCollectionPrivate::find(const QString &name) const { - for (const QQuickWebEngineScript &script : qAsConst(m_scripts)) + for (const QWebEngineScript &script : qAsConst(m_scripts)) if (name == script.name()) return script; - return QQuickWebEngineScript(); + return QWebEngineScript(); } void QQuickWebEngineScriptCollectionPrivate::clear() @@ -203,14 +203,14 @@ void QQuickWebEngineScriptCollectionPrivate::initializationFinished( Q_ASSERT(m_contents); Q_ASSERT(contents); - for (const QQuickWebEngineScript &script : qAsConst(m_scripts)) + for (const QWebEngineScript &script : qAsConst(m_scripts)) m_scriptController->addUserScript(*script.d, contents.data()); m_contents = contents; } QJSValue QQuickWebEngineScriptCollection::collection() const { - const QList &list = d->m_scripts; + const QList &list = d->m_scripts; QQmlContext *context = QQmlEngine::contextForObject(this); QQmlEngine *engine = context->engine(); QV4::ExecutionEngine *v4 = QQmlEnginePrivate::getV4Engine(engine); @@ -229,11 +229,11 @@ void QQuickWebEngineScriptCollection::setCollection(const QJSValue &scripts) if (!scripts.isArray()) return; - QList scriptList; + QList scriptList; quint32 length = scripts.property(QStringLiteral("length")).toUInt(); for (quint32 i = 0; i < length; ++i) { bool ok; - QQuickWebEngineScript s = parseScript(scripts.property(i), &ok); + QWebEngineScript s = parseScript(scripts.property(i), &ok); if (!ok) { qmlWarning(this) << "Unsupported script type"; return; diff --git a/src/webengine/api/qquickwebenginescriptcollection.h b/src/webengine/api/qquickwebenginescriptcollection.h index e2fd8488d..5f80f9c38 100644 --- a/src/webengine/api/qquickwebenginescriptcollection.h +++ b/src/webengine/api/qquickwebenginescriptcollection.h @@ -41,7 +41,7 @@ #define QQUICKWEBENGINESCRIPTCOLLECTION_H #include -#include "qquickwebenginescript.h" +#include #include #include #include @@ -60,21 +60,21 @@ public: bool isEmpty() const { return !count(); } int count() const; inline int size() const { return count(); } - bool contains(const QQuickWebEngineScript &value) const; + bool contains(const QWebEngineScript &value) const; - Q_INVOKABLE QQuickWebEngineScript findScript(const QString &name) const; - Q_INVOKABLE QList findScripts(const QString &name) const; + Q_INVOKABLE QWebEngineScript findScript(const QString &name) const; + Q_INVOKABLE QList findScripts(const QString &name) const; - Q_INVOKABLE void insert(const QQuickWebEngineScript &); - Q_INVOKABLE void insert(const QList &list); + Q_INVOKABLE void insert(const QWebEngineScript &); + Q_INVOKABLE void insert(const QList &list); - Q_INVOKABLE bool remove(const QQuickWebEngineScript &); + Q_INVOKABLE bool remove(const QWebEngineScript &); Q_INVOKABLE void clear(); QJSValue collection() const; void setCollection(const QJSValue &scripts); - QList toList() const; + QList toList() const; Q_SIGNALS: void collectionChanged(); diff --git a/src/webengine/api/qquickwebenginescriptcollection_p.h b/src/webengine/api/qquickwebenginescriptcollection_p.h index 79c70f928..d8eb08ca0 100644 --- a/src/webengine/api/qquickwebenginescriptcollection_p.h +++ b/src/webengine/api/qquickwebenginescriptcollection_p.h @@ -53,11 +53,11 @@ #include "qtwebenginecoreglobal.h" -#include "qquickwebenginescript.h" #include "web_contents_adapter.h" #include #include +#include namespace QtWebEngineCore { class UserResourceControllerHost; @@ -73,21 +73,21 @@ public: QSharedPointer()); int count() const; - bool contains(const QQuickWebEngineScript &) const; - QList toList(const QString &scriptName = QString()) const; - QQuickWebEngineScript find(const QString &name) const; + bool contains(const QWebEngineScript &) const; + QList toList(const QString &scriptName = QString()) const; + QWebEngineScript find(const QString &name) const; void initializationFinished(QSharedPointer contents); - void insert(const QQuickWebEngineScript &); - bool remove(const QQuickWebEngineScript &); + void insert(const QWebEngineScript &); + bool remove(const QWebEngineScript &); void clear(); void reserve(int); private: QtWebEngineCore::UserResourceControllerHost *m_scriptController; QSharedPointer m_contents; - QList m_scripts; + QList m_scripts; friend class QQuickWebEngineScriptCollection; }; diff --git a/src/webengine/api/qquickwebenginesingleton.cpp b/src/webengine/api/qquickwebenginesingleton.cpp index e61c4e5bf..d49d92329 100644 --- a/src/webengine/api/qquickwebenginesingleton.cpp +++ b/src/webengine/api/qquickwebenginesingleton.cpp @@ -91,9 +91,9 @@ QQuickWebEngineProfile *QQuickWebEngineSingleton::defaultProfile() const return QQuickWebEngineProfile::defaultProfile(); } -QQuickWebEngineScript QQuickWebEngineSingleton::script() const +QWebEngineScript QQuickWebEngineSingleton::script() const { - return QQuickWebEngineScript(); + return QWebEngineScript(); } #include "moc_qquickwebenginesingleton_p.cpp" diff --git a/src/webengine/api/qquickwebenginesingleton_p.h b/src/webengine/api/qquickwebenginesingleton_p.h index ec1b779f8..bca106314 100644 --- a/src/webengine/api/qquickwebenginesingleton_p.h +++ b/src/webengine/api/qquickwebenginesingleton_p.h @@ -52,8 +52,8 @@ // #include -#include -#include "qquickwebenginescript.h" +#include +#include QT_BEGIN_NAMESPACE @@ -67,7 +67,7 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineSingleton : public QObject { public: QQuickWebEngineSettings *settings() const; QQuickWebEngineProfile *defaultProfile() const; - Q_INVOKABLE QQuickWebEngineScript script() const; + Q_INVOKABLE QWebEngineScript script() const; }; QT_END_NAMESPACE diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 01f604736..1ef5466e7 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -1391,7 +1391,7 @@ bool QQuickWebEngineView::canGoForward() const void QQuickWebEngineView::runJavaScript(const QString &script, const QJSValue &callback) { - runJavaScript(script, QQuickWebEngineScript::MainWorld, callback); + runJavaScript(script, QWebEngineScript::MainWorld, callback); } void QQuickWebEngineView::runJavaScript(const QString &script, quint32 worldId, const QJSValue &callback) @@ -1970,40 +1970,40 @@ void QQuickWebEngineView::triggerWebAction(WebAction action) d->adapter->viewSource(); break; case ToggleBold: - runJavaScript(QStringLiteral("document.execCommand('bold');"), QQuickWebEngineScript::ApplicationWorld); + runJavaScript(QStringLiteral("document.execCommand('bold');"), QWebEngineScript::ApplicationWorld); break; case ToggleItalic: - runJavaScript(QStringLiteral("document.execCommand('italic');"), QQuickWebEngineScript::ApplicationWorld); + runJavaScript(QStringLiteral("document.execCommand('italic');"), QWebEngineScript::ApplicationWorld); break; case ToggleUnderline: - runJavaScript(QStringLiteral("document.execCommand('underline');"), QQuickWebEngineScript::ApplicationWorld); + runJavaScript(QStringLiteral("document.execCommand('underline');"), QWebEngineScript::ApplicationWorld); break; case ToggleStrikethrough: - runJavaScript(QStringLiteral("document.execCommand('strikethrough');"), QQuickWebEngineScript::ApplicationWorld); + runJavaScript(QStringLiteral("document.execCommand('strikethrough');"), QWebEngineScript::ApplicationWorld); break; case AlignLeft: - runJavaScript(QStringLiteral("document.execCommand('justifyLeft');"), QQuickWebEngineScript::ApplicationWorld); + runJavaScript(QStringLiteral("document.execCommand('justifyLeft');"), QWebEngineScript::ApplicationWorld); break; case AlignCenter: - runJavaScript(QStringLiteral("document.execCommand('justifyCenter');"), QQuickWebEngineScript::ApplicationWorld); + runJavaScript(QStringLiteral("document.execCommand('justifyCenter');"), QWebEngineScript::ApplicationWorld); break; case AlignRight: - runJavaScript(QStringLiteral("document.execCommand('justifyRight');"), QQuickWebEngineScript::ApplicationWorld); + runJavaScript(QStringLiteral("document.execCommand('justifyRight');"), QWebEngineScript::ApplicationWorld); break; case AlignJustified: - runJavaScript(QStringLiteral("document.execCommand('justifyFull');"), QQuickWebEngineScript::ApplicationWorld); + runJavaScript(QStringLiteral("document.execCommand('justifyFull');"), QWebEngineScript::ApplicationWorld); break; case Indent: - runJavaScript(QStringLiteral("document.execCommand('indent');"), QQuickWebEngineScript::ApplicationWorld); + runJavaScript(QStringLiteral("document.execCommand('indent');"), QWebEngineScript::ApplicationWorld); break; case Outdent: - runJavaScript(QStringLiteral("document.execCommand('outdent');"), QQuickWebEngineScript::ApplicationWorld); + runJavaScript(QStringLiteral("document.execCommand('outdent');"), QWebEngineScript::ApplicationWorld); break; case InsertOrderedList: - runJavaScript(QStringLiteral("document.execCommand('insertOrderedList');"), QQuickWebEngineScript::ApplicationWorld); + runJavaScript(QStringLiteral("document.execCommand('insertOrderedList');"), QWebEngineScript::ApplicationWorld); break; case InsertUnorderedList: - runJavaScript(QStringLiteral("document.execCommand('insertUnorderedList');"), QQuickWebEngineScript::ApplicationWorld); + runJavaScript(QStringLiteral("document.execCommand('insertUnorderedList');"), QWebEngineScript::ApplicationWorld); break; default: Q_UNREACHABLE(); diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h index bf058c4d3..255ca3d32 100644 --- a/src/webengine/api/qquickwebengineview_p.h +++ b/src/webengine/api/qquickwebengineview_p.h @@ -57,7 +57,6 @@ #include #include "qquickwebengineprofile.h" -#include "qquickwebenginescript.h" namespace QtWebEngineCore { class RenderWidgetHostViewQtDelegateQuick; diff --git a/src/webengine/module.pro b/src/webengine/module.pro index b796c3d97..91f13c793 100644 --- a/src/webengine/module.pro +++ b/src/webengine/module.pro @@ -29,7 +29,6 @@ SOURCES = \ api/qquickwebenginetouchhandleprovider.cpp \ api/qquickwebengineview.cpp \ api/qtwebengineglobal.cpp \ - api/qquickwebenginescript.cpp \ api/qquickwebenginescriptcollection.cpp \ render_widget_host_view_qt_delegate_quick.cpp \ render_widget_host_view_qt_delegate_quickwindow.cpp \ @@ -54,7 +53,6 @@ HEADERS = \ api/qquickwebenginetouchhandleprovider_p_p.h \ api/qquickwebengineview_p.h \ api/qquickwebengineview_p_p.h \ - api/qquickwebenginescript.h \ api/qquickwebenginescriptcollection.h \ api/qquickwebenginescriptcollection_p.h \ render_widget_host_view_qt_delegate_quick.h \ diff --git a/src/webengine/plugin/plugin.cpp b/src/webengine/plugin/plugin.cpp index d92ee59ec..8f5d319d7 100644 --- a/src/webengine/plugin/plugin.cpp +++ b/src/webengine/plugin/plugin.cpp @@ -60,6 +60,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE @@ -105,8 +106,8 @@ public: qmlRegisterType(uri, 1, 4, "WebEngineProfile"); qmlRegisterType(uri, 1, 5, "WebEngineProfile"); qmlRegisterType(uri, 1, 9, "WebEngineProfile"); - qRegisterMetaType(); - qmlRegisterUncreatableType( + qRegisterMetaType(); + qmlRegisterUncreatableType( uri, 1, 1, "WebEngineScript", msgUncreatableType("WebEngineScript")); // for enums qRegisterMetaType(); qmlRegisterUncreatableType(uri, 1, 1, "WebEngineCertificateError", msgUncreatableType("WebEngineCertificateError")); -- cgit v1.2.3