diff options
Diffstat (limited to 'Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp')
-rw-r--r-- | Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp b/Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp index 2eacc70b0..a46d39050 100644 --- a/Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp +++ b/Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp @@ -642,6 +642,7 @@ private Q_SLOTS: void introspectQtMethods_data(); void introspectQtMethods(); void scriptablePlugin(); + void exceptionInSlot(); private: QString evalJS(const QString& s) @@ -2239,5 +2240,32 @@ void tst_QObjectBridge::scriptablePlugin() //#endif } +class WebPageWithConsoleCapture : public QWebPage +{ +public: + void javaScriptConsoleMessage(const QString &message, int, const QString &) + { + consoleMessages << message; + } + + QStringList consoleMessages; +}; + +void tst_QObjectBridge::exceptionInSlot() +{ + WebPageWithConsoleCapture page; + QWebFrame* frame = page.mainFrame(); + frame->addToJavaScriptWindowObject("myObject", m_myObject); + frame->evaluateJavaScript( + "myHandler = function() { window.gotSignal = true; throw 'exception in slot'; };" + "myObject.mySignal.connect(myHandler);" + "gotSignal = false;" + "myObject.mySignal();" + ); + QString ret = frame->evaluateJavaScript("gotSignal").toString(); + QCOMPARE(ret, sTrue); + QCOMPARE(page.consoleMessages, QStringList() << "exception in slot"); +} + QTEST_MAIN(tst_QObjectBridge) #include "tst_qobjectbridge.moc" |