DeviceManager: Break the websocket dependencies

Task-number: QTCREATORBUG-32296
Change-Id: Ic9c80e3507a7dc8e666d740e0db72d2a5be12042
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Burak Hancerli
2025-01-08 12:27:26 +01:00
parent 484cde1df8
commit da38404d72
8 changed files with 68 additions and 11 deletions

View File

@@ -748,15 +748,22 @@ extend_qtc_plugin(QmlDesigner
extend_qtc_plugin(QmlDesigner extend_qtc_plugin(QmlDesigner
CONDITION TARGET Qt::WebSockets CONDITION TARGET Qt::WebSockets
DEFINES QT_WEBSOCKET_ENABLED
DEPENDS
Qt::WebSockets
)
extend_qtc_plugin(QmlDesigner
SOURCES_PREFIX components/devicesharing SOURCES_PREFIX components/devicesharing
DEPENDS DEPENDS
QtCreator::QrCodeGenerator Qt::WebSockets QtCreator::QrCodeGenerator
SOURCES SOURCES
device.cpp device.h device.cpp device.h
deviceinfo.cpp deviceinfo.h deviceinfo.cpp deviceinfo.h
devicemanager.cpp devicemanager.h devicemanager.cpp devicemanager.h
devicemanagermodel.cpp devicemanagermodel.h devicemanagermodel.cpp devicemanagermodel.h
devicemanagerwidget.cpp devicemanagerwidget.h devicemanagerwidget.cpp devicemanagerwidget.h
websocketmock.h
) )
extend_qtc_plugin(QmlDesigner extend_qtc_plugin(QmlDesigner

View File

@@ -5,7 +5,8 @@
#include <QJsonDocument> #include <QJsonDocument>
#include <QLatin1String> #include <QLatin1String>
#include <QThreadPool>
#include "websocketmock.h"
namespace QmlDesigner::DeviceShare { namespace QmlDesigner::DeviceShare {

View File

@@ -3,14 +3,13 @@
#pragma once #pragma once
#include <QThread>
#include <QTimer> #include <QTimer>
#include <QWebSocket>
#include <atomic> #include <atomic>
#include "deviceinfo.h" #include "deviceinfo.h"
class QWebSocket;
namespace QmlDesigner::DeviceShare { namespace QmlDesigner::DeviceShare {
class Device : public QObject class Device : public QObject

View File

@@ -2,7 +2,7 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "devicemanager.h" #include "devicemanager.h"
#include "device.h"
#include "devicemanagerwidget.h" #include "devicemanagerwidget.h"
#include <QFile> #include <QFile>
@@ -11,6 +11,7 @@
#include <QLatin1String> #include <QLatin1String>
#include <QNetworkDatagram> #include <QNetworkDatagram>
#include <QNetworkInterface> #include <QNetworkInterface>
#include <QUdpSocket>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <projectexplorer/kitaspect.h> #include <projectexplorer/kitaspect.h>

View File

@@ -3,16 +3,17 @@
#pragma once #pragma once
#include <QPointer>
#include <QUdpSocket>
#include <QWebSocketServer>
#include <qmldesigner/components/componentcore/resourcegenerator.h> #include <qmldesigner/components/componentcore/resourcegenerator.h>
#include "device.h" #include "deviceinfo.h"
#include <QPointer>
QT_BEGIN_NAMESPACE
class QUdpSocket;
QT_END_NAMESPACE
namespace QmlDesigner::DeviceShare { namespace QmlDesigner::DeviceShare {
class Device;
class DeviceManagerWidget; class DeviceManagerWidget;
class DeviceManager : public QObject class DeviceManager : public QObject

View File

@@ -2,6 +2,7 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "devicemanagermodel.h" #include "devicemanagermodel.h"
#include "device.h"
#include "devicemanager.h" #include "devicemanager.h"
namespace QmlDesigner::DeviceShare { namespace QmlDesigner::DeviceShare {

View File

@@ -0,0 +1,45 @@
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#ifdef QT_WEBSOCKET_ENABLED
#include <QWebSocket>
#else
#include <QAbstractSocket>
// QWebSocket mock.
// It is used to avoid linking against QtWebSockets.
namespace QWebSocketProtocol {
enum CloseCode { CloseCodeNormal = 1000 };
enum Version { Unknown = 0, Version13 = 13 };
} // namespace QWebSocketProtocol
class QWebSocket : public QObject
{
Q_OBJECT
public:
QWebSocket() = default;
~QWebSocket() = default;
void setOutgoingFrameSize(int) {}
void setParent(QObject *) {}
void open(const QUrl &) {}
void close() {}
void close(QWebSocketProtocol::CloseCode, const QString &) {}
void abort() {}
void flush() {}
void ping() {}
bool isValid() {return true;}
QAbstractSocket::SocketState state() {return QAbstractSocket::ConnectedState;}
void sendTextMessage(const QString &){}
void sendBinaryMessage(const QByteArray &){}
signals:
void pong(quint64, const QByteArray &);
void textMessageReceived(const QString &);
void disconnected();
void connected();
};
#endif // QT_WEBSOCKETS_LIB

View File

@@ -8,6 +8,8 @@
#include <qmldesigner/qmldesignerplugin.h> #include <qmldesigner/qmldesignerplugin.h>
#include <devicesharing/device.h>
namespace QmlDesigner { namespace QmlDesigner {
Q_LOGGING_CATEGORY(runManagerLog, "qtc.designer.runManager", QtWarningMsg) Q_LOGGING_CATEGORY(runManagerLog, "qtc.designer.runManager", QtWarningMsg)