// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only // Qt-Security score:significant reason:default #ifndef WEB_ENGINE_CONTEXT_H #define WEB_ENGINE_CONTEXT_H #include "qtwebenginecoreglobal_p.h" #include "build_config_qt.h" #include "base/memory/ref_counted.h" #include "base/values.h" #include #include namespace base { class RunLoop; class CommandLine; class FieldTrialList; } namespace content { class BrowserMainRunner; class ContentMainRunner; class MojoIpcSupport; } namespace discardable_memory { class DiscardableSharedMemoryManager; } #if QT_CONFIG(webengine_printing_and_pdf) namespace printing { class PrintJobManager; } #endif #ifdef Q_OS_WIN namespace sandbox { struct SandboxInterfaceInfo; } #endif QT_FORWARD_DECLARE_CLASS(QObject) namespace QtWebEngineCore { class AccessibilityActivationObserver; class ContentMainDelegateQt; class DevToolsServerQt; class ProfileAdapter; typedef std::tuple ProxyAuthentication; class WebEngineContext : public base::RefCounted { public: static WebEngineContext *current(); static void destroyContextPostRoutine(); static ProxyAuthentication qProxyNetworkAuthentication(QString host, int port); static void flushMessages(); static bool closingDown(); #if BUILDFLAG(IS_OZONE) static bool isGbmSupported(); #endif ProfileAdapter *createDefaultProfileAdapter(); ProfileAdapter *defaultProfileAdapter(); QObject *globalQObject(); #if QT_CONFIG(webengine_printing_and_pdf) printing::PrintJobManager* getPrintJobManager(); #endif void destroyProfileAdapter(); void addProfileAdapter(ProfileAdapter *profileAdapter); void removeProfileAdapter(ProfileAdapter *profileAdapter); bool profileExistOnPath(const QString &dataPath); void destroy(); static base::CommandLine *initCommandLine(bool *useEmbeddedSwitches); private: friend class base::RefCounted; friend class ProfileAdapter; WebEngineContext(); ~WebEngineContext(); static void registerMainThreadFactories(); std::unique_ptr m_runLoop; std::unique_ptr m_mainDelegate; std::unique_ptr m_contentRunner; std::unique_ptr m_browserRunner; std::unique_ptr m_discardableSharedMemoryManager; std::unique_ptr m_mojoIpcSupport; std::unique_ptr m_globalQObject; std::unique_ptr m_defaultProfileAdapter; std::unique_ptr m_devtoolsServer; QList m_profileAdapters; std::unique_ptr m_fieldTrialList; #if QT_CONFIG(accessibility) std::unique_ptr m_accessibilityActivationObserver; #endif #if QT_CONFIG(webengine_printing_and_pdf) std::unique_ptr m_printJobManager; #endif static scoped_refptr m_handle; static bool m_destroyed; static bool m_closingDown; }; } // namespace #endif // WEB_ENGINE_CONTEXT_H