JsonSerializer returns QByteArray

JSON supports UTF-16, however the serializer is 8-bit clean.  Instead of
returning a QString only to turn it back into a QByteArray, return a
QByteArray on serialization.
This commit is contained in:
Matthew Horan 2012-12-30 17:47:16 -05:00
parent 9596c5d614
commit e183803784
6 changed files with 13 additions and 8 deletions

View File

@ -15,3 +15,7 @@ void Command::emitFinished(bool success, QString message) {
emit finished(new Response(success, message, this)); emit finished(new Response(success, message, this));
} }
void Command::emitFinished(bool success, QByteArray message) {
emit finished(new Response(success, message, this));
}

View File

@ -16,6 +16,7 @@ class Command : public QObject {
protected: protected:
void emitFinished(bool success); void emitFinished(bool success);
void emitFinished(bool success, QString message); void emitFinished(bool success, QString message);
void emitFinished(bool success, QByteArray message);
signals: signals:
void finished(Response *response); void finished(Response *response);

View File

@ -8,7 +8,7 @@ ConsoleMessages::ConsoleMessages(WebPageManager *manager, QStringList &arguments
void ConsoleMessages::start() { void ConsoleMessages::start() {
JsonSerializer serializer; JsonSerializer serializer;
QString json = serializer.serialize(page()->consoleMessages()); QByteArray json = serializer.serialize(page()->consoleMessages());
emitFinished(true, json); emitFinished(true, json);
} }

View File

@ -15,7 +15,7 @@ void GetWindowHandles::start() {
handles << page->uuid(); handles << page->uuid();
JsonSerializer serializer; JsonSerializer serializer;
QString json = serializer.serialize(handles); QByteArray json = serializer.serialize(handles);
emitFinished(true, json); emitFinished(true, json);
} }

View File

@ -3,7 +3,7 @@
JsonSerializer::JsonSerializer(QObject *parent) : QObject(parent) { JsonSerializer::JsonSerializer(QObject *parent) : QObject(parent) {
} }
QString JsonSerializer::serialize(const QVariant &object) { QByteArray JsonSerializer::serialize(const QVariant &object) {
addVariant(object); addVariant(object);
return m_buffer; return m_buffer;
} }
@ -82,7 +82,7 @@ void JsonSerializer::addMap(const QVariantMap &map) {
m_buffer.append("}"); m_buffer.append("}");
} }
QString JsonSerializer::sanitizeString(QString str) { QByteArray JsonSerializer::sanitizeString(QString str) {
str.replace("\\", "\\\\"); str.replace("\\", "\\\\");
str.replace("\"", "\\\""); str.replace("\"", "\\\"");
str.replace("\b", "\\b"); str.replace("\b", "\\b");
@ -91,7 +91,7 @@ QString JsonSerializer::sanitizeString(QString str) {
str.replace("\r", "\\r"); str.replace("\r", "\\r");
str.replace("\t", "\\t"); str.replace("\t", "\\t");
QString result; QByteArray result;
const ushort* unicode = str.utf16(); const ushort* unicode = str.utf16();
unsigned int i = 0; unsigned int i = 0;

View File

@ -6,15 +6,15 @@ class JsonSerializer : public QObject {
public: public:
JsonSerializer(QObject *parent = 0); JsonSerializer(QObject *parent = 0);
QString serialize(const QVariant &object); QByteArray serialize(const QVariant &object);
private: private:
void addVariant(const QVariant &object); void addVariant(const QVariant &object);
void addString(const QString &string); void addString(const QString &string);
void addArray(const QVariantList &list); void addArray(const QVariantList &list);
void addMap(const QVariantMap &map); void addMap(const QVariantMap &map);
QString sanitizeString(QString string); QByteArray sanitizeString(QString string);
QString m_buffer; QByteArray m_buffer;
}; };