diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2018-11-13 11:15:51 +0100 |
---|---|---|
committer | Jüri Valdmann <juri.valdmann@qt.io> | 2019-01-22 08:38:47 +0000 |
commit | 59d04ad178011dd0d4e0f9ef24a55a3da98b10e1 (patch) | |
tree | 996d5c5efdd844edcfbcac20374ce320c817d302 /tests | |
parent | c5bcd124fecaad2b7f50c59bd3790fcc4af38a20 (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')
-rw-r--r-- | tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | 36 |
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; |