/**************************************************************************** ** ** 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$ ** ****************************************************************************/ // // 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. // #ifndef PROFILE_ADAPTER_H #define PROFILE_ADAPTER_H #include "qtwebenginecoreglobal_p.h" #include #include #include #include #include #include #include "api/qwebenginecookiestore.h" #include "api/qwebengineurlrequestinterceptor.h" #include "api/qwebengineurlschemehandler.h" #include "net/qrc_url_scheme_handler.h" QT_FORWARD_DECLARE_CLASS(QObject) namespace QtWebEngineCore { class UserNotificationController; class DownloadManagerDelegateQt; class ProfileAdapterClient; class ProfileQt; class UserResourceControllerHost; class VisitedLinksManagerQt; class QWEBENGINECORE_PRIVATE_EXPORT ProfileAdapter : public QObject { public: explicit ProfileAdapter(const QString &storagePrefix = QString()); virtual ~ProfileAdapter(); static ProfileAdapter* createDefaultProfileAdapter(); static ProfileAdapter* defaultProfileAdapter(); static QObject* globalQObjectRoot(); VisitedLinksManagerQt *visitedLinksManager(); DownloadManagerDelegateQt *downloadManagerDelegate(); QWebEngineCookieStore *cookieStore(); QWebEngineUrlRequestInterceptor* requestInterceptor(); void setRequestInterceptor(QWebEngineUrlRequestInterceptor *interceptor); QList clients() { return m_clients; } void addClient(ProfileAdapterClient *adapterClient); void removeClient(ProfileAdapterClient *adapterClient); void cancelDownload(quint32 downloadId); void pauseDownload(quint32 downloadId); void resumeDownload(quint32 downloadId); void removeDownload(quint32 downloadId); ProfileQt *profile(); QString storageName() const { return m_name; } void setStorageName(const QString &storageName); bool isOffTheRecord() const { return m_offTheRecord; } void setOffTheRecord(bool offTheRecord); QString dataPath() const; void setDataPath(const QString &path); QString downloadPath() const { return m_downloadPath; } void setDownloadPath(const QString &path); QString cachePath() const; void setCachePath(const QString &path); QString httpCachePath() const; QString cookiesPath() const; QString channelIdPath() const; QString httpUserAgent() const; void setHttpUserAgent(const QString &userAgent); void setSpellCheckLanguages(const QStringList &language); QStringList spellCheckLanguages() const; void setSpellCheckEnabled(bool enabled); bool isSpellCheckEnabled() const; // KEEP IN SYNC with API or add mapping layer enum HttpCacheType { MemoryHttpCache = 0, DiskHttpCache, NoCache }; enum PersistentCookiesPolicy { NoPersistentCookies = 0, AllowPersistentCookies, ForcePersistentCookies }; enum VisitedLinksPolicy { DoNotTrackVisitedLinks = 0, TrackVisitedLinksInMemory, TrackVisitedLinksOnDisk, }; enum PermissionType { UnsupportedPermission = 0, GeolocationPermission = 1, NotificationPermission = 2, AudioCapturePermission = 3, VideoCapturePermission = 4, ClipboardRead = 5, ClipboardWrite = 6, }; HttpCacheType httpCacheType() const; void setHttpCacheType(ProfileAdapter::HttpCacheType); PersistentCookiesPolicy persistentCookiesPolicy() const; void setPersistentCookiesPolicy(ProfileAdapter::PersistentCookiesPolicy); VisitedLinksPolicy visitedLinksPolicy() const; void setVisitedLinksPolicy(ProfileAdapter::VisitedLinksPolicy); int httpCacheMaxSize() const; void setHttpCacheMaxSize(int maxSize); bool trackVisitedLinks() const; QWebEngineUrlSchemeHandler *urlSchemeHandler(const QByteArray &scheme); void installUrlSchemeHandler(const QByteArray &scheme, QWebEngineUrlSchemeHandler *handler); void removeUrlScheme(const QByteArray &scheme); void removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *handler); void removeAllUrlSchemeHandlers(); const QList customUrlSchemes() const; UserResourceControllerHost *userResourceController(); void permissionRequestReply(const QUrl &origin, PermissionType type, bool reply); bool checkPermission(const QUrl &origin, PermissionType type); QString httpAcceptLanguageWithoutQualities() const; QString httpAcceptLanguage() const; void setHttpAcceptLanguage(const QString &httpAcceptLanguage); void clearHttpCache(); void setUseForGlobalCertificateVerification(bool enable = true); bool isUsedForGlobalCertificateVerification() const; void addPageRequestInterceptor(); void removePageRequestInterceptor(); bool hasPageRequestInterceptor() const { return m_pageRequestInterceptors > 0; } QHash> &ephemeralNotifications() { return m_ephemeralNotifications; } QHash> &persistentNotifications() { return m_persistentNotifications; } private: void updateCustomUrlSchemeHandlers(); void resetVisitedLinksManager(); bool persistVisitedLinks() const; QString m_name; bool m_offTheRecord; bool m_usedForGlobalCertificateVerification = false; QScopedPointer m_profile; QScopedPointer m_visitedLinksManager; QScopedPointer m_downloadManagerDelegate; QScopedPointer m_userResourceController; QScopedPointer m_cookieStore; QPointer m_requestInterceptor; QString m_dataPath; QString m_downloadPath; QString m_cachePath; QString m_httpUserAgent; HttpCacheType m_httpCacheType; QString m_httpAcceptLanguage; PersistentCookiesPolicy m_persistentCookiesPolicy; VisitedLinksPolicy m_visitedLinksPolicy; QHash> m_customUrlSchemeHandlers; QHash> m_ephemeralNotifications; QHash> m_persistentNotifications; QList m_clients; int m_httpCacheMaxSize; int m_pageRequestInterceptors; QrcUrlSchemeHandler m_qrcHandler; Q_DISABLE_COPY(ProfileAdapter) }; } // namespace QtWebEngineCore #endif // PROFILE_ADAPTER_H