diff options
author | Szabolcs David <davidsz@inf.u-szeged.hu> | 2016-10-17 07:00:26 -0700 |
---|---|---|
committer | Szabolcs David <davidsz@inf.u-szeged.hu> | 2017-09-13 13:34:31 +0000 |
commit | 7b365eb352780dc0d939e918b0aa58d0458fd9da (patch) | |
tree | 6453e84f62bcbe92f9149a486fc83dbdf09cdb4c /tests | |
parent | 98bdf56f7428094c2d197fff72422d301470fbcb (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.cpp | 6 | ||||
-rw-r--r-- | tests/auto/quick/qmltests/data/TestWebEngineView.qml | 2 | ||||
-rw-r--r-- | tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | 42 |
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; |