WebPage::WebPage(uint64_t pageID, const IntSize& viewSize, const WebPreferencesStore& store, DrawingArea::Type drawingAreaType) : m_page(new Page(new WebChromeClient(this), new WebContextMenuClient(this), new WebEditorClient(this), new WebDragClient(this), new WebInspectorClient(this), 0, 0, 0)) , m_viewSize(viewSize) , m_drawingArea(DrawingArea::create(drawingAreaType, this)) , m_canGoBack(false) , m_canGoForward(false) , m_pageID(pageID) { ASSERT(m_pageID); m_page->settings()->setJavaScriptEnabled(store.javaScriptEnabled); m_page->settings()->setLoadsImagesAutomatically(store.loadsImagesAutomatically); m_page->settings()->setMinimumFontSize(store.minimumFontSize); m_page->settings()->setMinimumLogicalFontSize(store.minimumLogicalFontSize); m_page->settings()->setDefaultFontSize(store.defaultFontSize); m_page->settings()->setDefaultFixedFontSize(store.defaultFixedFontSize); m_page->settings()->setStandardFontFamily(store.standardFontFamily); m_page->settings()->setCursiveFontFamily(store.cursiveFontFamily); m_page->settings()->setFantasyFontFamily(store.fantasyFontFamily); m_page->settings()->setFixedFontFamily(store.fixedFontFamily); m_page->settings()->setSansSerifFontFamily(store.sansSerifFontFamily); m_page->settings()->setSerifFontFamily(store.serifFontFamily); platformInitialize(); m_mainFrame = WebFrame::createMainFrame(this); WebProcess::shared().connection()->send(WebPageProxyMessage::DidCreateMainFrame, m_pageID, CoreIPC::In(m_mainFrame->frameID())); if (WebProcess::shared().injectedBundle()) WebProcess::shared().injectedBundle()->didCreatePage(this); #ifndef NDEBUG webPageCounter.increment(); #endif }
bool PluginControllerProxy::initialize(const PluginCreationParameters& creationParameters) { ASSERT(!m_plugin); m_plugin = NetscapePlugin::create(PluginProcess::shared().netscapePluginModule()); if (!m_plugin) { // This will delete the plug-in controller proxy object. m_connection->removePluginControllerProxy(this, 0); return false; } m_windowNPObject = m_connection->npRemoteObjectMap()->createNPObjectProxy(creationParameters.windowNPObjectID, m_plugin.get()); ASSERT(m_windowNPObject); m_pluginCreationParameters = &creationParameters; bool returnValue = m_plugin->initialize(this, creationParameters.parameters); m_pluginCreationParameters = 0; if (!returnValue) { // Get the plug-in so we can pass it to removePluginControllerProxy. The pointer is only // used as an identifier so it's OK to just get a weak reference. Plugin* plugin = m_plugin.get(); m_plugin = 0; // This will delete the plug-in controller proxy object. m_connection->removePluginControllerProxy(this, plugin); return false; } platformInitialize(); return true; }
void LayerTreeHostCA::initialize() { // Create a root layer. m_rootLayer = GraphicsLayer::create(graphicsLayerFactory(), this); #ifndef NDEBUG m_rootLayer->setName("LayerTreeHost root layer"); #endif m_rootLayer->setDrawsContent(false); m_rootLayer->setSize(m_webPage->size()); static_cast<GraphicsLayerCA*>(m_rootLayer.get())->platformCALayer()->setGeometryFlipped(true); m_nonCompositedContentLayer = GraphicsLayer::create(graphicsLayerFactory(), this); static_cast<GraphicsLayerCA*>(m_nonCompositedContentLayer.get())->setAllowTiledLayer(false); #ifndef NDEBUG m_nonCompositedContentLayer->setName("LayerTreeHost non-composited content"); #endif m_nonCompositedContentLayer->setDrawsContent(true); m_nonCompositedContentLayer->setContentsOpaque(m_webPage->drawsBackground() && !m_webPage->drawsTransparentBackground()); m_nonCompositedContentLayer->setSize(m_webPage->size()); if (m_webPage->corePage()->settings()->acceleratedDrawingEnabled()) m_nonCompositedContentLayer->setAcceleratesDrawing(true); m_rootLayer->addChild(m_nonCompositedContentLayer.get()); if (m_webPage->hasPageOverlay()) createPageOverlayLayer(); platformInitialize(); setLayerFlushSchedulingEnabled(!m_webPage->drawingArea() || !m_webPage->drawingArea()->layerTreeStateIsFrozen()); scheduleLayerFlush(); }
WebsiteDataStore::WebsiteDataStore(Configuration configuration) : m_identifier(generateIdentifier()) , m_sessionID(WebCore::SessionID::defaultSessionID()) , m_storageManager(StorageManager::create(WTF::move(configuration.localStorageDirectory))) { platformInitialize(); }
WebSocketServer::WebSocketServer(WebSocketServerClient* client) : m_state(Closed) , m_client(client) , m_tcpPort(0) { platformInitialize(); }
void PluginProcess::initializePluginProcess(const PluginProcessCreationParameters& parameters) { ASSERT(!m_pluginModule); m_pluginPath = parameters.pluginPath; platformInitialize(parameters); }
Connection::Connection(Identifier identifier, bool isServer, Client* client, RunLoop* clientRunLoop) : m_client(client) , m_isServer(isServer) , m_syncRequestID(0) , m_isConnected(false) , m_connectionQueue("com.apple.CoreIPC.ReceiveQueue") , m_clientRunLoop(clientRunLoop) { ASSERT(m_client); platformInitialize(identifier); }
void ChildProcess::initialize(const ChildProcessInitializationParameters& parameters) { platformInitialize(); initializeProcess(parameters); initializeProcessName(parameters); initializeSandbox(parameters); m_connection = CoreIPC::Connection::createClientConnection(parameters.connectionIdentifier, this, RunLoop::main()); m_connection->setDidCloseOnConnectionWorkQueueCallback(didCloseOnConnectionWorkQueue); initializeConnection(m_connection.get()); m_connection->open(); }
Connection::Connection(Identifier identifier, bool isServer, Client* client, RunLoop* clientRunLoop) : m_client(client) , m_isServer(isServer) , m_syncRequestID(0) , m_isConnected(false) , m_connectionQueue("com.apple.CoreIPC.ReceiveQueue") , m_clientRunLoop(clientRunLoop) , m_inDispatchMessageCount(0) , m_didReceiveInvalidMessage(false) , m_shouldWaitForSyncReplies(true) { ASSERT(m_client); platformInitialize(identifier); }
LayoutTestController::LayoutTestController() : m_whatToDump(RenderTree) , m_shouldDumpAllFrameScrollPositions(false) , m_shouldDumpBackForwardListsForAllWindows(false) , m_shouldAllowEditing(true) , m_shouldCloseExtraWindows(false) , m_dumpEditingCallbacks(false) , m_dumpStatusCallbacks(false) , m_dumpTitleChanges(false) , m_waitToDump(false) , m_testRepaint(false) , m_testRepaintSweepHorizontally(false) { platformInitialize(); }
MemoryPressureHandler::MemoryPressureHandler() : m_installed(false) , m_lastRespondTime(0) , m_lowMemoryHandler([this] (Critical critical, Synchronous synchronous) { releaseMemory(critical, synchronous); }) , m_underMemoryPressure(false) #if PLATFORM(IOS) // FIXME: Can we share more of this with OpenSource? , m_memoryPressureReason(MemoryPressureReasonNone) , m_clearPressureOnMemoryRelease(true) , m_releaseMemoryBlock(0) , m_observer(0) #elif OS(LINUX) , m_holdOffTimer(RunLoop::main(), this, &MemoryPressureHandler::holdOffTimerFired) #endif { platformInitialize(); }
bool PluginControllerProxy::initialize(const Plugin::Parameters& parameters) { ASSERT(!m_plugin); m_plugin = NetscapePlugin::create(PluginProcess::shared().netscapePluginModule()); if (!m_plugin) return false; if (!m_plugin->initialize(this, parameters)) { m_plugin = 0; return false; } platformInitialize(); return true; }
void InjectedBundle::initialize(WKBundleRef bundle, WKTypeRef initializationUserData) { m_bundle = bundle; WKBundleClientV1 client = { { 1, this }, didCreatePage, willDestroyPage, didInitializePageGroup, didReceiveMessage, didReceiveMessageToPage }; WKBundleSetClient(m_bundle, &client.base); platformInitialize(initializationUserData); activateFonts(); }
void ChildProcess::initialize(const ChildProcessInitializationParameters& parameters) { platformInitialize(); #if PLATFORM(COCOA) m_priorityBoostMessage = parameters.priorityBoostMessage; #endif initializeProcess(parameters); initializeProcessName(parameters); SandboxInitializationParameters sandboxParameters; initializeSandbox(parameters, sandboxParameters); m_connection = IPC::Connection::createClientConnection(parameters.connectionIdentifier, *this); m_connection->setDidCloseOnConnectionWorkQueueCallback(didCloseOnConnectionWorkQueue); initializeConnection(m_connection.get()); m_connection->open(); }
void InjectedBundle::initialize(WKBundleRef bundle, WKTypeRef initializationUserData) { m_bundle = bundle; WKBundleClient client = { 0, this, didCreatePage, willDestroyPage, didInitializePageGroup, didReceiveMessage }; WKBundleSetClient(m_bundle, &client); platformInitialize(initializationUserData); activateFonts(); WKBundleActivateMacFontAscentHack(m_bundle); }
void InjectedBundle::initialize(WKBundleRef bundle, WKTypeRef initializationUserData) { m_bundle = bundle; m_stringBuilder = WTF::adoptPtr(new WTF::StringBuilder()); WKBundleClient client = { kWKBundleClientCurrentVersion, this, didCreatePage, willDestroyPage, didInitializePageGroup, didReceiveMessage }; WKBundleSetClient(m_bundle, &client); platformInitialize(initializationUserData); activateFonts(); WKBundleActivateMacFontAscentHack(m_bundle); }
Connection::Connection(Identifier identifier, bool isServer, Client* client, RunLoop* clientRunLoop) : m_client(client) , m_isServer(isServer) , m_syncRequestID(0) , m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage(false) , m_shouldExitOnSyncMessageSendFailure(false) , m_didCloseOnConnectionWorkQueueCallback(0) , m_isConnected(false) , m_connectionQueue(WorkQueue::create("com.apple.IPC.ReceiveQueue")) , m_clientRunLoop(clientRunLoop) , m_inSendSyncCount(0) , m_inDispatchMessageCount(0) , m_inDispatchMessageMarkedDispatchWhenWaitingForSyncReplyCount(0) , m_didReceiveInvalidMessage(false) , m_syncMessageState(SyncMessageState::getOrCreate(clientRunLoop)) , m_shouldWaitForSyncReplies(true) { ASSERT(m_client); platformInitialize(identifier); }
LayoutTestController::LayoutTestController() : m_whatToDump(RenderTree) , m_shouldDumpAllFrameScrollPositions(false) , m_shouldDumpBackForwardListsForAllWindows(false) , m_shouldAllowEditing(true) , m_shouldCloseExtraWindows(false) , m_dumpEditingCallbacks(false) , m_dumpStatusCallbacks(false) , m_dumpTitleChanges(false) , m_dumpPixels(true) , m_dumpFullScreenCallbacks(false) , m_waitToDump(false) , m_testRepaint(false) , m_testRepaintSweepHorizontally(false) , m_willSendRequestReturnsNull(false) , m_policyDelegateEnabled(false) , m_policyDelegatePermissive(false) , m_globalFlag(false) { platformInitialize(); }
TestRunner::TestRunner() : m_whatToDump(RenderTree) , m_shouldDumpAllFrameScrollPositions(false) , m_shouldDumpBackForwardListsForAllWindows(false) , m_shouldAllowEditing(true) , m_shouldCloseExtraWindows(false) , m_dumpEditingCallbacks(false) , m_dumpStatusCallbacks(false) , m_dumpTitleChanges(false) , m_dumpPixels(true) , m_dumpSelectionRect(false) , m_dumpFullScreenCallbacks(false) , m_dumpFrameLoadCallbacks(false) , m_dumpProgressFinishedCallback(false) , m_dumpResourceLoadCallbacks(false) , m_dumpResourceResponseMIMETypes(false) , m_dumpWillCacheResponse(false) , m_dumpApplicationCacheDelegateCallbacks(false) , m_dumpDatabaseCallbacks(false) , m_disallowIncreaseForApplicationCacheQuota(false) , m_waitToDump(false) , m_testRepaint(false) , m_testRepaintSweepHorizontally(false) , m_isPrinting(false) , m_willSendRequestReturnsNull(false) , m_willSendRequestReturnsNullOnRedirect(false) , m_shouldStopProvisionalFrameLoads(false) , m_policyDelegateEnabled(false) , m_policyDelegatePermissive(false) , m_globalFlag(false) , m_customFullScreenBehavior(false) , m_timeout(30000) , m_databaseDefaultQuota(-1) , m_databaseMaxQuota(-1) , m_userStyleSheetEnabled(false) , m_userStyleSheetLocation(adoptWK(WKStringCreateWithUTF8CString(""))) { platformInitialize(); }
void InjectedBundle::initialize(WKBundleRef bundle, WKTypeRef initializationUserData) { m_bundle = bundle; WKBundleClient client = { kWKBundleClientCurrentVersion, this, didCreatePage, willDestroyPage, didInitializePageGroup, didReceiveMessage, didReceiveMessageToPage }; WKBundleSetClient(m_bundle, &client); platformInitialize(initializationUserData); activateFonts(); WKBundleActivateMacFontAscentHack(m_bundle); // FIXME: We'd like to start with a clean state for every test, but this function can't be used more than once yet. WKBundleSwitchNetworkLoaderToNewTestingSession(m_bundle); }
bool PluginControllerProxy::initialize(const PluginCreationParameters& creationParameters) { ASSERT(!m_plugin); ASSERT(!m_isInitializing); m_isInitializing = true; // Cannot use TemporaryChange here, because this object can be deleted before the function returns. m_plugin = NetscapePlugin::create(PluginProcess::singleton().netscapePluginModule()); if (!m_plugin) { // This will delete the plug-in controller proxy object. m_connection->removePluginControllerProxy(this, 0); return false; } if (creationParameters.windowNPObjectID) m_windowNPObject = m_connection->npRemoteObjectMap()->createNPObjectProxy(creationParameters.windowNPObjectID, m_plugin.get()); bool returnValue = m_plugin->initialize(this, creationParameters.parameters); if (!returnValue) { // Get the plug-in so we can pass it to removePluginControllerProxy. The pointer is only // used as an identifier so it's OK to just get a weak reference. Plugin* plugin = m_plugin.get(); m_plugin = nullptr; // This will delete the plug-in controller proxy object. m_connection->removePluginControllerProxy(this, plugin); return false; } platformInitialize(creationParameters); m_isInitializing = false; return true; }
void TestController::initialize(int argc, const char* argv[]) { platformInitialize(); if (argc < 2) { fputs("Usage: WebKitTestRunner [options] filename [filename2..n]\n", stderr); // FIXME: Refactor option parsing to allow us to print // an auto-generated list of options. exit(1); } bool printSupportedFeatures = false; for (int i = 1; i < argc; ++i) { std::string argument(argv[i]); if (argument == "--timeout" && i + 1 < argc) { m_longTimeout = atoi(argv[++i]); // Scale up the short timeout to match. m_shortTimeout = defaultShortTimeout * m_longTimeout / defaultLongTimeout; continue; } if (argument == "--skip-pixel-test-if-no-baseline") { m_skipPixelTestOption = true; continue; } if (argument == "--pixel-tests") { m_dumpPixels = true; continue; } if (argument == "--verbose") { m_verbose = true; continue; } if (argument == "--gc-between-tests") { m_gcBetweenTests = true; continue; } if (argument == "--print-supported-features") { printSupportedFeatures = true; break; } // Skip any other arguments that begin with '--'. if (argument.length() >= 2 && argument[0] == '-' && argument[1] == '-') continue; m_paths.push_back(argument); } if (printSupportedFeatures) { // FIXME: On Windows, DumpRenderTree uses this to expose whether it supports 3d // transforms and accelerated compositing. When we support those features, we // should match DRT's behavior. exit(0); } m_usingServerMode = (m_paths.size() == 1 && m_paths[0] == "-"); if (m_usingServerMode) m_printSeparators = true; else m_printSeparators = m_paths.size() > 1; initializeInjectedBundlePath(); initializeTestPluginDirectory(); WKRetainPtr<WKStringRef> pageGroupIdentifier(AdoptWK, WKStringCreateWithUTF8CString("WebKitTestRunnerPageGroup")); m_pageGroup.adopt(WKPageGroupCreateWithIdentifier(pageGroupIdentifier.get())); m_context.adopt(WKContextCreateWithInjectedBundlePath(injectedBundlePath())); const char* path = libraryPathForTesting(); if (path) { Vector<char> databaseDirectory(strlen(path) + strlen("/Databases") + 1); sprintf(databaseDirectory.data(), "%s%s", path, "/Databases"); WKRetainPtr<WKStringRef> databaseDirectoryWK(AdoptWK, WKStringCreateWithUTF8CString(databaseDirectory.data())); WKContextSetDatabaseDirectory(m_context.get(), databaseDirectoryWK.get()); } platformInitializeContext(); WKContextInjectedBundleClient injectedBundleClient = { kWKContextInjectedBundleClientCurrentVersion, this, didReceiveMessageFromInjectedBundle, didReceiveSynchronousMessageFromInjectedBundle }; WKContextSetInjectedBundleClient(m_context.get(), &injectedBundleClient); WKContextSetAdditionalPluginsDirectory(m_context.get(), testPluginDirectory()); m_mainWebView = adoptPtr(new PlatformWebView(m_context.get(), m_pageGroup.get())); WKPageUIClient pageUIClient = { kWKPageUIClientCurrentVersion, this, 0, // createNewPage_deprecatedForUseWithV0 0, // showPage 0, // close 0, // takeFocus 0, // focus 0, // unfocus 0, // runJavaScriptAlert 0, // runJavaScriptConfirm 0, // runJavaScriptPrompt 0, // setStatusText 0, // mouseDidMoveOverElement_deprecatedForUseWithV0 0, // missingPluginButtonClicked 0, // didNotHandleKeyEvent 0, // didNotHandleWheelEvent 0, // toolbarsAreVisible 0, // setToolbarsAreVisible 0, // menuBarIsVisible 0, // setMenuBarIsVisible 0, // statusBarIsVisible 0, // setStatusBarIsVisible 0, // isResizable 0, // setIsResizable getWindowFrameMainPage, setWindowFrameMainPage, runBeforeUnloadConfirmPanel, 0, // didDraw 0, // pageDidScroll exceededDatabaseQuota, 0, // runOpenPanel 0, // decidePolicyForGeolocationPermissionRequest 0, // headerHeight 0, // footerHeight 0, // drawHeader 0, // drawFooter 0, // printFrame runModal, 0, // didCompleteRubberBandForMainFrame 0, // saveDataToFileInDownloadsFolder 0, // shouldInterruptJavaScript createOtherPage, 0, // mouseDidMoveOverElement 0, // decidePolicyForNotificationPermissionRequest }; WKPageSetPageUIClient(m_mainWebView->page(), &pageUIClient); WKPageLoaderClient pageLoaderClient = { kWKPageLoaderClientCurrentVersion, this, 0, // didStartProvisionalLoadForFrame 0, // didReceiveServerRedirectForProvisionalLoadForFrame 0, // didFailProvisionalLoadWithErrorForFrame didCommitLoadForFrame, 0, // didFinishDocumentLoadForFrame didFinishLoadForFrame, 0, // didFailLoadWithErrorForFrame 0, // didSameDocumentNavigationForFrame 0, // didReceiveTitleForFrame 0, // didFirstLayoutForFrame 0, // didFirstVisuallyNonEmptyLayoutForFrame 0, // didRemoveFrameFromHierarchy 0, // didFailToInitializePlugin 0, // didDisplayInsecureContentForFrame 0, // canAuthenticateAgainstProtectionSpaceInFrame 0, // didReceiveAuthenticationChallengeInFrame 0, // didStartProgress 0, // didChangeProgress 0, // didFinishProgress 0, // didBecomeUnresponsive 0, // didBecomeResponsive processDidCrash, 0, // didChangeBackForwardList 0, // shouldGoToBackForwardListItem 0, // didRunInsecureContentForFrame 0, // didDetectXSSForFrame 0 // didNewFirstVisuallyNonEmptyLayout }; WKPageSetPageLoaderClient(m_mainWebView->page(), &pageLoaderClient); }
WorkQueue::WorkQueue(const char* name, Type type, QOS qos) { platformInitialize(name, type, qos); }
void TestController::initialize(int argc, const char* argv[]) { platformInitialize(); if (argc < 2) { fputs("Usage: WebKitTestRunner [options] filename [filename2..n]\n", stderr); // FIXME: Refactor option parsing to allow us to print // an auto-generated list of options. exit(1); } bool printSupportedFeatures = false; for (int i = 1; i < argc; ++i) { std::string argument(argv[i]); if (argument == "--timeout" && i + 1 < argc) { m_longTimeout = atoi(argv[++i]); // Scale up the short timeout to match. m_shortTimeout = defaultShortTimeout * m_longTimeout / defaultLongTimeout; continue; } if (argument == "--no-timeout") { m_useWaitToDumpWatchdogTimer = false; continue; } if (argument == "--no-timeout-at-all") { m_useWaitToDumpWatchdogTimer = false; m_forceNoTimeout = true; continue; } if (argument == "--verbose") { m_verbose = true; continue; } if (argument == "--gc-between-tests") { m_gcBetweenTests = true; continue; } if (argument == "--pixel-tests" || argument == "-p") { m_shouldDumpPixelsForAllTests = true; continue; } if (argument == "--print-supported-features") { printSupportedFeatures = true; break; } // Skip any other arguments that begin with '--'. if (argument.length() >= 2 && argument[0] == '-' && argument[1] == '-') continue; m_paths.push_back(argument); } if (printSupportedFeatures) { // FIXME: On Windows, DumpRenderTree uses this to expose whether it supports 3d // transforms and accelerated compositing. When we support those features, we // should match DRT's behavior. exit(0); } m_usingServerMode = (m_paths.size() == 1 && m_paths[0] == "-"); if (m_usingServerMode) m_printSeparators = true; else m_printSeparators = m_paths.size() > 1; initializeInjectedBundlePath(); initializeTestPluginDirectory(); WKRetainPtr<WKStringRef> pageGroupIdentifier(AdoptWK, WKStringCreateWithUTF8CString("WebKitTestRunnerPageGroup")); m_pageGroup.adopt(WKPageGroupCreateWithIdentifier(pageGroupIdentifier.get())); m_context.adopt(WKContextCreateWithInjectedBundlePath(injectedBundlePath())); m_geolocationProvider = adoptPtr(new GeolocationProviderMock(m_context.get())); #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED > 1080 WKContextSetUsesNetworkProcess(m_context.get(), true); WKContextSetProcessModel(m_context.get(), kWKProcessModelMultipleSecondaryProcesses); #endif if (const char* dumpRenderTreeTemp = libraryPathForTesting()) { String temporaryFolder = String::fromUTF8(dumpRenderTreeTemp); // WebCore::pathByAppendingComponent is not used here because of the namespace, // which leads us to this ugly #ifdef and file path concatenation. #if OS(WINDOWS) const char separator = '\\'; #else const char separator = '/'; #endif WKContextSetApplicationCacheDirectory(m_context.get(), toWK(temporaryFolder + separator + "ApplicationCache").get()); WKContextSetDatabaseDirectory(m_context.get(), toWK(temporaryFolder + separator + "Databases").get()); WKContextSetLocalStorageDirectory(m_context.get(), toWK(temporaryFolder + separator + "LocalStorage").get()); WKContextSetDiskCacheDirectory(m_context.get(), toWK(temporaryFolder + separator + "Cache").get()); WKContextSetCookieStorageDirectory(m_context.get(), toWK(temporaryFolder + separator + "Cookies").get()); WKContextSetIconDatabasePath(m_context.get(), toWK(temporaryFolder + separator + "IconDatabase" + separator + "WebpageIcons.db").get()); } platformInitializeContext(); WKContextInjectedBundleClient injectedBundleClient = { kWKContextInjectedBundleClientCurrentVersion, this, didReceiveMessageFromInjectedBundle, didReceiveSynchronousMessageFromInjectedBundle, 0 // getInjectedBundleInitializationUserData }; WKContextSetInjectedBundleClient(m_context.get(), &injectedBundleClient); WKNotificationManagerRef notificationManager = WKContextGetNotificationManager(m_context.get()); WKNotificationProvider notificationKit = m_webNotificationProvider.provider(); WKNotificationManagerSetProvider(notificationManager, ¬ificationKit); if (testPluginDirectory()) WKContextSetAdditionalPluginsDirectory(m_context.get(), testPluginDirectory()); createWebViewWithOptions(0); }
WebsiteDataStore::WebsiteDataStore(WebCore::SessionID sessionID) : m_identifier(generateIdentifier()) , m_sessionID(sessionID) { platformInitialize(); }
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 }