summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/qt/tests
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/qt/tests')
-rw-r--r--Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp28
-rw-r--r--Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp23
2 files changed, 51 insertions, 0 deletions
diff --git a/Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp b/Source/WebKit/qt/tests/qobjectbridge/tst_qobjectbridge.cpp
index 52e6422b1..18d82625c 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)
@@ -2234,5 +2235,32 @@ void tst_QObjectBridge::scriptablePlugin()
QCOMPARE(result.toString(), QLatin1String("42"));
}
+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"
diff --git a/Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp b/Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp
index a990ad0f2..dcea15912 100644
--- a/Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp
+++ b/Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp
@@ -59,6 +59,7 @@ private Q_SLOTS:
void setPalette_data();
void setPalette();
#endif
+ void innerOuterRect();
};
// This will be called before the first test function is executed.
@@ -518,6 +519,28 @@ void tst_QWebView::renderingAfterMaxAndBack()
QCOMPARE(image3, reference3);
}
+void tst_QWebView::innerOuterRect()
+{
+ QUrl url = QUrl("data:text/html,<html><head></head>"
+ "<body bgcolor=red>"
+ "</body>"
+ "</html>");
+ QWebView view;
+ view.page()->mainFrame()->load(url);
+ QVERIFY(waitForSignal(&view, SIGNAL(loadFinished(bool))));
+ view.showMaximized();
+ const QRect frameGeometry = view.frameGeometry();
+ const QRect geometry = view.geometry();
+ QVariant outerWidth = view.page()->mainFrame()->evaluateJavaScript("window.outerWidth;");
+ QCOMPARE(outerWidth.toInt(), frameGeometry.width());
+ QVariant innerWidth = view.page()->mainFrame()->evaluateJavaScript("window.innerWidth;");
+ QCOMPARE(innerWidth.toInt(), geometry.width());
+ QVariant outerHeight = view.page()->mainFrame()->evaluateJavaScript("window.outerHeight;");
+ QCOMPARE(outerHeight.toInt(), frameGeometry.height());
+ QVariant innerHeight = view.page()->mainFrame()->evaluateJavaScript("window.innerHeight;");
+ QCOMPARE(innerHeight.toInt(), geometry.height());
+}
+
QTEST_MAIN(tst_QWebView)
#include "tst_qwebview.moc"