src/Evaluate.cpp in capybara-webkit-0.13.2 vs src/Evaluate.cpp in capybara-webkit-0.14.0

- old
+ new

@@ -1,85 +1,14 @@ #include "Evaluate.h" #include "WebPage.h" #include "WebPageManager.h" +#include "JsonSerializer.h" #include <iostream> Evaluate::Evaluate(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) { - m_buffer = ""; } void Evaluate::start() { QVariant result = page()->currentFrame()->evaluateJavaScript(arguments()[0]); - addVariant(result); - emit finished(new Response(true, m_buffer)); -} - -void Evaluate::addVariant(QVariant &object) { - if (object.isValid()) { - switch(object.type()) { - case QMetaType::QString: - { - QString string = object.toString(); - addString(string); - } - break; - case QMetaType::QVariantList: - { - QVariantList list = object.toList(); - addArray(list); - } - break; - case QMetaType::Double: - m_buffer.append(object.toString()); - break; - case QMetaType::QVariantMap: - { - QVariantMap map = object.toMap(); - addMap(map); - break; - } - case QMetaType::Bool: - { - m_buffer.append(object.toString()); - break; - } - default: - m_buffer.append("null"); - } - } else { - m_buffer.append("null"); - } -} - -void Evaluate::addString(QString &string) { - QString escapedString(string); - escapedString.replace("\"", "\\\""); - m_buffer.append("\""); - m_buffer.append(escapedString); - m_buffer.append("\""); -} - -void Evaluate::addArray(QVariantList &list) { - m_buffer.append("["); - for (int i = 0; i < list.length(); i++) { - if (i > 0) - m_buffer.append(","); - addVariant(list[i]); - } - m_buffer.append("]"); -} - -void Evaluate::addMap(QVariantMap &map) { - m_buffer.append("{"); - QMapIterator<QString, QVariant> iterator(map); - while (iterator.hasNext()) { - iterator.next(); - QString key = iterator.key(); - QVariant value = iterator.value(); - addString(key); - m_buffer.append(":"); - addVariant(value); - if (iterator.hasNext()) - m_buffer.append(","); - } - m_buffer.append("}"); + JsonSerializer serializer; + emitFinished(true, serializer.serialize(result)); }