1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2017 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of the QtWebEngine module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see https://www.qt.io/terms-conditions. For further 15 ** information use the contact form at https://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 3 as published by the Free Software 20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the 21 ** packaging of this file. Please review the following information to 22 ** ensure the GNU Lesser General Public License version 3 requirements 23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. 24 ** 25 ** GNU General Public License Usage 26 ** Alternatively, this file may be used under the terms of the GNU 27 ** General Public License version 2.0 or (at your option) the GNU General 28 ** Public license version 3 or any later version approved by the KDE Free 29 ** Qt Foundation. The licenses are as published by the Free Software 30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 31 ** included in the packaging of this file. Please review the following 32 ** information to ensure the GNU General Public License requirements will 33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and 34 ** https://www.gnu.org/licenses/gpl-3.0.html. 35 ** 36 ** $QT_END_LICENSE$ 37 ** 38 ****************************************************************************/ 39 40 #ifndef QQUICKWEBENGINESCRIPT_H 41 #define QQUICKWEBENGINESCRIPT_H 42 43 #include <QtCore/qobject.h> 44 #include <QtCore/qurl.h> 45 #include <QtWebEngine/qtwebengineglobal.h> 46 47 QT_BEGIN_NAMESPACE 48 class QQuickWebEngineScriptPrivate; 49 class QQuickWebEngineView; 50 51 class Q_WEBENGINE_EXPORT QQuickWebEngineScript : public QObject 52 { 53 Q_OBJECT 54 Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged FINAL) 55 Q_PROPERTY(QUrl sourceUrl READ sourceUrl WRITE setSourceUrl NOTIFY sourceUrlChanged FINAL) 56 Q_PROPERTY(QString sourceCode READ sourceCode WRITE setSourceCode NOTIFY sourceCodeChanged FINAL) 57 Q_PROPERTY(InjectionPoint injectionPoint READ injectionPoint WRITE setInjectionPoint NOTIFY injectionPointChanged FINAL) 58 Q_PROPERTY(ScriptWorldId worldId READ worldId WRITE setWorldId NOTIFY worldIdChanged FINAL) 59 Q_PROPERTY(bool runOnSubframes READ runOnSubframes WRITE setRunOnSubframes NOTIFY runOnSubframesChanged FINAL) 60 61 62 public: 63 enum InjectionPoint { 64 Deferred, 65 DocumentReady, 66 DocumentCreation 67 }; 68 Q_ENUM(InjectionPoint) 69 70 enum ScriptWorldId { 71 MainWorld = 0, 72 ApplicationWorld, 73 UserWorld 74 }; 75 Q_ENUM(ScriptWorldId) 76 77 explicit QQuickWebEngineScript(QObject *parent = Q_NULLPTR); 78 ~QQuickWebEngineScript(); 79 Q_INVOKABLE QString toString() const; 80 81 QString name() const; 82 QUrl sourceUrl() const; 83 QString sourceCode() const; 84 InjectionPoint injectionPoint() const; 85 ScriptWorldId worldId() const; 86 bool runOnSubframes() const; 87 88 Q_INVOKABLE void setName(const QString &name); 89 Q_INVOKABLE void setSourceUrl(const QUrl &url); 90 Q_INVOKABLE void setSourceCode(const QString &code); 91 Q_INVOKABLE void setInjectionPoint(InjectionPoint injectionPoint); 92 Q_INVOKABLE void setWorldId(ScriptWorldId scriptWorldId); 93 Q_INVOKABLE void setRunOnSubframes(bool on); 94 95 Q_SIGNALS: 96 void nameChanged(const QString &name); 97 void sourceUrlChanged(const QUrl &url); 98 void sourceCodeChanged(const QString &code); 99 void injectionPointChanged(InjectionPoint injectionPoint); 100 void worldIdChanged(ScriptWorldId scriptWorldId); 101 void runOnSubframesChanged(bool on); 102 103 protected: 104 void timerEvent(QTimerEvent *e) override; 105 106 private: 107 friend class QQuickWebEngineProfilePrivate; 108 friend class QQuickWebEngineViewPrivate; 109 Q_DECLARE_PRIVATE(QQuickWebEngineScript) 110 QScopedPointer<QQuickWebEngineScriptPrivate> d_ptr; 111 }; 112 QT_END_NAMESPACE 113 114 #endif // QQUICKWEBENGINESCRIPT_H 115