WebContext::WebContext(WebContextConfiguration configuration) : m_processModel(ProcessModelSharedSecondaryProcess) , m_webProcessCountLimit(UINT_MAX) , m_haveInitialEmptyProcess(false) , m_processWithPageCache(0) , m_defaultPageGroup(WebPageGroup::createNonNull()) , m_injectedBundlePath(configuration.injectedBundlePath) , m_downloadClient(std::make_unique<API::DownloadClient>()) , m_historyClient(std::make_unique<API::HistoryClient>()) , m_visitedLinkProvider(VisitedLinkProvider::create()) , m_visitedLinksPopulated(false) , m_plugInAutoStartProvider(this) , m_alwaysUsesComplexTextCodePath(false) , m_shouldUseFontSmoothing(true) , m_cacheModel(CacheModelDocumentViewer) , m_memorySamplerEnabled(false) , m_memorySamplerInterval(1400.0) , m_storageManager(StorageManager::create(configuration.localStorageDirectory)) #if USE(SOUP) , m_initialHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain) #endif , m_shouldUseTestingNetworkSession(false) , m_processTerminationEnabled(true) #if ENABLE(NETWORK_PROCESS) , m_usesNetworkProcess(false) #endif #if USE(SOUP) , m_ignoreTLSErrors(true) #endif , m_memoryCacheDisabled(false) { platformInitialize(); addMessageReceiver(Messages::WebContext::messageReceiverName(), *this); addMessageReceiver(WebContextLegacyMessages::messageReceiverName(), *this); // NOTE: These sub-objects must be initialized after m_messageReceiverMap.. m_iconDatabase = WebIconDatabase::create(this); #if ENABLE(NETSCAPE_PLUGIN_API) m_pluginSiteDataManager = WebPluginSiteDataManager::create(this); #endif // ENABLE(NETSCAPE_PLUGIN_API) addSupplement<WebApplicationCacheManagerProxy>(); addSupplement<WebCookieManagerProxy>(); addSupplement<WebGeolocationManagerProxy>(); addSupplement<WebKeyValueStorageManager>(); addSupplement<WebMediaCacheManagerProxy>(); addSupplement<WebNotificationManagerProxy>(); addSupplement<WebResourceCacheManagerProxy>(); #if ENABLE(SQL_DATABASE) addSupplement<WebDatabaseManagerProxy>(); #endif #if USE(SOUP) #if ENABLE(CUSTOM_PROTOCOLS) addSupplement<WebSoupCustomProtocolRequestManager>(); #else addSupplement<WebSoupRequestManagerProxy>(); #endif #endif #if ENABLE(BATTERY_STATUS) addSupplement<WebBatteryManagerProxy>(); #endif contexts().append(this); addLanguageChangeObserver(this, languageChanged); #if !LOG_DISABLED WebCore::initializeLoggingChannelsIfNecessary(); WebKit::initializeLogChannelsIfNecessary(); #endif // !LOG_DISABLED #if ENABLE(NETSCAPE_PLUGIN_API) m_pluginInfoStore.setClient(this); #endif #ifndef NDEBUG webContextCounter.increment(); #endif }
WebProcessPool::WebProcessPool(API::ProcessPoolConfiguration& configuration) : m_configuration(configuration.copy()) , m_haveInitialEmptyProcess(false) , m_processWithPageCache(0) , m_defaultPageGroup(WebPageGroup::createNonNull()) , m_automationClient(std::make_unique<API::AutomationClient>()) , m_downloadClient(std::make_unique<API::DownloadClient>()) , m_historyClient(std::make_unique<API::LegacyContextHistoryClient>()) , m_visitedLinkStore(VisitedLinkStore::create()) , m_visitedLinksPopulated(false) , m_plugInAutoStartProvider(this) , m_alwaysUsesComplexTextCodePath(false) , m_shouldUseFontSmoothing(true) , m_memorySamplerEnabled(false) , m_memorySamplerInterval(1400.0) , m_websiteDataStore(m_configuration->shouldHaveLegacyDataStore() ? API::WebsiteDataStore::create(legacyWebsiteDataStoreConfiguration(m_configuration)).ptr() : nullptr) #if USE(SOUP) , m_initialHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain) #endif , m_shouldUseTestingNetworkSession(false) , m_processTerminationEnabled(true) , m_canHandleHTTPSServerTrustEvaluation(true) , m_didNetworkProcessCrash(false) , m_memoryCacheDisabled(false) , m_userObservablePageCounter([this](RefCounterEvent) { updateProcessSuppressionState(); }) , m_processSuppressionDisabledForPageCounter([this](RefCounterEvent) { updateProcessSuppressionState(); }) , m_hiddenPageThrottlingAutoIncreasesCounter([this](RefCounterEvent) { m_hiddenPageThrottlingTimer.startOneShot(0); }) , m_hiddenPageThrottlingTimer(RunLoop::main(), this, &WebProcessPool::updateHiddenPageThrottlingAutoIncreaseLimit) { for (auto& scheme : m_configuration->alwaysRevalidatedURLSchemes()) m_schemesToRegisterAsAlwaysRevalidated.add(scheme); #if ENABLE(CACHE_PARTITIONING) for (const auto& urlScheme : m_configuration->cachePartitionedURLSchemes()) m_schemesToRegisterAsCachePartitioned.add(urlScheme); #endif platformInitialize(); addMessageReceiver(Messages::WebProcessPool::messageReceiverName(), *this); // NOTE: These sub-objects must be initialized after m_messageReceiverMap.. m_iconDatabase = WebIconDatabase::create(this); addSupplement<WebCookieManagerProxy>(); addSupplement<WebGeolocationManagerProxy>(); addSupplement<WebNotificationManagerProxy>(); #if USE(SOUP) addSupplement<WebSoupCustomProtocolRequestManager>(); #endif #if ENABLE(BATTERY_STATUS) addSupplement<WebBatteryManagerProxy>(); #endif #if ENABLE(MEDIA_SESSION) addSupplement<WebMediaSessionFocusManager>(); #endif processPools().append(this); addLanguageChangeObserver(this, languageChanged); #if !LOG_DISABLED WebCore::initializeLoggingChannelsIfNecessary(); WebKit::initializeLogChannelsIfNecessary(); #endif // !LOG_DISABLED #if ENABLE(NETSCAPE_PLUGIN_API) m_pluginInfoStore.setClient(this); #endif #ifndef NDEBUG processPoolCounter.increment(); #endif }