From 6882a04fb36642862b11efe514251d32070c3d65 Mon Sep 17 00:00:00 2001 From: Konstantin Tokarev Date: Thu, 25 Aug 2016 19:20:41 +0300 Subject: Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443) Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f Reviewed-by: Konstantin Tokarev --- Source/WebKit2/WebProcess/WebProcess.h | 251 +++++++++++++++++++++------------ 1 file changed, 159 insertions(+), 92 deletions(-) (limited to 'Source/WebKit2/WebProcess/WebProcess.h') diff --git a/Source/WebKit2/WebProcess/WebProcess.h b/Source/WebKit2/WebProcess/WebProcess.h index 5a6af0751..0cb19dcf9 100644 --- a/Source/WebKit2/WebProcess/WebProcess.h +++ b/Source/WebKit2/WebProcess/WebProcess.h @@ -28,45 +28,63 @@ #include "CacheModel.h" #include "ChildProcess.h" -#include "DownloadManager.h" +#include "DrawingArea.h" #include "PluginProcessConnectionManager.h" #include "ResourceCachesToClear.h" #include "SandboxExtension.h" #include "SharedMemory.h" #include "TextCheckerState.h" +#include "ViewUpdateDispatcher.h" #include "VisitedLinkTable.h" -#include +#include +#include #include #include #include #include +#include #include #include +#if PLATFORM(COCOA) +#include +#include +#endif + +#if PLATFORM(IOS) +#include "WebSQLiteDatabaseTracker.h" +#endif + #if PLATFORM(QT) QT_BEGIN_NAMESPACE class QNetworkAccessManager; QT_END_NAMESPACE #endif -#if PLATFORM(MAC) -#include -#endif +namespace API { +class Object; +} namespace WebCore { +class CertificateInfo; class PageGroup; class ResourceRequest; +class SessionID; struct PluginInfo; +struct SecurityOriginData; } namespace WebKit { -class DownloadManager; class EventDispatcher; class InjectedBundle; +class NetworkProcessConnection; +class ObjCObjectGraph; +class UserData; class WebConnectionToUIProcess; class WebFrame; class WebIconDatabaseProxy; +class WebLoaderStrategy; class WebPage; class WebPageGroupProxy; class WebProcessSupplement; @@ -75,14 +93,13 @@ struct WebPageGroupData; struct WebPreferencesStore; struct WebProcessCreationParameters; -#if ENABLE(NETWORK_PROCESS) -class NetworkProcessConnection; -class WebResourceLoadScheduler; +#if ENABLE(DATABASE_PROCESS) +class WebToDatabaseProcessConnection; #endif -class WebProcess : public ChildProcess, private DownloadManager::Client { +class WebProcess : public ChildProcess { public: - static WebProcess& shared(); + static WebProcess& singleton(); template T* supplement() @@ -93,7 +110,7 @@ public: template void addSupplement() { - m_supplements.add(T::supplementName(), adoptPtr(new T(this))); + m_supplements.add(T::supplementName(), std::make_unique(this)); } WebConnectionToUIProcess* webConnectionToUIProcess() const { return m_webConnection.get(); } @@ -105,19 +122,15 @@ public: InjectedBundle* injectedBundle() const { return m_injectedBundle.get(); } -#if PLATFORM(MAC) -#if USE(ACCELERATED_COMPOSITING) - mach_port_t compositingRenderServerPort() const { return m_compositingRenderServerPort; } -#endif +#if PLATFORM(COCOA) + const WebCore::MachSendRight& compositingRenderServerPort() const { return m_compositingRenderServerPort; } #endif - - void setShouldTrackVisitedLinks(bool); - void addVisitedLink(WebCore::LinkHash); - bool isLinkVisited(WebCore::LinkHash) const; - bool shouldPlugInAutoStartFromOrigin(const WebPage*, const String& pageOrigin, const String& pluginOrigin, const String& mimeType); - void plugInDidStartFromOrigin(const String& pageOrigin, const String& pluginOrigin, const String& mimeType); - void plugInDidReceiveUserInteraction(const String& pageOrigin, const String& pluginOrigin, const String& mimeType); + bool shouldPlugInAutoStartFromOrigin(WebPage&, const String& pageOrigin, const String& pluginOrigin, const String& mimeType); + void plugInDidStartFromOrigin(const String& pageOrigin, const String& pluginOrigin, const String& mimeType, WebCore::SessionID); + void plugInDidReceiveUserInteraction(const String& pageOrigin, const String& pluginOrigin, const String& mimeType, WebCore::SessionID); + void setPluginLoadClientPolicy(uint8_t policy, const String& host, const String& bundleIdentifier, const String& versionString); + void clearPluginClientPolicies(); bool fullKeyboardAccessEnabled() const { return m_fullKeyboardAccessEnabled; } @@ -129,15 +142,11 @@ public: WebPageGroupProxy* webPageGroup(uint64_t pageGroupID); WebPageGroupProxy* webPageGroup(const WebPageGroupData&); -#if PLATFORM(MAC) +#if PLATFORM(COCOA) pid_t presenterApplicationPid() const { return m_presenterApplicationPid; } - bool shouldForceScreenFontSubstitution() const { return m_shouldForceScreenFontSubstitution; } - - void setProcessSuppressionEnabled(bool); #endif const TextCheckerState& textCheckerState() const { return m_textCheckerState; } - DownloadManager& downloadManager(); #if PLATFORM(QT) QNetworkAccessManager* networkAccessManager() { return m_networkAccessManager; } @@ -145,64 +154,97 @@ public: void clearResourceCaches(ResourceCachesToClear = AllResourceCaches); -#if ENABLE(PLUGIN_PROCESS) +#if ENABLE(NETSCAPE_PLUGIN_API) PluginProcessConnectionManager& pluginProcessConnectionManager(); #endif EventDispatcher& eventDispatcher() { return *m_eventDispatcher; } -#if ENABLE(NETWORK_PROCESS) NetworkProcessConnection* networkConnection(); void networkProcessConnectionClosed(NetworkProcessConnection*); - bool usesNetworkProcess() const { return m_usesNetworkProcess; } - WebResourceLoadScheduler& webResourceLoadScheduler(); + WebLoaderStrategy& webLoaderStrategy(); + +#if ENABLE(DATABASE_PROCESS) + void webToDatabaseProcessConnectionClosed(WebToDatabaseProcessConnection*); + WebToDatabaseProcessConnection* webToDatabaseProcessConnection(); #endif void setCacheModel(uint32_t); - void ensurePrivateBrowsingSession(); - void destroyPrivateBrowsingSession(); - + void ensurePrivateBrowsingSession(WebCore::SessionID); + void destroyPrivateBrowsingSession(WebCore::SessionID); + void pageDidEnterWindow(uint64_t pageID); void pageWillLeaveWindow(uint64_t pageID); - void nonVisibleProcessCleanupTimerFired(WebCore::Timer*); + void nonVisibleProcessCleanupTimerFired(); + +#if PLATFORM(COCOA) + void destroyRenderingResources(); +#endif void updateActivePages(); + void processWillSuspendImminently(bool& handled); + void prepareToSuspend(); + void cancelPrepareToSuspend(); + bool markAllLayersVolatileIfPossible(); + void setAllLayerTreeStatesFrozen(bool); + void processSuspensionCleanupTimerFired(); + void processDidResume(); + +#if PLATFORM(IOS) + void resetAllGeolocationPermissions(); +#endif + + RefPtr transformHandlesToObjects(API::Object*); + static RefPtr transformObjectsToHandles(API::Object*); + +#if PLATFORM(COCOA) + RefPtr transformHandlesToObjects(ObjCObjectGraph&); + static RefPtr transformObjectsToHandles(ObjCObjectGraph&); +#endif + +#if ENABLE(SERVICE_CONTROLS) + bool hasImageServices() const { return m_hasImageServices; } + bool hasSelectionServices() const { return m_hasSelectionServices; } + bool hasRichContentServices() const { return m_hasRichContentServices; } +#endif + + void prefetchDNS(const String&); + private: WebProcess(); + ~WebProcess(); - // DownloadManager::Client. - virtual void didCreateDownload() OVERRIDE; - virtual void didDestroyDownload() OVERRIDE; - virtual CoreIPC::Connection* downloadProxyConnection() OVERRIDE; - virtual AuthenticationManager& downloadsAuthenticationManager() OVERRIDE; + void initializeWebProcess(WebProcessCreationParameters&&); + void platformInitializeWebProcess(WebProcessCreationParameters&&); - void initializeWebProcess(const WebProcessCreationParameters&, CoreIPC::MessageDecoder&); - void platformInitializeWebProcess(const WebProcessCreationParameters&, CoreIPC::MessageDecoder&); + void clearCachedCredentials(); void platformTerminate(); void registerURLSchemeAsEmptyDocument(const String&); void registerURLSchemeAsSecure(const String&) const; + void registerURLSchemeAsBypassingContentSecurityPolicy(const String&) const; void setDomainRelaxationForbiddenForURLScheme(const String&) const; void registerURLSchemeAsLocal(const String&) const; void registerURLSchemeAsNoAccess(const String&) const; void registerURLSchemeAsDisplayIsolated(const String&) const; void registerURLSchemeAsCORSEnabled(const String&) const; + void registerURLSchemeAsAlwaysRevalidated(const String&) const; +#if ENABLE(CACHE_PARTITIONING) + void registerURLSchemeAsCachePartitioned(const String&) const; +#endif void setDefaultRequestTimeoutInterval(double); void setAlwaysUsesComplexTextCodePath(bool); void setShouldUseFontSmoothing(bool); void userPreferredLanguagesChanged(const Vector&) const; void fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled); - void setVisitedLinkTable(const SharedMemory::Handle&); - void visitedLinkStateChanged(const Vector& linkHashes); - void allVisitedLinkStateChanged(); - - bool isPlugInAutoStartOriginHash(unsigned plugInOriginHash); - void didAddPlugInAutoStartOriginHash(unsigned plugInOriginHash, double expirationTime); - void resetPlugInAutoStartOriginHashes(const HashMap& hashes); + bool isPlugInAutoStartOriginHash(unsigned plugInOriginHash, WebCore::SessionID); + void didAddPlugInAutoStartOriginHash(unsigned plugInOriginHash, double expirationTime, WebCore::SessionID); + void resetPlugInAutoStartOriginDefaultHashes(const HashMap& hashes); + void resetPlugInAutoStartOriginHashes(const HashMap>& hashes); void platformSetCacheModel(CacheModel); void platformClearResourceCaches(ResourceCachesToClear); @@ -210,16 +252,9 @@ private: void setEnhancedAccessibility(bool); -#if !ENABLE(PLUGIN_PROCESS) - void getSitesWithPluginData(const Vector& pluginPaths, uint64_t callbackID); - void clearPluginSiteData(const Vector& pluginPaths, const Vector& sites, uint64_t flags, uint64_t maxAgeInSeconds, uint64_t callbackID); -#endif - void startMemorySampler(const SandboxExtension::Handle&, const String&, const double); void stopMemorySampler(); - void downloadRequest(uint64_t downloadID, uint64_t initiatingPageID, const WebCore::ResourceRequest&); - void cancelDownload(uint64_t downloadID); #if PLATFORM(QT) void startTransfer(uint64_t downloadID, const String& destination); #endif @@ -230,61 +265,77 @@ private: void garbageCollectJavaScriptObjects(); void setJavaScriptGarbageCollectorTimerEnabled(bool flag); + void mainThreadPing(); + void releasePageCache(); -#if USE(SOUP) - void setIgnoreTLSErrors(bool); + void fetchWebsiteData(WebCore::SessionID, uint64_t websiteDataTypes, uint64_t callbackID); + void deleteWebsiteData(WebCore::SessionID, uint64_t websiteDataTypes, std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID); + void deleteWebsiteDataForOrigins(WebCore::SessionID, uint64_t websiteDataTypes, const Vector& origins, uint64_t callbackID); + + void setMemoryCacheDisabled(bool); + +#if ENABLE(SERVICE_CONTROLS) + void setEnabledServices(bool hasImageServices, bool hasSelectionServices, bool hasRichContentServices); #endif - void postInjectedBundleMessage(const CoreIPC::DataReference& messageData); + void handleInjectedBundleMessage(const String& messageName, const UserData& messageBody); + void setInjectedBundleParameter(const String& key, const IPC::DataReference&); + void setInjectedBundleParameters(const IPC::DataReference&); + + enum class ShouldAcknowledgeWhenReadyToSuspend { No, Yes }; + void actualPrepareToSuspend(ShouldAcknowledgeWhenReadyToSuspend); // ChildProcess - virtual void initializeProcess(const ChildProcessInitializationParameters&) OVERRIDE; - virtual void initializeProcessName(const ChildProcessInitializationParameters&) OVERRIDE; - virtual void initializeSandbox(const ChildProcessInitializationParameters&, SandboxInitializationParameters&) OVERRIDE; - virtual void initializeConnection(CoreIPC::Connection*) OVERRIDE; - virtual bool shouldTerminate() OVERRIDE; - virtual void terminate() OVERRIDE; + virtual void initializeProcess(const ChildProcessInitializationParameters&) override; + virtual void initializeProcessName(const ChildProcessInitializationParameters&) override; + virtual void initializeSandbox(const ChildProcessInitializationParameters&, SandboxInitializationParameters&) override; + virtual void initializeConnection(IPC::Connection*) override; + virtual bool shouldTerminate() override; + virtual void terminate() override; + +#if USE(APPKIT) + virtual void stopRunLoop() override; +#endif void platformInitializeProcess(const ChildProcessInitializationParameters&); - // CoreIPC::Connection::Client + // IPC::Connection::Client friend class WebConnectionToUIProcess; - virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&); - virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&, OwnPtr&); - virtual void didClose(CoreIPC::Connection*); - virtual void didReceiveInvalidMessage(CoreIPC::Connection*, CoreIPC::StringReference messageReceiverName, CoreIPC::StringReference messageName) OVERRIDE; + virtual void didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&) override; + virtual void didReceiveSyncMessage(IPC::Connection&, IPC::MessageDecoder&, std::unique_ptr&) override; + virtual void didClose(IPC::Connection&) override; + virtual void didReceiveInvalidMessage(IPC::Connection&, IPC::StringReference messageReceiverName, IPC::StringReference messageName) override; + virtual IPC::ProcessType localProcessType() override { return IPC::ProcessType::Web; } + virtual IPC::ProcessType remoteProcessType() override { return IPC::ProcessType::UI; } // Implemented in generated WebProcessMessageReceiver.cpp - void didReceiveWebProcessMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&); + void didReceiveWebProcessMessage(IPC::Connection&, IPC::MessageDecoder&); + void didReceiveSyncWebProcessMessage(IPC::Connection&, IPC::MessageDecoder&, std::unique_ptr&); RefPtr m_webConnection; - HashMap > m_pageMap; - HashMap > m_pageGroupMap; + HashMap> m_pageMap; + HashMap> m_pageGroupMap; RefPtr m_injectedBundle; RefPtr m_eventDispatcher; +#if PLATFORM(IOS) + RefPtr m_viewUpdateDispatcher; +#endif + WebCore::Timer m_processSuspensionCleanupTimer; bool m_inDidClose; - // FIXME: The visited link table should not be per process. - VisitedLinkTable m_visitedLinkTable; - bool m_shouldTrackVisitedLinks; - - HashMap m_plugInAutoStartOriginHashes; + HashMap> m_plugInAutoStartOriginHashes; HashSet m_plugInAutoStartOrigins; bool m_hasSetCacheModel; CacheModel m_cacheModel; -#if USE(ACCELERATED_COMPOSITING) && PLATFORM(MAC) - mach_port_t m_compositingRenderServerPort; -#endif -#if PLATFORM(MAC) +#if PLATFORM(COCOA) + WebCore::MachSendRight m_compositingRenderServerPort; pid_t m_presenterApplicationPid; - dispatch_group_t m_clearResourceCachesDispatchGroup; - bool m_shouldForceScreenFontSubstitution; #endif bool m_fullKeyboardAccessEnabled; @@ -295,26 +346,42 @@ private: HashMap m_frameMap; - typedef HashMap, PtrHash > WebProcessSupplementMap; + typedef HashMap, PtrHash> WebProcessSupplementMap; WebProcessSupplementMap m_supplements; TextCheckerState m_textCheckerState; - WebIconDatabaseProxy* m_iconDatabaseProxy; + WebIconDatabaseProxy& m_iconDatabaseProxy; -#if ENABLE(NETWORK_PROCESS) void ensureNetworkProcessConnection(); RefPtr m_networkProcessConnection; - bool m_usesNetworkProcess; - WebResourceLoadScheduler* m_webResourceLoadScheduler; + WebLoaderStrategy& m_webLoaderStrategy; + HashSet m_dnsPrefetchedHosts; + WebCore::HysteresisActivity m_dnsPrefetchHystereris; + +#if ENABLE(DATABASE_PROCESS) + void ensureWebToDatabaseProcessConnection(); + RefPtr m_webToDatabaseProcessConnection; #endif -#if ENABLE(PLUGIN_PROCESS) +#if ENABLE(NETSCAPE_PLUGIN_API) RefPtr m_pluginProcessConnectionManager; #endif +#if ENABLE(SERVICE_CONTROLS) + bool m_hasImageServices; + bool m_hasSelectionServices; + bool m_hasRichContentServices; +#endif + HashSet m_pagesInWindows; - WebCore::Timer m_nonVisibleProcessCleanupTimer; + WebCore::Timer m_nonVisibleProcessCleanupTimer; + +#if PLATFORM(IOS) + WebSQLiteDatabaseTracker m_webSQLiteDatabaseTracker; +#endif + + ShouldAcknowledgeWhenReadyToSuspend m_shouldAcknowledgeWhenReadyToSuspend; }; } // namespace WebKit -- cgit v1.2.1 From 4bd713d56aa9bb86bc96ea9cb0c64cbf94bf43d4 Mon Sep 17 00:00:00 2001 From: Konstantin Tokarev Date: Mon, 24 Apr 2017 22:40:03 +0300 Subject: Import WebKit commit 3040e0455efecd271f1aeef53cf287e75486a70d Change-Id: I7df106cef8ce93ce33e49ad6fb0d202cd066d87c Reviewed-by: Konstantin Tokarev --- Source/WebKit2/WebProcess/WebProcess.h | 18 ------------------ 1 file changed, 18 deletions(-) (limited to 'Source/WebKit2/WebProcess/WebProcess.h') diff --git a/Source/WebKit2/WebProcess/WebProcess.h b/Source/WebKit2/WebProcess/WebProcess.h index 0cb19dcf9..2acaa81e2 100644 --- a/Source/WebKit2/WebProcess/WebProcess.h +++ b/Source/WebKit2/WebProcess/WebProcess.h @@ -55,12 +55,6 @@ #include "WebSQLiteDatabaseTracker.h" #endif -#if PLATFORM(QT) -QT_BEGIN_NAMESPACE -class QNetworkAccessManager; -QT_END_NAMESPACE -#endif - namespace API { class Object; } @@ -148,10 +142,6 @@ public: const TextCheckerState& textCheckerState() const { return m_textCheckerState; } -#if PLATFORM(QT) - QNetworkAccessManager* networkAccessManager() { return m_networkAccessManager; } -#endif - void clearResourceCaches(ResourceCachesToClear = AllResourceCaches); #if ENABLE(NETSCAPE_PLUGIN_API) @@ -255,10 +245,6 @@ private: void startMemorySampler(const SandboxExtension::Handle&, const String&, const double); void stopMemorySampler(); -#if PLATFORM(QT) - void startTransfer(uint64_t downloadID, const String& destination); -#endif - void setTextCheckerState(const TextCheckerState&); void getWebCoreStatistics(uint64_t callbackID); @@ -340,10 +326,6 @@ private: bool m_fullKeyboardAccessEnabled; -#if PLATFORM(QT) - QNetworkAccessManager* m_networkAccessManager; -#endif - HashMap m_frameMap; typedef HashMap, PtrHash> WebProcessSupplementMap; -- cgit v1.2.1