From 367a9ffcc20fd79ee1ea83e4fd5c6b6ae16c5729 Mon Sep 17 00:00:00 2001 From: Kurt Pattyn Date: Sat, 18 Jan 2014 19:14:08 +0100 Subject: [PATCH] Rename enumerations to comply with Qt style Change-Id: Id72fe27cec606e7f02b8e9ac1d0d763890e86a95 Reviewed-by: Kurt Pattyn --- examples/echoserver/echoserver.cpp | 2 +- examples/simplechat/chatserver.cpp | 2 +- examples/sslechoserver/sslechoserver.cpp | 2 +- src/websockets/qwebsocket.h | 4 +- src/websockets/qwebsocket_p.cpp | 16 +- src/websockets/qwebsocketdataprocessor.cpp | 60 +-- src/websockets/qwebsocketframe.cpp | 36 +- src/websockets/qwebsockethandshakeresponse.cpp | 10 +- src/websockets/qwebsocketprotocol.cpp | 122 +++--- src/websockets/qwebsocketprotocol.h | 46 +-- src/websockets/qwebsocketprotocol_p.h | 40 +- src/websockets/qwebsocketserver.cpp | 22 +- src/websockets/qwebsocketserver.h | 4 +- src/websockets/qwebsocketserver_p.cpp | 16 +- src/websockets/qwebsocketserver_p.h | 4 +- tests/auto/dataprocessor/tst_dataprocessor.cpp | 440 +++++++++++---------- .../auto/handshakerequest/tst_handshakerequest.cpp | 4 +- tests/auto/websocketframe/tst_websocketframe.cpp | 134 +++---- .../websocketprotocol/tst_websocketprotocol.cpp | 32 +- 19 files changed, 523 insertions(+), 473 deletions(-) diff --git a/examples/echoserver/echoserver.cpp b/examples/echoserver/echoserver.cpp index 8a2676c..53abe41 100644 --- a/examples/echoserver/echoserver.cpp +++ b/examples/echoserver/echoserver.cpp @@ -49,7 +49,7 @@ QT_USE_NAMESPACE EchoServer::EchoServer(quint16 port, QObject *parent) : QObject(parent), m_pWebSocketServer(new QWebSocketServer(QStringLiteral("Echo Server"), - QWebSocketServer::NON_SECURE_MODE, this)), + QWebSocketServer::SecureModeNonSecure, this)), m_clients() { if (m_pWebSocketServer->listen(QHostAddress::Any, port)) { diff --git a/examples/simplechat/chatserver.cpp b/examples/simplechat/chatserver.cpp index 6bd4c55..5c6116c 100644 --- a/examples/simplechat/chatserver.cpp +++ b/examples/simplechat/chatserver.cpp @@ -51,7 +51,7 @@ ChatServer::ChatServer(quint16 port, QObject *parent) : m_pWebSocketServer(Q_NULLPTR), m_clients() { - m_pWebSocketServer = new QWebSocketServer("Chat Server", QWebSocketServer::NON_SECURE_MODE, this); + m_pWebSocketServer = new QWebSocketServer("Chat Server", QWebSocketServer::SecureModeNonSecure, this); if (m_pWebSocketServer->listen(QHostAddress::Any, port)) { qDebug() << "Chat Server listening on port" << port; diff --git a/examples/sslechoserver/sslechoserver.cpp b/examples/sslechoserver/sslechoserver.cpp index d8cfe3b..e0d638f 100644 --- a/examples/sslechoserver/sslechoserver.cpp +++ b/examples/sslechoserver/sslechoserver.cpp @@ -54,7 +54,7 @@ SslEchoServer::SslEchoServer(quint16 port, QObject *parent) : m_pWebSocketServer(Q_NULLPTR), m_clients() { - m_pWebSocketServer = new QWebSocketServer("SSL Echo Server", QWebSocketServer::SECURE_MODE, this); + m_pWebSocketServer = new QWebSocketServer("SSL Echo Server", QWebSocketServer::SecureModeSecure, this); QSslConfiguration sslConfiguration; QFile certFile(QStringLiteral("./localhost.cert")); QFile keyFile(QStringLiteral("./localhost.key")); diff --git a/src/websockets/qwebsocket.h b/src/websockets/qwebsocket.h index 83fb285..4fba278 100644 --- a/src/websockets/qwebsocket.h +++ b/src/websockets/qwebsocket.h @@ -66,7 +66,7 @@ class Q_WEBSOCKETS_EXPORT QWebSocket : public QObject public: explicit QWebSocket(const QString &origin = QString(), - QWebSocketProtocol::Version version = QWebSocketProtocol::V_LATEST, + QWebSocketProtocol::Version version = QWebSocketProtocol::VersionLatest, QObject *parent = Q_NULLPTR); virtual ~QWebSocket(); @@ -116,7 +116,7 @@ public: #endif public Q_SLOTS: - void close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CC_NORMAL, + void close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CloseCodeNormal, const QString &reason = QString()); void open(const QUrl &url, bool mask = true); void ping(const QByteArray &payload = QByteArray()); diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp index 6a027da..d94b175 100644 --- a/src/websockets/qwebsocket_p.cpp +++ b/src/websockets/qwebsocket_p.cpp @@ -103,7 +103,7 @@ QWebSocketPrivate::QWebSocketPrivate(const QString &origin, QWebSocketProtocol:: m_mustMask(true), m_isClosingHandshakeSent(false), m_isClosingHandshakeReceived(false), - m_closeCode(QWebSocketProtocol::CC_NORMAL), + m_closeCode(QWebSocketProtocol::CloseCodeNormal), m_closeReason(), m_pingTimer(), m_dataProcessor(), @@ -132,7 +132,7 @@ QWebSocketPrivate::QWebSocketPrivate(QTcpSocket *pTcpSocket, QWebSocketProtocol: m_mustMask(true), m_isClosingHandshakeSent(false), m_isClosingHandshakeReceived(false), - m_closeCode(QWebSocketProtocol::CC_NORMAL), + m_closeCode(QWebSocketProtocol::CloseCodeNormal), m_closeReason(), m_pingTimer(), m_dataProcessor(), @@ -159,7 +159,7 @@ QWebSocketPrivate::~QWebSocketPrivate() if (!m_pSocket) return; if (state() == QAbstractSocket::ConnectedState) - close(QWebSocketProtocol::CC_GOING_AWAY, tr("Connection closed")); + close(QWebSocketProtocol::CloseCodeGoingAway, tr("Connection closed")); releaseConnections(m_pSocket.data()); } @@ -328,7 +328,7 @@ void QWebSocketPrivate::close(QWebSocketProtocol::CloseCode closeCode, QString r maskingKey = generateMaskingKey(); QWebSocketProtocol::mask(payload.data(), payload.size(), maskingKey); } - QByteArray frame = getFrameHeader(QWebSocketProtocol::OC_CLOSE, + QByteArray frame = getFrameHeader(QWebSocketProtocol::OpCodeClose, payload.size(), maskingKey, true); frame.append(payload); m_pSocket->write(frame); @@ -444,7 +444,7 @@ void QWebSocketPrivate::ping(const QByteArray &payload) { QByteArray payloadTruncated = payload.left(125); m_pingTimer.restart(); - QByteArray pingFrame = getFrameHeader(QWebSocketProtocol::OC_PING, payloadTruncated.size(), + QByteArray pingFrame = getFrameHeader(QWebSocketProtocol::OpCodePing, payloadTruncated.size(), 0 /*do not mask*/, true); pingFrame.append(payloadTruncated); qint64 ret = writeFrame(pingFrame); @@ -698,7 +698,7 @@ qint64 QWebSocketPrivate::doWriteFrames(const QByteArray &data, bool isBinary) Q_Q(QWebSocket); const QWebSocketProtocol::OpCode firstOpCode = isBinary ? - QWebSocketProtocol::OC_BINARY : QWebSocketProtocol::OC_TEXT; + QWebSocketProtocol::OpCodeBinary : QWebSocketProtocol::OpCodeText; int numFrames = data.size() / FRAME_SIZE_IN_BYTES; QByteArray tmpData(data); @@ -726,7 +726,7 @@ qint64 QWebSocketPrivate::doWriteFrames(const QByteArray &data, bool isBinary) const quint64 size = qMin(bytesLeft, FRAME_SIZE_IN_BYTES); const QWebSocketProtocol::OpCode opcode = isFirstFrame ? firstOpCode - : QWebSocketProtocol::OC_CONTINUE; + : QWebSocketProtocol::OpCodeContinue; //write header bytesWritten += m_pSocket->write(getFrameHeader(opcode, size, maskingKey, isLastFrame)); @@ -1029,7 +1029,7 @@ void QWebSocketPrivate::processPing(const QByteArray &data) quint32 maskingKey = 0; if (m_mustMask) maskingKey = generateMaskingKey(); - m_pSocket->write(getFrameHeader(QWebSocketProtocol::OC_PONG, data.size(), maskingKey, true)); + m_pSocket->write(getFrameHeader(QWebSocketProtocol::OpCodePong, data.size(), maskingKey, true)); if (data.size() > 0) { QByteArray maskedData = data; if (m_mustMask) diff --git a/src/websockets/qwebsocketdataprocessor.cpp b/src/websockets/qwebsocketdataprocessor.cpp index 620f8c4..9f67225 100644 --- a/src/websockets/qwebsocketdataprocessor.cpp +++ b/src/websockets/qwebsocketdataprocessor.cpp @@ -78,7 +78,7 @@ QWebSocketDataProcessor::QWebSocketDataProcessor(QObject *parent) : m_processingState(PS_READ_HEADER), m_isFinalFrame(false), m_isFragmented(false), - m_opCode(QWebSocketProtocol::OC_CLOSE), + m_opCode(QWebSocketProtocol::OpCodeClose), m_isControlFrame(false), m_hasMask(false), m_mask(0), @@ -135,7 +135,7 @@ void QWebSocketDataProcessor::process(QIODevice *pIoDevice) //we have a dataframe; opcode can be OC_CONTINUE, OC_TEXT or OC_BINARY if (Q_UNLIKELY(!m_isFragmented && frame.isContinuationFrame())) { clear(); - Q_EMIT errorEncountered(QWebSocketProtocol::CC_PROTOCOL_ERROR, + Q_EMIT errorEncountered(QWebSocketProtocol::CloseCodeProtocolError, tr("Received Continuation frame, while there is " \ "nothing to continue.")); return; @@ -143,7 +143,7 @@ void QWebSocketDataProcessor::process(QIODevice *pIoDevice) if (Q_UNLIKELY(m_isFragmented && frame.isDataFrame() && !frame.isContinuationFrame())) { clear(); - Q_EMIT errorEncountered(QWebSocketProtocol::CC_PROTOCOL_ERROR, + Q_EMIT errorEncountered(QWebSocketProtocol::CloseCodeProtocolError, tr("All data frames after the initial data frame " \ "must have opcode 0 (continuation).")); return; @@ -152,18 +152,18 @@ void QWebSocketDataProcessor::process(QIODevice *pIoDevice) m_opCode = frame.opCode(); m_isFragmented = !frame.isFinalFrame(); } - quint64 messageLength = (quint64)(m_opCode == QWebSocketProtocol::OC_TEXT) + quint64 messageLength = (quint64)(m_opCode == QWebSocketProtocol::OpCodeText) ? m_textMessage.length() : m_binaryMessage.length(); if (Q_UNLIKELY((messageLength + quint64(frame.payload().length())) > MAX_MESSAGE_SIZE_IN_BYTES)) { clear(); - Q_EMIT errorEncountered(QWebSocketProtocol::CC_TOO_MUCH_DATA, + Q_EMIT errorEncountered(QWebSocketProtocol::CloseCodeTooMuchData, tr("Received message is too big.")); return; } - if (m_opCode == QWebSocketProtocol::OC_TEXT) { + if (m_opCode == QWebSocketProtocol::OpCodeText) { QString frameTxt = m_pTextCodec->toUnicode(frame.payload().constData(), frame.payload().size(), m_pConverterState); @@ -171,7 +171,7 @@ void QWebSocketDataProcessor::process(QIODevice *pIoDevice) || (frame.isFinalFrame() && (m_pConverterState->remainingChars != 0)); if (Q_UNLIKELY(failed)) { clear(); - Q_EMIT errorEncountered(QWebSocketProtocol::CC_WRONG_DATATYPE, + Q_EMIT errorEncountered(QWebSocketProtocol::CloseCodeWrongDatatype, tr("Invalid UTF-8 code encountered.")); return; } else { @@ -184,7 +184,7 @@ void QWebSocketDataProcessor::process(QIODevice *pIoDevice) } if (frame.isFinalFrame()) { - if (m_opCode == QWebSocketProtocol::OC_TEXT) + if (m_opCode == QWebSocketProtocol::OpCodeText) Q_EMIT textMessageReceived(m_textMessage); else Q_EMIT binaryMessageReceived(m_binaryMessage); @@ -208,7 +208,7 @@ void QWebSocketDataProcessor::clear() m_processingState = PS_READ_HEADER; m_isFinalFrame = false; m_isFragmented = false; - m_opCode = QWebSocketProtocol::OC_CLOSE; + m_opCode = QWebSocketProtocol::OpCodeClose; m_hasMask = false; m_mask = 0; m_binaryMessage.clear(); @@ -232,29 +232,29 @@ bool QWebSocketDataProcessor::processControlFrame(const QWebSocketFrame &frame) { bool mustStopProcessing = true; //control frames never expect additional frames to be processed switch (frame.opCode()) { - case QWebSocketProtocol::OC_PING: + case QWebSocketProtocol::OpCodePing: Q_EMIT pingReceived(frame.payload()); break; - case QWebSocketProtocol::OC_PONG: + case QWebSocketProtocol::OpCodePong: Q_EMIT pongReceived(frame.payload()); break; - case QWebSocketProtocol::OC_CLOSE: + case QWebSocketProtocol::OpCodeClose: { - quint16 closeCode = QWebSocketProtocol::CC_NORMAL; + quint16 closeCode = QWebSocketProtocol::CloseCodeNormal; QString closeReason; QByteArray payload = frame.payload(); if (Q_UNLIKELY(payload.size() == 1)) { //size is either 0 (no close code and no reason) //or >= 2 (at least a close code of 2 bytes) - closeCode = QWebSocketProtocol::CC_PROTOCOL_ERROR; + closeCode = QWebSocketProtocol::CloseCodeProtocolError; closeReason = tr("Payload of close frame is too small."); } else if (Q_LIKELY(payload.size() > 1)) { //close frame can have a close code and reason closeCode = qFromBigEndian(reinterpret_cast(payload.constData())); if (Q_UNLIKELY(!QWebSocketProtocol::isCloseCodeValid(closeCode))) { - closeCode = QWebSocketProtocol::CC_PROTOCOL_ERROR; + closeCode = QWebSocketProtocol::CloseCodeProtocolError; closeReason = tr("Invalid close code %1 detected.").arg(closeCode); } else { if (payload.size() > 2) { @@ -263,7 +263,7 @@ bool QWebSocketDataProcessor::processControlFrame(const QWebSocketFrame &frame) closeReason = tc->toUnicode(payload.constData() + 2, payload.size() - 2, &state); const bool failed = (state.invalidChars != 0) || (state.remainingChars != 0); if (Q_UNLIKELY(failed)) { - closeCode = QWebSocketProtocol::CC_WRONG_DATATYPE; + closeCode = QWebSocketProtocol::CloseCodeWrongDatatype; closeReason = tr("Invalid UTF-8 code encountered."); } } @@ -273,25 +273,25 @@ bool QWebSocketDataProcessor::processControlFrame(const QWebSocketFrame &frame) break; } - case QWebSocketProtocol::OC_CONTINUE: - case QWebSocketProtocol::OC_BINARY: - case QWebSocketProtocol::OC_TEXT: - case QWebSocketProtocol::OC_RESERVED_3: - case QWebSocketProtocol::OC_RESERVED_4: - case QWebSocketProtocol::OC_RESERVED_5: - case QWebSocketProtocol::OC_RESERVED_6: - case QWebSocketProtocol::OC_RESERVED_7: - case QWebSocketProtocol::OC_RESERVED_C: - case QWebSocketProtocol::OC_RESERVED_B: - case QWebSocketProtocol::OC_RESERVED_D: - case QWebSocketProtocol::OC_RESERVED_E: - case QWebSocketProtocol::OC_RESERVED_F: + case QWebSocketProtocol::OpCodeContinue: + case QWebSocketProtocol::OpCodeBinary: + case QWebSocketProtocol::OpCodeText: + case QWebSocketProtocol::OpCodeReserved3: + case QWebSocketProtocol::OpCodeReserved4: + case QWebSocketProtocol::OpCodeReserved5: + case QWebSocketProtocol::OpCodeReserved6: + case QWebSocketProtocol::OpCodeReserved7: + case QWebSocketProtocol::OpCodeReservedC: + case QWebSocketProtocol::OpCodeReservedB: + case QWebSocketProtocol::OpCodeReservedD: + case QWebSocketProtocol::OpCodeReservedE: + case QWebSocketProtocol::OpCodeReservedF: //do nothing //case statements added to make C++ compiler happy break; default: - Q_EMIT errorEncountered(QWebSocketProtocol::CC_PROTOCOL_ERROR, + Q_EMIT errorEncountered(QWebSocketProtocol::CloseCodeProtocolError, tr("Invalid opcode detected: %1").arg(int(frame.opCode()))); //do nothing break; diff --git a/src/websockets/qwebsocketframe.cpp b/src/websockets/qwebsocketframe.cpp index 7c50e81..f5a4787 100644 --- a/src/websockets/qwebsocketframe.cpp +++ b/src/websockets/qwebsocketframe.cpp @@ -67,14 +67,14 @@ QT_BEGIN_NAMESPACE \internal */ QWebSocketFrame::QWebSocketFrame() : - m_closeCode(QWebSocketProtocol::CC_NORMAL), + m_closeCode(QWebSocketProtocol::CloseCodeNormal), m_closeReason(), m_isFinalFrame(true), m_mask(0), m_rsv1(0), m_rsv2(0), m_rsv3(0), - m_opCode(QWebSocketProtocol::OC_RESERVED_C), + m_opCode(QWebSocketProtocol::OpCodeReservedC), m_length(0), m_payload(), m_isValid(false) @@ -225,7 +225,7 @@ bool QWebSocketFrame::isDataFrame() const */ bool QWebSocketFrame::isContinuationFrame() const { - return isDataFrame() && (m_opCode == QWebSocketProtocol::OC_CONTINUE); + return isDataFrame() && (m_opCode == QWebSocketProtocol::OpCodeContinue); } /*! @@ -291,14 +291,14 @@ QByteArray QWebSocketFrame::payload() const */ void QWebSocketFrame::clear() { - m_closeCode = QWebSocketProtocol::CC_NORMAL; + m_closeCode = QWebSocketProtocol::CloseCodeNormal; m_closeReason.clear(); m_isFinalFrame = true; m_mask = 0; m_rsv1 = 0; m_rsv2 = 0; m_rsv3 = 0; - m_opCode = QWebSocketProtocol::OC_RESERVED_C; + m_opCode = QWebSocketProtocol::OpCodeReservedC; m_length = 0; m_payload.clear(); m_isValid = false; @@ -340,7 +340,7 @@ QWebSocketFrame QWebSocketFrame::readFrame(QIODevice *pIoDevice) //the GUI will hang for at most 5 seconds //maybe, a QStateMachine should be used if (!pIoDevice->waitForReadyRead(5000)) { - frame.setError(QWebSocketProtocol::CC_GOING_AWAY, + frame.setError(QWebSocketProtocol::CloseCodeGoingAway, QObject::tr("Timeout when reading data from socket.")); processingState = PS_DISPATCH_RESULT; } else { @@ -394,7 +394,7 @@ QWebSocketFrame QWebSocketFrame::readFrame(QIODevice *pIoDevice) uchar length[2] = {0}; bytesRead = pIoDevice->read(reinterpret_cast(length), 2); if (Q_UNLIKELY(bytesRead == -1)) { - frame.setError(QWebSocketProtocol::CC_GOING_AWAY, + frame.setError(QWebSocketProtocol::CloseCodeGoingAway, QObject::tr("Error occurred while reading from the network: %1") .arg(pIoDevice->errorString())); processingState = PS_DISPATCH_RESULT; @@ -405,7 +405,7 @@ QWebSocketFrame QWebSocketFrame::readFrame(QIODevice *pIoDevice) //"in all cases, the minimal number of bytes MUST be used to encode //the length, for example, the length of a 124-byte-long string //can't be encoded as the sequence 126, 0, 124" - frame.setError(QWebSocketProtocol::CC_PROTOCOL_ERROR, + frame.setError(QWebSocketProtocol::CloseCodeProtocolError, QObject::tr("Lengths smaller than 126 " \ "must be expressed as one byte.")); processingState = PS_DISPATCH_RESULT; @@ -423,7 +423,7 @@ QWebSocketFrame QWebSocketFrame::readFrame(QIODevice *pIoDevice) uchar length[8] = {0}; bytesRead = pIoDevice->read(reinterpret_cast(length), 8); if (Q_UNLIKELY(bytesRead < 8)) { - frame.setError(QWebSocketProtocol::CC_ABNORMAL_DISCONNECTION, + frame.setError(QWebSocketProtocol::CloseCodeAbnormalDisconnection, QObject::tr("Something went wrong during "\ "reading from the network.")); processingState = PS_DISPATCH_RESULT; @@ -432,7 +432,7 @@ QWebSocketFrame QWebSocketFrame::readFrame(QIODevice *pIoDevice) //per http://tools.ietf.org/html/rfc6455#section-5.2 payloadLength = qFromBigEndian(length); if (Q_UNLIKELY(payloadLength & (quint64(1) << 63))) { - frame.setError(QWebSocketProtocol::CC_PROTOCOL_ERROR, + frame.setError(QWebSocketProtocol::CloseCodeProtocolError, QObject::tr("Highest bit of payload length is not 0.")); processingState = PS_DISPATCH_RESULT; } else if (Q_UNLIKELY(payloadLength <= 0xFFFFu)) { @@ -440,7 +440,7 @@ QWebSocketFrame QWebSocketFrame::readFrame(QIODevice *pIoDevice) //"in all cases, the minimal number of bytes MUST be used to encode //the length, for example, the length of a 124-byte-long string //can't be encoded as the sequence 126, 0, 124" - frame.setError(QWebSocketProtocol::CC_PROTOCOL_ERROR, + frame.setError(QWebSocketProtocol::CloseCodeProtocolError, QObject::tr("Lengths smaller than 65536 (2^16) " \ "must be expressed as 2 bytes.")); processingState = PS_DISPATCH_RESULT; @@ -459,7 +459,7 @@ QWebSocketFrame QWebSocketFrame::readFrame(QIODevice *pIoDevice) bytesRead = pIoDevice->read(reinterpret_cast(&frame.m_mask), sizeof(frame.m_mask)); if (bytesRead == -1) { - frame.setError(QWebSocketProtocol::CC_GOING_AWAY, + frame.setError(QWebSocketProtocol::CloseCodeGoingAway, QObject::tr("Error while reading from the network: %1.") .arg(pIoDevice->errorString())); processingState = PS_DISPATCH_RESULT; @@ -476,7 +476,7 @@ QWebSocketFrame QWebSocketFrame::readFrame(QIODevice *pIoDevice) if (!payloadLength) { processingState = PS_DISPATCH_RESULT; } else if (Q_UNLIKELY(payloadLength > MAX_FRAME_SIZE_IN_BYTES)) { - frame.setError(QWebSocketProtocol::CC_TOO_MUCH_DATA, + frame.setError(QWebSocketProtocol::CloseCodeTooMuchData, QObject::tr("Maximum framesize exceeded.")); processingState = PS_DISPATCH_RESULT; } else { @@ -487,7 +487,7 @@ QWebSocketFrame QWebSocketFrame::readFrame(QIODevice *pIoDevice) //because MAX_FRAME_SIZE_IN_BYTES = MAX_INT if (Q_UNLIKELY(frame.m_payload.length() != int(payloadLength))) { //some error occurred; refer to the Qt documentation of QIODevice::read() - frame.setError(QWebSocketProtocol::CC_ABNORMAL_DISCONNECTION, + frame.setError(QWebSocketProtocol::CloseCodeAbnormalDisconnection, QObject::tr("Some serious error occurred " \ "while reading from the network.")); processingState = PS_DISPATCH_RESULT; @@ -539,15 +539,15 @@ bool QWebSocketFrame::checkValidity() if (isValid()) return true; if (Q_UNLIKELY(m_rsv1 || m_rsv2 || m_rsv3)) { - setError(QWebSocketProtocol::CC_PROTOCOL_ERROR, QObject::tr("Rsv field is non-zero")); + setError(QWebSocketProtocol::CloseCodeProtocolError, QObject::tr("Rsv field is non-zero")); } else if (Q_UNLIKELY(QWebSocketProtocol::isOpCodeReserved(m_opCode))) { - setError(QWebSocketProtocol::CC_PROTOCOL_ERROR, QObject::tr("Used reserved opcode")); + setError(QWebSocketProtocol::CloseCodeProtocolError, QObject::tr("Used reserved opcode")); } else if (isControlFrame()) { if (Q_UNLIKELY(m_length > 125)) { - setError(QWebSocketProtocol::CC_PROTOCOL_ERROR, + setError(QWebSocketProtocol::CloseCodeProtocolError, QObject::tr("Controle frame is larger than 125 bytes")); } else if (Q_UNLIKELY(!m_isFinalFrame)) { - setError(QWebSocketProtocol::CC_PROTOCOL_ERROR, + setError(QWebSocketProtocol::CloseCodeProtocolError, QObject::tr("Controle frames cannot be fragmented")); } else { m_isValid = true; diff --git a/src/websockets/qwebsockethandshakeresponse.cpp b/src/websockets/qwebsockethandshakeresponse.cpp index dbf4b6f..3700b21 100644 --- a/src/websockets/qwebsockethandshakeresponse.cpp +++ b/src/websockets/qwebsockethandshakeresponse.cpp @@ -72,8 +72,8 @@ QWebSocketHandshakeResponse::QWebSocketHandshakeResponse( m_response(), m_acceptedProtocol(), m_acceptedExtension(), - m_acceptedVersion(QWebSocketProtocol::V_Unknow), - m_error(QWebSocketProtocol::CC_NORMAL), + m_acceptedVersion(QWebSocketProtocol::VersionUnknown), + m_error(QWebSocketProtocol::CloseCodeNormal), m_errorString() { m_response = getHandshakeResponse(request, serverName, @@ -140,7 +140,7 @@ QString QWebSocketHandshakeResponse::getHandshakeResponse( if (!isOriginAllowed) { if (!m_canUpgrade) { - m_error = QWebSocketProtocol::CC_POLICY_VIOLATED; + m_error = QWebSocketProtocol::CloseCodePolicyViolated; m_errorString = tr("Access forbidden."); response << QStringLiteral("HTTP/1.1 403 Access Forbidden"); } @@ -157,7 +157,7 @@ QString QWebSocketHandshakeResponse::getHandshakeResponse( std::greater()); //sort in descending order if (Q_UNLIKELY(matchingVersions.isEmpty())) { - m_error = QWebSocketProtocol::CC_PROTOCOL_ERROR; + m_error = QWebSocketProtocol::CloseCodeProtocolError; m_errorString = tr("Unsupported version requested."); m_canUpgrade = false; } else { @@ -189,7 +189,7 @@ QString QWebSocketHandshakeResponse::getHandshakeResponse( m_canUpgrade = true; } } else { - m_error = QWebSocketProtocol::CC_PROTOCOL_ERROR; + m_error = QWebSocketProtocol::CloseCodeProtocolError; m_errorString = tr("Bad handshake request received."); m_canUpgrade = false; } diff --git a/src/websockets/qwebsocketprotocol.cpp b/src/websockets/qwebsocketprotocol.cpp index 3b5c52d..efcc313 100644 --- a/src/websockets/qwebsocketprotocol.cpp +++ b/src/websockets/qwebsocketprotocol.cpp @@ -59,19 +59,19 @@ QT_BEGIN_NAMESPACE The close codes supported by WebSockets V13 - \value CC_NORMAL Normal closure - \value CC_GOING_AWAY Going away - \value CC_PROTOCOL_ERROR Protocol error - \value CC_DATATYPE_NOT_SUPPORTED Unsupported data - \value CC_RESERVED_1004 Reserved - \value CC_MISSING_STATUS_CODE No status received - \value CC_ABNORMAL_DISCONNECTION Abnormal closure - \value CC_WRONG_DATATYPE Invalid frame payload data - \value CC_POLICY_VIOLATED Policy violation - \value CC_TOO_MUCH_DATA Message too big - \value CC_MISSING_EXTENSION Mandatory extension missing - \value CC_BAD_OPERATION Internal server error - \value CC_TLS_HANDSHAKE_FAILED TLS handshake failed + \value CloseCodeNormal Normal closure + \value CloseCodeGoingAway Going away + \value CloseCodeProtocolError Protocol error + \value CloseCodeDatatypeNotSupported Unsupported data + \value CloseCodeReserved1004 Reserved + \value CloseCodeMissingStatusCode No status received + \value CloseCodeAbnormalDisconnection Abnormal closure + \value CloseCodeWrongDatatype Invalid frame payload data + \value CloseCodePolicyViolated Policy violation + \value CloseCodeTooMuchData Message too big + \value CloseCodeMissingExtension Mandatory extension missing + \value CloseCodeBadOperation Internal server error + \value CloseCodeHandshakeFailed TLS handshake failed \sa QWebSocket::close() */ @@ -85,33 +85,38 @@ QT_BEGIN_NAMESPACE For an overview of the differences between the different protocols, see - \value V_Unknow - \value V_0 hixie76: http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76 & - hybi-00: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00. - Works with key1, key2 and a key in the payload. - Attribute: Sec-WebSocket-Draft value 0. - \value V_4 hybi-04: http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-04.txt. - Changed handshake: key1, key2, key3 - ==> Sec-WebSocket-Key, Sec-WebSocket-Nonce, Sec-WebSocket-Accept - Sec-WebSocket-Draft renamed to Sec-WebSocket-Version - Sec-WebSocket-Version = 4 - \value V_5 hybi-05: http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-05.txt. - Sec-WebSocket-Version = 5 - Removed Sec-WebSocket-Nonce - Added Sec-WebSocket-Accept - \value V_6 Sec-WebSocket-Version = 6. - \value V_7 hybi-07: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-07. - Sec-WebSocket-Version = 7 - \value V_8 hybi-8, hybi-9, hybi-10, hybi-11 and hybi-12. - Status codes 1005 and 1006 are added and all codes are now unsigned - Internal error results in 1006 - \value V_13 hybi-13, hybi14, hybi-15, hybi-16, hybi-17 and RFC 6455. - Sec-WebSocket-Version = 13 - Status code 1004 is now reserved - Added 1008, 1009 and 1010 - Must support TLS - Clarify multiple version support - \value V_LATEST Refers to the latest know version to QWebSockets. + \value VersionUnknow Unknown or unspecified version. + \value Version0 hixie76: + http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76 & + hybi-00: + http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00. + Works with key1, key2 and a key in the payload. + Attribute: Sec-WebSocket-Draft value 0. + \value Version4 hybi-04: + http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-04.txt. + Changed handshake: key1, key2, key3 + ==> Sec-WebSocket-Key, Sec-WebSocket-Nonce, Sec-WebSocket-Accept + Sec-WebSocket-Draft renamed to Sec-WebSocket-Version + Sec-WebSocket-Version = 4. + \value Version5 hybi-05: + http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-05.txt. + Sec-WebSocket-Version = 5 + Removed Sec-WebSocket-Nonce + Added Sec-WebSocket-Accept. + \value Version6 Sec-WebSocket-Version = 6. + \value Version7 hybi-07: + http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-07. + Sec-WebSocket-Version = 7. + \value Version8 hybi-8, hybi-9, hybi-10, hybi-11 and hybi-12. + Status codes 1005 and 1006 are added and all codes are now unsigned + Internal error results in 1006. + \value Version13 hybi-13, hybi14, hybi-15, hybi-16, hybi-17 and RFC 6455. + Sec-WebSocket-Version = 13 + Status code 1004 is now reserved + Added 1008, 1009 and 1010 + Must support TLS + Clarify multiple version suppor.t + \value VersionLatest Refers to the latest known version to QtWebSockets. */ /*! @@ -121,22 +126,22 @@ QT_BEGIN_NAMESPACE The frame opcodes as defined by the WebSockets standard - \value OC_CONTINUE Continuation frame - \value OC_TEXT Text frame - \value OC_BINARY Binary frame - \value OC_RESERVED_3 Reserved - \value OC_RESERVED_4 Reserved - \value OC_RESERVED_5 Reserved - \value OC_RESERVED_6 Reserved - \value OC_RESERVED_7 Reserved - \value OC_CLOSE Close frame - \value OC_PING Ping frame - \value OC_PONG Pong frame - \value OC_RESERVED_B Reserved - \value OC_RESERVED_C Reserved - \value OC_RESERVED_D Reserved - \value OC_RESERVED_E Reserved - \value OC_RESERVED_F Reserved + \value OpCodeContinue Continuation frame + \value OpCodeText Text frame + \value OpCodeBinary Binary frame + \value OpCodeReserved3 Reserved + \value OpCodeReserved4 Reserved + \value OpCodeReserved5 Reserved + \value OpCodeReserved6 Reserved + \value OpCodeReserved7 Reserved + \value OpCodeClose Close frame + \value OpCodePing Ping frame + \value OpCodePong Pong frame + \value OpCodeReservedB Reserved + \value OpCodeReservedC Reserved + \value OpCodeReservedD Reserved + \value OpCodeReservedE Reserved + \value OpCodeReservedF Reserved \internal */ @@ -170,10 +175,11 @@ QT_BEGIN_NAMESPACE QWebSocketProtocol::Version QWebSocketProtocol::versionFromString(const QString &versionString) { bool ok = false; - Version version = V_Unknow; + Version version = VersionUnknown; const int ver = versionString.toInt(&ok); QSet supportedVersions; - supportedVersions << V_0 << V_4 << V_5 << V_6 << V_7 << V_8 << V_13; + supportedVersions << Version0 << Version4 << Version5 << Version6 << Version7 << Version8 + << Version13; if (Q_LIKELY(ok) && (supportedVersions.contains(static_cast(ver)))) version = static_cast(ver); return version; diff --git a/src/websockets/qwebsocketprotocol.h b/src/websockets/qwebsocketprotocol.h index de62d75..c058937 100644 --- a/src/websockets/qwebsocketprotocol.h +++ b/src/websockets/qwebsocketprotocol.h @@ -53,38 +53,38 @@ namespace QWebSocketProtocol { enum Version { - V_Unknow = -1, - V_0 = 0, + VersionUnknown = -1, + Version0 = 0, //hybi-01, hybi-02 and hybi-03 not supported - V_4 = 4, - V_5 = 5, - V_6 = 6, - V_7 = 7, - V_8 = 8, - V_13 = 13, - V_LATEST = V_13 + Version4 = 4, + Version5 = 5, + Version6 = 6, + Version7 = 7, + Version8 = 8, + Version13 = 13, + VersionLatest = Version13 }; Version versionFromString(const QString &versionString); enum CloseCode { - CC_NORMAL = 1000, - CC_GOING_AWAY = 1001, - CC_PROTOCOL_ERROR = 1002, - CC_DATATYPE_NOT_SUPPORTED = 1003, - CC_RESERVED_1004 = 1004, - CC_MISSING_STATUS_CODE = 1005, - CC_ABNORMAL_DISCONNECTION = 1006, - CC_WRONG_DATATYPE = 1007, - CC_POLICY_VIOLATED = 1008, - CC_TOO_MUCH_DATA = 1009, - CC_MISSING_EXTENSION = 1010, - CC_BAD_OPERATION = 1011, - CC_TLS_HANDSHAKE_FAILED = 1015 + CloseCodeNormal = 1000, + CloseCodeGoingAway = 1001, + CloseCodeProtocolError = 1002, + CloseCodeDatatypeNotSupported = 1003, + CloseCodeReserved1004 = 1004, + CloseCodeMissingStatusCode = 1005, + CloseCodeAbnormalDisconnection = 1006, + CloseCodeWrongDatatype = 1007, + CloseCodePolicyViolated = 1008, + CloseCodeTooMuchData = 1009, + CloseCodeMissingExtension = 1010, + CloseCodeBadOperation = 1011, + CloseCodeTlsHandshakeFailed = 1015 }; -inline Version currentVersion() { return V_LATEST; } +inline Version currentVersion() { return VersionLatest; } } //end namespace QWebSocketProtocol diff --git a/src/websockets/qwebsocketprotocol_p.h b/src/websockets/qwebsocketprotocol_p.h index 2fcbb4d..e2c883a 100644 --- a/src/websockets/qwebsocketprotocol_p.h +++ b/src/websockets/qwebsocketprotocol_p.h @@ -54,35 +54,35 @@ namespace QWebSocketProtocol { enum OpCode { - OC_CONTINUE = 0x0, - OC_TEXT = 0x1, - OC_BINARY = 0x2, - OC_RESERVED_3 = 0x3, - OC_RESERVED_4 = 0x4, - OC_RESERVED_5 = 0x5, - OC_RESERVED_6 = 0x6, - OC_RESERVED_7 = 0x7, - OC_CLOSE = 0x8, - OC_PING = 0x9, - OC_PONG = 0xA, - OC_RESERVED_B = 0xB, - OC_RESERVED_C = 0xC, - OC_RESERVED_D = 0xD, - OC_RESERVED_E = 0xE, - OC_RESERVED_F = 0xF + OpCodeContinue = 0x0, + OpCodeText = 0x1, + OpCodeBinary = 0x2, + OpCodeReserved3 = 0x3, + OpCodeReserved4 = 0x4, + OpCodeReserved5 = 0x5, + OpCodeReserved6 = 0x6, + OpCodeReserved7 = 0x7, + OpCodeClose = 0x8, + OpCodePing = 0x9, + OpCodePong = 0xA, + OpCodeReservedB = 0xB, + OpCodeReservedC = 0xC, + OpCodeReservedD = 0xD, + OpCodeReservedE = 0xE, + OpCodeReservedF = 0xF }; inline bool isOpCodeReserved(OpCode code) { - return ((code > OC_BINARY) && (code < OC_CLOSE)) || (code > OC_PONG); + return ((code > OpCodeBinary) && (code < OpCodeClose)) || (code > OpCodePong); } inline bool isCloseCodeValid(int closeCode) { return (closeCode > 999) && (closeCode < 5000) && - (closeCode != CC_RESERVED_1004) && //see RFC6455 7.4.1 - (closeCode != CC_MISSING_STATUS_CODE) && - (closeCode != CC_ABNORMAL_DISCONNECTION) && + (closeCode != CloseCodeReserved1004) && //see RFC6455 7.4.1 + (closeCode != CloseCodeMissingStatusCode) && + (closeCode != CloseCodeAbnormalDisconnection) && ((closeCode >= 3000) || (closeCode < 1012)); } diff --git a/src/websockets/qwebsocketserver.cpp b/src/websockets/qwebsocketserver.cpp index ea7144d..dcc4309 100644 --- a/src/websockets/qwebsocketserver.cpp +++ b/src/websockets/qwebsocketserver.cpp @@ -182,10 +182,10 @@ /*! \enum QWebSocketServer::SecureMode - Indicates whether the server operates over wss (SECURE_MODE) or ws (NON_SECURE_MODE) + Indicates whether the server operates over wss (SecureModeSecure) or ws (SecureModeNonSecure) - \value SECURE_MODE The server operates in secure mode (over wss) - \value NON_SECURE_MODE The server operates in non-secure mode (over ws) + \value SecureModeSecure The server operates in secure mode (over wss) + \value SecureModeNonSecure The server operates in non-secure mode (over ws) */ #include "qwebsocketprotocol.h" @@ -216,11 +216,11 @@ QWebSocketServer::QWebSocketServer(const QString &serverName, SecureMode secureM QObject(parent), d_ptr(new QWebSocketServerPrivate(serverName, #ifndef QT_NO_SSL - (secureMode == SECURE_MODE) ? - QWebSocketServerPrivate::SECURE_MODE : - QWebSocketServerPrivate::NON_SECURE_MODE, + (secureMode == SecureModeSecure) ? + QWebSocketServerPrivate::SecureModeSecure : + QWebSocketServerPrivate::SecureModeNonSecure, #else - QWebSocketServerPrivate::NON_SECURE_MODE, + QWebSocketServerPrivate::SecureModeNonSecure, #endif this, this)) @@ -373,7 +373,7 @@ void QWebSocketServer::setProxy(const QNetworkProxy &networkProxy) /*! Sets the SSL configuration for the websocket server to \a sslConfiguration. This method has no effect if QWebSocketServer runs in non-secure mode - (QWebSocketServer::NON_SECURE_MODE). + (QWebSocketServer::SecureModeNonSecure). \sa sslConfiguration(), SecureMode */ @@ -449,10 +449,10 @@ QWebSocketServer::SecureMode QWebSocketServer::secureMode() const { #ifndef QT_NO_SSL Q_D(const QWebSocketServer); - return (d->secureMode() == QWebSocketServerPrivate::SECURE_MODE) ? - QWebSocketServer::SECURE_MODE : QWebSocketServer::NON_SECURE_MODE; + return (d->secureMode() == QWebSocketServerPrivate::SecureModeSecure) ? + QWebSocketServer::SecureModeSecure : QWebSocketServer::SecureModeNonSecure; #else - return QWebSocketServer::NON_SECURE_MODE; + return QWebSocketServer::SecureModeNonSecure; #endif } diff --git a/src/websockets/qwebsocketserver.h b/src/websockets/qwebsocketserver.h index 7e484fb..2267a66 100644 --- a/src/websockets/qwebsocketserver.h +++ b/src/websockets/qwebsocketserver.h @@ -71,9 +71,9 @@ class Q_WEBSOCKETS_EXPORT QWebSocketServer : public QObject public: enum SecureMode { #ifndef QT_NO_SSL - SECURE_MODE, + SecureModeSecure, #endif - NON_SECURE_MODE + SecureModeNonSecure }; explicit QWebSocketServer(const QString &serverName, SecureMode secureMode, diff --git a/src/websockets/qwebsocketserver_p.cpp b/src/websockets/qwebsocketserver_p.cpp index 52955ad..4490826 100644 --- a/src/websockets/qwebsocketserver_p.cpp +++ b/src/websockets/qwebsocketserver_p.cpp @@ -70,11 +70,11 @@ QWebSocketServerPrivate::QWebSocketServerPrivate(const QString &serverName, m_serverName(serverName), m_secureMode(secureMode), m_pendingConnections(), - m_error(QWebSocketProtocol::CC_NORMAL), + m_error(QWebSocketProtocol::CloseCodeNormal), m_errorString() { Q_ASSERT(pWebSocketServer); - if (m_secureMode == NON_SECURE_MODE) { + if (m_secureMode == SecureModeSecure) { m_pTcpServer = new QTcpServer(this); if (Q_LIKELY(m_pTcpServer)) connect(m_pTcpServer, &QTcpServer::newConnection, @@ -118,7 +118,7 @@ void QWebSocketServerPrivate::close() m_pTcpServer->close(); while (!m_pendingConnections.isEmpty()) { QWebSocket *pWebSocket = m_pendingConnections.dequeue(); - pWebSocket->close(QWebSocketProtocol::CC_GOING_AWAY, tr("Server closed.")); + pWebSocket->close(QWebSocketProtocol::CloseCodeGoingAway, tr("Server closed.")); pWebSocket->deleteLater(); } //emit signal via the event queue, so the server gets time @@ -326,7 +326,7 @@ QWebSocketServerPrivate::SecureMode QWebSocketServerPrivate::secureMode() const #ifndef QT_NO_SSL void QWebSocketServerPrivate::setSslConfiguration(const QSslConfiguration &sslConfiguration) { - if (m_secureMode == SECURE_MODE) + if (m_secureMode == SecureModeSecure) qobject_cast(m_pTcpServer)->setSslConfiguration(sslConfiguration); else qWarning() << tr("Cannot set SSL configuration for non-secure server."); @@ -334,7 +334,7 @@ void QWebSocketServerPrivate::setSslConfiguration(const QSslConfiguration &sslCo QSslConfiguration QWebSocketServerPrivate::sslConfiguration() const { - if (m_secureMode == SECURE_MODE) + if (m_secureMode == SecureModeSecure) return qobject_cast(m_pTcpServer)->sslConfiguration(); else return QSslConfiguration::defaultConfiguration(); @@ -388,7 +388,7 @@ void QWebSocketServerPrivate::handshakeReceived() pTcpSocket->close(); qWarning() << tr("Too many pending connections: new websocket connection not accepted."); - setError(QWebSocketProtocol::CC_ABNORMAL_DISCONNECTION, + setError(QWebSocketProtocol::CloseCodeAbnormalDisconnection, tr("Too many pending connections.")); return; } @@ -423,7 +423,7 @@ void QWebSocketServerPrivate::handshakeReceived() Q_EMIT q->newConnection(); success = true; } else { - setError(QWebSocketProtocol::CC_ABNORMAL_DISCONNECTION, + setError(QWebSocketProtocol::CloseCodeAbnormalDisconnection, tr("Upgrading to websocket failed.")); } } @@ -431,7 +431,7 @@ void QWebSocketServerPrivate::handshakeReceived() setError(response.error(), response.errorString()); } } else { - setError(QWebSocketProtocol::CC_PROTOCOL_ERROR, tr("Invalid response received.")); + setError(QWebSocketProtocol::CloseCodeProtocolError, tr("Invalid response received.")); } } if (!success) { diff --git a/src/websockets/qwebsocketserver_p.h b/src/websockets/qwebsocketserver_p.h index b7072e0..9a2977e 100644 --- a/src/websockets/qwebsocketserver_p.h +++ b/src/websockets/qwebsocketserver_p.h @@ -77,8 +77,8 @@ class QWebSocketServerPrivate : public QObject public: enum SecureMode { - SECURE_MODE = true, - NON_SECURE_MODE + SecureModeSecure = true, + SecureModeNonSecure }; explicit QWebSocketServerPrivate(const QString &serverName, SecureMode secureMode, diff --git a/tests/auto/dataprocessor/tst_dataprocessor.cpp b/tests/auto/dataprocessor/tst_dataprocessor.cpp index f99a569..4fc3a6e 100644 --- a/tests/auto/dataprocessor/tst_dataprocessor.cpp +++ b/tests/auto/dataprocessor/tst_dataprocessor.cpp @@ -249,7 +249,7 @@ void tst_DataProcessor::goodBinaryFrame() QWebSocketDataProcessor dataProcessor; QFETCH(QByteArray, payload); - data.append((char)(FIN | QWebSocketProtocol::OC_BINARY)); + data.append((char)(FIN | QWebSocketProtocol::OpCodeBinary)); if (payload.length() < 126) { @@ -331,7 +331,7 @@ void tst_DataProcessor::goodTextFrame() QFETCH(QByteArray, payload); QFETCH(int, size); - data.append((char)(FIN | QWebSocketProtocol::OC_TEXT)); + data.append((char)(FIN | QWebSocketProtocol::OpCodeText)); if (payload.length() < 126) { @@ -395,7 +395,7 @@ void tst_DataProcessor::goodControlFrame() QSignalSpy pingReceivedSpy(&dataProcessor, SIGNAL(pingReceived(QByteArray))); QSignalSpy pongReceivedSpy(&dataProcessor, SIGNAL(pongReceived(QByteArray))); - data.append((char)(FIN | QWebSocketProtocol::OC_PING)); + data.append((char)(FIN | QWebSocketProtocol::OpCodePing)); data.append(QChar::fromLatin1(0)); buffer.setData(data); buffer.open(QIODevice::ReadOnly); @@ -413,7 +413,7 @@ void tst_DataProcessor::goodControlFrame() data.clear(); pingReceivedSpy.clear(); pongReceivedSpy.clear(); - data.append((char)(FIN | QWebSocketProtocol::OC_PONG)); + data.append((char)(FIN | QWebSocketProtocol::OpCodePong)); data.append(QChar::fromLatin1(0)); buffer.setData(data); buffer.open(QIODevice::ReadOnly); @@ -437,55 +437,82 @@ void tst_DataProcessor::goodCloseFrame_data() for (int i = 0; i < 124; ++i) { QTest::newRow(QStringLiteral("Close frame with %1 ASCII characters").arg(i).toLatin1().constData()) - << QString(i, 'a') << QWebSocketProtocol::CC_NORMAL; + << QString(i, 'a') << QWebSocketProtocol::CloseCodeNormal; } for (int i = 0; i < 126; ++i) { QTest::newRow(QStringLiteral("Text frame with containing ASCII character '0x%1'") .arg(QByteArray(1, char(i)).toHex().constData()).toLatin1().constData()) - << QString(1, char(i)) << QWebSocketProtocol::CC_NORMAL; + << QString(1, char(i)) << QWebSocketProtocol::CloseCodeNormal; } - QTest::newRow("Close frame with close code NORMAL") << QString(1, 'a') << QWebSocketProtocol::CC_NORMAL; - QTest::newRow("Close frame with close code BAD OPERATION") << QString(1, 'a') << QWebSocketProtocol::CC_BAD_OPERATION; - QTest::newRow("Close frame with close code DATATYPE NOT SUPPORTED") << QString(1, 'a') << QWebSocketProtocol::CC_DATATYPE_NOT_SUPPORTED; - QTest::newRow("Close frame with close code GOING AWAY") << QString(1, 'a') << QWebSocketProtocol::CC_GOING_AWAY; - QTest::newRow("Close frame with close code MISSING EXTENSION") << QString(1, 'a') << QWebSocketProtocol::CC_MISSING_EXTENSION; - QTest::newRow("Close frame with close code POLICY VIOLATED") << QString(1, 'a') << QWebSocketProtocol::CC_POLICY_VIOLATED; - QTest::newRow("Close frame with close code PROTOCOL ERROR") << QString(1, 'a') << QWebSocketProtocol::CC_PROTOCOL_ERROR; - QTest::newRow("Close frame with close code TOO MUCH DATA") << QString(1, 'a') << QWebSocketProtocol::CC_TOO_MUCH_DATA; - QTest::newRow("Close frame with close code WRONG DATATYPE") << QString(1, 'a') << QWebSocketProtocol::CC_WRONG_DATATYPE; - QTest::newRow("Close frame with close code 3000") << QString(1, 'a') << QWebSocketProtocol::CloseCode(3000); - QTest::newRow("Close frame with close code 3999") << QString(1, 'a') << QWebSocketProtocol::CloseCode(3999); - QTest::newRow("Close frame with close code 4000") << QString(1, 'a') << QWebSocketProtocol::CloseCode(4000); - QTest::newRow("Close frame with close code 4999") << QString(1, 'a') << QWebSocketProtocol::CloseCode(4999); + QTest::newRow("Close frame with close code NORMAL") + << QString(1, 'a') << QWebSocketProtocol::CloseCodeNormal; + QTest::newRow("Close frame with close code BAD OPERATION") + << QString(1, 'a') << QWebSocketProtocol::CloseCodeBadOperation; + QTest::newRow("Close frame with close code DATATYPE NOT SUPPORTED") + << QString(1, 'a') << QWebSocketProtocol::CloseCodeDatatypeNotSupported; + QTest::newRow("Close frame with close code GOING AWAY") + << QString(1, 'a') << QWebSocketProtocol::CloseCodeGoingAway; + QTest::newRow("Close frame with close code MISSING EXTENSION") + << QString(1, 'a') << QWebSocketProtocol::CloseCodeMissingExtension; + QTest::newRow("Close frame with close code POLICY VIOLATED") + << QString(1, 'a') << QWebSocketProtocol::CloseCodePolicyViolated; + QTest::newRow("Close frame with close code PROTOCOL ERROR") + << QString(1, 'a') << QWebSocketProtocol::CloseCodeProtocolError; + QTest::newRow("Close frame with close code TOO MUCH DATA") + << QString(1, 'a') << QWebSocketProtocol::CloseCodeTooMuchData; + QTest::newRow("Close frame with close code WRONG DATATYPE") + << QString(1, 'a') << QWebSocketProtocol::CloseCodeWrongDatatype; + QTest::newRow("Close frame with close code 3000") + << QString(1, 'a') << QWebSocketProtocol::CloseCode(3000); + QTest::newRow("Close frame with close code 3999") + << QString(1, 'a') << QWebSocketProtocol::CloseCode(3999); + QTest::newRow("Close frame with close code 4000") + << QString(1, 'a') << QWebSocketProtocol::CloseCode(4000); + QTest::newRow("Close frame with close code 4999") + << QString(1, 'a') << QWebSocketProtocol::CloseCode(4999); //close frames with no close reason - QTest::newRow("Close frame with close code NORMAL and no reason") << QString() << QWebSocketProtocol::CC_NORMAL; - QTest::newRow("Close frame with close code BAD OPERATION and no reason") << QString() << QWebSocketProtocol::CC_BAD_OPERATION; - QTest::newRow("Close frame with close code DATATYPE NOT SUPPORTED and no reason") << QString() << QWebSocketProtocol::CC_DATATYPE_NOT_SUPPORTED; - QTest::newRow("Close frame with close code GOING AWAY and no reason") << QString() << QWebSocketProtocol::CC_GOING_AWAY; - QTest::newRow("Close frame with close code MISSING EXTENSION and no reason") << QString() << QWebSocketProtocol::CC_MISSING_EXTENSION; - QTest::newRow("Close frame with close code POLICY VIOLATED and no reason") << QString() << QWebSocketProtocol::CC_POLICY_VIOLATED; - QTest::newRow("Close frame with close code PROTOCOL ERROR and no reason") << QString() << QWebSocketProtocol::CC_PROTOCOL_ERROR; - QTest::newRow("Close frame with close code TOO MUCH DATA and no reason") << QString() << QWebSocketProtocol::CC_TOO_MUCH_DATA; - QTest::newRow("Close frame with close code WRONG DATATYPE and no reason") << QString() << QWebSocketProtocol::CC_WRONG_DATATYPE; - QTest::newRow("Close frame with close code 3000 and no reason") << QString() << QWebSocketProtocol::CloseCode(3000); - QTest::newRow("Close frame with close code 3999 and no reason") << QString() << QWebSocketProtocol::CloseCode(3999); - QTest::newRow("Close frame with close code 4000 and no reason") << QString() << QWebSocketProtocol::CloseCode(4000); - QTest::newRow("Close frame with close code 4999 and no reason") << QString() << QWebSocketProtocol::CloseCode(4999); - - QTest::newRow("Close frame with no close code and no reason") << QString() << QWebSocketProtocol::CloseCode(0); + QTest::newRow("Close frame with close code NORMAL and no reason") + << QString() << QWebSocketProtocol::CloseCodeNormal; + QTest::newRow("Close frame with close code BAD OPERATION and no reason") + << QString() << QWebSocketProtocol::CloseCodeBadOperation; + QTest::newRow("Close frame with close code DATATYPE NOT SUPPORTED and no reason") + << QString() << QWebSocketProtocol::CloseCodeDatatypeNotSupported; + QTest::newRow("Close frame with close code GOING AWAY and no reason") + << QString() << QWebSocketProtocol::CloseCodeGoingAway; + QTest::newRow("Close frame with close code MISSING EXTENSION and no reason") + << QString() << QWebSocketProtocol::CloseCodeMissingExtension; + QTest::newRow("Close frame with close code POLICY VIOLATED and no reason") + << QString() << QWebSocketProtocol::CloseCodePolicyViolated; + QTest::newRow("Close frame with close code PROTOCOL ERROR and no reason") + << QString() << QWebSocketProtocol::CloseCodeProtocolError; + QTest::newRow("Close frame with close code TOO MUCH DATA and no reason") + << QString() << QWebSocketProtocol::CloseCodeTooMuchData; + QTest::newRow("Close frame with close code WRONG DATATYPE and no reason") + << QString() << QWebSocketProtocol::CloseCodeWrongDatatype; + QTest::newRow("Close frame with close code 3000 and no reason") + << QString() << QWebSocketProtocol::CloseCode(3000); + QTest::newRow("Close frame with close code 3999 and no reason") + << QString() << QWebSocketProtocol::CloseCode(3999); + QTest::newRow("Close frame with close code 4000 and no reason") + << QString() << QWebSocketProtocol::CloseCode(4000); + QTest::newRow("Close frame with close code 4999 and no reason") + << QString() << QWebSocketProtocol::CloseCode(4999); + + QTest::newRow("Close frame with no close code and no reason") + << QString() << QWebSocketProtocol::CloseCode(0); } void tst_DataProcessor::goodOpcodes_data() { QTest::addColumn("opCode"); - QTest::newRow("Frame with PING opcode") << QWebSocketProtocol::OC_PING; - QTest::newRow("Frame with PONG opcode") << QWebSocketProtocol::OC_PONG; - QTest::newRow("Frame with TEXT opcode") << QWebSocketProtocol::OC_TEXT; - QTest::newRow("Frame with BINARY opcode") << QWebSocketProtocol::OC_BINARY; - QTest::newRow("Frame with CLOSE opcode") << QWebSocketProtocol::OC_CLOSE; + QTest::newRow("Frame with PING opcode") << QWebSocketProtocol::OpCodePing; + QTest::newRow("Frame with PONG opcode") << QWebSocketProtocol::OpCodePong; + QTest::newRow("Frame with TEXT opcode") << QWebSocketProtocol::OpCodeText; + QTest::newRow("Frame with BINARY opcode") << QWebSocketProtocol::OpCodeBinary; + QTest::newRow("Frame with CLOSE opcode") << QWebSocketProtocol::OpCodeClose; } void tst_DataProcessor::goodOpcodes() @@ -501,25 +528,33 @@ void tst_DataProcessor::goodOpcodes() buffer.setData(data); buffer.open(QIODevice::ReadOnly); - QSignalSpy errorReceivedSpy(&dataProcessor, SIGNAL(errorEncountered(QWebSocketProtocol::CloseCode,QString))); - QSignalSpy closeReceivedSpy(&dataProcessor, SIGNAL(closeReceived(QWebSocketProtocol::CloseCode,QString))); - QSignalSpy pingReceivedSpy(&dataProcessor, SIGNAL(pingReceived(QByteArray))); - QSignalSpy pongReceivedSpy(&dataProcessor, SIGNAL(pongReceived(QByteArray))); - QSignalSpy textFrameReceivedSpy(&dataProcessor, SIGNAL(textFrameReceived(QString,bool))); - QSignalSpy textMessageReceivedSpy(&dataProcessor, SIGNAL(textMessageReceived(QString))); - QSignalSpy binaryFrameReceivedSpy(&dataProcessor, SIGNAL(binaryFrameReceived(QByteArray,bool))); - QSignalSpy binaryMessageReceivedSpy(&dataProcessor, SIGNAL(binaryMessageReceived(QByteArray))); + QSignalSpy errorReceivedSpy(&dataProcessor, + SIGNAL(errorEncountered(QWebSocketProtocol::CloseCode,QString))); + QSignalSpy closeReceivedSpy(&dataProcessor, + SIGNAL(closeReceived(QWebSocketProtocol::CloseCode,QString))); + QSignalSpy pingReceivedSpy(&dataProcessor, + SIGNAL(pingReceived(QByteArray))); + QSignalSpy pongReceivedSpy(&dataProcessor, + SIGNAL(pongReceived(QByteArray))); + QSignalSpy textFrameReceivedSpy(&dataProcessor, + SIGNAL(textFrameReceived(QString,bool))); + QSignalSpy textMessageReceivedSpy(&dataProcessor, + SIGNAL(textMessageReceived(QString))); + QSignalSpy binaryFrameReceivedSpy(&dataProcessor, + SIGNAL(binaryFrameReceived(QByteArray,bool))); + QSignalSpy binaryMessageReceivedSpy(&dataProcessor, + SIGNAL(binaryMessageReceived(QByteArray))); dataProcessor.process(&buffer); QCOMPARE(errorReceivedSpy.count(), 0); - QCOMPARE(pingReceivedSpy.count(), opCode == QWebSocketProtocol::OC_PING ? 1 : 0); - QCOMPARE(pongReceivedSpy.count(), opCode == QWebSocketProtocol::OC_PONG ? 1 : 0); - QCOMPARE(closeReceivedSpy.count(), opCode == QWebSocketProtocol::OC_CLOSE ? 1 : 0); - QCOMPARE(textFrameReceivedSpy.count(), opCode == QWebSocketProtocol::OC_TEXT ? 1 : 0); - QCOMPARE(textMessageReceivedSpy.count(), opCode == QWebSocketProtocol::OC_TEXT ? 1 : 0); - QCOMPARE(binaryFrameReceivedSpy.count(), opCode == QWebSocketProtocol::OC_BINARY ? 1 : 0); - QCOMPARE(binaryMessageReceivedSpy.count(), opCode == QWebSocketProtocol::OC_BINARY ? 1 : 0); + QCOMPARE(pingReceivedSpy.count(), opCode == QWebSocketProtocol::OpCodePing ? 1 : 0); + QCOMPARE(pongReceivedSpy.count(), opCode == QWebSocketProtocol::OpCodePong ? 1 : 0); + QCOMPARE(closeReceivedSpy.count(), opCode == QWebSocketProtocol::OpCodeClose ? 1 : 0); + QCOMPARE(textFrameReceivedSpy.count(), opCode == QWebSocketProtocol::OpCodeText ? 1 : 0); + QCOMPARE(textMessageReceivedSpy.count(), opCode == QWebSocketProtocol::OpCodeText ? 1 : 0); + QCOMPARE(binaryFrameReceivedSpy.count(), opCode == QWebSocketProtocol::OpCodeBinary ? 1 : 0); + QCOMPARE(binaryMessageReceivedSpy.count(), opCode == QWebSocketProtocol::OpCodeBinary ? 1 : 0); buffer.close(); } @@ -534,7 +569,7 @@ void tst_DataProcessor::goodCloseFrame() quint16 swapped = qToBigEndian(closeCode); const char *wireRepresentation = static_cast(static_cast(&swapped)); - data.append((char)(FIN | QWebSocketProtocol::OC_CLOSE)); + data.append((char)(FIN | QWebSocketProtocol::OpCodeClose)); if (swapped != 0) { data.append(char(payload.length() + 2)).append(wireRepresentation, 2).append(payload); @@ -542,8 +577,8 @@ void tst_DataProcessor::goodCloseFrame() else { data.append(QChar::fromLatin1(0)); //payload length 0; - //dataprocessor emits a CC_NORMAL close code when none is present - closeCode = QWebSocketProtocol::CC_NORMAL; + //dataprocessor emits a CloseCodeNormal close code when none is present + closeCode = QWebSocketProtocol::CloseCodeNormal; } buffer.setData(data); buffer.open(QIODevice::ReadOnly); @@ -668,9 +703,10 @@ void tst_DataProcessor::frameTooSmall() QWebSocketDataProcessor dataProcessor; QByteArray firstFrame; - firstFrame.append(quint8(QWebSocketProtocol::OC_TEXT)).append(char(1)).append(QByteArray(1, 'a')); + firstFrame.append(quint8(QWebSocketProtocol::OpCodeText)).append(char(1)) + .append(QByteArray(1, 'a')); - //with nothing in the buffer, the dataProcessor should time out and the error should be CC_GOING_AWAY + //with nothing in the buffer, the dataProcessor should time out and the error should be CloseCodeGoingAway //meaning the socket will be closed buffer.setData(data); buffer.open(QIODevice::ReadOnly); @@ -695,7 +731,8 @@ void tst_DataProcessor::frameTooSmall() QCOMPARE(binaryFrameSpy.count(), 0); QList arguments = errorSpy.takeFirst(); - QCOMPARE(arguments.at(0).value(), QWebSocketProtocol::CC_GOING_AWAY); + QCOMPARE(arguments.at(0).value(), + QWebSocketProtocol::CloseCodeGoingAway); errorSpy.clear(); closeSpy.clear(); pingMessageSpy.clear(); @@ -707,7 +744,8 @@ void tst_DataProcessor::frameTooSmall() buffer.close(); data.clear(); - //only one byte; this is far too little; should get a time out as well and the error should be CC_GOING_AWAY + //only one byte; this is far too little; + //should get a time out as well and the error should be CloseCodeGoingAway //meaning the socket will be closed data.append(quint8('1')); //put 1 byte in the buffer; this is too little buffer.setData(data); @@ -725,7 +763,8 @@ void tst_DataProcessor::frameTooSmall() QCOMPARE(binaryFrameSpy.count(), 0); arguments = errorSpy.takeFirst(); - QCOMPARE(arguments.at(0).value(), QWebSocketProtocol::CC_GOING_AWAY); + QCOMPARE(arguments.at(0).value(), + QWebSocketProtocol::CloseCodeGoingAway); buffer.close(); errorSpy.clear(); closeSpy.clear(); @@ -740,7 +779,7 @@ void tst_DataProcessor::frameTooSmall() { //text frame with final bit not set - data.append((char)(QWebSocketProtocol::OC_TEXT)).append(char(0x0)); + data.append((char)(QWebSocketProtocol::OpCodeText)).append(char(0x0)); buffer.setData(data); buffer.open(QIODevice::ReadOnly); @@ -749,11 +788,13 @@ void tst_DataProcessor::frameTooSmall() buffer.close(); data.clear(); - //with nothing in the buffer, the dataProcessor should time out and the error should be CC_GOING_AWAY + //with nothing in the buffer, + //the dataProcessor should time out and the error should be CloseCodeGoingAway //meaning the socket will be closed buffer.setData(data); buffer.open(QIODevice::ReadOnly); - QSignalSpy errorSpy(&dataProcessor, SIGNAL(errorEncountered(QWebSocketProtocol::CloseCode,QString))); + QSignalSpy errorSpy(&dataProcessor, + SIGNAL(errorEncountered(QWebSocketProtocol::CloseCode,QString))); dataProcessor.process(&buffer); QCOMPARE(errorSpy.count(), 1); @@ -766,7 +807,8 @@ void tst_DataProcessor::frameTooSmall() QCOMPARE(binaryFrameSpy.count(), 0); QList arguments = errorSpy.takeFirst(); - QCOMPARE(arguments.at(0).value(), QWebSocketProtocol::CC_GOING_AWAY); + QCOMPARE(arguments.at(0).value(), + QWebSocketProtocol::CloseCodeGoingAway); errorSpy.clear(); closeSpy.clear(); pingMessageSpy.clear(); @@ -779,7 +821,7 @@ void tst_DataProcessor::frameTooSmall() data.clear(); //text frame with final bit not set - data.append((char)(QWebSocketProtocol::OC_TEXT)).append(char(0x0)); + data.append((char)(QWebSocketProtocol::OpCodeText)).append(char(0x0)); buffer.setData(data); buffer.open(QIODevice::ReadOnly); dataProcessor.process(&buffer); @@ -805,7 +847,8 @@ void tst_DataProcessor::frameTooSmall() textFrameSpy.clear(); binaryFrameSpy.clear(); - //only 1 byte follows in continuation frame; should time out with close code CC_GOING_AWAY + //only 1 byte follows in continuation frame; + //should time out with close code CloseCodeGoingAway data.append('a'); buffer.setData(data); buffer.open(QIODevice::ReadOnly); @@ -820,7 +863,8 @@ void tst_DataProcessor::frameTooSmall() QCOMPARE(textFrameSpy.count(), 0); QCOMPARE(binaryFrameSpy.count(), 0); arguments = errorSpy.takeFirst(); - QCOMPARE(arguments.at(0).value(), QWebSocketProtocol::CC_GOING_AWAY); + QCOMPARE(arguments.at(0).value(), + QWebSocketProtocol::CloseCodeGoingAway); buffer.close(); } } @@ -842,29 +886,29 @@ void tst_DataProcessor::frameTooBig_data() swapped64 = qToBigEndian(QWebSocketDataProcessor::maxFrameSize() + 1); wireRepresentation = static_cast(static_cast(&swapped64)); QTest::newRow("Text frame with payload size > INT_MAX") - << quint8(FIN | QWebSocketProtocol::OC_TEXT) + << quint8(FIN | QWebSocketProtocol::OpCodeText) << quint8(127) << QByteArray(wireRepresentation, 8).append(QByteArray(32, 'a')) << false - << QWebSocketProtocol::CC_TOO_MUCH_DATA; + << QWebSocketProtocol::CloseCodeTooMuchData; swapped64 = qToBigEndian(QWebSocketDataProcessor::maxFrameSize() + 1); wireRepresentation = static_cast(static_cast(&swapped64)); QTest::newRow("Binary frame with payload size > INT_MAX") - << quint8(FIN | QWebSocketProtocol::OC_BINARY) + << quint8(FIN | QWebSocketProtocol::OpCodeBinary) << quint8(127) << QByteArray(wireRepresentation, 8).append(QByteArray(32, 'a')) << false - << QWebSocketProtocol::CC_TOO_MUCH_DATA; + << QWebSocketProtocol::CloseCodeTooMuchData; swapped64 = qToBigEndian(QWebSocketDataProcessor::maxFrameSize() + 1); wireRepresentation = static_cast(static_cast(&swapped64)); QTest::newRow("Continuation frame with payload size > INT_MAX") - << quint8(FIN | QWebSocketProtocol::OC_CONTINUE) + << quint8(FIN | QWebSocketProtocol::OpCodeContinue) << quint8(127) << QByteArray(wireRepresentation, 8).append(QByteArray(32, 'a')) << true - << QWebSocketProtocol::CC_TOO_MUCH_DATA; + << QWebSocketProtocol::CloseCodeTooMuchData; } void tst_DataProcessor::frameTooBig() @@ -892,16 +936,16 @@ void tst_DataProcessor::invalidHeader_data() invalidField("RSV1, RSV2 and RSV3 set", RSV1 | RSV2 | RSV3); //invalid opcodes - invalidField("Invalid OpCode 3", QWebSocketProtocol::OC_RESERVED_3); - invalidField("Invalid OpCode 4", QWebSocketProtocol::OC_RESERVED_4); - invalidField("Invalid OpCode 5", QWebSocketProtocol::OC_RESERVED_5); - invalidField("Invalid OpCode 6", QWebSocketProtocol::OC_RESERVED_6); - invalidField("Invalid OpCode 7", QWebSocketProtocol::OC_RESERVED_7); - invalidField("Invalid OpCode B", QWebSocketProtocol::OC_RESERVED_B); - invalidField("Invalid OpCode C", QWebSocketProtocol::OC_RESERVED_C); - invalidField("Invalid OpCode D", QWebSocketProtocol::OC_RESERVED_D); - invalidField("Invalid OpCode E", QWebSocketProtocol::OC_RESERVED_E); - invalidField("Invalid OpCode F", QWebSocketProtocol::OC_RESERVED_F); + invalidField("Invalid OpCode 3", QWebSocketProtocol::OpCodeReserved3); + invalidField("Invalid OpCode 4", QWebSocketProtocol::OpCodeReserved4); + invalidField("Invalid OpCode 5", QWebSocketProtocol::OpCodeReserved5); + invalidField("Invalid OpCode 6", QWebSocketProtocol::OpCodeReserved6); + invalidField("Invalid OpCode 7", QWebSocketProtocol::OpCodeReserved7); + invalidField("Invalid OpCode B", QWebSocketProtocol::OpCodeReservedB); + invalidField("Invalid OpCode C", QWebSocketProtocol::OpCodeReservedC); + invalidField("Invalid OpCode D", QWebSocketProtocol::OpCodeReservedD); + invalidField("Invalid OpCode E", QWebSocketProtocol::OpCodeReservedE); + invalidField("Invalid OpCode F", QWebSocketProtocol::OpCodeReservedF); } void tst_DataProcessor::invalidHeader() @@ -919,41 +963,41 @@ void tst_DataProcessor::invalidControlFrame_data() QTest::newRow("Close control frame with payload size 126") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(126) << QByteArray() << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Ping control frame with payload size 126") - << quint8(FIN | QWebSocketProtocol::OC_PING) + << quint8(FIN | QWebSocketProtocol::OpCodePing) << quint8(126) << QByteArray() << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Close control frame with payload size 126") - << quint8(FIN | QWebSocketProtocol::OC_PONG) + << quint8(FIN | QWebSocketProtocol::OpCodePong) << quint8(126) << QByteArray() << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Non-final close control frame (fragmented)") - << quint8(QWebSocketProtocol::OC_CLOSE) + << quint8(QWebSocketProtocol::OpCodeClose) << quint8(32) << QByteArray() << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Non-final ping control frame (fragmented)") - << quint8(QWebSocketProtocol::OC_PING) + << quint8(QWebSocketProtocol::OpCodePing) << quint8(32) << QByteArray() << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Non-final pong control frame (fragmented)") - << quint8(QWebSocketProtocol::OC_PONG) + << quint8(QWebSocketProtocol::OpCodePong) << quint8(32) << QByteArray() << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; } void tst_DataProcessor::invalidControlFrame() @@ -970,127 +1014,127 @@ void tst_DataProcessor::invalidCloseFrame_data() QTest::addColumn("expectedCloseCode"); QTest::newRow("Close control frame with payload size 1") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(1) << QByteArray(1, 'a') << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; - quint16 swapped = qToBigEndian(QWebSocketProtocol::CC_ABNORMAL_DISCONNECTION); + << QWebSocketProtocol::CloseCodeProtocolError; + quint16 swapped = qToBigEndian(QWebSocketProtocol::CloseCodeAbnormalDisconnection); const char *wireRepresentation = static_cast(static_cast(&swapped)); //Not allowed per RFC 6455 (see para 7.4.1) QTest::newRow("Close control frame close code ABNORMAL DISCONNECTION") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; - swapped = qToBigEndian(QWebSocketProtocol::CC_MISSING_STATUS_CODE); + << QWebSocketProtocol::CloseCodeProtocolError; + swapped = qToBigEndian(QWebSocketProtocol::CloseCodeMissingStatusCode); wireRepresentation = static_cast(static_cast(&swapped)); //Not allowed per RFC 6455 (see para 7.4.1) QTest::newRow("Close control frame close code MISSING STATUS CODE") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; swapped = qToBigEndian(1004); wireRepresentation = static_cast(static_cast(&swapped)); QTest::newRow("Close control frame close code 1004") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; - swapped = qToBigEndian(QWebSocketProtocol::CC_TLS_HANDSHAKE_FAILED); + << QWebSocketProtocol::CloseCodeProtocolError; + swapped = qToBigEndian(QWebSocketProtocol::CloseCodeTlsHandshakeFailed); wireRepresentation = static_cast(static_cast(&swapped)); //Not allowed per RFC 6455 (see para 7.4.1) QTest::newRow("Close control frame close code TLS HANDSHAKE FAILED") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; swapped = qToBigEndian(0); wireRepresentation = static_cast(static_cast(&swapped)); QTest::newRow("Close control frame close code 0") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; swapped = qToBigEndian(999); wireRepresentation = static_cast(static_cast(&swapped)); QTest::newRow("Close control frame close code 999") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; swapped = qToBigEndian(1012); wireRepresentation = static_cast(static_cast(&swapped)); QTest::newRow("Close control frame close code 1012") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; swapped = qToBigEndian(1013); wireRepresentation = static_cast(static_cast(&swapped)); QTest::newRow("Close control frame close code 1013") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; swapped = qToBigEndian(1014); wireRepresentation = static_cast(static_cast(&swapped)); QTest::newRow("Close control frame close code 1014") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; swapped = qToBigEndian(1100); wireRepresentation = static_cast(static_cast(&swapped)); QTest::newRow("Close control frame close code 1100") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; swapped = qToBigEndian(2000); wireRepresentation = static_cast(static_cast(&swapped)); QTest::newRow("Close control frame close code 2000") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; swapped = qToBigEndian(2999); wireRepresentation = static_cast(static_cast(&swapped)); QTest::newRow("Close control frame close code 2999") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; swapped = qToBigEndian(5000); wireRepresentation = static_cast(static_cast(&swapped)); QTest::newRow("Close control frame close code 5000") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; swapped = qToBigEndian(65535u); wireRepresentation = static_cast(static_cast(&swapped)); QTest::newRow("Close control frame close code 65535") - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(2) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; } void tst_DataProcessor::invalidCloseFrame() @@ -1301,22 +1345,22 @@ void tst_DataProcessor::incompletePayload_data() QTest::addColumn("isContinuationFrame"); QTest::addColumn("expectedCloseCode"); - incompleteFrame(QWebSocketProtocol::OC_TEXT, 125, 0); - incompleteFrame(QWebSocketProtocol::OC_TEXT, 64, 32); - incompleteFrame(QWebSocketProtocol::OC_TEXT, 256, 32); - incompleteFrame(QWebSocketProtocol::OC_TEXT, 128000, 32); - incompleteFrame(QWebSocketProtocol::OC_BINARY, 125, 0); - incompleteFrame(QWebSocketProtocol::OC_BINARY, 64, 32); - incompleteFrame(QWebSocketProtocol::OC_BINARY, 256, 32); - incompleteFrame(QWebSocketProtocol::OC_BINARY, 128000, 32); - incompleteFrame(QWebSocketProtocol::OC_CONTINUE, 125, 0); - incompleteFrame(QWebSocketProtocol::OC_CONTINUE, 64, 32); - incompleteFrame(QWebSocketProtocol::OC_CONTINUE, 256, 32); - incompleteFrame(QWebSocketProtocol::OC_CONTINUE, 128000, 32); - - incompleteFrame(QWebSocketProtocol::OC_CLOSE, 64, 32); - incompleteFrame(QWebSocketProtocol::OC_PING, 64, 32); - incompleteFrame(QWebSocketProtocol::OC_PONG, 64, 32); + incompleteFrame(QWebSocketProtocol::OpCodeText, 125, 0); + incompleteFrame(QWebSocketProtocol::OpCodeText, 64, 32); + incompleteFrame(QWebSocketProtocol::OpCodeText, 256, 32); + incompleteFrame(QWebSocketProtocol::OpCodeText, 128000, 32); + incompleteFrame(QWebSocketProtocol::OpCodeBinary, 125, 0); + incompleteFrame(QWebSocketProtocol::OpCodeBinary, 64, 32); + incompleteFrame(QWebSocketProtocol::OpCodeBinary, 256, 32); + incompleteFrame(QWebSocketProtocol::OpCodeBinary, 128000, 32); + incompleteFrame(QWebSocketProtocol::OpCodeContinue, 125, 0); + incompleteFrame(QWebSocketProtocol::OpCodeContinue, 64, 32); + incompleteFrame(QWebSocketProtocol::OpCodeContinue, 256, 32); + incompleteFrame(QWebSocketProtocol::OpCodeContinue, 128000, 32); + + incompleteFrame(QWebSocketProtocol::OpCodeClose, 64, 32); + incompleteFrame(QWebSocketProtocol::OpCodePing, 64, 32); + incompleteFrame(QWebSocketProtocol::OpCodePong, 64, 32); } void tst_DataProcessor::incompletePayload() @@ -1374,7 +1418,7 @@ void tst_DataProcessor::doTest() if (isContinuationFrame) { - data.append(quint8(QWebSocketProtocol::OC_TEXT)).append(char(1)).append(QByteArray(1, 'a')); + data.append(quint8(QWebSocketProtocol::OpCodeText)).append(char(1)).append(QByteArray(1, 'a')); } data.append(firstByte).append(secondByte); data.append(payload); @@ -1434,82 +1478,82 @@ QString tst_DataProcessor::opCodeToString(quint8 opCode) QString frameType; switch (opCode) { - case QWebSocketProtocol::OC_BINARY: + case QWebSocketProtocol::OpCodeBinary: { frameType = QStringLiteral("Binary"); break; } - case QWebSocketProtocol::OC_TEXT: + case QWebSocketProtocol::OpCodeText: { frameType = QStringLiteral("Text"); break; } - case QWebSocketProtocol::OC_PING: + case QWebSocketProtocol::OpCodePing: { frameType = QStringLiteral("Ping"); break; } - case QWebSocketProtocol::OC_PONG: + case QWebSocketProtocol::OpCodePong: { frameType = QStringLiteral("Pong"); break; } - case QWebSocketProtocol::OC_CLOSE: + case QWebSocketProtocol::OpCodeClose: { frameType = QStringLiteral("Close"); break; } - case QWebSocketProtocol::OC_CONTINUE: + case QWebSocketProtocol::OpCodeContinue: { frameType = QStringLiteral("Continuation"); break; } - case QWebSocketProtocol::OC_RESERVED_3: + case QWebSocketProtocol::OpCodeReserved3: { frameType = QStringLiteral("Reserved3"); break; } - case QWebSocketProtocol::OC_RESERVED_4: + case QWebSocketProtocol::OpCodeReserved4: { frameType = QStringLiteral("Reserved5"); break; } - case QWebSocketProtocol::OC_RESERVED_5: + case QWebSocketProtocol::OpCodeReserved5: { frameType = QStringLiteral("Reserved5"); break; } - case QWebSocketProtocol::OC_RESERVED_6: + case QWebSocketProtocol::OpCodeReserved6: { frameType = QStringLiteral("Reserved6"); break; } - case QWebSocketProtocol::OC_RESERVED_7: + case QWebSocketProtocol::OpCodeReserved7: { frameType = QStringLiteral("Reserved7"); break; } - case QWebSocketProtocol::OC_RESERVED_B: + case QWebSocketProtocol::OpCodeReservedB: { frameType = QStringLiteral("ReservedB"); break; } - case QWebSocketProtocol::OC_RESERVED_C: + case QWebSocketProtocol::OpCodeReservedC: { frameType = QStringLiteral("ReservedC"); break; } - case QWebSocketProtocol::OC_RESERVED_D: + case QWebSocketProtocol::OpCodeReservedD: { frameType = QStringLiteral("ReservedD"); break; } - case QWebSocketProtocol::OC_RESERVED_E: + case QWebSocketProtocol::OpCodeReservedE: { frameType = QStringLiteral("ReservedE"); break; } - case QWebSocketProtocol::OC_RESERVED_F: + case QWebSocketProtocol::OpCodeReservedF: { frameType = QStringLiteral("ReservedF"); break; @@ -1529,25 +1573,25 @@ void tst_DataProcessor::minimumSize16Bit(quint16 sizeInBytes) const char *wireRepresentation = static_cast(static_cast(&swapped16)); QTest::newRow(QStringLiteral("Text frame with payload size %1, represented in 2 bytes") .arg(sizeInBytes).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_TEXT) + << quint8(FIN | QWebSocketProtocol::OpCodeText) << quint8(126) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow(QStringLiteral("Binary frame with payload size %1, represented in 2 bytes") .arg(sizeInBytes).toLatin1().constBegin()) - << quint8(FIN | QWebSocketProtocol::OC_BINARY) + << quint8(FIN | QWebSocketProtocol::OpCodeBinary) << quint8(126) << QByteArray(wireRepresentation, 2) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow(QStringLiteral("Continuation frame with payload size %1, represented in 2 bytes") .arg(sizeInBytes).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_CONTINUE) + << quint8(FIN | QWebSocketProtocol::OpCodeContinue) << quint8(126) << QByteArray(wireRepresentation, 2) << true - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; } void tst_DataProcessor::minimumSize64Bit(quint64 sizeInBytes) @@ -1557,27 +1601,27 @@ void tst_DataProcessor::minimumSize64Bit(quint64 sizeInBytes) QTest::newRow(QStringLiteral("Text frame with payload size %1, represented in 8 bytes") .arg(sizeInBytes).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_TEXT) + << quint8(FIN | QWebSocketProtocol::OpCodeText) << quint8(127) << QByteArray(wireRepresentation, 8) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow(QStringLiteral("Binary frame with payload size %1, represented in 8 bytes") .arg(sizeInBytes).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_BINARY) + << quint8(FIN | QWebSocketProtocol::OpCodeBinary) << quint8(127) << QByteArray(wireRepresentation, 8) << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow(QStringLiteral("Continuation frame with payload size %1, represented in 8 bytes") .arg(sizeInBytes).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_CONTINUE) + << quint8(FIN | QWebSocketProtocol::OpCodeContinue) << quint8(127) << QByteArray(wireRepresentation, 8) << true - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; } void tst_DataProcessor::invalidUTF8(const char *dataTag, const char *utf8Sequence, bool isCloseFrame) @@ -1586,33 +1630,33 @@ void tst_DataProcessor::invalidUTF8(const char *dataTag, const char *utf8Sequenc if (isCloseFrame) { - quint16 closeCode = qToBigEndian(QWebSocketProtocol::CC_NORMAL); + quint16 closeCode = qToBigEndian(QWebSocketProtocol::CloseCodeNormal); const char *wireRepresentation = static_cast(static_cast(&closeCode)); QTest::newRow(QStringLiteral("Close frame with invalid UTF8-sequence: %1") .arg(dataTag).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_CLOSE) + << quint8(FIN | QWebSocketProtocol::OpCodeClose) << quint8(payload.length() + 2) << QByteArray(wireRepresentation, 2).append(payload) << false - << QWebSocketProtocol::CC_WRONG_DATATYPE; + << QWebSocketProtocol::CloseCodeWrongDatatype; } else { QTest::newRow(QStringLiteral("Text frame with invalid UTF8-sequence: %1") .arg(dataTag).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_TEXT) + << quint8(FIN | QWebSocketProtocol::OpCodeText) << quint8(payload.length()) << payload << false - << QWebSocketProtocol::CC_WRONG_DATATYPE; + << QWebSocketProtocol::CloseCodeWrongDatatype; QTest::newRow(QStringLiteral("Continuation text frame with invalid UTF8-sequence: %1") .arg(dataTag).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_CONTINUE) + << quint8(FIN | QWebSocketProtocol::OpCodeContinue) << quint8(payload.length()) << payload << true - << QWebSocketProtocol::CC_WRONG_DATATYPE; + << QWebSocketProtocol::CloseCodeWrongDatatype; } } @@ -1622,13 +1666,13 @@ void tst_DataProcessor::invalidField(const char *dataTag, quint8 invalidFieldVal << quint8(0x00) << QByteArray() << false - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow(QString::fromLatin1(dataTag).append(" with continuation frame").toLatin1().constData()) << quint8(FIN | invalidFieldValue) << quint8(0x00) << QByteArray() << true - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; } void tst_DataProcessor::incompleteFrame(quint8 controlCode, quint64 indicatedSize, quint64 actualPayloadSize) @@ -1646,8 +1690,8 @@ void tst_DataProcessor::incompleteFrame(quint8 controlCode, quint64 indicatedSiz << quint8(FIN | controlCode) << quint8(indicatedSize) << firstFrame.append(QByteArray(actualPayloadSize, 'a')) - << (controlCode == QWebSocketProtocol::OC_CONTINUE) - << QWebSocketProtocol::CC_GOING_AWAY; + << (controlCode == QWebSocketProtocol::OpCodeContinue) + << QWebSocketProtocol::CloseCodeGoingAway; } else if (indicatedSize <= 0xFFFFu) { @@ -1658,8 +1702,8 @@ void tst_DataProcessor::incompleteFrame(quint8 controlCode, quint64 indicatedSiz << quint8(FIN | controlCode) << quint8(126) << firstFrame.append(QByteArray(wireRepresentation, 2).append(QByteArray(actualPayloadSize, 'a'))) - << (controlCode == QWebSocketProtocol::OC_CONTINUE) - << QWebSocketProtocol::CC_GOING_AWAY; + << (controlCode == QWebSocketProtocol::OpCodeContinue) + << QWebSocketProtocol::CloseCodeGoingAway; } else { @@ -1670,8 +1714,8 @@ void tst_DataProcessor::incompleteFrame(quint8 controlCode, quint64 indicatedSiz << quint8(FIN | controlCode) << quint8(127) << firstFrame.append(QByteArray(wireRepresentation, 8).append(QByteArray(actualPayloadSize, 'a'))) - << (controlCode == QWebSocketProtocol::OC_CONTINUE) - << QWebSocketProtocol::CC_GOING_AWAY; + << (controlCode == QWebSocketProtocol::OpCodeContinue) + << QWebSocketProtocol::CloseCodeGoingAway; } } @@ -1681,14 +1725,14 @@ void tst_DataProcessor::nonCharacterSequence(const char *sequence) QTest::newRow(QStringLiteral("Text frame with payload containing the non-control character sequence 0x%1") .arg(QString::fromLocal8Bit(sequence)).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_TEXT) + << quint8(FIN | QWebSocketProtocol::OpCodeText) << quint8(utf8Sequence.size()) << utf8Sequence << false; QTest::newRow(QStringLiteral("Continuation frame with payload containing the non-control character sequence 0x%1") .arg(QString::fromLocal8Bit(sequence)).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_CONTINUE) + << quint8(FIN | QWebSocketProtocol::OpCodeContinue) << quint8(utf8Sequence.size()) << utf8Sequence << true; @@ -1698,25 +1742,25 @@ void tst_DataProcessor::insertIncompleteSizeFieldTest(quint8 payloadCode, quint8 { QTest::newRow(QStringLiteral("Text frame with payload size %1, with %2 bytes following.") .arg(payloadCode).arg(numBytesFollowing).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_TEXT) + << quint8(FIN | QWebSocketProtocol::OpCodeText) << quint8(payloadCode) << QByteArray(numBytesFollowing, quint8(1)) << false - << QWebSocketProtocol::CC_GOING_AWAY; + << QWebSocketProtocol::CloseCodeGoingAway; QTest::newRow(QStringLiteral("Binary frame with payload size %1, with %2 bytes following.") .arg(payloadCode).arg(numBytesFollowing).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_BINARY) + << quint8(FIN | QWebSocketProtocol::OpCodeBinary) << quint8(payloadCode) << QByteArray(numBytesFollowing, quint8(1)) << false - << QWebSocketProtocol::CC_GOING_AWAY; + << QWebSocketProtocol::CloseCodeGoingAway; QTest::newRow(QStringLiteral("Continuation frame with payload size %1, with %2 bytes following.") .arg(payloadCode).arg(numBytesFollowing).toLatin1().constData()) - << quint8(FIN | QWebSocketProtocol::OC_CONTINUE) + << quint8(FIN | QWebSocketProtocol::OpCodeContinue) << quint8(payloadCode) << QByteArray(numBytesFollowing, quint8(1)) << true - << QWebSocketProtocol::CC_GOING_AWAY; + << QWebSocketProtocol::CloseCodeGoingAway; } QTEST_MAIN(tst_DataProcessor) diff --git a/tests/auto/handshakerequest/tst_handshakerequest.cpp b/tests/auto/handshakerequest/tst_handshakerequest.cpp index 71de7b4..a49e5f2 100644 --- a/tests/auto/handshakerequest/tst_handshakerequest.cpp +++ b/tests/auto/handshakerequest/tst_handshakerequest.cpp @@ -252,7 +252,7 @@ void tst_HandshakeRequest::tst_multipleValuesInConnectionHeader() QCOMPARE(request.host(), QStringLiteral("foo.com")); QCOMPARE(request.resourceName().length(), 5); QCOMPARE(request.versions().length(), 1); - QCOMPARE(request.versions().at(0), QWebSocketProtocol::V_13); + QCOMPARE(request.versions().at(0), QWebSocketProtocol::Version13); } void tst_HandshakeRequest::tst_multipleVersions() @@ -288,7 +288,7 @@ void tst_HandshakeRequest::tst_multipleVersions() QCOMPARE(request.resourceName().length(), 5); QCOMPARE(request.versions().length(), 6); //should be 13 since the list is ordered in decreasing order - QCOMPARE(request.versions().at(0), QWebSocketProtocol::V_13); + QCOMPARE(request.versions().at(0), QWebSocketProtocol::Version13); } QTEST_MAIN(tst_HandshakeRequest) diff --git a/tests/auto/websocketframe/tst_websocketframe.cpp b/tests/auto/websocketframe/tst_websocketframe.cpp index 46a360a..36686c5 100644 --- a/tests/auto/websocketframe/tst_websocketframe.cpp +++ b/tests/auto/websocketframe/tst_websocketframe.cpp @@ -85,7 +85,7 @@ private: FrameHelper::FrameHelper() : m_rsv1(0), m_rsv2(0), m_rsv3(0), - m_mask(0), m_opCode(QWebSocketProtocol::OC_RESERVED_3), + m_mask(0), m_opCode(QWebSocketProtocol::OpCodeReserved3), m_payload(), m_isFinalFrame(false) {} @@ -201,7 +201,7 @@ void tst_WebSocketFrame::tst_copyConstructorAndAssignment() frameHelper.setRsv3(0); frameHelper.setFinalFrame(true); frameHelper.setMask(1234u); - frameHelper.setOpCode(QWebSocketProtocol::OC_BINARY); + frameHelper.setOpCode(QWebSocketProtocol::OpCodeBinary); frameHelper.setPayload(QByteArray("12345")); QByteArray payload = frameHelper.wireRepresentation(); @@ -263,54 +263,54 @@ void tst_WebSocketFrame::tst_goodFrames_data() QTest::newRow("Non masked final text frame with small payload") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_TEXT + << 0U << QWebSocketProtocol::OpCodeText << true << QStringLiteral("Hello world!").toUtf8() << false << true << false; QTest::newRow("Non masked final binary frame with small payload") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_BINARY + << 0U << QWebSocketProtocol::OpCodeBinary << true << QByteArrayLiteral("\x00\x01\x02\x03\x04") << false << true << false; QTest::newRow("Non masked final text frame with no payload") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_TEXT + << 0U << QWebSocketProtocol::OpCodeText << true << QByteArray() << false << true << false; QTest::newRow("Non masked final binary frame with no payload") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_BINARY + << 0U << QWebSocketProtocol::OpCodeBinary << true << QByteArray() << false << true << false; QTest::newRow("Non masked final close frame with small payload") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_CLOSE + << 0U << QWebSocketProtocol::OpCodeClose << true << QStringLiteral("Hello world!").toUtf8() << true << false << false; QTest::newRow("Non masked final close frame with no payload") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_CLOSE + << 0U << QWebSocketProtocol::OpCodeClose << true << QByteArray() << true << false << false; QTest::newRow("Non masked final ping frame with small payload") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_PING + << 0U << QWebSocketProtocol::OpCodePing << true << QStringLiteral("Hello world!").toUtf8() << true << false << false; QTest::newRow("Non masked final pong frame with no payload") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_PONG + << 0U << QWebSocketProtocol::OpCodePong << true << QByteArray() << true << false << false; QTest::newRow("Non masked final continuation frame with small payload") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_CONTINUE + << 0U << QWebSocketProtocol::OpCodeContinue << true << QStringLiteral("Hello world!").toUtf8() << false << true << true; QTest::newRow("Non masked non-final continuation frame with small payload") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_CONTINUE + << 0U << QWebSocketProtocol::OpCodeContinue << false << QStringLiteral("Hello world!").toUtf8() << false << true << true; } @@ -370,116 +370,116 @@ void tst_WebSocketFrame::tst_invalidFrames_data() QTest::newRow("RSV1 != 0") << 1 << 0 << 0 - << 0U << QWebSocketProtocol::OC_TEXT + << 0U << QWebSocketProtocol::OpCodeText << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("RSV2 != 0") << 0 << 1 << 0 - << 0U << QWebSocketProtocol::OC_TEXT + << 0U << QWebSocketProtocol::OpCodeText << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("RSV3 != 0") << 0 << 0 << 1 - << 0U << QWebSocketProtocol::OC_TEXT + << 0U << QWebSocketProtocol::OpCodeText << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("RSV1 != 0 and RSV2 != 0") << 1 << 1 << 0 - << 0U << QWebSocketProtocol::OC_TEXT + << 0U << QWebSocketProtocol::OpCodeText << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("RSV1 != 0 and RSV3 != 0") << 1 << 0 << 1 - << 0U << QWebSocketProtocol::OC_TEXT + << 0U << QWebSocketProtocol::OpCodeText << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("RSV2 != 0 and RSV3 != 0") << 0 << 1 << 1 - << 0U << QWebSocketProtocol::OC_TEXT + << 0U << QWebSocketProtocol::OpCodeText << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Reserved OpCode 3") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_RESERVED_3 + << 0U << QWebSocketProtocol::OpCodeReserved3 << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Reserved OpCode 4") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_RESERVED_4 + << 0U << QWebSocketProtocol::OpCodeReserved4 << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Reserved OpCode 5") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_RESERVED_5 + << 0U << QWebSocketProtocol::OpCodeReserved5 << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Reserved OpCode 6") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_RESERVED_6 + << 0U << QWebSocketProtocol::OpCodeReserved6 << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Reserved OpCode 7") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_RESERVED_7 + << 0U << QWebSocketProtocol::OpCodeReserved7 << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Reserved OpCode B") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_RESERVED_B + << 0U << QWebSocketProtocol::OpCodeReservedB << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Reserved OpCode C") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_RESERVED_C + << 0U << QWebSocketProtocol::OpCodeReservedC << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Reserved OpCode D") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_RESERVED_D + << 0U << QWebSocketProtocol::OpCodeReservedD << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Reserved OpCode E") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_RESERVED_E + << 0U << QWebSocketProtocol::OpCodeReservedE << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Reserved OpCode F") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_RESERVED_F + << 0U << QWebSocketProtocol::OpCodeReservedF << true << QStringLiteral("Hello world!").toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Close Frame with payload > 125 bytes") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_CLOSE + << 0U << QWebSocketProtocol::OpCodeClose << true << QString(126, 'a').toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Non-final Close Frame") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_CLOSE + << 0U << QWebSocketProtocol::OpCodeClose << false << QString(126, 'a').toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Ping Frame with payload > 125 bytes") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_PING + << 0U << QWebSocketProtocol::OpCodePing << true << QString(126, 'a').toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Non-final Ping Frame") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_PING + << 0U << QWebSocketProtocol::OpCodePing << false << QString(126, 'a').toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Pong Frame with payload > 125 bytes") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_PONG + << 0U << QWebSocketProtocol::OpCodePong << true << QString(126, 'a').toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; QTest::newRow("Non-final Pong Frame") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_PONG + << 0U << QWebSocketProtocol::OpCodePong << false << QString(126, 'a').toUtf8() - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; } void tst_WebSocketFrame::tst_invalidFrames() @@ -520,9 +520,9 @@ void tst_WebSocketFrame::tst_invalidFrames() * QTest::newRow("Frame Too Big") << 0 << 0 << 0 - << 0U << QWebSocketProtocol::OC_TEXT + << 0U << QWebSocketProtocol::OpCodeText << true << QString(MAX_FRAME_SIZE_IN_BYTES + 1, 'a').toUtf8() - << QWebSocketProtocol::CC_TOO_MUCH_DATA; + << QWebSocketProtocol::CloseCodeTooMuchData; */ void tst_WebSocketFrame::tst_malformedFrames_data() @@ -531,13 +531,13 @@ void tst_WebSocketFrame::tst_malformedFrames_data() QTest::addColumn("expectedError"); //too little data - QTest::newRow("No data") << QByteArray() << QWebSocketProtocol::CC_GOING_AWAY; + QTest::newRow("No data") << QByteArray() << QWebSocketProtocol::CloseCodeGoingAway; FrameHelper helper; helper.setRsv1(0); helper.setRsv2(0); helper.setRsv3(0); helper.setMask(0U); - helper.setOpCode(QWebSocketProtocol::OC_TEXT); + helper.setOpCode(QWebSocketProtocol::OpCodeText); helper.setFinalFrame(true); helper.setPayload(QString(10, 'a').toUtf8()); QByteArray wireRep = helper.wireRepresentation(); @@ -548,7 +548,7 @@ void tst_WebSocketFrame::tst_malformedFrames_data() { QTest::newRow(QStringLiteral("Header too small - %1 byte(s)").arg(i).toLatin1().constData()) << wireRep.left(i) - << QWebSocketProtocol::CC_GOING_AWAY; + << QWebSocketProtocol::CloseCodeGoingAway; } //too much data { @@ -558,7 +558,7 @@ void tst_WebSocketFrame::tst_malformedFrames_data() qToBigEndian(payloadSize, swapped); QTest::newRow("Frame too big") << wireRep.left(1).append(bigpayloadIndicator).append(reinterpret_cast(swapped), 8) - << QWebSocketProtocol::CC_TOO_MUCH_DATA; + << QWebSocketProtocol::CloseCodeTooMuchData; } //invalid size field { @@ -568,13 +568,13 @@ void tst_WebSocketFrame::tst_malformedFrames_data() qToBigEndian(payloadSize, swapped); QTest::newRow("Highest bit of payload length is set") << wireRep.left(1).append(bigpayloadIndicator).append(reinterpret_cast(swapped), 8) - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; payloadSize = 256; qToBigEndian(payloadSize, swapped); QTest::newRow("Overlong 64-bit size field; should be 16-bit") << wireRep.left(1).append(bigpayloadIndicator).append(reinterpret_cast(swapped), 8) - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; } //overlong size field { @@ -584,7 +584,7 @@ void tst_WebSocketFrame::tst_malformedFrames_data() qToBigEndian(payloadSize, swapped); QTest::newRow("Overlong 16-bit size field") << wireRep.left(1).append(largepayloadIndicator).append(reinterpret_cast(swapped), 2) - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; } { const char bigpayloadIndicator = char(127); @@ -593,13 +593,13 @@ void tst_WebSocketFrame::tst_malformedFrames_data() qToBigEndian(payloadSize, swapped); QTest::newRow("Overlong 64-bit size field; should be 7-bit") << wireRep.left(1).append(bigpayloadIndicator).append(reinterpret_cast(swapped), 8) - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; payloadSize = 256; qToBigEndian(payloadSize, swapped); QTest::newRow("Overlong 64-bit size field; should be 16-bit") << wireRep.left(1).append(bigpayloadIndicator).append(reinterpret_cast(swapped), 8) - << QWebSocketProtocol::CC_PROTOCOL_ERROR; + << QWebSocketProtocol::CloseCodeProtocolError; } } diff --git a/tests/auto/websocketprotocol/tst_websocketprotocol.cpp b/tests/auto/websocketprotocol/tst_websocketprotocol.cpp index fa3177c..c092afa 100644 --- a/tests/auto/websocketprotocol/tst_websocketprotocol.cpp +++ b/tests/auto/websocketprotocol/tst_websocketprotocol.cpp @@ -128,22 +128,22 @@ void tst_WebSocketProtocol::tst_opCodes_data() QTest::addColumn("opCode"); QTest::addColumn("isReserved"); - QTest::newRow("OC_BINARY") << QWebSocketProtocol::OC_BINARY << false; - QTest::newRow("OC_CLOSE") << QWebSocketProtocol::OC_CLOSE << false; - QTest::newRow("OC_CONTINUE") << QWebSocketProtocol::OC_CONTINUE << false; - QTest::newRow("OC_PING") << QWebSocketProtocol::OC_PING << false; - QTest::newRow("OC_PONG") << QWebSocketProtocol::OC_PONG << false; - QTest::newRow("OC_RESERVED3") << QWebSocketProtocol::OC_RESERVED_3 << true; - QTest::newRow("OC_RESERVED4") << QWebSocketProtocol::OC_RESERVED_4 << true; - QTest::newRow("OC_RESERVED5") << QWebSocketProtocol::OC_RESERVED_5 << true; - QTest::newRow("OC_RESERVED6") << QWebSocketProtocol::OC_RESERVED_6 << true; - QTest::newRow("OC_RESERVED7") << QWebSocketProtocol::OC_RESERVED_7 << true; - QTest::newRow("OC_RESERVEDB") << QWebSocketProtocol::OC_RESERVED_B << true; - QTest::newRow("OC_RESERVEDC") << QWebSocketProtocol::OC_RESERVED_C << true; - QTest::newRow("OC_RESERVEDD") << QWebSocketProtocol::OC_RESERVED_D << true; - QTest::newRow("OC_RESERVEDE") << QWebSocketProtocol::OC_RESERVED_E << true; - QTest::newRow("OC_RESERVEDF") << QWebSocketProtocol::OC_RESERVED_F << true; - QTest::newRow("OC_TEXT") << QWebSocketProtocol::OC_TEXT << false; + QTest::newRow("OpCodeBinary") << QWebSocketProtocol::OpCodeBinary << false; + QTest::newRow("OpCodeClose") << QWebSocketProtocol::OpCodeClose << false; + QTest::newRow("OpCodeContinue") << QWebSocketProtocol::OpCodeContinue << false; + QTest::newRow("OpCodePing") << QWebSocketProtocol::OpCodePing << false; + QTest::newRow("OpCodePong") << QWebSocketProtocol::OpCodePong << false; + QTest::newRow("OpCodeReserved3") << QWebSocketProtocol::OpCodeReserved3 << true; + QTest::newRow("OpCodeReserved4") << QWebSocketProtocol::OpCodeReserved4 << true; + QTest::newRow("OpCodeReserved5") << QWebSocketProtocol::OpCodeReserved5 << true; + QTest::newRow("OpCodeReserved6") << QWebSocketProtocol::OpCodeReserved6 << true; + QTest::newRow("OpCodeReserved7") << QWebSocketProtocol::OpCodeReserved7 << true; + QTest::newRow("OpCodeReserved8") << QWebSocketProtocol::OpCodeReservedB << true; + QTest::newRow("OpCodeReservedC") << QWebSocketProtocol::OpCodeReservedC << true; + QTest::newRow("OpCodeReservedD") << QWebSocketProtocol::OpCodeReservedD << true; + QTest::newRow("OpCodeReservedE") << QWebSocketProtocol::OpCodeReservedE << true; + QTest::newRow("OpCodeReservedF") << QWebSocketProtocol::OpCodeReservedF << true; + QTest::newRow("OpCodeText") << QWebSocketProtocol::OpCodeText << false; } void tst_WebSocketProtocol::tst_opCodes() -- 2.7.4