From 59d04ad178011dd0d4e0f9ef24a55a3da98b10e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Tue, 13 Nov 2018 11:15:51 +0100 Subject: Add tst_QWebEnginePage::localStorageVisibility Based on the QtWebKit's testOptionalJSObjects. Change-Id: I3bbd7143dba06e90053841bc3f23e12774e0a3dd Reviewed-by: Allan Sandfeld Jensen --- .../widgets/qwebenginepage/tst_qwebenginepage.cpp | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'tests/auto') 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("test"), QUrl("http://www.example.com/")); + webPage2.setHtml(QString("test"), 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; -- cgit v1.2.3