aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-05-14 19:30:06 +0200
committerLars Knoll <lars.knoll@qt.io>2020-05-18 08:20:12 +0200
commit5f7225711c90cfc8ea6e32cd6322d07273bf7a40 (patch)
treeddf52e9437fb9df364663e103f7702b6b447b446 /src
parent84c981cd54b3644e91466e7da15660b1437e632b (diff)
Remove QTextCodec dependency from qtdeclarative
Replace it's use in the XML http request by QStringDecoder. Change-Id: I99a36900742f2f7e1d37f866fee7ecb9ddcf914f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/qml/qml/qqmlxmlhttprequest.cpp53
1 files changed, 24 insertions, 29 deletions
diff --git a/src/qml/qml/qqmlxmlhttprequest.cpp b/src/qml/qml/qqmlxmlhttprequest.cpp
index 416aca8667..41b8f626f7 100644
--- a/src/qml/qml/qqmlxmlhttprequest.cpp
+++ b/src/qml/qml/qqmlxmlhttprequest.cpp
@@ -56,7 +56,7 @@
#include <QtQml/qjsengine.h>
#include <QtQml/qqmlfile.h>
#include <QtNetwork/qnetworkreply.h>
-#include <QtCore/qtextcodec.h>
+#include <QtCore/qstringconverter.h>
#include <QtCore/qxmlstream.h>
#include <QtCore/qstack.h>
#include <QtCore/qdebug.h>
@@ -1062,10 +1062,7 @@ private:
bool m_gotXml;
QByteArray m_mime;
QByteArray m_charset;
- QTextCodec *m_textCodec;
-#if QT_CONFIG(textcodec)
- QTextCodec* findTextCodec() const;
-#endif
+ QStringDecoder findTextDecoder() const;
void readEncoding();
PersistentValue m_thisObject;
@@ -1092,7 +1089,7 @@ private:
QQmlXMLHttpRequest::QQmlXMLHttpRequest(QNetworkAccessManager *manager, QV4::ExecutionEngine *v4)
: m_state(Unsent), m_errorFlag(false), m_sendFlag(false)
- , m_redirectCount(0), m_gotXml(false), m_textCodec(nullptr), m_network(nullptr), m_nam(manager)
+ , m_redirectCount(0), m_gotXml(false), m_network(nullptr), m_nam(manager)
, m_responseType()
, m_parsedDocument()
{
@@ -1534,43 +1531,41 @@ QV4::ReturnedValue QQmlXMLHttpRequest::xmlResponseBody(QV4::ExecutionEngine* eng
return m_parsedDocument.value();
}
-#if QT_CONFIG(textcodec)
-QTextCodec* QQmlXMLHttpRequest::findTextCodec() const
+QStringDecoder QQmlXMLHttpRequest::findTextDecoder() const
{
- QTextCodec *codec = nullptr;
+ QStringDecoder decoder;
if (!m_charset.isEmpty())
- codec = QTextCodec::codecForName(m_charset);
+ decoder = QStringDecoder(m_charset);
- if (!codec && m_gotXml) {
+ if (!decoder.isValid() && m_gotXml) {
QXmlStreamReader reader(m_responseEntityBody);
reader.readNext();
- codec = QTextCodec::codecForName(reader.documentEncoding().toString().toUtf8());
+ decoder = QStringDecoder(reader.documentEncoding().toString().toUtf8());
}
- if (!codec && m_mime == "text/html")
- codec = QTextCodec::codecForHtml(m_responseEntityBody, nullptr);
+ if (!decoder.isValid() && m_mime == "text/html") {
+ auto encoding = QStringConverter::encodingForHtml(m_responseEntityBody.constData(), m_responseEntityBody.size());
+ if (encoding)
+ decoder = QStringDecoder(*encoding);
+ }
- if (!codec)
- codec = QTextCodec::codecForUtfText(m_responseEntityBody, nullptr);
+ if (!decoder.isValid()) {
+ auto encoding = QStringConverter::encodingForData(m_responseEntityBody.constData(), m_responseEntityBody.size());
+ if (encoding)
+ decoder = QStringDecoder(*encoding);
+ }
- if (!codec)
- codec = QTextCodec::codecForName("UTF-8");
- return codec;
-}
-#endif
+ if (!decoder.isValid())
+ decoder = QStringDecoder(QStringDecoder::Utf8);
+ return decoder;
+}
QString QQmlXMLHttpRequest::responseBody()
{
-#if QT_CONFIG(textcodec)
- if (!m_textCodec)
- m_textCodec = findTextCodec();
- if (m_textCodec)
- return m_textCodec->toUnicode(m_responseEntityBody);
-#endif
-
- return QString::fromUtf8(m_responseEntityBody);
+ QStringDecoder toUtf16 = findTextDecoder();
+ return toUtf16(m_responseEntityBody);
}
const QByteArray &QQmlXMLHttpRequest::rawResponseBody() const