From 6db08da7356ee81c97004f0752af5b02a0bd7685 Mon Sep 17 00:00:00 2001 From: Kirill Burtsev Date: Thu, 20 Jan 2022 19:14:02 +0100 Subject: Add QML test for basic profiles and fix the docs accordingly Amends d0ff107c00. Ensure default values for profile settings match the docs. Also fix doc's issues after off-the-record toggle to off by default. Change-Id: I558a77dbec82d7f2b335b1a2ceca74ab66a1a6e9 Reviewed-by: Michal Klocek (cherry picked from commit f34292d147bfde094d8ec4a58f7b0e5f77a1fd0b) Reviewed-by: Qt Cherry-pick Bot --- src/webenginequick/api/qquickwebengineprofile.cpp | 21 ++-- tests/auto/quick/qmltests/CMakeLists.txt | 1 + .../auto/quick/qmltests/data/tst_basicProfiles.qml | 115 +++++++++++++++++++++ 3 files changed, 127 insertions(+), 10 deletions(-) create mode 100644 tests/auto/quick/qmltests/data/tst_basicProfiles.qml diff --git a/src/webenginequick/api/qquickwebengineprofile.cpp b/src/webenginequick/api/qquickwebengineprofile.cpp index f052d201c..c7421774b 100644 --- a/src/webenginequick/api/qquickwebengineprofile.cpp +++ b/src/webenginequick/api/qquickwebengineprofile.cpp @@ -447,7 +447,7 @@ void QQuickWebEngineProfile::setStorageName(const QString &name) Whether the web engine profile is \e off-the-record. An off-the-record profile forces cookies, the HTTP cache, and other normally persistent data - to be stored only in memory. + to be stored only in memory. Profile is off-the-record by default. */ @@ -456,7 +456,7 @@ void QQuickWebEngineProfile::setStorageName(const QString &name) Whether the web engine profile is \e off-the-record. An off-the-record profile forces cookies, the HTTP cache, and other normally persistent data - to be stored only in memory. + to be stored only in memory. Profile is off-the-record by default. */ bool QQuickWebEngineProfile::isOffTheRecord() const @@ -487,7 +487,7 @@ void QQuickWebEngineProfile::setOffTheRecord(bool offTheRecord) stored. Persistent data includes persistent cookies, HTML5 local storage, and visited links. By default, the storage is located below - QStandardPaths::writableLocation(QStandardPaths::DataLocation) in a directory named using + QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) in a directory named using storageName. */ @@ -498,7 +498,7 @@ void QQuickWebEngineProfile::setOffTheRecord(bool offTheRecord) stored. Persistent data includes persistent cookies, HTML5 local storage, and visited links. By default, the storage is located below - QStandardPaths::writableLocation(QStandardPaths::DataLocation) in a directory named using + QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) in a directory named using storageName. */ @@ -591,9 +591,9 @@ void QQuickWebEngineProfile::setHttpUserAgent(const QString &userAgent) \value WebEngineProfile.MemoryHttpCache Uses an in-memory cache. This is the only setting possible if offTheRecord is set or - no persistentStoragePath is available. + no storageName is available, which is the default. \value WebEngineProfile.DiskHttpCache - Uses a disk cache. This is the default value. + Uses a disk cache. This is the default value for non off-the-record profile with storageName. \value WebEngineProfile.NoCache Disables caching. (Added in 5.7) */ @@ -603,7 +603,7 @@ void QQuickWebEngineProfile::setHttpUserAgent(const QString &userAgent) This enumeration describes the type of the HTTP cache. - If the profile is off-the-record, MemoryHttpCache is returned. + If the profile is off-the-record or has no storageName set, MemoryHttpCache is returned. */ QQuickWebEngineProfile::HttpCacheType QQuickWebEngineProfile::httpCacheType() const @@ -628,10 +628,11 @@ void QQuickWebEngineProfile::setHttpCacheType(QQuickWebEngineProfile::HttpCacheT \value WebEngineProfile.NoPersistentCookies Both session and persistent cookies are stored in memory. This is the only setting - possible if offTheRecord is set or no persistentStoragePath is available. + possible if offTheRecord is set or no storageName is available, which is the default. \value WebEngineProfile.AllowPersistentCookies Cookies marked persistent are saved to and restored from disk, whereas session cookies - are only stored to disk for crash recovery. This is the default setting. + are only stored to disk for crash recovery. + This is the default value for non off-the-record profile with storageName. \value WebEngineProfile.ForcePersistentCookies Both session and persistent cookies are saved to and restored from disk. */ @@ -723,7 +724,7 @@ void QQuickWebEngineProfile::setHttpAcceptLanguage(const QString &httpAcceptLang /*! Returns the default profile. - The default profile uses the storage name "Default". + The default profile is off-the-record. \sa storageName() */ diff --git a/tests/auto/quick/qmltests/CMakeLists.txt b/tests/auto/quick/qmltests/CMakeLists.txt index 455c4c746..2500ed6df 100644 --- a/tests/auto/quick/qmltests/CMakeLists.txt +++ b/tests/auto/quick/qmltests/CMakeLists.txt @@ -18,6 +18,7 @@ set(testList tst_activeFocusOnPress.qml tst_audioMuted.qml tst_contextMenu.qml + tst_basicProfiles.qml tst_desktopBehaviorLoadHtml.qml tst_download.qml tst_favicon.qml diff --git a/tests/auto/quick/qmltests/data/tst_basicProfiles.qml b/tests/auto/quick/qmltests/data/tst_basicProfiles.qml new file mode 100644 index 000000000..a84e4e997 --- /dev/null +++ b/tests/auto/quick/qmltests/data/tst_basicProfiles.qml @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick +import QtTest +import QtWebEngine +import Qt.labs.platform + +Item { + WebEngineProfile { id: otrProfile; /* MEMO implicit offTheRecord: true */ } + WebEngineProfile { id: nonOtrProfile; offTheRecord: false } + + function getPath(path, offset = 1) { return path.substr(path.indexOf(':') + offset, path.length) } + property string appDataLocation: getPath(getPath(StandardPaths.writableLocation(StandardPaths.AppDataLocation).toString(), 3)) + property string cacheLocation: getPath(getPath(StandardPaths.writableLocation(StandardPaths.CacheLocation).toString(), 3)) + property string downloadLocation: getPath(getPath(StandardPaths.writableLocation(StandardPaths.DownloadLocation).toString(), 3)) + + TestCase { + name: "BasicProfiles" + + function test_defaultProfile() { + let p = WebEngine.defaultProfile + verify(p.offTheRecord) + + compare(p.storageName, '') + compare(p.cachePath, '') + compare(getPath(p.persistentStoragePath), appDataLocation + '/QtWebEngine/OffTheRecord') + compare(p.httpCacheType, WebEngineProfile.MemoryHttpCache) + compare(p.httpCacheMaximumSize, 0) + compare(p.persistentCookiesPolicy, WebEngineProfile.NoPersistentCookies) + + compare(getPath(p.downloadPath), downloadLocation) + compare(p.httpAcceptLanguage, '') + verify(p.httpUserAgent !== '') + compare(p.spellCheckEnabled, false) + compare(p.spellCheckLanguages, []) + + compare(p.userScripts.collection, []) + } + + function test_otrProfile() { + let p = otrProfile + verify(p.offTheRecord) + + compare(p.storageName, '') + compare(p.cachePath, '') + compare(getPath(p.persistentStoragePath), appDataLocation + '/QtWebEngine/OffTheRecord') + compare(p.httpCacheType, WebEngineProfile.MemoryHttpCache) + compare(p.httpCacheMaximumSize, 0) + compare(p.persistentCookiesPolicy, WebEngineProfile.NoPersistentCookies) + + compare(getPath(p.downloadPath), downloadLocation) + compare(p.httpAcceptLanguage, '') + verify(p.httpUserAgent !== '') + compare(p.spellCheckEnabled, false) + compare(p.spellCheckLanguages, []) + + compare(p.userScripts.collection, []) + } + + function test_nonOtrProfile() { + let p = nonOtrProfile + verify(!p.offTheRecord) + + compare(p.storageName, '') + compare(p.cachePath, '') + compare(getPath(p.persistentStoragePath), appDataLocation + '/QtWebEngine/UnknownProfile') + compare(p.httpCacheType, WebEngineProfile.MemoryHttpCache) + compare(p.httpCacheMaximumSize, 0) + compare(p.persistentCookiesPolicy, WebEngineProfile.NoPersistentCookies) + + compare(getPath(p.downloadPath), downloadLocation) + compare(p.httpAcceptLanguage, '') + verify(p.httpUserAgent !== '') + compare(p.spellCheckEnabled, false) + compare(p.spellCheckLanguages, []) + + compare(p.userScripts.collection, []) + + p.storageName = 'Test' + compare(p.storageName, 'Test') + compare(getPath(p.cachePath), cacheLocation + '/QtWebEngine/' + p.storageName) + compare(getPath(p.persistentStoragePath), appDataLocation + '/QtWebEngine/' + p.storageName) + + compare(p.httpCacheType, WebEngineProfile.DiskHttpCache) + compare(p.httpCacheMaximumSize, 0) + compare(p.persistentCookiesPolicy, WebEngineProfile.AllowPersistentCookies) + } + } +} -- cgit v1.2.3