Files
tubestation/layout/build/nsLayoutStatics.cpp
Nika Layzell b09792cf05 Bug 1800295 - Delete the Viaduct XPCOM interface, r=chutten,markh
This XPCOM interface was being initialized and used, and was unnecessary.
This patch removes it completely to simplify things, initializing
viaduct during xpcom startup instead. This is done rather than keeping
it lazy and tied to FOG startup, as the implementation just sets a
static atomic to a function pointer.

This makes no changes to anything which actually uses viaduct, which is
done through the previously mentioned static atomic.

Differential Revision: https://phabricator.services.mozilla.com/D162010
2022-11-15 17:25:46 +00:00

407 lines
10 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "base/basictypes.h"
#include "nsLayoutStatics.h"
#include "nscore.h"
#include "mozilla/intl/AppDateTimeFormat.h"
#include "MediaManager.h"
#include "mozilla/dom/ServiceWorkerRegistrar.h"
#include "nsAttrValue.h"
#include "nsColorNames.h"
#include "nsComputedDOMStyle.h"
#include "nsContentDLF.h"
#include "nsContentUtils.h"
#include "nsCSSAnonBoxes.h"
#include "mozilla/css/ErrorReporter.h"
#include "nsCSSProps.h"
#include "nsCSSPseudoElements.h"
#include "nsCSSRendering.h"
#include "nsGenericHTMLFrameElement.h"
#include "mozilla/dom/Attr.h"
#include "mozilla/dom/PopupBlocker.h"
#include "nsIFrame.h"
#include "nsFrameState.h"
#include "nsGlobalWindow.h"
#include "nsGkAtoms.h"
#include "nsImageFrame.h"
#include "mozilla/GlobalStyleSheetCache.h"
#include "nsRegion.h"
#include "nsRepeatService.h"
#include "nsFloatManager.h"
#include "nsSprocketLayout.h"
#include "nsTextControlFrame.h"
#include "txMozillaXSLTProcessor.h"
#include "nsTreeSanitizer.h"
#include "nsCellMap.h"
#include "nsTextFrame.h"
#include "nsCCUncollectableMarker.h"
#include "nsTextFragment.h"
#include "nsCORSListenerProxy.h"
#include "nsHtml5Module.h"
#include "nsHTMLTags.h"
#include "nsFocusManager.h"
#include "mozilla/dom/HTMLDNSPrefetch.h"
#include "mozilla/dom/HTMLInputElement.h"
#include "mozilla/dom/SVGElementFactory.h"
#include "nsLanguageAtomService.h"
#include "nsMathMLAtoms.h"
#include "nsMathMLOperators.h"
#include "Navigator.h"
#include "StorageObserver.h"
#include "CacheObserver.h"
#include "DisplayItemClip.h"
#include "HitTestInfo.h"
#include "ActiveLayerTracker.h"
#include "AnimationCommon.h"
#include "LayerAnimationInfo.h"
#include "mozilla/TimelineConsumers.h"
#include "AudioChannelService.h"
#include "mozilla/dom/PromiseDebugging.h"
#include "mozilla/dom/nsMixedContentBlocker.h"
#include "nsXULPopupManager.h"
#include "nsXULContentUtils.h"
#include "nsXULPrototypeCache.h"
#include "nsXULTooltipListener.h"
#include "mozilla/dom/UIDirectionManager.h"
#include "CubebUtils.h"
#include "WebAudioUtils.h"
#include "nsError.h"
#include "nsJSEnvironment.h"
#include "nsContentSink.h"
#include "nsFrameMessageManager.h"
#include "nsDOMMutationObserver.h"
#include "nsHyphenationManager.h"
#include "nsWindowMemoryReporter.h"
#include "mozilla/dom/ContentParent.h"
#include "mozilla/ProcessPriorityManager.h"
#include "mozilla/PermissionManager.h"
#include "mozilla/dom/CustomElementRegistry.h"
#include "mozilla/EventDispatcher.h"
#include "mozilla/IMEStateManager.h"
#ifndef MOZ_WIDGET_ANDROID
# include "mozilla/Viaduct.h"
#endif
#include "mozilla/dom/HTMLVideoElement.h"
#include "ThirdPartyUtil.h"
#include "TouchManager.h"
#include "DecoderDoctorLogger.h"
#include "MediaDecoder.h"
#include "mozilla/ClearSiteData.h"
#include "mozilla/EditorController.h"
#include "mozilla/HTMLEditorController.h"
#include "mozilla/ServoBindings.h"
#include "mozilla/StaticPresData.h"
#include "mozilla/dom/AbstractRange.h"
#include "mozilla/dom/Document.h"
#include "mozilla/dom/WebIDLGlobalNameHash.h"
#include "mozilla/dom/U2FTokenManager.h"
#ifdef OS_WIN
# include "mozilla/dom/WinWebAuthnManager.h"
#endif
#include "mozilla/dom/PointerEventHandler.h"
#include "mozilla/dom/RemoteWorkerService.h"
#include "mozilla/dom/BlobURLProtocolHandler.h"
#include "mozilla/dom/ReportingHeader.h"
#include "mozilla/dom/BrowserParent.h"
#include "mozilla/dom/quota/ActorsParent.h"
#include "mozilla/dom/localstorage/ActorsParent.h"
#include "mozilla/net/UrlClassifierFeatureFactory.h"
#include "mozilla/RemoteLazyInputStreamStorage.h"
#include "nsLayoutUtils.h"
#include "nsThreadManager.h"
#include "mozilla/css/ImageLoader.h"
#include "gfxUserFontSet.h"
#include "RestoreTabContentObserver.h"
#include "mozilla/intl/nsComplexBreaker.h"
#include "nsRLBoxExpatDriver.h"
#include "RLBoxWOFF2Types.h"
using namespace mozilla;
using namespace mozilla::net;
using namespace mozilla::dom;
using namespace mozilla::dom::ipc;
using namespace mozilla::dom::quota;
nsrefcnt nsLayoutStatics::sLayoutStaticRefcnt = 0;
nsresult nsLayoutStatics::Initialize() {
NS_ASSERTION(sLayoutStaticRefcnt == 0, "nsLayoutStatics isn't zero!");
sLayoutStaticRefcnt = 1;
NS_LOG_ADDREF(&sLayoutStaticRefcnt, sLayoutStaticRefcnt, "nsLayoutStatics",
1);
nsresult rv;
ContentParent::StartUp();
nsCSSProps::AddRefTable();
nsColorNames::AddRefTable();
#ifdef DEBUG
nsCSSPseudoElements::AssertAtoms();
nsCSSAnonBoxes::AssertAtoms();
DebugVerifyFrameStateBits();
#endif
StartupJSEnvironment();
nsGlobalWindowInner::Init();
nsGlobalWindowOuter::Init();
rv = nsContentUtils::Init();
if (NS_FAILED(rv)) {
NS_ERROR("Could not initialize nsContentUtils");
return rv;
}
nsAttrValue::Init();
rv = nsTextFragment::Init();
if (NS_FAILED(rv)) {
NS_ERROR("Could not initialize nsTextFragment");
return rv;
}
nsCellMap::Init();
StaticPresData::Init();
nsCSSRendering::Init();
css::ImageLoader::Init();
rv = HTMLDNSPrefetch::Initialize();
if (NS_FAILED(rv)) {
NS_ERROR("Could not initialize HTML DNS prefetch");
return rv;
}
nsMathMLOperators::AddRefTable();
#ifdef DEBUG
nsIFrame::DisplayReflowStartup();
#endif
Attr::Initialize();
PopupBlocker::Initialize();
rv = txMozillaXSLTProcessor::Startup();
if (NS_FAILED(rv)) {
NS_ERROR("Could not initialize txMozillaXSLTProcessor");
return rv;
}
rv = StorageObserver::Init();
if (NS_FAILED(rv)) {
NS_ERROR("Could not initialize StorageObserver");
return rv;
}
rv = nsCCUncollectableMarker::Init();
if (NS_FAILED(rv)) {
NS_ERROR("Could not initialize nsCCUncollectableMarker");
return rv;
}
rv = nsXULPopupManager::Init();
if (NS_FAILED(rv)) {
NS_ERROR("Could not initialize nsXULPopupManager");
return rv;
}
rv = nsFocusManager::Init();
if (NS_FAILED(rv)) {
NS_ERROR("Could not initialize nsFocusManager");
return rv;
}
DecoderDoctorLogger::Init();
MediaManager::StartupInit();
CubebUtils::InitLibrary();
nsHtml5Module::InitializeStatics();
nsLayoutUtils::Initialize();
PointerEventHandler::InitializeStatics();
TouchManager::InitializeStatics();
nsWindowMemoryReporter::Init();
SVGElementFactory::Init();
ProcessPriorityManager::Init();
UIDirectionManager::Initialize();
CacheObserver::Init();
IMEStateManager::Init();
ServiceWorkerRegistrar::Initialize();
MediaDecoder::InitStatics();
PromiseDebugging::Init();
if (XRE_IsParentProcess() || XRE_IsContentProcess()) {
InitializeServo();
}
// This must be initialized on the main-thread.
mozilla::RemoteLazyInputStreamStorage::Initialize();
mozilla::dom::U2FTokenManager::Initialize();
#ifdef OS_WIN
mozilla::dom::WinWebAuthnManager::Initialize();
#endif
if (XRE_IsParentProcess()) {
// On content process we initialize these components when PContentChild is
// fully initialized.
mozilla::dom::RemoteWorkerService::Initialize();
}
ClearSiteData::Initialize();
// Reporting API.
ReportingHeader::Initialize();
if (XRE_IsParentProcess()) {
InitializeQuotaManager();
InitializeLocalStorage();
}
ThirdPartyUtil::Startup();
RestoreTabContentObserver::Initialize();
ComplexBreaker::Initialize();
RLBoxExpatSandboxPool::Initialize();
RLBoxWOFF2SandboxPool::Initalize();
#ifndef MOZ_WIDGET_ANDROID
if (XRE_IsParentProcess()) {
InitializeViaduct();
}
#endif
return NS_OK;
}
void nsLayoutStatics::Shutdown() {
// Don't need to shutdown nsWindowMemoryReporter, that will be done by the
// memory reporter manager.
if (XRE_IsParentProcess() || XRE_IsContentProcess()) {
ShutdownServo();
}
mozilla::dom::AbstractRange::Shutdown();
Document::Shutdown();
nsMessageManagerScriptExecutor::Shutdown();
nsFocusManager::Shutdown();
nsXULPopupManager::Shutdown();
UIDirectionManager::Shutdown();
StorageObserver::Shutdown();
txMozillaXSLTProcessor::Shutdown();
Attr::Shutdown();
PopupBlocker::Shutdown();
IMEStateManager::Shutdown();
EditorController::Shutdown();
HTMLEditorController::Shutdown();
HTMLDNSPrefetch::Shutdown();
nsCSSRendering::Shutdown();
StaticPresData::Shutdown();
nsLanguageAtomService::Shutdown();
#ifdef DEBUG
nsIFrame::DisplayReflowShutdown();
#endif
nsCellMap::Shutdown();
ActiveLayerTracker::Shutdown();
// Release all of our atoms
nsColorNames::ReleaseTable();
nsCSSProps::ReleaseTable();
nsRepeatService::Shutdown();
nsXULContentUtils::Finish();
nsXULPrototypeCache::ReleaseGlobals();
nsSprocketLayout::Shutdown();
SVGElementFactory::Shutdown();
nsMathMLOperators::ReleaseTable();
nsFloatManager::Shutdown();
nsImageFrame::ReleaseGlobals();
mozilla::css::ErrorReporter::ReleaseGlobals();
nsTextFragment::Shutdown();
nsAttrValue::Shutdown();
nsContentUtils::Shutdown();
nsMixedContentBlocker::Shutdown();
GlobalStyleSheetCache::Shutdown();
ShutdownJSEnvironment();
nsGlobalWindowInner::ShutDown();
nsGlobalWindowOuter::ShutDown();
CubebUtils::ShutdownLibrary();
WebAudioUtils::Shutdown();
nsCORSListenerProxy::Shutdown();
PointerEventHandler::ReleaseStatics();
TouchManager::ReleaseStatics();
nsTreeSanitizer::ReleaseStatics();
nsHtml5Module::ReleaseStatics();
mozilla::EventDispatcher::Shutdown();
HTMLInputElement::DestroyUploadLastDir();
nsLayoutUtils::Shutdown();
nsHyphenationManager::Shutdown();
nsDOMMutationObserver::Shutdown();
mozilla::intl::AppDateTimeFormat::Shutdown();
ContentParent::ShutDown();
DisplayItemClip::Shutdown();
HitTestInfo::Shutdown();
CacheObserver::Shutdown();
PromiseDebugging::Shutdown();
BlobURLProtocolHandler::RemoveDataEntries();
css::ImageLoader::Shutdown();
mozilla::net::UrlClassifierFeatureFactory::Shutdown();
RestoreTabContentObserver::Shutdown();
ComplexBreaker::Shutdown();
}