From 7282fb4fb4861320539f2b7288f63e1d4f48749d Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Wed, 19 Jul 2017 14:12:54 +0200 Subject: Adaptations for Chromium 60 Change-Id: I536258e22c2ec143f2fd3f1cbda229e0611b6af4 Reviewed-by: Allan Sandfeld Jensen Reviewed-by: Qt CI Bot --- .../resources/test_iframe_inner.html | 8 ++++ .../resources/test_iframe_main.html | 9 ++++ .../resources/test_iframe_outer.html | 9 ++++ .../qwebenginescript/tst_qwebenginescript.cpp | 53 ++++++++++++++++++++++ .../qwebenginescript/tst_qwebenginescript.qrc | 7 +++ 5 files changed, 86 insertions(+) create mode 100644 tests/auto/widgets/qwebenginescript/resources/test_iframe_inner.html create mode 100644 tests/auto/widgets/qwebenginescript/resources/test_iframe_main.html create mode 100644 tests/auto/widgets/qwebenginescript/resources/test_iframe_outer.html create mode 100644 tests/auto/widgets/qwebenginescript/tst_qwebenginescript.qrc (limited to 'tests/auto/widgets/qwebenginescript') diff --git a/tests/auto/widgets/qwebenginescript/resources/test_iframe_inner.html b/tests/auto/widgets/qwebenginescript/resources/test_iframe_inner.html new file mode 100644 index 000000000..3539c9620 --- /dev/null +++ b/tests/auto/widgets/qwebenginescript/resources/test_iframe_inner.html @@ -0,0 +1,8 @@ + + + + + +
Inner text
+ + diff --git a/tests/auto/widgets/qwebenginescript/resources/test_iframe_main.html b/tests/auto/widgets/qwebenginescript/resources/test_iframe_main.html new file mode 100644 index 000000000..47b991c2c --- /dev/null +++ b/tests/auto/widgets/qwebenginescript/resources/test_iframe_main.html @@ -0,0 +1,9 @@ + + + + + +
Main text
+ + + diff --git a/tests/auto/widgets/qwebenginescript/resources/test_iframe_outer.html b/tests/auto/widgets/qwebenginescript/resources/test_iframe_outer.html new file mode 100644 index 000000000..8854809f8 --- /dev/null +++ b/tests/auto/widgets/qwebenginescript/resources/test_iframe_outer.html @@ -0,0 +1,9 @@ + + + + + +
Outer text
+ + + diff --git a/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp b/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp index c10ae2886..1a8110bb6 100644 --- a/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp +++ b/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp @@ -38,6 +38,7 @@ private Q_SLOTS: void webChannel_data(); void webChannel(); void noTransportWithoutWebChannel(); + void scriptsInNestedIframes(); }; void tst_QWebEngineScript::domEditing() @@ -246,6 +247,58 @@ void tst_QWebEngineScript::noTransportWithoutWebChannel() QCOMPARE(evaluateJavaScriptSync(&page, "qt.webChannelTransport"), QVariant(QVariant::Invalid)); } +void tst_QWebEngineScript::scriptsInNestedIframes() +{ + QWebEnginePage page; + QWebEngineView view; + view.setPage(&page); + QWebEngineScript s; + s.setInjectionPoint(QWebEngineScript::DocumentReady); + s.setWorldId(QWebEngineScript::ApplicationWorld); + + // Prepend a "Modified prefix" to every frame's div content. + s.setSourceCode("var elements = document.getElementsByTagName(\"div\");\ + var i;\ + for (i = 0; i < elements.length; i++) {\ + var content = elements[i].innerHTML;\ + elements[i].innerHTML = \"Modified \" + content;\ + }\ + "); + + // Make sure the script runs on all frames. + s.setRunsOnSubFrames(true); + page.scripts().insert(s); + + QSignalSpy spyFinished(&page, &QWebEnginePage::loadFinished); + page.load(QUrl("qrc:/resources/test_iframe_main.html")); + view.show(); + QVERIFY(spyFinished.wait()); + + // Check that main frame has modified content. + QCOMPARE( + evaluateJavaScriptSyncInWorld(&page, "document.getElementsByTagName(\"div\")[0].innerHTML", + QWebEngineScript::ApplicationWorld), + QVariant::fromValue(QStringLiteral("Modified Main text"))); + + // Check that outer frame has modified content. + QCOMPARE( + evaluateJavaScriptSyncInWorld(&page, + "var i = document.getElementById(\"outer\").contentDocument;\ + i.getElementsByTagName(\"div\")[0].innerHTML", + QWebEngineScript::ApplicationWorld), + QVariant::fromValue(QStringLiteral("Modified Outer text"))); + + + // Check that inner frame has modified content. + QCOMPARE( + evaluateJavaScriptSyncInWorld(&page, + "var i = document.getElementById(\"outer\").contentDocument;\ + var i2 = i.getElementById(\"inner\").contentDocument;\ + i2.getElementsByTagName(\"div\")[0].innerHTML", + QWebEngineScript::ApplicationWorld), + QVariant::fromValue(QStringLiteral("Modified Inner text"))); +} + QTEST_MAIN(tst_QWebEngineScript) #include "tst_qwebenginescript.moc" diff --git a/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.qrc b/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.qrc new file mode 100644 index 000000000..8b7a11cf2 --- /dev/null +++ b/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.qrc @@ -0,0 +1,7 @@ + + + resources/test_iframe_main.html + resources/test_iframe_outer.html + resources/test_iframe_inner.html + + -- cgit v1.2.3