diff --git a/lib/capybara/webkit/browser.rb b/lib/capybara/webkit/browser.rb index d8f1256..4b34b8f 100644 --- a/lib/capybara/webkit/browser.rb +++ b/lib/capybara/webkit/browser.rb @@ -55,7 +55,7 @@ module Capybara::Webkit end def confirm_messages - command("JavascriptConfirmMessages").split("\n") + JSON.parse(command("JavascriptConfirmMessages")) end def prompt_messages diff --git a/spec/driver_spec.rb b/spec/driver_spec.rb index b131d0f..ff6f58a 100644 --- a/spec/driver_spec.rb +++ b/spec/driver_spec.rb @@ -615,6 +615,12 @@ describe Capybara::Webkit::Driver do driver.find("//input").first.click driver.console_messages.first[:message].should == "hello" end + + it "supports multi-line confirmation messages" do + driver.execute_script("confirm('Hello\\nnewline')") + driver.confirm_messages.first.should == "Hello\nnewline" + end + end context "on a prompt app" do diff --git a/src/JavascriptConfirmMessages.cpp b/src/JavascriptConfirmMessages.cpp index 204f971..df4ba83 100644 --- a/src/JavascriptConfirmMessages.cpp +++ b/src/JavascriptConfirmMessages.cpp @@ -1,10 +1,13 @@ #include "JavascriptConfirmMessages.h" #include "WebPage.h" #include "WebPageManager.h" +#include "JsonSerializer.h" JavascriptConfirmMessages::JavascriptConfirmMessages(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {} void JavascriptConfirmMessages::start() { - emitFinished(true, page()->confirmMessages()); + JsonSerializer serializer; + QByteArray json = serializer.serialize(page()->confirmMessages()); + emitFinished(true, json); } diff --git a/src/WebPage.cpp b/src/WebPage.cpp index 83ec456..e2e0d94 100644 --- a/src/WebPage.cpp +++ b/src/WebPage.cpp @@ -91,8 +91,8 @@ QString WebPage::alertMessages() { return m_alertMessages.join("\n"); } -QString WebPage::confirmMessages() { - return m_confirmMessages.join("\n"); +QVariantList WebPage::confirmMessages() { + return m_confirmMessages; } QString WebPage::promptMessages() { diff --git a/src/WebPage.h b/src/WebPage.h index ae8664c..ab19385 100644 --- a/src/WebPage.h +++ b/src/WebPage.h @@ -25,7 +25,7 @@ class WebPage : public QWebPage { void setSkipImageLoading(bool skip); QVariantList consoleMessages(); QString alertMessages(); - QString confirmMessages(); + QVariantList confirmMessages(); QString promptMessages(); void resetWindowSize(); QWebPage *createWindow(WebWindowType type); @@ -73,7 +73,7 @@ class WebPage : public QWebPage { bool m_prompt; QVariantList m_consoleMessages; QStringList m_alertMessages; - QStringList m_confirmMessages; + QVariantList m_confirmMessages; QString m_prompt_text; QStringList m_promptMessages; QString m_uuid;