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/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | |
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/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp')
-rw-r--r-- | tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
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; |