// Copyright (C) 2016 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 QQMLDEBUGSERVICEINTERFACES_P_H #define QQMLDEBUGSERVICEINTERFACES_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 #include #if QT_CONFIG(qml_debug) #include #endif #include #include #include #include QT_BEGIN_NAMESPACE class QWindow; class QQuickWindow; #if !QT_CONFIG(qml_debug) class TranslationBindingInformation; class QV4DebugService { public: void signalEmitted(const QString &) {} }; class QQmlProfilerService { public: void startProfiling(QJSEngine *engine, quint64 features = std::numeric_limits::max()) { Q_UNUSED(engine); Q_UNUSED(features); } void stopProfiling(QJSEngine *) {} }; class QQmlEngineDebugService { public: void objectCreated(QJSEngine *, QObject *) {} static void setStatesDelegateFactory(QQmlDebugStatesDelegate *(*)()) {} }; class QQmlInspectorService { public: void addWindow(QQuickWindow *) {} void setParentWindow(QQuickWindow *, QWindow *) {} void removeWindow(QQuickWindow *) {} }; class QDebugMessageService {}; class QQmlEngineControlService {}; class QQmlNativeDebugService {}; class QQmlDebugTranslationService { public: virtual void foundTranslationBinding(const TranslationBindingInformation &) {} }; #else class Q_QML_EXPORT QV4DebugService : public QQmlDebugService { Q_OBJECT public: ~QV4DebugService() override; static const QString s_key; virtual void signalEmitted(const QString &signal) = 0; protected: friend class QQmlDebugConnector; explicit QV4DebugService(float version, QObject *parent = nullptr) : QQmlDebugService(s_key, version, parent) {} }; class QQmlAbstractProfilerAdapter; class Q_QML_EXPORT QQmlProfilerService : public QQmlDebugService { Q_OBJECT public: ~QQmlProfilerService() override; static const QString s_key; virtual void addGlobalProfiler(QQmlAbstractProfilerAdapter *profiler) = 0; virtual void removeGlobalProfiler(QQmlAbstractProfilerAdapter *profiler) = 0; virtual void startProfiling(QJSEngine *engine, quint64 features = std::numeric_limits::max()) = 0; virtual void stopProfiling(QJSEngine *engine) = 0; virtual void dataReady(QQmlAbstractProfilerAdapter *profiler) = 0; protected: friend class QQmlDebugConnector; explicit QQmlProfilerService(float version, QObject *parent = nullptr) : QQmlDebugService(s_key, version, parent) {} }; class Q_QML_EXPORT QQmlEngineDebugService : public QQmlDebugService { Q_OBJECT public: ~QQmlEngineDebugService() override; static const QString s_key; virtual void objectCreated(QJSEngine *engine, QObject *object) = 0; static void setStatesDelegateFactory(QQmlDebugStatesDelegate *(*factory)()); static QQmlDebugStatesDelegate *createStatesDelegate(); protected: friend class QQmlDebugConnector; explicit QQmlEngineDebugService(float version, QObject *parent = nullptr) : QQmlDebugService(s_key, version, parent) {} QQmlBoundSignal *nextSignal(QQmlBoundSignal *prev) { return prev->m_nextSignal; } }; #if QT_CONFIG(translation) struct TranslationBindingInformation { static const TranslationBindingInformation create(const QQmlRefPointer &compilationUnit, const QV4::CompiledData::Binding *binding, QObject *scopeObject, QQmlRefPointer ctxt); QQmlRefPointer compilationUnit; QObject *scopeObject; QQmlRefPointer ctxt; QString propertyName; QQmlTranslation translation; quint32 line; quint32 column; }; class Q_QML_EXPORT QQmlDebugTranslationService : public QQmlDebugService { Q_OBJECT public: ~QQmlDebugTranslationService() override; static const QString s_key; virtual void foundTranslationBinding(const TranslationBindingInformation &translationBindingInformation) = 0; protected: friend class QQmlDebugConnector; explicit QQmlDebugTranslationService(float version, QObject *parent = nullptr) : QQmlDebugService(s_key, version, parent) {} }; #endif //QT_CONFIG(translation) class Q_QML_EXPORT QQmlInspectorService : public QQmlDebugService { Q_OBJECT public: ~QQmlInspectorService() override; static const QString s_key; virtual void addWindow(QQuickWindow *) = 0; virtual void setParentWindow(QQuickWindow *, QWindow *) = 0; virtual void removeWindow(QQuickWindow *) = 0; protected: friend class QQmlDebugConnector; explicit QQmlInspectorService(float version, QObject *parent = nullptr) : QQmlDebugService(s_key, version, parent) {} }; class Q_QML_EXPORT QDebugMessageService : public QQmlDebugService { Q_OBJECT public: ~QDebugMessageService() override; static const QString s_key; virtual void synchronizeTime(const QElapsedTimer &otherTimer) = 0; protected: friend class QQmlDebugConnector; explicit QDebugMessageService(float version, QObject *parent = nullptr) : QQmlDebugService(s_key, version, parent) {} }; class Q_QML_EXPORT QQmlEngineControlService : public QQmlDebugService { Q_OBJECT public: ~QQmlEngineControlService() override; static const QString s_key; protected: friend class QQmlDebugConnector; QQmlEngineControlService(float version, QObject *parent = nullptr) : QQmlDebugService(s_key, version, parent) {} }; class Q_QML_EXPORT QQmlNativeDebugService : public QQmlDebugService { Q_OBJECT public: ~QQmlNativeDebugService() override; static const QString s_key; protected: friend class QQmlDebugConnector; explicit QQmlNativeDebugService(float version, QObject *parent = nullptr) : QQmlDebugService(s_key, version, parent) {} }; #endif QT_END_NAMESPACE #endif // QQMLDEBUGSERVICEINTERFACES_P_H