diff options
author | Michal Klocek <michal.klocek@qt.io> | 2020-08-27 15:25:30 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2020-11-20 10:47:15 +0100 |
commit | 50218deafeb52419bb45a451bbecf4819dd3ed39 (patch) | |
tree | e59ea7d17b3b7db1397fb6d05b3c3baf736bd0a9 /src/webenginewidgets | |
parent | c8418581e5f2c492ccdac7951ed648d78357f979 (diff) |
Move profile from widgets to core
This just moves class to core.
Task-nmuber: QTBUG-74585
Change-Id: Id046eee21043f086f5f45727bc3ce7c965695b7c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/webenginewidgets')
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile.cpp | 897 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile.h | 168 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineprofile_p.h | 108 | ||||
-rw-r--r-- | src/webenginewidgets/webenginewidgets.pro | 3 |
4 files changed, 0 insertions, 1176 deletions
diff --git a/src/webenginewidgets/api/qwebengineprofile.cpp b/src/webenginewidgets/api/qwebengineprofile.cpp deleted file mode 100644 index 942b969b0..000000000 --- a/src/webenginewidgets/api/qwebengineprofile.cpp +++ /dev/null @@ -1,897 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 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:LGPL$ -** 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 Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** 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-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwebengineprofile.h" -#include "qwebengineprofile_p.h" - -#include "qwebenginecookiestore.h" -#include "qwebenginedownloadrequest.h" -#include "qwebenginedownloadrequest_p.h" -#include "qwebenginenotification.h" -#include "qwebenginesettings.h" -#include "qwebenginescriptcollection_p.h" -#include "qtwebenginecoreglobal.h" -#include "profile_adapter.h" -#include "visited_links_manager_qt.h" -#include "web_engine_settings.h" - -#include <QDir> -#include <QtWebEngineCore/qwebengineurlscheme.h> - -QT_BEGIN_NAMESPACE - -ASSERT_ENUMS_MATCH(QWebEngineDownloadRequest::UnknownSaveFormat, QtWebEngineCore::ProfileAdapterClient::UnknownSavePageFormat) -ASSERT_ENUMS_MATCH(QWebEngineDownloadRequest::SingleHtmlSaveFormat, QtWebEngineCore::ProfileAdapterClient::SingleHtmlSaveFormat) -ASSERT_ENUMS_MATCH(QWebEngineDownloadRequest::CompleteHtmlSaveFormat, QtWebEngineCore::ProfileAdapterClient::CompleteHtmlSaveFormat) -ASSERT_ENUMS_MATCH(QWebEngineDownloadRequest::MimeHtmlSaveFormat, QtWebEngineCore::ProfileAdapterClient::MimeHtmlSaveFormat) - -using QtWebEngineCore::ProfileAdapter; - -/*! - \class QWebEngineProfile - \brief The QWebEngineProfile class provides a web engine profile shared by multiple pages. - \since 5.5 - - \inmodule QtWebEngineWidgets - - A web engine profile contains settings, scripts, persistent cookie policy, and the list of - visited links shared by all web engine pages that belong to the profile. - - All pages that belong to the profile share a common QWebEngineSettings instance, which can - be accessed with the settings() method. Likewise, the scripts() method provides access - to a common QWebEngineScriptCollection instance. - - Information about visited links is stored together with persistent cookies and other persistent - data in a storage returned by storageName(). Persistent data is stored in a subdirectory set by - calling setPersistentStoragePath(), and the cache is located in a subdirectory set by calling - setCachePath(). The cache type can be set to \e in-memory or \e on-disk by calling - setHttpCacheType(). If only the storage name is set, the subdirectories are created and named - automatically. If you set any of the values manually, you should do it before creating any - pages that belong to the profile. - - The cache can be cleared of links by calling - clearVisitedLinks() or clearAllVisitedLinks(). PersistentCookiesPolicy describes whether - session and persistent cookies are saved to and restored from memory or disk. - - Profiles can be used to isolate pages from each other. A typical use case is a dedicated - \e {off-the-record profile} for a \e {private browsing} mode. Using QWebEngineProfile() without - defining a storage name constructs a new off-the-record profile that leaves no record on the - local machine, and has no persistent data or cache. The isOffTheRecord() method can be used - to check whether a profile is off-the-record. - - The default profile can be accessed by defaultProfile(). It is a built-in profile that all - web pages not specifically created with another profile belong to. - - Implementing the QWebEngineUrlRequestInterceptor interface and registering the interceptor on a - profile by setUrlRequestInterceptor() enables intercepting, blocking, and modifying URL - requests (QWebEngineUrlRequestInfo) before they reach the networking stack of Chromium. - - A QWebEngineUrlSchemeHandler can be registered for a profile by installUrlSchemeHandler() - to add support for custom URL schemes. Requests for the scheme are then issued to - QWebEngineUrlSchemeHandler::requestStarted() as QWebEngineUrlRequestJob objects. - - Spellchecking HTML form fields can be enabled per profile by using the setSpellCheckEnabled() - method and the current languages used for spellchecking can be set by using the - setSpellCheckLanguages() method. - -*/ - -/*! - \enum QWebEngineProfile::HttpCacheType - - This enum describes the HTTP cache type: - - \value MemoryHttpCache Use an in-memory cache. This is the default if - \c off-the-record is set. - \value DiskHttpCache Use a disk cache. This is the default if the profile - is not \c off-the-record. If set on an \c off-the-record profile will instead - set \c MemoryHttpCache. - \value NoCache Disable both in-memory and disk caching. (Added in Qt 5.7) -*/ - -/*! - \enum QWebEngineProfile::PersistentCookiesPolicy - - This enum describes policy for cookie persistency: - - \value NoPersistentCookies - Both session and persistent cookies are stored in memory. This is the only setting - possible if \c off-the-record is set or no persistent data path is available. - \value 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. - \value ForcePersistentCookies - Both session and persistent cookies are saved to and restored from disk. -*/ - -void QWebEngineProfilePrivate::showNotification(QSharedPointer<QtWebEngineCore::UserNotificationController> &controller) -{ - if (m_notificationPresenter) { - std::unique_ptr<QWebEngineNotification> notification(new QWebEngineNotification(controller)); - m_notificationPresenter(std::move(notification)); - } -} - -/*! - \fn QWebEngineProfile::downloadRequested(QWebEngineDownloadRequest *download) - - \since 5.5 - - This signal is emitted whenever a download has been triggered. - The \a download argument holds the state of the download. - The download has to be explicitly accepted with QWebEngineDownloadRequest::accept() or it will be - cancelled by default. - The download item is parented by the profile. If it is not accepted, it - will be deleted immediately after the signal emission. - This signal cannot be used with a queued connection. - - \sa QWebEngineDownloadRequest, QWebEnginePage::download() -*/ - -QWebEngineProfilePrivate::QWebEngineProfilePrivate(ProfileAdapter* profileAdapter) - : m_settings(new QWebEngineSettings()) - , m_profileAdapter(profileAdapter) - , m_scriptCollection(new QWebEngineScriptCollection( - new QWebEngineScriptCollectionPrivate(profileAdapter->userResourceController()))) -{ - m_profileAdapter->addClient(this); -} - -QWebEngineProfilePrivate::~QWebEngineProfilePrivate() -{ - if (m_profileAdapter) { - // In the case the user sets this profile as the parent of the interceptor - // it can be deleted before the browser-context still referencing it is. - m_profileAdapter->setRequestInterceptor(nullptr); - m_profileAdapter->removeClient(this); - } - - if (m_profileAdapter != QtWebEngineCore::ProfileAdapter::defaultProfileAdapter()) - delete m_profileAdapter; - - delete m_settings; -} - -ProfileAdapter* QWebEngineProfilePrivate::profileAdapter() const -{ - return m_profileAdapter; -} - -void QWebEngineProfilePrivate::downloadDestroyed(quint32 downloadId) -{ - m_ongoingDownloads.remove(downloadId); - if (m_profileAdapter) - m_profileAdapter->removeDownload(downloadId); -} - -void QWebEngineProfilePrivate::cleanDownloads() -{ - for (auto download : m_ongoingDownloads.values()) { - if (!download) - continue; - - if (!download->isFinished()) - download->cancel(); - - if (m_profileAdapter) - m_profileAdapter->removeDownload(download->id()); - } - m_ongoingDownloads.clear(); -} - -void QWebEngineProfilePrivate::downloadRequested(DownloadItemInfo &info) -{ - Q_Q(QWebEngineProfile); - - Q_ASSERT(!m_ongoingDownloads.contains(info.id)); - QWebEngineDownloadRequestPrivate *itemPrivate = new QWebEngineDownloadRequestPrivate(m_profileAdapter, info.url); - itemPrivate->downloadId = info.id; - itemPrivate->downloadState = info.accepted ? QWebEngineDownloadRequest::DownloadInProgress - : QWebEngineDownloadRequest::DownloadRequested; - itemPrivate->startTime = info.startTime; - itemPrivate->downloadDirectory = QFileInfo(info.path).path(); - itemPrivate->downloadFileName = QFileInfo(info.path).fileName(); - itemPrivate->suggestedFileName = info.suggestedFileName; - itemPrivate->mimeType = info.mimeType; - itemPrivate->savePageFormat = static_cast<QWebEngineDownloadRequest::SavePageFormat>(info.savePageFormat); - itemPrivate->isSavePageDownload = info.isSavePageDownload; - if (info.page && info.page->clientType() == QtWebEngineCore::WebContentsAdapterClient::WidgetsClient) - itemPrivate->m_adapterClient = info.page; - else - itemPrivate->m_adapterClient = nullptr; - - QWebEngineDownloadRequest *download = new QWebEngineDownloadRequest(itemPrivate, q); - - m_ongoingDownloads.insert(info.id, download); - QObject::connect(download, &QWebEngineDownloadRequest::destroyed, q, [id = info.id, this] () { downloadDestroyed(id); }); - - Q_EMIT q->downloadRequested(download); - - QWebEngineDownloadRequest::DownloadState state = download->state(); - - info.path = QDir(download->downloadDirectory()).filePath(download->downloadFileName()); - info.savePageFormat = static_cast<QtWebEngineCore::ProfileAdapterClient::SavePageFormat>( - download->savePageFormat()); - info.accepted = state != QWebEngineDownloadRequest::DownloadCancelled; - - if (state == QWebEngineDownloadRequest::DownloadRequested) { - // Delete unaccepted downloads. - info.accepted = false; - delete download; - } -} - -void QWebEngineProfilePrivate::downloadUpdated(const DownloadItemInfo &info) -{ - if (!m_ongoingDownloads.contains(info.id)) - return; - - QWebEngineDownloadRequest* download = m_ongoingDownloads.value(info.id).data(); - - if (!download) { - downloadDestroyed(info.id); - return; - } - - download->d_func()->update(info); -} - -void QWebEngineProfilePrivate::addWebContentsAdapterClient(QtWebEngineCore::WebContentsAdapterClient *adapter) -{ - Q_ASSERT(m_profileAdapter); - m_profileAdapter->addWebContentsAdapterClient(adapter); -} - -void QWebEngineProfilePrivate::removeWebContentsAdapterClient(QtWebEngineCore::WebContentsAdapterClient *adapter) -{ - Q_ASSERT(m_profileAdapter); - m_profileAdapter->removeWebContentsAdapterClient(adapter); -} - -/*! - Constructs a new off-the-record profile with the parent \a parent. - - An off-the-record profile leaves no record on the local machine, and has no persistent data or cache. - Thus, the HTTP cache can only be in memory and the cookies can only be non-persistent. Trying to change - these settings will have no effect. - - \sa isOffTheRecord() -*/ -QWebEngineProfile::QWebEngineProfile(QObject *parent) - : QObject(parent) - , d_ptr(new QWebEngineProfilePrivate(new QtWebEngineCore::ProfileAdapter())) -{ - d_ptr->q_ptr = this; -} - -/*! - Constructs a new profile with the storage name \a storageName and parent \a parent. - - The storage name must be unique. - - A disk-based QWebEngineProfile should be destroyed on or before application exit, otherwise the cache - and persistent data may not be fully flushed to disk. - - \sa storageName() -*/ -QWebEngineProfile::QWebEngineProfile(const QString &storageName, QObject *parent) - : QObject(parent) - , d_ptr(new QWebEngineProfilePrivate(new QtWebEngineCore::ProfileAdapter(storageName))) -{ - d_ptr->q_ptr = this; -} - -/*! \internal -*/ -QWebEngineProfile::QWebEngineProfile(QWebEngineProfilePrivate *privatePtr, QObject *parent) - : QObject(parent) - , d_ptr(privatePtr) -{ - d_ptr->q_ptr = this; -} - -/*! \internal -*/ -QWebEngineProfile::~QWebEngineProfile() -{ - d_ptr->cleanDownloads(); -} - -/*! - Returns the storage name for the profile. - - The storage name is used to give each profile that uses the disk separate subdirectories for persistent data and cache. -*/ -QString QWebEngineProfile::storageName() const -{ - const Q_D(QWebEngineProfile); - return d->profileAdapter()->storageName(); -} - -/*! - Returns \c true if this is an off-the-record profile that leaves no record on the computer. - - This will force cookies and HTTP cache to be in memory, but also force all other normally - persistent data to be stored in memory. -*/ -bool QWebEngineProfile::isOffTheRecord() const -{ - const Q_D(QWebEngineProfile); - return d->profileAdapter()->isOffTheRecord(); -} - -/*! - Returns the path used to store persistent data for the browser and web content. - - Persistent data includes persistent cookies, HTML5 local storage, and visited links. - - By default, this is below QStandardPaths::DataLocation in a QtWebengine/StorageName specific - subdirectory. - - \note Use QStandardPaths::writableLocation(QStandardPaths::DataLocation) - to obtain the QStandardPaths::DataLocation path. - - \sa setPersistentStoragePath(), storageName(), QStandardPaths::writableLocation() -*/ -QString QWebEngineProfile::persistentStoragePath() const -{ - const Q_D(QWebEngineProfile); - return d->profileAdapter()->dataPath(); -} - -/*! - Overrides the default path used to store persistent web engine data. - - If \a path is set to the null string, the default path is restored. - - \sa persistentStoragePath() -*/ -void QWebEngineProfile::setPersistentStoragePath(const QString &path) -{ - const Q_D(QWebEngineProfile); - d->profileAdapter()->setDataPath(path); -} - -/*! - \since 5.13 - - The path to the location where the downloaded files are stored. - - \note By default, the download path is QStandardPaths::DownloadLocation. - - \sa setDownloadPath(), QStandardPaths::writableLocation() -*/ -QString QWebEngineProfile::downloadPath() const -{ - const Q_D(QWebEngineProfile); - return d->profileAdapter()->downloadPath(); -} - -/*! - \since 5.13 - - Overrides the default path used for download location, setting it to \a path. - - If set to the null string, the default path is restored. - - \sa downloadPath() -*/ -void QWebEngineProfile::setDownloadPath(const QString &path) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->setDownloadPath(path); -} - -/*! - Returns the path used for caches. - - By default, this is below StandardPaths::CacheLocation in a QtWebengine/StorageName specific - subdirectory. - - \note Use QStandardPaths::writableLocation(QStandardPaths::CacheLocation) - to obtain the QStandardPaths::CacheLocation path. - - \sa setCachePath(), storageName(), QStandardPaths::writableLocation() -*/ -QString QWebEngineProfile::cachePath() const -{ - const Q_D(QWebEngineProfile); - return d->profileAdapter()->cachePath(); -} - -/*! - Overrides the default path used for disk caches, setting it to \a path. - - If set to the null string, the default path is restored. - - \sa cachePath() -*/ -void QWebEngineProfile::setCachePath(const QString &path) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->setCachePath(path); -} - -/*! - Returns the user-agent string sent with HTTP to identify the browser. - - \note On Windows 8.1 and newer, the default user agent will always report - "Windows NT 6.2" (Windows 8), unless the application does contain a manifest - that declares newer Windows versions as supported. - - \sa setHttpUserAgent() -*/ -QString QWebEngineProfile::httpUserAgent() const -{ - const Q_D(QWebEngineProfile); - return d->profileAdapter()->httpUserAgent(); -} - -/*! - Overrides the default user-agent string, setting it to \a userAgent. - - \sa httpUserAgent() -*/ -void QWebEngineProfile::setHttpUserAgent(const QString &userAgent) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->setHttpUserAgent(userAgent); -} - -/*! - Returns the type of HTTP cache used. - - If the profile is off-the-record, MemoryHttpCache is returned. - - \sa setHttpCacheType(), cachePath() -*/ -QWebEngineProfile::HttpCacheType QWebEngineProfile::httpCacheType() const -{ - const Q_D(QWebEngineProfile); - return QWebEngineProfile::HttpCacheType(d->profileAdapter()->httpCacheType()); -} - -/*! - Sets the HTTP cache type to \a httpCacheType. - - \sa httpCacheType(), setCachePath() -*/ -void QWebEngineProfile::setHttpCacheType(QWebEngineProfile::HttpCacheType httpCacheType) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->setHttpCacheType(ProfileAdapter::HttpCacheType(httpCacheType)); -} - -/*! - Sets the value of the Accept-Language HTTP request-header field to \a httpAcceptLanguage. - - \since 5.6 - */ -void QWebEngineProfile::setHttpAcceptLanguage(const QString &httpAcceptLanguage) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->setHttpAcceptLanguage(httpAcceptLanguage); -} - -/*! - Returns the value of the Accept-Language HTTP request-header field. - - \since 5.6 - */ -QString QWebEngineProfile::httpAcceptLanguage() const -{ - Q_D(const QWebEngineProfile); - return d->profileAdapter()->httpAcceptLanguage(); -} - -/*! - Returns the current policy for persistent cookies. - - If the profile is off-the-record, NoPersistentCookies is returned. - - \sa setPersistentCookiesPolicy() -*/ -QWebEngineProfile::PersistentCookiesPolicy QWebEngineProfile::persistentCookiesPolicy() const -{ - const Q_D(QWebEngineProfile); - return QWebEngineProfile::PersistentCookiesPolicy(d->profileAdapter()->persistentCookiesPolicy()); -} - -/*! - Sets the policy for persistent cookies to \a newPersistentCookiesPolicy. - - \sa persistentCookiesPolicy() -*/ -void QWebEngineProfile::setPersistentCookiesPolicy(QWebEngineProfile::PersistentCookiesPolicy newPersistentCookiesPolicy) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->setPersistentCookiesPolicy(ProfileAdapter::PersistentCookiesPolicy(newPersistentCookiesPolicy)); -} - -/*! - Returns the maximum size of the HTTP cache in bytes. - - Will return \c 0 if the size is automatically controlled by QtWebEngine. - - \sa setHttpCacheMaximumSize(), httpCacheType() -*/ -int QWebEngineProfile::httpCacheMaximumSize() const -{ - const Q_D(QWebEngineProfile); - return d->profileAdapter()->httpCacheMaxSize(); -} - -/*! - Sets the maximum size of the HTTP cache to \a maxSize bytes. - - Setting it to \c 0 means the size will be controlled automatically by QtWebEngine. - - \sa httpCacheMaximumSize(), setHttpCacheType() -*/ -void QWebEngineProfile::setHttpCacheMaximumSize(int maxSize) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->setHttpCacheMaxSize(maxSize); -} - -/*! - Returns the cookie store for this profile. - - \since 5.6 -*/ - -QWebEngineCookieStore* QWebEngineProfile::cookieStore() -{ - Q_D(QWebEngineProfile); - return d->profileAdapter()->cookieStore(); -} - -#if QT_DEPRECATED_SINCE(5, 13) -/*! - Registers a request interceptor singleton \a interceptor to intercept URL requests. - - The profile does not take ownership of the pointer. - - \obsolete - - Interceptors installed with this method will call - QWebEngineUrlRequestInterceptor::interceptRequest on the I/O thread. Therefore - the user has to provide thread-safe interaction with the other user classes. - For a duration of this call ui thread is blocked. - Use setUrlRequestInterceptor instead. - - \since 5.6 - \sa QWebEngineUrlRequestInfo - -*/ -void QWebEngineProfile::setRequestInterceptor(QWebEngineUrlRequestInterceptor *interceptor) -{ - Q_D(QWebEngineProfile); - if (interceptor) - interceptor->setProperty("deprecated", true); - d->profileAdapter()->setRequestInterceptor(interceptor); - if (interceptor) - qDebug("Use of deprecated not thread-safe setter, use setUrlRequestInterceptor instead."); -} -#endif -/*! - Registers a request interceptor singleton \a interceptor to intercept URL requests. - - The profile does not take ownership of the pointer. - - \since 5.13 - \sa QWebEngineUrlRequestInfo QWebEngineUrlRequestInterceptor -*/ - -void QWebEngineProfile::setUrlRequestInterceptor(QWebEngineUrlRequestInterceptor *interceptor) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->setRequestInterceptor(interceptor); -} - -/*! - Clears all links from the visited links database. - - \sa clearVisitedLinks() -*/ -void QWebEngineProfile::clearAllVisitedLinks() -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->visitedLinksManager()->deleteAllVisitedLinkData(); -} - -/*! - Clears the links in \a urls from the visited links database. - - \sa clearAllVisitedLinks() -*/ -void QWebEngineProfile::clearVisitedLinks(const QList<QUrl> &urls) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->visitedLinksManager()->deleteVisitedLinkDataForUrls(urls); -} - -/*! - Returns \c true if \a url is considered a visited link by this profile. -*/ -bool QWebEngineProfile::visitedLinksContainsUrl(const QUrl &url) const -{ - Q_D(const QWebEngineProfile); - return d->profileAdapter()->visitedLinksManager()->containsUrl(url); -} - -/*! - Returns the collection of scripts that are injected into all pages that share - this profile. - - \sa QWebEngineScriptCollection, QWebEngineScript, QWebEnginePage::scripts(), - {Script Injection} -*/ -QWebEngineScriptCollection *QWebEngineProfile::scripts() const -{ - Q_D(const QWebEngineProfile); - return d->m_scriptCollection.data(); -} - -/*! - Sets the function \a notificationPresenter as responsible for presenting sent notifications. - - \since 5.13 - \sa QWebEngineNotification -*/ -void QWebEngineProfile::setNotificationPresenter(std::function<void(std::unique_ptr<QWebEngineNotification>)> notificationPresenter) -{ - Q_D(QWebEngineProfile); - d->m_notificationPresenter = std::move(notificationPresenter); -} - -/*! - Returns presenter responsible for presenting sent notifications - \since 6.0 - */ -std::function<void(std::unique_ptr<QWebEngineNotification>)> QWebEngineProfile::notificationPresenter() -{ - Q_D(QWebEngineProfile); - return d->m_notificationPresenter; -} - -/*! - Returns the default profile. - - The default profile uses the storage name "Default". - - \sa storageName() -*/ -QWebEngineProfile *QWebEngineProfile::defaultProfile() -{ - static QWebEngineProfile* profile = new QWebEngineProfile( - new QWebEngineProfilePrivate(ProfileAdapter::createDefaultProfileAdapter()), - ProfileAdapter::globalQObjectRoot()); - return profile; -} - -/*! - \since 5.8 - - Sets the current list of \a languages for the spell checker. - Each language should match the name of the \c .bdic dictionary. - For example, the language \c en-US will load the \c en-US.bdic - dictionary file. - - See the \l {Spellchecker}{Spellchecker feature documentation} for how - dictionary files are searched. - - For more information about how to compile \c .bdic dictionaries, see the - \l{WebEngine Widgets Spellchecker Example}{Spellchecker Example}. - -*/ -void QWebEngineProfile::setSpellCheckLanguages(const QStringList &languages) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->setSpellCheckLanguages(languages); -} - -/*! - \since 5.8 - - Returns the list of languages used by the spell checker. -*/ -QStringList QWebEngineProfile::spellCheckLanguages() const -{ - const Q_D(QWebEngineProfile); - return d->profileAdapter()->spellCheckLanguages(); -} - -/*! - \since 5.8 - - Enables spell checker if \a enable is \c true, otherwise disables it. - \sa isSpellCheckEnabled() - */ -void QWebEngineProfile::setSpellCheckEnabled(bool enable) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->setSpellCheckEnabled(enable); -} -/*! - \since 5.8 - - Returns \c true if the spell checker is enabled; otherwise returns \c false. - \sa setSpellCheckEnabled() - */ -bool QWebEngineProfile::isSpellCheckEnabled() const -{ - const Q_D(QWebEngineProfile); - return d->profileAdapter()->isSpellCheckEnabled(); -} - -/*! - Returns the default settings for all pages in this profile. -*/ -QWebEngineSettings *QWebEngineProfile::settings() const -{ - const Q_D(QWebEngineProfile); - return d->settings(); -} - -/*! - \since 5.6 - - Returns the custom URL scheme handler register for the URL scheme \a scheme. -*/ -const QWebEngineUrlSchemeHandler *QWebEngineProfile::urlSchemeHandler(const QByteArray &scheme) const -{ - const Q_D(QWebEngineProfile); - return d->profileAdapter()->urlSchemeHandler(scheme); -} - -/*! - \since 5.6 - - Registers a handler \a handler for custom URL scheme \a scheme in the profile. - - It is necessary to first register the scheme with \l - QWebEngineUrlScheme::registerScheme at application startup. -*/ -void QWebEngineProfile::installUrlSchemeHandler(const QByteArray &scheme, QWebEngineUrlSchemeHandler *handler) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->installUrlSchemeHandler(scheme, handler); -} - -/*! - \since 5.6 - - Removes the custom URL scheme handler \a handler from the profile. - - \sa removeUrlScheme() -*/ -void QWebEngineProfile::removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *handler) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->removeUrlSchemeHandler(handler); -} - -/*! - \since 5.6 - - Removes the custom URL scheme \a scheme from the profile. - - \sa removeUrlSchemeHandler() -*/ -void QWebEngineProfile::removeUrlScheme(const QByteArray &scheme) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->removeUrlScheme(scheme); -} - -/*! - \since 5.6 - - Removes all custom URL scheme handlers installed in the profile. -*/ -void QWebEngineProfile::removeAllUrlSchemeHandlers() -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->removeAllUrlSchemeHandlers(); -} - -/*! - \since 5.13 - - Sets if this profile is to be used for downloading and caching when needed - during certificate verification, for instance for OCSP, CRLs, and AIA. - - Only one QWebEngineProfile can do this at a time, and it is recommended - that the profile fullfilling this role has a disk HTTP cache to avoid - needlessly re-downloading. If you set the option on a second profile, - it will be disabled on the profile it is currently set. - - Currently only affects Linux/NSS installations where it enables OCSP. - - As long as one profile has \a enabled set to \c true, all other profiles - will be able to use it for their certificate verification. - - \sa isUsedForGlobalCertificateVerification(), httpCacheType() -*/ -void QWebEngineProfile::setUseForGlobalCertificateVerification(bool enabled) -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->setUseForGlobalCertificateVerification(enabled); -} - -/*! - \since 5.13 - - Returns \c true if this profile is currently being used for global - certificate verification. -*/ -bool QWebEngineProfile::isUsedForGlobalCertificateVerification() const -{ - Q_D(const QWebEngineProfile); - return d->profileAdapter()->isUsedForGlobalCertificateVerification(); -} - -/*! - \since 5.7 - - Removes the profile's cache entries. -*/ -void QWebEngineProfile::clearHttpCache() -{ - Q_D(QWebEngineProfile); - d->profileAdapter()->clearHttpCache(); -} - -/*! - \since 5.13 - - Returns the profile's client certificate store. -*/ -QWebEngineClientCertificateStore *QWebEngineProfile::clientCertificateStore() -{ -#if QT_CONFIG(ssl) - Q_D(QWebEngineProfile); - return d->profileAdapter()->clientCertificateStore(); -#else - return nullptr; -#endif -} - -QT_END_NAMESPACE diff --git a/src/webenginewidgets/api/qwebengineprofile.h b/src/webenginewidgets/api/qwebengineprofile.h deleted file mode 100644 index 590f3d9ea..000000000 --- a/src/webenginewidgets/api/qwebengineprofile.h +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 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:LGPL$ -** 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 Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** 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-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWEBENGINEPROFILE_H -#define QWEBENGINEPROFILE_H - -#include <QtWebEngineWidgets/qtwebenginewidgetsglobal.h> - -#include <QtCore/qobject.h> -#include <QtCore/qscopedpointer.h> -#include <QtCore/qstring.h> - -#include <functional> -#include <memory> - -QT_BEGIN_NAMESPACE - -class QObject; -class QUrl; -class QWebEngineClientCertificateStore; -class QWebEngineCookieStore; -class QWebEngineDownloadRequest; -class QWebEngineNotification; -class QWebEnginePage; -class QWebEnginePagePrivate; -class QWebEngineProfilePrivate; -class QWebEngineSettings; -class QWebEngineScriptCollection; -class QWebEngineUrlRequestInterceptor; -class QWebEngineUrlSchemeHandler; - -class QWEBENGINEWIDGETS_EXPORT QWebEngineProfile : public QObject { - Q_OBJECT -public: - explicit QWebEngineProfile(QObject *parent = Q_NULLPTR); - explicit QWebEngineProfile(const QString &name, QObject *parent = Q_NULLPTR); - virtual ~QWebEngineProfile(); - - enum HttpCacheType { - MemoryHttpCache, - DiskHttpCache, - NoCache - }; - Q_ENUM(HttpCacheType) - - enum PersistentCookiesPolicy { - NoPersistentCookies, - AllowPersistentCookies, - ForcePersistentCookies - }; - Q_ENUM(PersistentCookiesPolicy) - - QString storageName() const; - bool isOffTheRecord() const; - - QString persistentStoragePath() const; - void setPersistentStoragePath(const QString &path); - - QString cachePath() const; - void setCachePath(const QString &path); - - QString httpUserAgent() const; - void setHttpUserAgent(const QString &userAgent); - - HttpCacheType httpCacheType() const; - void setHttpCacheType(QWebEngineProfile::HttpCacheType); - - void setHttpAcceptLanguage(const QString &httpAcceptLanguage); - QString httpAcceptLanguage() const; - - PersistentCookiesPolicy persistentCookiesPolicy() const; - void setPersistentCookiesPolicy(QWebEngineProfile::PersistentCookiesPolicy); - - int httpCacheMaximumSize() const; - void setHttpCacheMaximumSize(int maxSize); - - QWebEngineCookieStore* cookieStore(); -#if QT_DEPRECATED_SINCE(5, 13) - void setRequestInterceptor(QWebEngineUrlRequestInterceptor *interceptor); -#endif - void setUrlRequestInterceptor(QWebEngineUrlRequestInterceptor *interceptor); - - void clearAllVisitedLinks(); - void clearVisitedLinks(const QList<QUrl> &urls); - bool visitedLinksContainsUrl(const QUrl &url) const; - - QWebEngineSettings *settings() const; - QWebEngineScriptCollection *scripts() const; - - const QWebEngineUrlSchemeHandler *urlSchemeHandler(const QByteArray &) const; - void installUrlSchemeHandler(const QByteArray &scheme, QWebEngineUrlSchemeHandler *); - void removeUrlScheme(const QByteArray &scheme); - void removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *); - void removeAllUrlSchemeHandlers(); - - void clearHttpCache(); - - void setSpellCheckLanguages(const QStringList &languages); - QStringList spellCheckLanguages() const; - void setSpellCheckEnabled(bool enabled); - bool isSpellCheckEnabled() const; - - void setUseForGlobalCertificateVerification(bool enabled = true); - bool isUsedForGlobalCertificateVerification() const; - - QString downloadPath() const; - void setDownloadPath(const QString &path); - - void setNotificationPresenter(std::function<void(std::unique_ptr<QWebEngineNotification>)> notificationPresenter); - std::function<void(std::unique_ptr<QWebEngineNotification>)> notificationPresenter(); - - QWebEngineClientCertificateStore *clientCertificateStore(); - - static QWebEngineProfile *defaultProfile(); - -Q_SIGNALS: - void downloadRequested(QWebEngineDownloadRequest *download); - -private: - Q_DISABLE_COPY(QWebEngineProfile) - Q_DECLARE_PRIVATE(QWebEngineProfile) - QWebEngineProfile(QWebEngineProfilePrivate *, QObject *parent = Q_NULLPTR); - - friend class QWebEnginePage; - friend class QWebEnginePagePrivate; - friend class QWebEngineUrlSchemeHandler; - QScopedPointer<QWebEngineProfilePrivate> d_ptr; -}; - -QT_END_NAMESPACE - -#endif // QWEBENGINEPROFILE_H diff --git a/src/webenginewidgets/api/qwebengineprofile_p.h b/src/webenginewidgets/api/qwebengineprofile_p.h deleted file mode 100644 index 60fa4632f..000000000 --- a/src/webenginewidgets/api/qwebengineprofile_p.h +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 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:LGPL$ -** 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 Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** 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-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWEBENGINEPROFILE_P_H -#define QWEBENGINEPROFILE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "profile_adapter_client.h" -#include "qwebengineprofile.h" -#include "qwebenginescriptcollection.h" - -#include <QMap> -#include <QPointer> -#include <QScopedPointer> -#include <QSharedPointer> - -#include <functional> - -namespace QtWebEngineCore { -class ProfileAdapter; -} - -QT_BEGIN_NAMESPACE - -class QWebEngineBrowserContext; -class QWebEngineProfilePrivate; -class QWebEngineNotification; -class QWebEngineSettings; - -class QWebEngineProfilePrivate : public QtWebEngineCore::ProfileAdapterClient { -public: - Q_DECLARE_PUBLIC(QWebEngineProfile) - QWebEngineProfilePrivate(QtWebEngineCore::ProfileAdapter *profileAdapter); - ~QWebEngineProfilePrivate(); - - QtWebEngineCore::ProfileAdapter* profileAdapter() const; - QWebEngineSettings *settings() const { return m_settings; } - - void downloadDestroyed(quint32 downloadId); - - void cleanDownloads(); - - void downloadRequested(DownloadItemInfo &info) override; - void downloadUpdated(const DownloadItemInfo &info) override; - - void showNotification(QSharedPointer<QtWebEngineCore::UserNotificationController> &) override; - - void addWebContentsAdapterClient(QtWebEngineCore::WebContentsAdapterClient *adapter) override; - void removeWebContentsAdapterClient(QtWebEngineCore::WebContentsAdapterClient *adapter) override; - -private: - QWebEngineProfile *q_ptr; - QWebEngineSettings *m_settings; - QPointer<QtWebEngineCore::ProfileAdapter> m_profileAdapter; - QScopedPointer<QWebEngineScriptCollection> m_scriptCollection; - QMap<quint32, QPointer<QWebEngineDownloadRequest> > m_ongoingDownloads; - std::function<void(std::unique_ptr<QWebEngineNotification>)> m_notificationPresenter; -}; - -QT_END_NAMESPACE - -#endif // QWEBENGINEPROFILE_P_H diff --git a/src/webenginewidgets/webenginewidgets.pro b/src/webenginewidgets/webenginewidgets.pro index 4b29e4f76..034869adb 100644 --- a/src/webenginewidgets/webenginewidgets.pro +++ b/src/webenginewidgets/webenginewidgets.pro @@ -16,7 +16,6 @@ SOURCES = \ api/qwebenginehistory.cpp \ api/qwebenginenotificationpresenter.cpp \ api/qwebenginepage.cpp \ - api/qwebengineprofile.cpp \ api/qwebengineview.cpp \ render_widget_host_view_qt_delegate_widget.cpp @@ -27,8 +26,6 @@ HEADERS = \ api/qwebenginenotificationpresenter_p.h \ api/qwebenginepage.h \ api/qwebenginepage_p.h \ - api/qwebengineprofile.h \ - api/qwebengineprofile_p.h \ api/qwebengineview.h \ api/qwebengineview_p.h \ render_widget_host_view_qt_delegate_widget.h |