summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/qwebenginepage
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2018-11-13 11:15:51 +0100
committerJüri Valdmann <juri.valdmann@qt.io>2019-01-22 08:38:47 +0000
commit59d04ad178011dd0d4e0f9ef24a55a3da98b10e1 (patch)
tree996d5c5efdd844edcfbcac20374ce320c817d302 /tests/auto/widgets/qwebenginepage
parentc5bcd124fecaad2b7f50c59bd3790fcc4af38a20 (diff)
Add tst_QWebEnginePage::localStorageVisibility
Based on the QtWebKit's testOptionalJSObjects. Change-Id: I3bbd7143dba06e90053841bc3f23e12774e0a3dd Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests/auto/widgets/qwebenginepage')
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index d2c121e65..0b519fe8a 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -103,6 +103,7 @@ private Q_SLOTS:
void multipleProfilesAndLocalStorage();
void textSelection();
void backActionUpdate();
+ void localStorageVisibility();
void consoleOutput();
void userAgentNewlineStripping();
void renderWidgetHostViewNotShowTopLevel();
@@ -732,6 +733,41 @@ void tst_QWebEnginePage::backActionUpdate()
QVERIFY(action->isEnabled());
}
+void tst_QWebEnginePage::localStorageVisibility()
+{
+ QWebEngineProfile profile;
+ QWebEnginePage webPage1(&profile);
+ QWebEnginePage webPage2(&profile);
+
+ webPage1.settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, true);
+ webPage2.settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, false);
+
+ QSignalSpy loadSpy1(&webPage1, &QWebEnginePage::loadFinished);
+ QSignalSpy loadSpy2(&webPage2, &QWebEnginePage::loadFinished);
+ webPage1.setHtml(QString("<html><body>test</body></html>"), QUrl("http://www.example.com/"));
+ webPage2.setHtml(QString("<html><body>test</body></html>"), QUrl("http://www.example.com/"));
+ QTRY_COMPARE(loadSpy1.count(), 1);
+ QTRY_COMPARE(loadSpy2.count(), 1);
+
+ // The attribute determines the visibility of the window.localStorage object.
+ QVERIFY(evaluateJavaScriptSync(&webPage1, QString("(window.localStorage != undefined)")).toBool());
+ QVERIFY(!evaluateJavaScriptSync(&webPage2, QString("(window.localStorage != undefined)")).toBool());
+
+ // Switching the feature off does not actively remove the object from webPage1.
+ webPage1.settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, false);
+ webPage2.settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, true);
+ QVERIFY(evaluateJavaScriptSync(&webPage1, QString("(window.localStorage != undefined)")).toBool());
+ QVERIFY(evaluateJavaScriptSync(&webPage2, QString("(window.localStorage != undefined)")).toBool());
+
+ // The object disappears only after reloading.
+ webPage1.triggerAction(QWebEnginePage::Reload);
+ webPage2.triggerAction(QWebEnginePage::Reload);
+ QTRY_COMPARE(loadSpy1.count(), 2);
+ QTRY_COMPARE(loadSpy2.count(), 2);
+ QVERIFY(!evaluateJavaScriptSync(&webPage1, QString("(window.localStorage != undefined)")).toBool());
+ QVERIFY(evaluateJavaScriptSync(&webPage2, QString("(window.localStorage != undefined)")).toBool());
+}
+
void tst_QWebEnginePage::userAgentNewlineStripping()
{
QWebEngineProfile profile;