diff options
author | Michal Klocek <michal.klocek@qt.io> | 2020-08-26 10:59:29 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2020-09-25 09:44:13 +0200 |
commit | b598974f9cbde2688a75488d6920e474343c84d2 (patch) | |
tree | 9ec80d08a598fd78ac5861e690e98765f4a63354 | |
parent | 8d22b1f6db1e4a3f98e665a52a904bfdf38fc91a (diff) |
Use qwebenginescriptcollection in qml
Change-Id: I8bfb805661aa0d2bc2c66dbbb5843b2e551aa64d
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r-- | src/core/api/qwebenginescriptcollection.h | 2 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineprofile.cpp | 7 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineprofile.h | 1 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginescriptcollection.cpp | 94 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginescriptcollection.h | 6 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginescriptcollection_p.h | 96 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 11 | ||||
-rw-r--r-- | src/webengine/module.pro | 1 |
8 files changed, 24 insertions, 194 deletions
diff --git a/src/core/api/qwebenginescriptcollection.h b/src/core/api/qwebenginescriptcollection.h index 511ee2531..79c3e7f19 100644 --- a/src/core/api/qwebenginescriptcollection.h +++ b/src/core/api/qwebenginescriptcollection.h @@ -72,6 +72,8 @@ private: Q_DISABLE_COPY(QWebEngineScriptCollection) friend class QWebEnginePagePrivate; friend class QWebEngineProfilePrivate; + friend class QQuickWebEngineProfilePrivate; + friend class QQuickWebEngineViewPrivate; QWebEngineScriptCollection(QWebEngineScriptCollectionPrivate *); QScopedPointer<QWebEngineScriptCollectionPrivate> d; diff --git a/src/webengine/api/qquickwebengineprofile.cpp b/src/webengine/api/qquickwebengineprofile.cpp index 7c0454e53..c264a73f9 100644 --- a/src/webengine/api/qquickwebengineprofile.cpp +++ b/src/webengine/api/qquickwebengineprofile.cpp @@ -41,8 +41,9 @@ #include "qquickwebengineprofile_p.h" #include "qquickwebenginesettings_p.h" +#include "qwebenginescriptcollection.h" +#include "qwebenginescriptcollection_p.h" #include "qquickwebenginescriptcollection.h" -#include "qquickwebenginescriptcollection_p.h" #include "qquickwebengineview_p_p.h" #include "qwebenginecookiestore.h" #include "qwebenginenotification.h" @@ -160,8 +161,8 @@ QT_BEGIN_NAMESPACE QQuickWebEngineProfilePrivate::QQuickWebEngineProfilePrivate(ProfileAdapter *profileAdapter) : m_settings(new QQuickWebEngineSettings()) , m_profileAdapter(profileAdapter) - , m_scriptCollection(new QQuickWebEngineScriptCollection( - new QQuickWebEngineScriptCollectionPrivate(profileAdapter->userResourceController()))) + , m_scriptCollection(new QQuickWebEngineScriptCollection(new QWebEngineScriptCollection( + new QWebEngineScriptCollectionPrivate(profileAdapter->userResourceController())))) { profileAdapter->addClient(this); // Fullscreen API was implemented before the supported setting, so we must diff --git a/src/webengine/api/qquickwebengineprofile.h b/src/webengine/api/qquickwebengineprofile.h index ccc5a9098..a0480b424 100644 --- a/src/webengine/api/qquickwebengineprofile.h +++ b/src/webengine/api/qquickwebengineprofile.h @@ -40,7 +40,6 @@ #ifndef QQUICKWEBENGINEPROFILE_H #define QQUICKWEBENGINEPROFILE_H - #include <QtWebEngine/qtwebengineglobal.h> #include <QtCore/QObject> #include <QtCore/QScopedPointer> diff --git a/src/webengine/api/qquickwebenginescriptcollection.cpp b/src/webengine/api/qquickwebenginescriptcollection.cpp index f3faa2591..4e4fb6579 100644 --- a/src/webengine/api/qquickwebenginescriptcollection.cpp +++ b/src/webengine/api/qquickwebenginescriptcollection.cpp @@ -38,8 +38,8 @@ ****************************************************************************/ #include "qquickwebenginescriptcollection.h" -#include "qquickwebenginescriptcollection_p.h" -#include "renderer_host/user_resource_controller_host.h" +#include "qwebenginescriptcollection.h" +#include "qwebenginescriptcollection_p.h" #include <QtQml/QQmlInfo> #include <QtQml/private/qqmlengine_p.h> #include <QtQml/private/qv4scopedvalue_p.h> @@ -80,8 +80,8 @@ QWebEngineScript parseScript(const QJSValue &value, bool *ok) } QQuickWebEngineScriptCollection::QQuickWebEngineScriptCollection( - QQuickWebEngineScriptCollectionPrivate *collectionPrivate) - : d(collectionPrivate) + QWebEngineScriptCollection *collection) + : d(collection) { } @@ -99,12 +99,12 @@ bool QQuickWebEngineScriptCollection::contains(const QWebEngineScript &value) co QWebEngineScript QQuickWebEngineScriptCollection::findScript(const QString &name) const { - return d->find(name); + return d->findScript(name); } QList<QWebEngineScript> QQuickWebEngineScriptCollection::findScripts(const QString &name) const { - return d->toList(name); + return d->findScripts(name); } void QQuickWebEngineScriptCollection::insert(const QWebEngineScript &s) @@ -114,9 +114,7 @@ void QQuickWebEngineScriptCollection::insert(const QWebEngineScript &s) void QQuickWebEngineScriptCollection::insert(const QList<QWebEngineScript> &list) { - d->reserve(list.size()); - for (const QWebEngineScript &s : list) - d->insert(s); + d->insert(list); } bool QQuickWebEngineScriptCollection::remove(const QWebEngineScript &script) @@ -134,83 +132,9 @@ QList<QWebEngineScript> QQuickWebEngineScriptCollection::toList() const return d->toList(); } -QQuickWebEngineScriptCollectionPrivate::QQuickWebEngineScriptCollectionPrivate( - QtWebEngineCore::UserResourceControllerHost *controller, - QSharedPointer<QtWebEngineCore::WebContentsAdapter> webContents) - : m_scriptController(controller), m_contents(webContents) -{ -} - -int QQuickWebEngineScriptCollectionPrivate::count() const -{ - return m_scripts.count(); -} - -bool QQuickWebEngineScriptCollectionPrivate::contains(const QWebEngineScript &s) const -{ - return m_scripts.contains(s); -} - -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 QWebEngineScript &script) -{ - if (!m_contents || m_contents->isInitialized()) - m_scriptController->removeUserScript(*script.d, m_contents.data()); - return m_scripts.removeAll(script); -} - -QList<QWebEngineScript> -QQuickWebEngineScriptCollectionPrivate::toList(const QString &scriptName) const -{ - QList<QWebEngineScript> ret; - for (const QWebEngineScript &script : qAsConst(m_scripts)) - if (scriptName == script.name()) - ret.append(script); - return ret; -} - -QWebEngineScript QQuickWebEngineScriptCollectionPrivate::find(const QString &name) const -{ - for (const QWebEngineScript &script : qAsConst(m_scripts)) - if (name == script.name()) - return script; - return QWebEngineScript(); -} - -void QQuickWebEngineScriptCollectionPrivate::clear() -{ - m_scripts.clear(); - if (!m_contents || m_contents->isInitialized()) - m_scriptController->clearAllScripts(m_contents.data()); -} - -void QQuickWebEngineScriptCollectionPrivate::reserve(int capacity) -{ - m_scripts.reserve(capacity); - if (!m_contents || m_contents->isInitialized()) - m_scriptController->reserve(m_contents.data(), capacity); -} - -void QQuickWebEngineScriptCollectionPrivate::initializationFinished( - QSharedPointer<QtWebEngineCore::WebContentsAdapter> contents) -{ - Q_ASSERT(m_contents); - Q_ASSERT(contents); - - for (const QWebEngineScript &script : qAsConst(m_scripts)) - m_scriptController->addUserScript(*script.d, contents.data()); - m_contents = contents; -} - QJSValue QQuickWebEngineScriptCollection::collection() const { - const QList<QWebEngineScript> &list = d->m_scripts; + const QList<QWebEngineScript> &list = toList(); QQmlContext *context = QQmlEngine::contextForObject(this); QQmlEngine *engine = context->engine(); QV4::ExecutionEngine *v4 = QQmlEnginePrivate::getV4Engine(engine); @@ -240,7 +164,7 @@ void QQuickWebEngineScriptCollection::setCollection(const QJSValue &scripts) } scriptList.append(s); } - if (scriptList != d->m_scripts) { + if (scriptList != toList()) { clear(); insert(scriptList); Q_EMIT collectionChanged(); diff --git a/src/webengine/api/qquickwebenginescriptcollection.h b/src/webengine/api/qquickwebenginescriptcollection.h index 5f80f9c38..a3e1695c3 100644 --- a/src/webengine/api/qquickwebenginescriptcollection.h +++ b/src/webengine/api/qquickwebenginescriptcollection.h @@ -49,7 +49,7 @@ #include <QtQml/QJSValue> QT_BEGIN_NAMESPACE -class QQuickWebEngineScriptCollectionPrivate; +class QWebEngineScriptCollection; class Q_WEBENGINE_EXPORT QQuickWebEngineScriptCollection : public QObject { @@ -80,8 +80,8 @@ Q_SIGNALS: private: Q_DISABLE_COPY(QQuickWebEngineScriptCollection) - QQuickWebEngineScriptCollection(QQuickWebEngineScriptCollectionPrivate *); - QScopedPointer<QQuickWebEngineScriptCollectionPrivate> d; + QQuickWebEngineScriptCollection(QWebEngineScriptCollection *d); + QScopedPointer<QWebEngineScriptCollection> d; friend class QQuickWebEngineProfilePrivate; friend class QQuickWebEngineViewPrivate; }; diff --git a/src/webengine/api/qquickwebenginescriptcollection_p.h b/src/webengine/api/qquickwebenginescriptcollection_p.h deleted file mode 100644 index d8eb08ca0..000000000 --- a/src/webengine/api/qquickwebenginescriptcollection_p.h +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 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 QQUICKWEBENGINESCRIPTCOLLECTION_P_H -#define QQUICKWEBENGINESCRIPTCOLLECTION_P_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 "qtwebenginecoreglobal.h" - -#include "web_contents_adapter.h" - -#include <QtCore/QSet> -#include <QtCore/QSharedPointer> -#include <QtWebEngineCore/QWebEngineScript> - -namespace QtWebEngineCore { -class UserResourceControllerHost; -} // namespace - -QT_BEGIN_NAMESPACE -class QQuickWebEngineScriptCollectionPrivate -{ -public: - QQuickWebEngineScriptCollectionPrivate( - QtWebEngineCore::UserResourceControllerHost *, - QSharedPointer<QtWebEngineCore::WebContentsAdapter> = - QSharedPointer<QtWebEngineCore::WebContentsAdapter>()); - - int count() const; - bool contains(const QWebEngineScript &) const; - QList<QWebEngineScript> toList(const QString &scriptName = QString()) const; - QWebEngineScript find(const QString &name) const; - - void initializationFinished(QSharedPointer<QtWebEngineCore::WebContentsAdapter> contents); - - void insert(const QWebEngineScript &); - bool remove(const QWebEngineScript &); - void clear(); - void reserve(int); - -private: - QtWebEngineCore::UserResourceControllerHost *m_scriptController; - QSharedPointer<QtWebEngineCore::WebContentsAdapter> m_contents; - QList<QWebEngineScript> m_scripts; - friend class QQuickWebEngineScriptCollection; -}; - -QT_END_NAMESPACE - -#endif // QWEBENGINESCRIPTCOLLECTION__PH diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 1ef5466e7..fe9d32b8b 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -62,8 +62,9 @@ #include "qwebenginefindtextresult.h" #include "qwebenginefullscreenrequest.h" #include "qwebenginequotarequest.h" +#include "qwebenginescriptcollection.h" +#include "qwebenginescriptcollection_p.h" #include "qwebengineregisterprotocolhandlerrequest.h" -#include "qquickwebenginescriptcollection_p.h" #if QT_CONFIG(webengine_testsupport) #include "qquickwebenginetestsupport_p.h" #endif @@ -181,9 +182,9 @@ void QQuickWebEngineViewPrivate::initializeProfile() m_profile->d_ptr->addWebContentsAdapterClient(this); m_settings.reset(new QQuickWebEngineSettings(m_profile->settings())); adapter->setClient(this); - m_scriptCollection.reset( - new QQuickWebEngineScriptCollection(new QQuickWebEngineScriptCollectionPrivate( - profileAdapter()->userResourceController(), adapter))); + m_scriptCollection.reset(new QQuickWebEngineScriptCollection( + new QWebEngineScriptCollection(new QWebEngineScriptCollectionPrivate( + profileAdapter()->userResourceController(), adapter)))); } } @@ -929,7 +930,7 @@ void QQuickWebEngineViewPrivate::initializationFinished() if (devToolsView && devToolsView->d_ptr->adapter) adapter->openDevToolsFrontend(devToolsView->d_ptr->adapter); - m_scriptCollection->d->initializationFinished(adapter); + m_scriptCollection->d->d->initializationFinished(adapter); if (q->window()) adapter->setVisible(q->isVisible()); diff --git a/src/webengine/module.pro b/src/webengine/module.pro index 91f13c793..5763eaa5c 100644 --- a/src/webengine/module.pro +++ b/src/webengine/module.pro @@ -54,7 +54,6 @@ HEADERS = \ api/qquickwebengineview_p.h \ api/qquickwebengineview_p_p.h \ api/qquickwebenginescriptcollection.h \ - api/qquickwebenginescriptcollection_p.h \ render_widget_host_view_qt_delegate_quick.h \ render_widget_host_view_qt_delegate_quickwindow.h \ ui_delegates_manager.h |