mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 13:25:37 +00:00
f057e4abbb
Backed out changeset f60d4ad64070 (bug 1018320) Backed out changeset 1aac4d23ccd2 (bug 1018320) Backed out changeset 6063a2463d6c (bug 1018320) Backed out changeset 2df23c44ef44 (bug 1018320) Backed out changeset daf456b0a23a (bug 1018320) Backed out changeset 3e2e4d298e98 (bug 1018320) Backed out changeset 012373bb552b (bug 1018320)
435 lines
9.6 KiB
C++
435 lines
9.6 KiB
C++
/* 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 "nsAttrValue.h"
|
|
#include "nsAutoCopyListener.h"
|
|
#include "nsColorNames.h"
|
|
#include "nsComputedDOMStyle.h"
|
|
#include "nsContentDLF.h"
|
|
#include "nsContentUtils.h"
|
|
#include "nsCSSAnonBoxes.h"
|
|
#include "mozilla/css/ErrorReporter.h"
|
|
#include "nsCSSKeywords.h"
|
|
#include "nsCSSParser.h"
|
|
#include "nsCSSProps.h"
|
|
#include "nsCSSPseudoClasses.h"
|
|
#include "nsCSSPseudoElements.h"
|
|
#include "nsCSSRendering.h"
|
|
#include "mozilla/dom/Attr.h"
|
|
#include "nsDOMClassInfo.h"
|
|
#include "nsEditorEventListener.h"
|
|
#include "mozilla/EventListenerManager.h"
|
|
#include "nsFrame.h"
|
|
#include "nsGlobalWindow.h"
|
|
#include "nsGkAtoms.h"
|
|
#include "nsImageFrame.h"
|
|
#include "nsLayoutStylesheetCache.h"
|
|
#include "nsRange.h"
|
|
#include "nsRegion.h"
|
|
#include "nsRepeatService.h"
|
|
#include "nsFloatManager.h"
|
|
#include "nsSprocketLayout.h"
|
|
#include "nsStackLayout.h"
|
|
#include "nsStyleSet.h"
|
|
#include "nsTextControlFrame.h"
|
|
#include "nsXBLService.h"
|
|
#include "txMozillaXSLTProcessor.h"
|
|
#include "nsTreeSanitizer.h"
|
|
#include "nsCellMap.h"
|
|
#include "nsTextFrame.h"
|
|
#include "nsCCUncollectableMarker.h"
|
|
#include "nsTextFragment.h"
|
|
#include "nsCSSRuleProcessor.h"
|
|
#include "nsCORSListenerProxy.h"
|
|
#include "nsHTMLDNSPrefetch.h"
|
|
#include "nsHtml5Module.h"
|
|
#include "mozilla/dom/FallbackEncoding.h"
|
|
#include "nsFocusManager.h"
|
|
#include "nsListControlFrame.h"
|
|
#include "mozilla/dom/HTMLInputElement.h"
|
|
#include "SVGElementFactory.h"
|
|
#include "nsSVGUtils.h"
|
|
#include "nsMathMLAtoms.h"
|
|
#include "nsMathMLOperators.h"
|
|
#include "Navigator.h"
|
|
#include "DOMStorageObserver.h"
|
|
#include "CacheObserver.h"
|
|
#include "DisplayItemClip.h"
|
|
#include "ActiveLayerTracker.h"
|
|
#include "CounterStyleManager.h"
|
|
#include "FrameLayerBuilder.h"
|
|
|
|
#include "AudioChannelService.h"
|
|
#include "mozilla/dom/DataStoreService.h"
|
|
|
|
#ifdef MOZ_XUL
|
|
#include "nsXULPopupManager.h"
|
|
#include "nsXULContentUtils.h"
|
|
#include "nsXULPrototypeCache.h"
|
|
#include "nsXULTooltipListener.h"
|
|
|
|
#include "inDOMView.h"
|
|
|
|
#include "nsMenuBarListener.h"
|
|
#endif
|
|
|
|
#include "nsHTMLEditor.h"
|
|
#include "nsTextServicesDocument.h"
|
|
|
|
#ifdef MOZ_WEBSPEECH
|
|
#include "nsSynthVoiceRegistry.h"
|
|
#endif
|
|
|
|
#ifdef MOZ_ANDROID_OMX
|
|
#include "AndroidMediaPluginHost.h"
|
|
#endif
|
|
|
|
#ifdef MOZ_WMF
|
|
#include "WMFDecoder.h"
|
|
#endif
|
|
|
|
#ifdef MOZ_GSTREAMER
|
|
#include "GStreamerFormatHelper.h"
|
|
#endif
|
|
|
|
#ifdef MOZ_FFMPEG
|
|
#include "FFmpegRuntimeLinker.h"
|
|
#endif
|
|
|
|
#include "CubebUtils.h"
|
|
#include "Latency.h"
|
|
#include "WebAudioUtils.h"
|
|
|
|
#ifdef MOZ_WIDGET_GONK
|
|
#include "nsVolumeService.h"
|
|
#include "SpeakerManagerService.h"
|
|
using namespace mozilla::system;
|
|
#endif
|
|
|
|
#include "nsError.h"
|
|
|
|
#include "nsJSEnvironment.h"
|
|
#include "nsContentSink.h"
|
|
#include "nsFrameMessageManager.h"
|
|
#include "nsRefreshDriver.h"
|
|
#include "nsDOMMutationObserver.h"
|
|
#include "nsHyphenationManager.h"
|
|
#include "nsEditorSpellCheck.h"
|
|
#include "nsWindowMemoryReporter.h"
|
|
#include "mozilla/dom/ContentParent.h"
|
|
#include "mozilla/ProcessPriorityManager.h"
|
|
#include "nsPermissionManager.h"
|
|
#include "nsCookieService.h"
|
|
#include "nsApplicationCacheService.h"
|
|
#include "mozilla/dom/time/DateCacheCleaner.h"
|
|
#include "mozilla/EventDispatcher.h"
|
|
#include "mozilla/IMEStateManager.h"
|
|
#include "nsDocument.h"
|
|
#include "mozilla/dom/HTMLVideoElement.h"
|
|
#include "CameraPreferences.h"
|
|
|
|
using namespace mozilla;
|
|
using namespace mozilla::net;
|
|
using namespace mozilla::dom;
|
|
using namespace mozilla::dom::ipc;
|
|
|
|
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();
|
|
|
|
// Register all of our atoms once
|
|
nsCSSAnonBoxes::AddRefAtoms();
|
|
nsCSSPseudoClasses::AddRefAtoms();
|
|
nsCSSPseudoElements::AddRefAtoms();
|
|
nsCSSKeywords::AddRefTable();
|
|
nsCSSProps::AddRefTable();
|
|
nsColorNames::AddRefTable();
|
|
nsGkAtoms::AddRefAtoms();
|
|
|
|
StartupJSEnvironment();
|
|
rv = nsRegion::InitStatic();
|
|
if (NS_FAILED(rv)) {
|
|
NS_ERROR("Could not initialize nsRegion");
|
|
return rv;
|
|
}
|
|
|
|
nsGlobalWindow::Init();
|
|
Navigator::Init();
|
|
nsXBLService::Init();
|
|
|
|
rv = nsContentUtils::Init();
|
|
if (NS_FAILED(rv)) {
|
|
NS_ERROR("Could not initialize nsContentUtils");
|
|
return rv;
|
|
}
|
|
|
|
rv = nsAttrValue::Init();
|
|
if (NS_FAILED(rv)) {
|
|
NS_ERROR("Could not initialize nsAttrValue");
|
|
return rv;
|
|
}
|
|
|
|
rv = nsTextFragment::Init();
|
|
if (NS_FAILED(rv)) {
|
|
NS_ERROR("Could not initialize nsTextFragment");
|
|
return rv;
|
|
}
|
|
|
|
nsCellMap::Init();
|
|
|
|
nsCSSRendering::Init();
|
|
|
|
nsTextFrameTextRunCache::Init();
|
|
|
|
rv = nsHTMLDNSPrefetch::Initialize();
|
|
if (NS_FAILED(rv)) {
|
|
NS_ERROR("Could not initialize HTML DNS prefetch");
|
|
return rv;
|
|
}
|
|
|
|
#ifdef MOZ_XUL
|
|
rv = nsXULContentUtils::Init();
|
|
if (NS_FAILED(rv)) {
|
|
NS_ERROR("Could not initialize nsXULContentUtils");
|
|
return rv;
|
|
}
|
|
|
|
#endif
|
|
|
|
nsMathMLOperators::AddRefTable();
|
|
|
|
nsTextServicesDocument::RegisterAtoms();
|
|
|
|
#ifdef DEBUG
|
|
nsFrame::DisplayReflowStartup();
|
|
#endif
|
|
Attr::Initialize();
|
|
|
|
rv = txMozillaXSLTProcessor::Startup();
|
|
if (NS_FAILED(rv)) {
|
|
NS_ERROR("Could not initialize txMozillaXSLTProcessor");
|
|
return rv;
|
|
}
|
|
|
|
rv = DOMStorageObserver::Init();
|
|
if (NS_FAILED(rv)) {
|
|
NS_ERROR("Could not initialize DOMStorageObserver");
|
|
return rv;
|
|
}
|
|
|
|
rv = nsCCUncollectableMarker::Init();
|
|
if (NS_FAILED(rv)) {
|
|
NS_ERROR("Could not initialize nsCCUncollectableMarker");
|
|
return rv;
|
|
}
|
|
|
|
rv = nsCSSRuleProcessor::Startup();
|
|
if (NS_FAILED(rv)) {
|
|
NS_ERROR("Could not initialize nsCSSRuleProcessor");
|
|
return rv;
|
|
}
|
|
|
|
#ifdef MOZ_XUL
|
|
rv = nsXULPopupManager::Init();
|
|
if (NS_FAILED(rv)) {
|
|
NS_ERROR("Could not initialize nsXULPopupManager");
|
|
return rv;
|
|
}
|
|
#endif
|
|
|
|
rv = nsFocusManager::Init();
|
|
if (NS_FAILED(rv)) {
|
|
NS_ERROR("Could not initialize nsFocusManager");
|
|
return rv;
|
|
}
|
|
|
|
AsyncLatencyLogger::InitializeStatics();
|
|
CubebUtils::InitLibrary();
|
|
|
|
nsContentSink::InitializeStatics();
|
|
nsHtml5Module::InitializeStatics();
|
|
mozilla::dom::FallbackEncoding::Initialize();
|
|
nsLayoutUtils::Initialize();
|
|
nsIPresShell::InitializeStatics();
|
|
nsRefreshDriver::InitializeStatics();
|
|
|
|
nsCORSListenerProxy::Startup();
|
|
|
|
NS_SealStaticAtomTable();
|
|
|
|
nsWindowMemoryReporter::Init();
|
|
|
|
SVGElementFactory::Init();
|
|
nsSVGUtils::Init();
|
|
|
|
ProcessPriorityManager::Init();
|
|
|
|
nsPermissionManager::AppClearDataObserverInit();
|
|
nsCookieService::AppClearDataObserverInit();
|
|
nsApplicationCacheService::AppClearDataObserverInit();
|
|
|
|
HTMLVideoElement::Init();
|
|
|
|
#ifdef MOZ_XUL
|
|
nsMenuBarListener::InitializeStatics();
|
|
#endif
|
|
|
|
CacheObserver::Init();
|
|
|
|
CounterStyleManager::InitializeBuiltinCounterStyles();
|
|
|
|
CameraPreferences::Initialize();
|
|
|
|
IMEStateManager::Init();
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
void
|
|
nsLayoutStatics::Shutdown()
|
|
{
|
|
// Don't need to shutdown nsWindowMemoryReporter, that will be done by the
|
|
// memory reporter manager.
|
|
|
|
nsFrameScriptExecutor::Shutdown();
|
|
nsFocusManager::Shutdown();
|
|
#ifdef MOZ_XUL
|
|
nsXULPopupManager::Shutdown();
|
|
#endif
|
|
DOMStorageObserver::Shutdown();
|
|
txMozillaXSLTProcessor::Shutdown();
|
|
Attr::Shutdown();
|
|
EventListenerManager::Shutdown();
|
|
IMEStateManager::Shutdown();
|
|
nsCSSParser::Shutdown();
|
|
nsCSSRuleProcessor::Shutdown();
|
|
nsTextFrameTextRunCache::Shutdown();
|
|
nsHTMLDNSPrefetch::Shutdown();
|
|
nsCSSRendering::Shutdown();
|
|
#ifdef DEBUG
|
|
nsFrame::DisplayReflowShutdown();
|
|
#endif
|
|
nsCellMap::Shutdown();
|
|
ActiveLayerTracker::Shutdown();
|
|
|
|
// Release all of our atoms
|
|
nsColorNames::ReleaseTable();
|
|
nsCSSProps::ReleaseTable();
|
|
nsCSSKeywords::ReleaseTable();
|
|
nsRepeatService::Shutdown();
|
|
nsStackLayout::Shutdown();
|
|
nsBox::Shutdown();
|
|
|
|
#ifdef MOZ_XUL
|
|
nsXULContentUtils::Finish();
|
|
nsXULPrototypeCache::ReleaseGlobals();
|
|
nsSprocketLayout::Shutdown();
|
|
#endif
|
|
|
|
SVGElementFactory::Shutdown();
|
|
nsMathMLOperators::ReleaseTable();
|
|
|
|
nsFloatManager::Shutdown();
|
|
nsImageFrame::ReleaseGlobals();
|
|
|
|
mozilla::css::ErrorReporter::ReleaseGlobals();
|
|
|
|
nsTextFragment::Shutdown();
|
|
|
|
nsAttrValue::Shutdown();
|
|
nsContentUtils::Shutdown();
|
|
nsLayoutStylesheetCache::Shutdown();
|
|
|
|
ShutdownJSEnvironment();
|
|
nsGlobalWindow::ShutDown();
|
|
nsDOMClassInfo::ShutDown();
|
|
nsListControlFrame::Shutdown();
|
|
nsXBLService::Shutdown();
|
|
nsAutoCopyListener::Shutdown();
|
|
FrameLayerBuilder::Shutdown();
|
|
|
|
#ifdef MOZ_ANDROID_OMX
|
|
AndroidMediaPluginHost::Shutdown();
|
|
#endif
|
|
|
|
#ifdef MOZ_GSTREAMER
|
|
GStreamerFormatHelper::Shutdown();
|
|
#endif
|
|
|
|
#ifdef MOZ_FFMPEG
|
|
FFmpegRuntimeLinker::Unlink();
|
|
#endif
|
|
|
|
CubebUtils::ShutdownLibrary();
|
|
AsyncLatencyLogger::ShutdownLogger();
|
|
WebAudioUtils::Shutdown();
|
|
|
|
#ifdef MOZ_WMF
|
|
WMFDecoder::UnloadDLLs();
|
|
#endif
|
|
|
|
#ifdef MOZ_WIDGET_GONK
|
|
nsVolumeService::Shutdown();
|
|
SpeakerManagerService::Shutdown();
|
|
#endif
|
|
|
|
#ifdef MOZ_WEBSPEECH
|
|
nsSynthVoiceRegistry::Shutdown();
|
|
#endif
|
|
|
|
nsCORSListenerProxy::Shutdown();
|
|
|
|
nsIPresShell::ReleaseStatics();
|
|
|
|
nsTreeSanitizer::ReleaseStatics();
|
|
|
|
nsHtml5Module::ReleaseStatics();
|
|
|
|
mozilla::dom::FallbackEncoding::Shutdown();
|
|
|
|
nsRegion::ShutdownStatic();
|
|
|
|
mozilla::EventDispatcher::Shutdown();
|
|
|
|
HTMLInputElement::DestroyUploadLastDir();
|
|
|
|
nsLayoutUtils::Shutdown();
|
|
|
|
nsHyphenationManager::Shutdown();
|
|
nsDOMMutationObserver::Shutdown();
|
|
|
|
AudioChannelService::Shutdown();
|
|
|
|
DataStoreService::Shutdown();
|
|
|
|
ContentParent::ShutDown();
|
|
|
|
nsRefreshDriver::Shutdown();
|
|
|
|
DisplayItemClip::Shutdown();
|
|
|
|
nsDocument::XPCOMShutdown();
|
|
|
|
CacheObserver::Shutdown();
|
|
|
|
CameraPreferences::Shutdown();
|
|
}
|