summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorPierre Rossi <pierre.rossi@digia.com>2013-10-16 11:13:02 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-30 11:57:20 +0100
commit284003c590e79404ebcdd7665f61f7a533bdc0a7 (patch)
tree2d968abde19023d418a7f3bbde9e333fe1d373be /tests/auto/widgets
parentc007aa08580e462b4731072447355c84579a3d08 (diff)
Fix tst_QWebEnginePage's use of evaluateJavaScript
Mostly speculative autotest adjustments due to lacking features Change-Id: I5b0cfa8fb586ae4531327c21d03b064d9c307d06 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp250
-rw-r--r--tests/auto/widgets/util.h7
2 files changed, 128 insertions, 129 deletions
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index 2a85b010c..addb2bb85 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -265,10 +265,10 @@ void tst_QWebEnginePage::acceptNavigationRequest()
"<input type='text'><input type='submit'></form></body></html>"), QUrl());
QTRY_COMPARE(loadSpy.count(), 1);
- m_view->page()->evaluateJavaScript("tstform.submit();");
+ evaluateJavaScriptSync(m_view->page(), "tstform.submit();");
newPage->m_acceptNavigationRequest = true;
- m_view->page()->evaluateJavaScript("tstform.submit();");
+ evaluateJavaScriptSync(m_view->page(), "tstform.submit();");
QTRY_COMPARE(loadSpy.count(), 2);
QCOMPARE(m_view->page()->toPlainText(), QString("foo?"));
@@ -330,7 +330,7 @@ void tst_QWebEnginePage::geolocationRequestJS()
#else
JSTestPage* newPage = new JSTestPage(m_view);
- if (newPage->evaluateJavaScript(QLatin1String("!navigator.geolocation")).toBool()) {
+ if (evaluateJavaScriptSync(newPage, QLatin1String("!navigator.geolocation")).toBool()) {
delete newPage;
W_QSKIP("Geolocation is not supported.", SkipSingle);
}
@@ -341,16 +341,16 @@ void tst_QWebEnginePage::geolocationRequestJS()
newPage->setGeolocationPermission(false);
m_view->setPage(newPage);
m_view->setHtml(QString("<html><body>test</body></html>"), QUrl());
- m_view->page()->evaluateJavaScript("var errorCode = 0; function error(err) { errorCode = err.code; } function success(pos) { } navigator.geolocation.getCurrentPosition(success, error)");
+ evaluateJavaScriptSync(m_view->page(), "var errorCode = 0; function error(err) { errorCode = err.code; } function success(pos) { } navigator.geolocation.getCurrentPosition(success, error)");
QTest::qWait(2000);
- QVariant empty = m_view->page()->evaluateJavaScript("errorCode");
+ QVariant empty = evaluateJavaScriptSync(m_view->page(), "errorCode");
QEXPECT_FAIL("", "https://bugs.webkit.org/show_bug.cgi?id=102235", Continue);
QVERIFY(empty.type() == QVariant::Double && empty.toInt() != 0);
newPage->setGeolocationPermission(true);
- m_view->page()->evaluateJavaScript("errorCode = 0; navigator.geolocation.getCurrentPosition(success, error);");
- empty = m_view->page()->evaluateJavaScript("errorCode");
+ evaluateJavaScriptSync(m_view->page(), "errorCode = 0; navigator.geolocation.getCurrentPosition(success, error);");
+ empty = evaluateJavaScriptSync(m_view->page(), "errorCode");
//http://dev.w3.org/geo/api/spec-source.html#position
//PositionError: const unsigned short PERMISSION_DENIED = 1;
@@ -413,11 +413,12 @@ public:
void tst_QWebEnginePage::consoleOutput()
{
-#if !defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
- QSKIP("QWEBENGINEPAGE_EVALUATEJAVASCRIPT");
+#if !defined(QWEBENGINEPAGE_JAVASCRIPTCONSOLEMESSAGE)
+ QSKIP("QWEBENGINEPAGE_JAVASCRIPTCONSOLEMESSAGE");
#else
ConsolePage page;
- page.evaluateJavaScript("this is not valid JavaScript");
+ // We don't care about the result but want this to be synchronous
+ evaluateJavaScriptSync(&page, "this is not valid JavaScript");
QCOMPARE(page.messages.count(), 1);
QCOMPARE(page.lineNumbers.at(0), 1);
#endif
@@ -464,16 +465,16 @@ private Q_SLOTS:
void tst_QWebEnginePage::popupFormSubmission()
{
-#if !defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
- QSKIP("QWEBENGINEPAGE_EVALUATEJAVASCRIPT");
+#if !defined(QWEBENGINEPAGE_SETTINGS)
+ QSKIP("QWEBENGINEPAGE_SETTINGS");
#else
TestPage page;
page.settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
page.setHtml("<form name=form1 method=get action='' target=myNewWin>"\
"<input type=hidden name=foo value='bar'>"\
"</form>");
- page.evaluateJavaScript("window.open('', 'myNewWin', 'width=500,height=300,toolbar=0')");
- page.evaluateJavaScript("document.form1.submit();");
+ page.runJavaScript("window.open('', 'myNewWin', 'width=500,height=300,toolbar=0')");
+ evaluateJavaScriptSync(&page, "document.form1.submit();");
QTest::qWait(500);
// The number of popup created should be one.
@@ -603,19 +604,19 @@ void tst_QWebEnginePage::loadHtml5Video()
void tst_QWebEnginePage::viewModes()
{
-#if !defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
- QSKIP("QWEBENGINEPAGE_EVALUATEJAVASCRIPT");
+#if !defined(QWEBENGINEPAGE_VIEW_MODES)
+ QSKIP("QWEBENGINEPAGE_VIEW_MODES");
#else
m_view->setHtml("<body></body>");
m_page->setProperty("_q_viewMode", "minimized");
- QVariant empty = m_page->evaluateJavaScript("window.styleMedia.matchMedium(\"(-webengine-view-mode)\")");
+ QVariant empty = evaluateJavaScriptSync(m_page, "window.styleMedia.matchMedium(\"(-webengine-view-mode)\")");
QVERIFY(empty.type() == QVariant::Bool && empty.toBool());
- QVariant minimized = m_page->evaluateJavaScript("window.styleMedia.matchMedium(\"(-webengine-view-mode: minimized)\")");
+ QVariant minimized = evaluateJavaScriptSync(m_page, "window.styleMedia.matchMedium(\"(-webengine-view-mode: minimized)\")");
QVERIFY(minimized.type() == QVariant::Bool && minimized.toBool());
- QVariant maximized = m_page->evaluateJavaScript("window.styleMedia.matchMedium(\"(-webengine-view-mode: maximized)\")");
+ QVariant maximized = evaluateJavaScriptSync(m_page, "window.styleMedia.matchMedium(\"(-webengine-view-mode: maximized)\")");
QVERIFY(maximized.type() == QVariant::Bool && !maximized.toBool());
#endif
}
@@ -633,17 +634,16 @@ void tst_QWebEnginePage::modified()
QVERIFY(!m_page->isModified());
-// m_page->evaluateJavaScript("alert(document.getElementById('foo'))");
- m_page->evaluateJavaScript("document.getElementById('foo').focus()");
- m_page->evaluateJavaScript("document.execCommand('InsertText', true, 'Test');");
+ m_page->runJavaScript("document.getElementById('foo').focus()");
+ evaluateJavaScriptSync(m_page, "document.execCommand('InsertText', true, 'Test');");
QVERIFY(m_page->isModified());
- m_page->evaluateJavaScript("document.execCommand('Undo', true);");
+ evaluateJavaScriptSync(m_page, "document.execCommand('Undo', true);");
QVERIFY(!m_page->isModified());
- m_page->evaluateJavaScript("document.execCommand('Redo', true);");
+ evaluateJavaScriptSync(m_page, "document.execCommand('Redo', true);");
QVERIFY(m_page->isModified());
@@ -661,10 +661,10 @@ void tst_QWebEnginePage::modified()
QVERIFY(!m_page->isModified());
- QVERIFY(m_page->history()->currentItemIndex() == 0);
+ QCOMPARE(m_page->history()->currentItemIndex(), 0);
m_page->history()->setMaximumItemCount(3);
- QVERIFY(m_page->history()->maximumItemCount() == 3);
+ QCOMPARE(m_page->history()->maximumItemCount(), 3);
QVariant variant("string test");
m_page->history()->currentItem().setUserData(variant);
@@ -672,9 +672,9 @@ void tst_QWebEnginePage::modified()
m_page->setUrl(QUrl("data:text/html,<body>This is second page"));
m_page->setUrl(QUrl("data:text/html,<body>This is third page"));
- QVERIFY(m_page->history()->count() == 2);
+ QCOMPARE(m_page->history()->count(), 2);
m_page->setUrl(QUrl("data:text/html,<body>This is fourth page"));
- QVERIFY(m_page->history()->count() == 2);
+ QCOMPARE(m_page->history()->count(), 2);
m_page->setUrl(QUrl("data:text/html,<body>This is fifth page"));
QVERIFY(::waitForSignal(m_page, SIGNAL(saveFrameStateRequested(QWebEngineFrame*,QWebEngineHistoryItem*))));
#endif
@@ -747,22 +747,22 @@ void tst_QWebEnginePage::database()
QSignalSpy spy(m_page, SIGNAL(databaseQuotaExceeded(QWebEngineFrame*,QString)));
m_view->setHtml(QString("<html><head><script>var db; db=openDatabase('testdb', '1.0', 'test database API', 50000); </script></head><body><div></div></body></html>"), QUrl("http://www.myexample.com"));
QTRY_COMPARE(spy.count(), 1);
- m_page->evaluateJavaScript("var db2; db2=openDatabase('testdb', '1.0', 'test database API', 50000);");
+ evaluateJavaScriptSync(m_page, "var db2; db2=openDatabase('testdb', '1.0', 'test database API', 50000);");
QTRY_COMPARE(spy.count(),1);
- m_page->evaluateJavaScript("localStorage.test='This is a test for local storage';");
+ evaluateJavaScriptSync(m_page, "localStorage.test='This is a test for local storage';");
m_view->setHtml(QString("<html><body id='b'>text</body></html>"), QUrl("http://www.myexample.com"));
- QVariant s1 = m_page->evaluateJavaScript("localStorage.test");
+ QVariant s1 = evaluateJavaScriptSync(m_page, "localStorage.test");
QCOMPARE(s1.toString(), QString("This is a test for local storage"));
- m_page->evaluateJavaScript("sessionStorage.test='This is a test for session storage';");
+ evaluateJavaScriptSync(m_page, "sessionStorage.test='This is a test for session storage';");
m_view->setHtml(QString("<html><body id='b'>text</body></html>"), QUrl("http://www.myexample.com"));
- QVariant s2 = m_page->evaluateJavaScript("sessionStorage.test");
+ QVariant s2 = evaluateJavaScriptSync(m_page, "sessionStorage.test");
QCOMPARE(s2.toString(), QString("This is a test for session storage"));
m_view->setHtml(QString("<html><head></head><body><div></div></body></html>"), QUrl("http://www.myexample.com"));
- m_page->evaluateJavaScript("var db3; db3=openDatabase('testdb', '1.0', 'test database API', 50000);db3.transaction(function(tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS Test (text TEXT)', []); }, function(tx, result) { }, function(tx, error) { });");
+ evaluateJavaScriptSync(m_page, "var db3; db3=openDatabase('testdb', '1.0', 'test database API', 50000);db3.transaction(function(tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS Test (text TEXT)', []); }, function(tx, result) { }, function(tx, error) { });");
QTest::qWait(200);
// Remove all databases.
@@ -857,17 +857,17 @@ static void createPlugin(QWebEngineView *view)
QVERIFY(ci.returnValue->inherits("QPushButton"));
}
// test JS bindings
- QCOMPARE(newPage->evaluateJavaScript("document.getElementById('mybutton').toString()").toString(),
+ QCOMPARE(evaluateJavaScriptSync(newPage, "document.getElementById('mybutton').toString()").toString(),
QString::fromLatin1("[object HTMLObjectElement]"));
- QCOMPARE(newPage->evaluateJavaScript("mybutton.toString()").toString(),
+ QCOMPARE(evaluateJavaScriptSync(newPage, "mybutton.toString()").toString(),
QString::fromLatin1("[object HTMLObjectElement]"));
- QCOMPARE(newPage->evaluateJavaScript("typeof mybutton.objectName").toString(),
+ QCOMPARE(evaluateJavaScriptSync(newPage, "typeof mybutton.objectName").toString(),
QString::fromLatin1("string"));
- QCOMPARE(newPage->evaluateJavaScript("mybutton.objectName").toString(),
+ QCOMPARE(evaluateJavaScriptSync(newPage, "mybutton.objectName").toString(),
QString::fromLatin1("pushbutton"));
- QCOMPARE(newPage->evaluateJavaScript("typeof mybutton.clicked").toString(),
+ QCOMPARE(evaluateJavaScriptSync(newPage, "typeof mybutton.clicked").toString(),
QString::fromLatin1("function"));
- QCOMPARE(newPage->evaluateJavaScript("mybutton.clicked.toString()").toString(),
+ QCOMPARE(evaluateJavaScriptSync(newPage, "mybutton.clicked.toString()").toString(),
QString::fromLatin1("function clicked() {\n [native code]\n}"));
view->setHtml(QString("<html><body><table>"
@@ -946,17 +946,17 @@ void tst_QWebEnginePage::graphicsWidgetPlugin()
QVERIFY(ci.returnValue->inherits("QGraphicsWidget"));
}
// test JS bindings
- QCOMPARE(newPage->evaluateJavaScript("document.getElementById('mygraphicswidget').toString()").toString(),
+ QCOMPARE(evaluateJavaScriptSync(newPage, "document.getElementById('mygraphicswidget').toString()").toString(),
QString::fromLatin1("[object HTMLObjectElement]"));
- QCOMPARE(newPage->evaluateJavaScript("mygraphicswidget.toString()").toString(),
+ QCOMPARE(evaluateJavaScriptSync(newPage, "mygraphicswidget.toString()").toString(),
QString::fromLatin1("[object HTMLObjectElement]"));
- QCOMPARE(newPage->evaluateJavaScript("typeof mygraphicswidget.objectName").toString(),
+ QCOMPARE(evaluateJavaScriptSync(newPage, "typeof mygraphicswidget.objectName").toString(),
QString::fromLatin1("string"));
- QCOMPARE(newPage->evaluateJavaScript("mygraphicswidget.objectName").toString(),
+ QCOMPARE(evaluateJavaScriptSync(newPage, "mygraphicswidget.objectName").toString(),
QString::fromLatin1("graphicswidget"));
- QCOMPARE(newPage->evaluateJavaScript("typeof mygraphicswidget.geometryChanged").toString(),
+ QCOMPARE(evaluateJavaScriptSync(newPage, "typeof mygraphicswidget.geometryChanged").toString(),
QString::fromLatin1("function"));
- QCOMPARE(newPage->evaluateJavaScript("mygraphicswidget.geometryChanged.toString()").toString(),
+ QCOMPARE(evaluateJavaScriptSync(newPage, "mygraphicswidget.geometryChanged.toString()").toString(),
QString::fromLatin1("function geometryChanged() {\n [native code]\n}"));
#endif
}
@@ -1132,16 +1132,16 @@ void tst_QWebEnginePage::multiplePageGroupsAndLocalStorage()
view1.setHtml(QString("<html><body> </body></html>"), QUrl("http://www.myexample.com"));
view2.setHtml(QString("<html><body> </body></html>"), QUrl("http://www.myexample.com"));
- view1.page()->evaluateJavaScript("localStorage.test='value1';");
- view2.page()->evaluateJavaScript("localStorage.test='value2';");
+ evaluateJavaScriptSync(view1.page(), "localStorage.test='value1';");
+ evaluateJavaScriptSync(view2.page(), "localStorage.test='value2';");
view1.setHtml(QString("<html><body> </body></html>"), QUrl("http://www.myexample.com"));
view2.setHtml(QString("<html><body> </body></html>"), QUrl("http://www.myexample.com"));
- QVariant s1 = view1.page()->evaluateJavaScript("localStorage.test");
+ QVariant s1 = evaluateJavaScriptSync(view1.page(), "localStorage.test");
QCOMPARE(s1.toString(), QString("value1"));
- QVariant s2 = view2.page()->evaluateJavaScript("localStorage.test");
+ QVariant s2 = evaluateJavaScriptSync(view2.page(), "localStorage.test");
QCOMPARE(s2.toString(), QString("value2"));
QTest::qWait(1000);
@@ -1153,7 +1153,6 @@ void tst_QWebEnginePage::multiplePageGroupsAndLocalStorage()
#endif
}
-#if defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
class CursorTrackedPage : public QWebEnginePage
{
public:
@@ -1163,28 +1162,27 @@ public:
}
QString selectedText() {
- return evaluateJavaScript("window.getSelection().toString()").toString();
+ return evaluateJavaScriptSync(this, "window.getSelection().toString()").toString();
}
int selectionStartOffset() {
- return evaluateJavaScript("window.getSelection().getRangeAt(0).startOffset").toInt();
+ return evaluateJavaScriptSync(this, "window.getSelection().getRangeAt(0).startOffset").toInt();
}
int selectionEndOffset() {
- return evaluateJavaScript("window.getSelection().getRangeAt(0).endOffset").toInt();
+ return evaluateJavaScriptSync(this, "window.getSelection().getRangeAt(0).endOffset").toInt();
}
// true if start offset == end offset, i.e. no selected text
int isSelectionCollapsed() {
- return evaluateJavaScript("window.getSelection().getRangeAt(0).collapsed").toBool();
+ return evaluateJavaScriptSync(this, "window.getSelection().getRangeAt(0).collapsed").toBool();
}
};
-#endif
void tst_QWebEnginePage::cursorMovements()
{
-#if !defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
- QSKIP("QWEBENGINEPAGE_EVALUATEJAVASCRIPT");
+#if !defined(QWEBENGINEPAGE_SELECTEDTEXT)
+ QSKIP("QWEBENGINEPAGE_SELECTEDTEXT");
#else
CursorTrackedPage* page = new CursorTrackedPage;
QString content("<html><body><p id=one>The quick brown fox</p><p id=two>jumps over the lazy dog</p><p>May the source<br/>be with you!</p></body></html>");
@@ -1195,7 +1193,7 @@ void tst_QWebEnginePage::cursorMovements()
"var node = document.getElementById(\"one\"); " \
"range.selectNode(node); " \
"getSelection().addRange(range);";
- page->evaluateJavaScript(script);
+ evaluateJavaScriptSync(page, script);
QCOMPARE(page->selectedText().trimmed(), QString::fromLatin1("The quick brown fox"));
QRegExp regExp(" style=\".*\"");
@@ -1433,7 +1431,7 @@ void tst_QWebEnginePage::textSelection()
"var node = document.getElementById(\"one\"); " \
"range.selectNode(node); " \
"getSelection().addRange(range);";
- page->evaluateJavaScript(selectScript);
+ evaluateJavaScriptSync(page, selectScript);
QCOMPARE(page->selectedText().trimmed(), QString::fromLatin1("The quick brown fox"));
QRegExp regExp(" style=\".*\"");
regExp.setMinimal(true);
@@ -2034,20 +2032,20 @@ void tst_QWebEnginePage::inputMethods()
page->setHtml("<html><body>" \
"<input type='text' id='input3' value='QtWebEngine2'/>" \
"</body></html>");
- page->evaluateJavaScript("var inputEle = document.getElementById('input3'); inputEle.focus(); inputEle.select();");
+ evaluateJavaScriptSync(page, "var inputEle = document.getElementById('input3'); inputEle.focus(); inputEle.select();");
//Send empty QInputMethodEvent
QInputMethodEvent emptyEvent;
page->event(&emptyEvent);
- QString inputValue = page->evaluateJavaScript("document.getElementById('input3').value").toString();
+ QString inputValue = evaluateJavaScriptSync(page, "document.getElementById('input3').value").toString();
QCOMPARE(inputValue, QString("QtWebEngine2"));
//END - Test for sending empty QInputMethodEvent
page->setHtml("<html><body>" \
"<input type='text' id='input4' value='QtWebEngine inputMethod'/>" \
"</body></html>");
- page->evaluateJavaScript("var inputEle = document.getElementById('input4'); inputEle.focus(); inputEle.select();");
+ evaluateJavaScriptSync(page, "var inputEle = document.getElementById('input4'); inputEle.focus(); inputEle.select();");
// Clear the selection, also cancel the ongoing composition if there is one.
{
@@ -2367,7 +2365,7 @@ void tst_QWebEnginePage::inputMethods()
page->setHtml("<html><body>" \
"<textarea rows='5' cols='1' id='input5' value=''/>" \
"</body></html>");
- page->evaluateJavaScript("var inputEle = document.getElementById('input5'); inputEle.focus(); inputEle.select();");
+ evaluateJavaScriptSync(page, "var inputEle = document.getElementById('input5'); inputEle.focus(); inputEle.select();");
// Enter Key without key text
QKeyEvent keyEnter(QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier);
@@ -2383,12 +2381,12 @@ void tst_QWebEnginePage::inputMethods()
page->event(&eventText2);
qApp->processEvents();
- QString inputValue2 = page->evaluateJavaScript("document.getElementById('input5').value").toString();
+ QString inputValue2 = evaluateJavaScriptSync(page, "document.getElementById('input5').value").toString();
QCOMPARE(inputValue2, QString("\n\nthird line"));
// Enter Key with key text '\r'
- page->evaluateJavaScript("var inputEle = document.getElementById('input5'); inputEle.value = ''; inputEle.focus(); inputEle.select();");
- inputValue2 = page->evaluateJavaScript("document.getElementById('input5').value").toString();
+ evaluateJavaScriptSync(page, "var inputEle = document.getElementById('input5'); inputEle.value = ''; inputEle.focus(); inputEle.select();");
+ inputValue2 = evaluateJavaScriptSync(page, "document.getElementById('input5').value").toString();
QCOMPARE(inputValue2, QString(""));
QKeyEvent keyEnterWithCarriageReturn(QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier, "\r");
@@ -2397,12 +2395,12 @@ void tst_QWebEnginePage::inputMethods()
page->event(&eventText2);
qApp->processEvents();
- inputValue2 = page->evaluateJavaScript("document.getElementById('input5').value").toString();
+ inputValue2 = evaluateJavaScriptSync(page, "document.getElementById('input5').value").toString();
QCOMPARE(inputValue2, QString("\n\nthird line"));
// Enter Key with key text '\n'
- page->evaluateJavaScript("var inputEle = document.getElementById('input5'); inputEle.value = ''; inputEle.focus(); inputEle.select();");
- inputValue2 = page->evaluateJavaScript("document.getElementById('input5').value").toString();
+ page->runJavaScript("var inputEle = document.getElementById('input5'); inputEle.value = ''; inputEle.focus(); inputEle.select();");
+ inputValue2 = evaluateJavaScriptSync(page, "document.getElementById('input5').value").toString();
QCOMPARE(inputValue2, QString(""));
QKeyEvent keyEnterWithLineFeed(QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier, "\n");
@@ -2411,12 +2409,12 @@ void tst_QWebEnginePage::inputMethods()
page->event(&eventText2);
qApp->processEvents();
- inputValue2 = page->evaluateJavaScript("document.getElementById('input5').value").toString();
+ inputValue2 = evaluateJavaScriptSync(page, "document.getElementById('input5').value").toString();
QCOMPARE(inputValue2, QString("\n\nthird line"));
// Enter Key with key text "\n\r"
- page->evaluateJavaScript("var inputEle = document.getElementById('input5'); inputEle.value = ''; inputEle.focus(); inputEle.select();");
- inputValue2 = page->evaluateJavaScript("document.getElementById('input5').value").toString();
+ page->runJavaScript("var inputEle = document.getElementById('input5'); inputEle.value = ''; inputEle.focus(); inputEle.select();");
+ inputValue2 = evaluateJavaScriptSync(page, "document.getElementById('input5').value").toString();
QCOMPARE(inputValue2, QString(""));
QKeyEvent keyEnterWithLFCR(QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier, "\n\r");
@@ -2425,12 +2423,12 @@ void tst_QWebEnginePage::inputMethods()
page->event(&eventText2);
qApp->processEvents();
- inputValue2 = page->evaluateJavaScript("document.getElementById('input5').value").toString();
+ inputValue2 = evaluateJavaScriptSync(page, "document.getElementById('input5').value").toString();
QCOMPARE(inputValue2, QString("\n\nthird line"));
// Return Key without key text
- page->evaluateJavaScript("var inputEle = document.getElementById('input5'); inputEle.value = ''; inputEle.focus(); inputEle.select();");
- inputValue2 = page->evaluateJavaScript("document.getElementById('input5').value").toString();
+ page->runJavaScript("var inputEle = document.getElementById('input5'); inputEle.value = ''; inputEle.focus(); inputEle.select();");
+ inputValue2 = evaluateJavaScriptSync(page, "document.getElementById('input5').value").toString();
QCOMPARE(inputValue2, QString(""));
QKeyEvent keyReturn(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier);
@@ -2439,7 +2437,7 @@ void tst_QWebEnginePage::inputMethods()
page->event(&eventText2);
qApp->processEvents();
- inputValue2 = page->evaluateJavaScript("document.getElementById('input5').value").toString();
+ inputValue2 = evaluateJavaScriptSync(page, "document.getElementById('input5').value").toString();
QCOMPARE(inputValue2, QString("\n\nthird line"));
// END - Newline test for textarea
@@ -2481,7 +2479,7 @@ void tst_QWebEnginePage::inputMethodsTextFormat()
page->settings()->setFontFamily(QWebEngineSettings::SerifFont, "FooSerifFont");
page->setHtml("<html><body>" \
"<input type='text' id='input1' style='font-family: serif' value='' maxlength='20'/>");
- page->evaluateJavaScript("document.getElementById('input1').focus()");
+ evaluateJavaScriptSync(page, "document.getElementById('input1').focus()");
page->mainFrame()->setFocus();
view->show();
@@ -2505,8 +2503,8 @@ void tst_QWebEnginePage::inputMethodsTextFormat()
void tst_QWebEnginePage::protectBindingsRuntimeObjectsFromCollector()
{
-#if !defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
- QSKIP("QWEBENGINEPAGE_EVALUATEJAVASCRIPT");
+#if !defined(QWEBENGINEPAGE_CREATEPLUGIN)
+ QSKIP("QWEBENGINEPAGE_CREATEPLUGIN");
#else
QSignalSpy loadSpy(m_view, SIGNAL(loadFinished(bool)));
@@ -2518,14 +2516,14 @@ void tst_QWebEnginePage::protectBindingsRuntimeObjectsFromCollector()
m_view->setHtml(QString("<html><body><object type='application/x-qt-plugin' classid='lineedit' id='mylineedit'/></body></html>"));
QTRY_COMPARE(loadSpy.count(), 1);
- newPage->evaluateJavaScript("function testme(text) { var lineedit = document.getElementById('mylineedit'); lineedit.setText(text); lineedit.selectAll(); }");
+ newPage->runJavaScript("function testme(text) { var lineedit = document.getElementById('mylineedit'); lineedit.setText(text); lineedit.selectAll(); }");
- newPage->evaluateJavaScript("testme('foo')");
+ evaluateJavaScriptSync(newPage, "testme('foo')");
DumpRenderTreeSupportQt::garbageCollectorCollect();
// don't crash!
- newPage->evaluateJavaScript("testme('bar')");
+ evaluateJavaScriptSync(newPage, "testme('bar')");
#endif
}
@@ -2557,18 +2555,18 @@ void tst_QWebEnginePage::localURLSchemes()
#endif
}
-#if defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
+#if defined(QWEBENGINEPAGE_SETTINGS)
static inline bool testFlag(QWebEnginePage& webPage, QWebEngineSettings::WebAttribute settingAttribute, const QString& jsObjectName, bool settingValue)
{
webPage.settings()->setAttribute(settingAttribute, settingValue);
- return webPage.evaluateJavaScript(QString("(window.%1 != undefined)").arg(jsObjectName)).toBool();
+ return evaluateJavaScriptSync(&webPage, QString("(window.%1 != undefined)").arg(jsObjectName)).toBool();
}
#endif
void tst_QWebEnginePage::testOptionalJSObjects()
{
-#if !defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
- QSKIP("QWEBENGINEPAGE_EVALUATEJAVASCRIPT");
+#if !defined(QWEBENGINESETTINGS)
+ QSKIP("QWEBENGINSETTINGS");
#else
// Once a feature is enabled and the JS object is accessed turning off the setting will not turn off
// the visibility of the JS object any more. For this reason this test uses two QWebEnginePage instances.
@@ -2595,18 +2593,18 @@ void tst_QWebEnginePage::testOptionalJSObjects()
#endif
}
-#if defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
+#if defined(QWEBENGINEPAGE_SETTINGS)
static inline bool checkLocalStorageVisibility(QWebEnginePage& webPage, bool localStorageEnabled)
{
webPage.settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, localStorageEnabled);
- return webPage.evaluateJavaScript(QString("(window.localStorage != undefined)")).toBool();
+ return evaluateJavaScriptSync(&webPage, QString("(window.localStorage != undefined)")).toBool();
}
#endif
void tst_QWebEnginePage::testLocalStorageVisibility()
{
-#if !defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
- QSKIP("QWEBENGINEPAGE_EVALUATEJAVASCRIPT");
+#if !defined(QWEBENGINEPAGE_SETTINGS)
+ QSKIP("QWEBENGINEPAGE_SETTINGS");
#else
// Local storage's visibility depends on its security origin, which depends on base url.
// Initially, it will test it with base urls that get a globally unique origin, which may not
@@ -2704,24 +2702,23 @@ void tst_QWebEnginePage::defaultTextEncoding()
#if !defined(QWEBENGINESETTINGS_SETDEFAULTTEXTENCODING)
QSKIP("QWEBENGINESETTINGS_SETDEFAULTTEXTENCODING");
#else
- QWebEngineFrame* mainFrame = m_page->mainFrame();
- QString defaultCharset = mainFrame->evaluateJavaScript("document.defaultCharset").toString();
+ QString defaultCharset = evaluateJavaScriptSync(m_page, "document.defaultCharset").toString();
QVERIFY(!defaultCharset.isEmpty());
QCOMPARE(QWebEngineSettings::globalSettings()->defaultTextEncoding(), defaultCharset);
m_page->settings()->setDefaultTextEncoding(QString("utf-8"));
- QString charset = mainFrame->evaluateJavaScript("document.defaultCharset").toString();
+ QString charset = evaluateJavaScriptSync(m_page, "document.defaultCharset").toString();
QCOMPARE(charset, QString("utf-8"));
QCOMPARE(m_page->settings()->defaultTextEncoding(), charset);
m_page->settings()->setDefaultTextEncoding(QString());
- charset = mainFrame->evaluateJavaScript("document.defaultCharset").toString();
+ charset = evaluateJavaScriptSync(m_page, "document.defaultCharset").toString();
QVERIFY(!charset.isEmpty());
QCOMPARE(charset, defaultCharset);
QWebEngineSettings::globalSettings()->setDefaultTextEncoding(QString("utf-8"));
- charset = mainFrame->evaluateJavaScript("document.defaultCharset").toString();
+ charset = evaluateJavaScriptSync(m_page, "document.defaultCharset").toString();
QCOMPARE(charset, QString("utf-8"));
QCOMPARE(QWebEngineSettings::globalSettings()->defaultTextEncoding(), charset);
#endif
@@ -2890,13 +2887,12 @@ const QLatin1String CustomUserAgentWebPage::filteredUserAgent("My User AgentX-Ne
void tst_QWebEnginePage::userAgentNewlineStripping()
{
-#if !defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
- QSKIP("QWEBENGINEPAGE_EVALUATEJAVASCRIPT");
+#if !defined(QWEBENGINEPAGE_USERAGENTFORURL)
+ QSKIP("QWEBENGINEPAGE_USERAGENTFORURL");
#else
CustomUserAgentWebPage page;
- QWebEngineFrame* mainFrame = page.mainFrame();
- mainFrame->setHtml("<html><body></body></html>");
- QCOMPARE(mainFrame->evaluateJavaScript("navigator.userAgent").toString(), CustomUserAgentWebPage::filteredUserAgent);
+ page.setHtml("<html><body></body></html>");
+ QCOMPARE(evaluateJavaScriptSync(&page, "navigator.userAgent").toString(), CustomUserAgentWebPage::filteredUserAgent);
#endif
}
@@ -3103,36 +3099,32 @@ public:
void tst_QWebEnginePage::testJSPrompt()
{
-#if !defined(QWEBENGINEPAGE_JAVASCRIPTPROMPT)
- QSKIP("QWEBENGINEPAGE_JAVASCRIPTPROMPT");
-#else
JSPromptPage page;
bool res;
// OK + QString()
- res = page.evaluateJavaScript(
+ res = evaluateJavaScriptSync(&page,
"var retval = prompt('test1');"
"retval=='' && retval.length == 0;").toBool();
QVERIFY(res);
// OK + "text"
- res = page.evaluateJavaScript(
+ res = evaluateJavaScriptSync(&page,
"var retval = prompt('test2');"
"retval=='text' && retval.length == 4;").toBool();
QVERIFY(res);
// Cancel + QString()
- res = page.evaluateJavaScript(
+ res = evaluateJavaScriptSync(&page,
"var retval = prompt('test3');"
"retval===null;").toBool();
QVERIFY(res);
// Cancel + "text"
- res = page.evaluateJavaScript(
+ res = evaluateJavaScriptSync(&page,
"var retval = prompt('test4');"
"retval===null;").toBool();
QVERIFY(res);
-#endif
}
class TestModalPage : public QWebEnginePage
@@ -3150,13 +3142,13 @@ public:
void tst_QWebEnginePage::showModalDialog()
{
-#if !defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
- QSKIP("QWEBENGINEPAGE_EVALUATEJAVASCRIPT");
+#if !defined(QWEBENGINESETTINGS)
+ QSKIP("QWEBENGINESETTINGS");
#else
TestModalPage page;
page.settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
page.setHtml(QString("<html></html>"));
- QString res = page.evaluateJavaScript("window.showModalDialog('javascript:window.returnValue=dialogArguments; window.close();', 'This is a test');").toString();
+ QString res = evaluateJavaScriptSync(&page, "window.showModalDialog('javascript:window.returnValue=dialogArguments; window.close();', 'This is a test');").toString();
QCOMPARE(res, QString("This is a test"));
#endif
}
@@ -3266,11 +3258,11 @@ void tst_QWebEnginePage::navigatorCookieEnabled()
#else
m_page->networkAccessManager()->setCookieJar(0);
QVERIFY(!m_page->networkAccessManager()->cookieJar());
- QVERIFY(!m_page->evaluateJavaScript("navigator.cookieEnabled").toBool());
+ QVERIFY(!evaluateJavaScriptSync(m_page, "navigator.cookieEnabled").toBool());
m_page->networkAccessManager()->setCookieJar(new QNetworkCookieJar());
QVERIFY(m_page->networkAccessManager()->cookieJar());
- QVERIFY(m_page->evaluateJavaScript("navigator.cookieEnabled").toBool());
+ QVERIFY(evaluateJavaScriptSync(m_page, "navigator.cookieEnabled").toBool());
#endif
}
@@ -3513,16 +3505,16 @@ void tst_QWebEnginePage::loadSignalsOrder()
void tst_QWebEnginePage::undoActionHaveCustomText()
{
-#if !defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
- QSKIP("QWEBENGINEPAGE_EVALUATEJAVASCRIPT");
+#if !defined(QWEBENGINEPAGE_UNDOACTION)
+ QSKIP("QWEBENGINEPAGE_UNDOACTION");
#else
m_page->setHtml("<div id=test contenteditable></div>");
- m_page->evaluateJavaScript("document.getElementById('test').focus()");
+ evaluateJavaScriptSync(m_page, "document.getElementById('test').focus()");
- m_page->evaluateJavaScript("document.execCommand('insertText', true, 'Test');");
+ evaluateJavaScriptSync(m_page, "document.execCommand('insertText', true, 'Test');");
QString typingActionText = m_page->action(QWebEnginePage::Undo)->text();
- m_page->evaluateJavaScript("document.execCommand('indent', true);");
+ evaluateJavaScriptSync(m_page, "document.execCommand('indent', true);");
QString alignActionText = m_page->action(QWebEnginePage::Undo)->text();
QVERIFY(typingActionText != alignActionText);
@@ -3553,15 +3545,15 @@ void tst_QWebEnginePage::renderWidgetHostViewNotShowTopLevel()
void tst_QWebEnginePage::openWindowDefaultSize()
{
-#if !defined(QWEBENGINEPAGE_EVALUATEJAVASCRIPT)
- QSKIP("QWEBENGINEPAGE_EVALUATEJAVASCRIPT");
+#if !defined(QWEBENGINEPAGE_SETTINGS)
+ QSKIP("QWEBENGINEPAGE_SETTINGS");
#else
TestPage page;
page.settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
// Open a default window.
- page.evaluateJavaScript("window.open()");
+ page.runJavaScript("window.open()");
// Open a too small window.
- page.evaluateJavaScript("window.open('', '', 'width=10,height=10')");
+ evaluateJavaScriptSync(&page, "window.open('', '', 'width=10,height=10')");
QTest::qWait(500);
// The number of popups created should be two.
@@ -3592,7 +3584,7 @@ void tst_QWebEnginePage::cssMediaTypeGlobalSetting()
m_view->page()->settings()->setCSSMediaType(QString());
m_view->setHtml(testHtml);
QTRY_COMPARE(loadSpy.count(), 1);
- QVERIFY(m_view->page()->evaluateJavaScript("window.matchMedia('tv').matches == true").toBool());
+ QVERIFY(evaluateJavaScriptSync(m_view->page(), "window.matchMedia('tv').matches == true").toBool());
QVERIFY(QWebEngineSettings::globalSettings()->cssMediaType() == "tv");
QWebEngineSettings::globalSettings()->setCSSMediaType("handheld");
@@ -3600,7 +3592,7 @@ void tst_QWebEnginePage::cssMediaTypeGlobalSetting()
m_view->page()->settings()->setCSSMediaType(QString());
m_view->setHtml(testHtml);
QTRY_COMPARE(loadSpy.count(), 2);
- QVERIFY(m_view->page()->evaluateJavaScript("window.matchMedia('handheld').matches == true").toBool());
+ QVERIFY(evaluateJavaScriptSync(m_view->page(), "window.matchMedia('handheld').matches == true").toBool());
QVERIFY(QWebEngineSettings::globalSettings()->cssMediaType() == "handheld");
QWebEngineSettings::globalSettings()->setCSSMediaType("screen");
@@ -3608,7 +3600,7 @@ void tst_QWebEnginePage::cssMediaTypeGlobalSetting()
m_view->page()->settings()->setCSSMediaType(QString());
m_view->setHtml(testHtml);
QTRY_COMPARE(loadSpy.count(), 3);
- QVERIFY(m_view->page()->evaluateJavaScript("window.matchMedia('screen').matches == true").toBool());
+ QVERIFY(evaluateJavaScriptSync(m_view->page(), "window.matchMedia('screen').matches == true").toBool());
QVERIFY(QWebEngineSettings::globalSettings()->cssMediaType() == "screen");
#endif
}
@@ -3624,19 +3616,19 @@ void tst_QWebEnginePage::cssMediaTypePageSetting()
m_view->page()->settings()->setCSSMediaType("tv");
m_view->setHtml(testHtml);
QTRY_COMPARE(loadSpy.count(), 1);
- QVERIFY(m_view->page()->evaluateJavaScript("window.matchMedia('tv').matches == true").toBool());
+ QVERIFY(evaluateJavaScriptSync(m_view->page(), "window.matchMedia('tv').matches == true").toBool());
QVERIFY(m_view->page()->settings()->cssMediaType() == "tv");
m_view->page()->settings()->setCSSMediaType("handheld");
m_view->setHtml(testHtml);
QTRY_COMPARE(loadSpy.count(), 2);
- QVERIFY(m_view->page()->evaluateJavaScript("window.matchMedia('handheld').matches == true").toBool());
+ QVERIFY(evaluateJavaScriptSync(m_view->page(), "window.matchMedia('handheld').matches == true").toBool());
QVERIFY(m_view->page()->settings()->cssMediaType() == "handheld");
m_view->page()->settings()->setCSSMediaType("screen");
m_view->setHtml(testHtml);
QTRY_COMPARE(loadSpy.count(), 3);
- QVERIFY(m_view->page()->evaluateJavaScript("window.matchMedia('screen').matches == true").toBool());
+ QVERIFY(evaluateJavaScriptSync(m_view->page(), "window.matchMedia('screen').matches == true").toBool());
QVERIFY(m_view->page()->settings()->cssMediaType() == "screen");
#endif
}
diff --git a/tests/auto/widgets/util.h b/tests/auto/widgets/util.h
index 5adc7e1b7..90526a780 100644
--- a/tests/auto/widgets/util.h
+++ b/tests/auto/widgets/util.h
@@ -142,4 +142,11 @@ static inline QString toHtml(QWebEnginePage *page)
return spy.waitForResult();
}
+static inline QVariant evaluateJavaScriptSync(QWebEnginePage *page, const QString &script)
+{
+ CallbackSpy<QVariant> spy;
+ page->runJavaScript(script, spy.ref());
+ return spy.waitForResult();
+}
+
#define W_QSKIP(a, b) QSKIP(a)