summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/qwebenginescript
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2017-07-19 14:12:54 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-09-11 17:25:32 +0000
commit7282fb4fb4861320539f2b7288f63e1d4f48749d (patch)
tree3fb62ed4d45875be975410b08c776888803748ec /tests/auto/widgets/qwebenginescript
parent82499104972d24027044acaff1136ea7d758efe2 (diff)
Adaptations for Chromium 60
Change-Id: I536258e22c2ec143f2fd3f1cbda229e0611b6af4 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'tests/auto/widgets/qwebenginescript')
-rw-r--r--tests/auto/widgets/qwebenginescript/resources/test_iframe_inner.html8
-rw-r--r--tests/auto/widgets/qwebenginescript/resources/test_iframe_main.html9
-rw-r--r--tests/auto/widgets/qwebenginescript/resources/test_iframe_outer.html9
-rw-r--r--tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp53
-rw-r--r--tests/auto/widgets/qwebenginescript/tst_qwebenginescript.qrc7
5 files changed, 86 insertions, 0 deletions
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 @@
+<html>
+<head>
+<title></title>
+</head>
+<body>
+<div>Inner text</div>
+</body>
+</html>
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 @@
+<html>
+<head>
+<title></title>
+</head>
+<body>
+<div>Main text</div>
+<iframe id="outer" src="qrc:/resources/test_iframe_outer.html"></iframe>
+</body>
+</html>
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 @@
+<html>
+<head>
+<title></title>
+</head>
+<body>
+<div>Outer text</div>
+<iframe id="inner" src="qrc:/resources/test_iframe_inner.html"></iframe>
+</body>
+</html>
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 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>resources/test_iframe_main.html</file>
+ <file>resources/test_iframe_outer.html</file>
+ <file>resources/test_iframe_inner.html</file>
+</qresource>
+</RCC>