summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSzabolcs David <davidsz@inf.u-szeged.hu>2016-10-17 07:00:26 -0700
committerSzabolcs David <davidsz@inf.u-szeged.hu>2017-09-13 13:34:31 +0000
commit7b365eb352780dc0d939e918b0aa58d0458fd9da (patch)
tree6453e84f62bcbe92f9149a486fc83dbdf09cdb4c /tests
parent98bdf56f7428094c2d197fff72422d301470fbcb (diff)
Support Quota Management API
Expose navigator.webkitPersistentStorage.requestQuota() calls to the API layer as a permission API. It allows the users to accept these requests and specify a quota for persistent storage. https://developer.chrome.com/apps/offline_storage#managing_quota [ChangeLog] navigator.webkitPersistentStorage.requestQuota() calls were rejected by default and now they will emit signal quotaPermissionRequested in both WebEngineView and QWebEnginePage. Task-number: QTBUG-56354 Change-Id: Id192577ffb403694d3051414744ded89bbfd2aa8 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/quick/publicapi/tst_publicapi.cpp6
-rw-r--r--tests/auto/quick/qmltests/data/TestWebEngineView.qml2
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp42
3 files changed, 49 insertions, 1 deletions
diff --git a/tests/auto/quick/publicapi/tst_publicapi.cpp b/tests/auto/quick/publicapi/tst_publicapi.cpp
index 5cc0d18df..7d793f1b3 100644
--- a/tests/auto/quick/publicapi/tst_publicapi.cpp
+++ b/tests/auto/quick/publicapi/tst_publicapi.cpp
@@ -66,6 +66,7 @@ static QList<const QMetaObject *> typesToCheck = QList<const QMetaObject *>()
<< &QQuickWebEngineScript::staticMetaObject
<< &QQuickWebEngineSettings::staticMetaObject
<< &QQuickWebEngineFullScreenRequest::staticMetaObject
+ << &QQuickWebEngineQuotaPermissionRequest::staticMetaObject
<< &QQuickWebEngineSingleton::staticMetaObject
<< &QQuickWebEngineAuthenticationDialogRequest::staticMetaObject
<< &QQuickWebEngineJavaScriptDialogRequest::staticMetaObject
@@ -183,6 +184,7 @@ static QStringList expectedAPI = QStringList()
<< "QQuickWebEngineView.javaScriptConsoleMessage(JavaScriptConsoleMessageLevel,QString,int,QString) --> void"
<< "QQuickWebEngineView.certificateError(QQuickWebEngineCertificateError*) --> void"
<< "QQuickWebEngineView.fullScreenRequested(QQuickWebEngineFullScreenRequest) --> void"
+ << "QQuickWebEngineView.quotaPermissionRequested(QQuickWebEngineQuotaPermissionRequest) --> void"
<< "QQuickWebEngineView.isFullScreenChanged() --> void"
<< "QQuickWebEngineView.featurePermissionRequested(QUrl,Feature) --> void"
<< "QQuickWebEngineView.newViewRequested(QQuickWebEngineNewViewRequest*) --> void"
@@ -529,6 +531,10 @@ static QStringList expectedAPI = QStringList()
<< "QQuickWebEngineFullScreenRequest.toggleOn --> bool"
<< "QQuickWebEngineFullScreenRequest.accept() --> void"
<< "QQuickWebEngineFullScreenRequest.reject() --> void"
+ << "QQuickWebEngineQuotaPermissionRequest.origin --> QUrl"
+ << "QQuickWebEngineQuotaPermissionRequest.requestedSize --> qlonglong"
+ << "QQuickWebEngineQuotaPermissionRequest.accept() --> void"
+ << "QQuickWebEngineQuotaPermissionRequest.reject() --> void"
<< "QQuickWebEngineSingleton.settings --> QQuickWebEngineSettings*"
<< "QQuickWebEngineSingleton.defaultProfile --> QQuickWebEngineProfile*"
;
diff --git a/tests/auto/quick/qmltests/data/TestWebEngineView.qml b/tests/auto/quick/qmltests/data/TestWebEngineView.qml
index a7d890072..25d9c8a3e 100644
--- a/tests/auto/quick/qmltests/data/TestWebEngineView.qml
+++ b/tests/auto/quick/qmltests/data/TestWebEngineView.qml
@@ -28,7 +28,7 @@
import QtQuick 2.0
import QtTest 1.1
-import QtWebEngine 1.3
+import QtWebEngine 1.7
WebEngineView {
property var loadStatus: null
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index bea44f73c..8a5c61878 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -47,6 +47,7 @@
#include <qwebenginehistory.h>
#include <qwebenginepage.h>
#include <qwebengineprofile.h>
+#include <qwebenginequotapermissionrequest.h>
#include <qwebenginescript.h>
#include <qwebenginescriptcollection.h>
#include <qwebenginesettings.h>
@@ -165,6 +166,7 @@ private Q_SLOTS:
void runJavaScript();
void fullScreenRequested();
+ void quotaPermissionRequested();
// Tests from tst_QWebEngineFrame
@@ -3074,6 +3076,46 @@ void tst_QWebEnginePage::fullScreenRequested()
QVERIFY(watcher.wait());
}
+void tst_QWebEnginePage::quotaPermissionRequested()
+{
+ ConsolePage page;
+ QWebEngineView view;
+ view.setPage(&page);
+ QSignalSpy loadFinishedSpy(&page, SIGNAL(loadFinished(bool)));
+ page.load(QUrl("qrc:///resources/content.html"));
+ QVERIFY(loadFinishedSpy.wait());
+
+ connect(&page, &QWebEnginePage::quotaPermissionRequested,
+ [] (QWebEngineQuotaPermissionRequest request)
+ {
+ if (request.requestedSize() <= 5000)
+ request.accept();
+ else
+ request.reject();
+ });
+
+ evaluateJavaScriptSync(&page,
+ "navigator.webkitPersistentStorage.requestQuota(1024, function(grantedSize) {" \
+ "console.log(grantedSize);" \
+ "});");
+ QTRY_COMPARE(page.messages.count(), 1);
+ QTRY_COMPARE(page.messages[0], QString("1024"));
+
+ evaluateJavaScriptSync(&page,
+ "navigator.webkitPersistentStorage.requestQuota(6000, function(grantedSize) {" \
+ "console.log(grantedSize);" \
+ "});");
+ QTRY_COMPARE(page.messages.count(), 2);
+ QTRY_COMPARE(page.messages[1], QString("1024"));
+
+ evaluateJavaScriptSync(&page,
+ "navigator.webkitPersistentStorage.queryUsageAndQuota(function(usedBytes, grantedBytes) {" \
+ "console.log(usedBytes + ', ' + grantedBytes);" \
+ "});");
+ QTRY_COMPARE(page.messages.count(), 3);
+ QTRY_COMPARE(page.messages[2], QString("0, 1024"));
+}
+
void tst_QWebEnginePage::symmetricUrl()
{
QWebEngineView view;