michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include "base/basictypes.h" michael@0: michael@0: #include "XPCModule.h" michael@0: #include "mozilla/ModuleUtils.h" michael@0: #include "nsImageModule.h" michael@0: #include "nsLayoutStatics.h" michael@0: #include "nsContentCID.h" michael@0: #include "nsContentDLF.h" michael@0: #include "nsContentPolicyUtils.h" michael@0: #include "nsDataDocumentContentPolicy.h" michael@0: #include "nsNoDataProtocolContentPolicy.h" michael@0: #include "nsDOMCID.h" michael@0: #include "nsHTMLContentSerializer.h" michael@0: #include "nsHTMLParts.h" michael@0: #include "nsIComponentManager.h" michael@0: #include "nsIContentIterator.h" michael@0: #include "nsIContentSerializer.h" michael@0: #include "nsIContentViewer.h" michael@0: #include "nsIController.h" michael@0: #include "nsIControllers.h" michael@0: #include "nsIDOMDOMImplementation.h" michael@0: #include "nsIDocument.h" michael@0: #include "nsIDocumentEncoder.h" michael@0: #include "nsIFactory.h" michael@0: #include "nsIFrameUtil.h" michael@0: #include "nsHTMLStyleSheet.h" michael@0: #include "nsILayoutDebugger.h" michael@0: #include "nsNameSpaceManager.h" michael@0: #include "nsINodeInfo.h" michael@0: #include "nsIObserver.h" michael@0: #include "nsIObserverService.h" michael@0: #include "nsIScriptNameSpaceManager.h" michael@0: #include "nsISelection.h" michael@0: #include "nsCaret.h" michael@0: #include "nsPlainTextSerializer.h" michael@0: #include "nsXMLContentSerializer.h" michael@0: #include "nsXHTMLContentSerializer.h" michael@0: #include "nsRuleNode.h" michael@0: #include "nsContentAreaDragDrop.h" michael@0: #include "nsContentList.h" michael@0: #include "nsBox.h" michael@0: #include "nsIFrameTraversal.h" michael@0: #include "nsLayoutCID.h" michael@0: #include "nsStyleSheetService.h" michael@0: #include "nsFocusManager.h" michael@0: #include "ThirdPartyUtil.h" michael@0: #include "nsStructuredCloneContainer.h" michael@0: michael@0: #include "nsIEventListenerService.h" michael@0: #include "nsIMessageManager.h" michael@0: michael@0: // Transformiix stuff michael@0: #include "mozilla/dom/XPathEvaluator.h" michael@0: #include "txMozillaXSLTProcessor.h" michael@0: #include "txNodeSetAdaptor.h" michael@0: michael@0: #include "mozilla/dom/DOMParser.h" michael@0: #include "nsDOMSerializer.h" michael@0: #include "nsXMLHttpRequest.h" michael@0: #include "nsChannelPolicy.h" michael@0: michael@0: // view stuff michael@0: #include "nsContentCreatorFunctions.h" michael@0: michael@0: // DOM includes michael@0: #include "nsDOMBlobBuilder.h" michael@0: #include "nsDOMFileReader.h" michael@0: michael@0: #include "gfxPlatform.h" michael@0: #include "nsFormData.h" michael@0: #include "nsHostObjectProtocolHandler.h" michael@0: #include "nsHostObjectURI.h" michael@0: #include "nsGlobalWindowCommands.h" michael@0: #include "nsIControllerCommandTable.h" michael@0: #include "nsJSProtocolHandler.h" michael@0: #include "nsScriptNameSpaceManager.h" michael@0: #include "nsIControllerContext.h" michael@0: #include "nsDOMScriptObjectFactory.h" michael@0: #include "DOMStorageManager.h" michael@0: #include "nsJSON.h" michael@0: #include "nsZipArchive.h" michael@0: #include "mozIApplicationClearPrivateDataParams.h" michael@0: #include "mozilla/Attributes.h" michael@0: #include "mozilla/dom/DOMException.h" michael@0: #include "mozilla/dom/DOMRequest.h" michael@0: #include "mozilla/dom/indexedDB/IndexedDatabaseManager.h" michael@0: #include "mozilla/dom/network/TCPSocketChild.h" michael@0: #include "mozilla/dom/network/TCPSocketParent.h" michael@0: #include "mozilla/dom/network/TCPServerSocketChild.h" michael@0: #include "mozilla/dom/network/UDPSocketChild.h" michael@0: #include "mozilla/dom/quota/QuotaManager.h" michael@0: #include "mozilla/OSFileConstants.h" michael@0: #include "mozilla/Services.h" michael@0: michael@0: #ifdef MOZ_WEBSPEECH michael@0: #include "mozilla/dom/FakeSpeechRecognitionService.h" michael@0: #include "mozilla/dom/nsSynthVoiceRegistry.h" michael@0: #endif michael@0: michael@0: #ifdef MOZ_WIDGET_GONK michael@0: #include "SystemWorkerManager.h" michael@0: using mozilla::dom::gonk::SystemWorkerManager; michael@0: #define SYSTEMWORKERMANAGER_CID \ michael@0: {0xd53b6524, 0x6ac3, 0x42b0, {0xae, 0xca, 0x62, 0xb3, 0xc4, 0xe5, 0x2b, 0x04}} michael@0: #define SYSTEMWORKERMANAGER_CONTRACTID \ michael@0: "@mozilla.org/telephony/system-worker-manager;1" michael@0: #endif michael@0: michael@0: #ifdef MOZ_B2G_BT michael@0: #include "BluetoothService.h" michael@0: using mozilla::dom::bluetooth::BluetoothService; michael@0: #define BLUETOOTHSERVICE_CID \ michael@0: {0xa753b487, 0x3344, 0x4de4, {0xad, 0x5f, 0x06, 0x36, 0x76, 0xa7, 0xc1, 0x04}} michael@0: #define BLUETOOTHSERVICE_CONTRACTID \ michael@0: "@mozilla.org/bluetooth/service;1" michael@0: #endif michael@0: michael@0: #ifdef MOZ_WIDGET_GONK michael@0: #include "AudioManager.h" michael@0: using mozilla::dom::gonk::AudioManager; michael@0: #include "nsVolumeService.h" michael@0: using mozilla::system::nsVolumeService; michael@0: #endif michael@0: michael@0: #include "AudioChannelAgent.h" michael@0: using mozilla::dom::AudioChannelAgent; michael@0: michael@0: // Editor stuff michael@0: #include "nsEditorCID.h" michael@0: #include "nsEditor.h" michael@0: #include "nsPlaintextEditor.h" michael@0: #include "nsEditorController.h" //CID michael@0: michael@0: #include "nsHTMLEditor.h" michael@0: #include "nsTextServicesDocument.h" michael@0: #include "nsTextServicesCID.h" michael@0: michael@0: #include "nsScriptSecurityManager.h" michael@0: #include "nsPrincipal.h" michael@0: #include "nsSystemPrincipal.h" michael@0: #include "nsNullPrincipal.h" michael@0: #include "nsNetCID.h" michael@0: #ifndef MOZ_WIDGET_GONK michael@0: #if defined(MOZ_WIDGET_ANDROID) michael@0: #include "nsHapticFeedback.h" michael@0: #endif michael@0: #endif michael@0: #include "nsParserUtils.h" michael@0: michael@0: #define NS_EDITORCOMMANDTABLE_CID \ michael@0: { 0x4f5e62b8, 0xd659, 0x4156, { 0x84, 0xfc, 0x2f, 0x60, 0x99, 0x40, 0x03, 0x69 }} michael@0: michael@0: #define NS_EDITINGCOMMANDTABLE_CID \ michael@0: { 0xcb38a746, 0xbeb8, 0x43f3, { 0x94, 0x29, 0x77, 0x96, 0xe1, 0xa9, 0x3f, 0xb4 }} michael@0: michael@0: #define NS_HAPTICFEEDBACK_CID \ michael@0: { 0x1f15dbc8, 0xbfaa, 0x45de, \ michael@0: { 0x8a, 0x46, 0x08, 0xe2, 0xe2, 0x63, 0x26, 0xb0 } } michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsPlaintextEditor) michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsParserUtils) michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextServicesDocument) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLEditor) michael@0: michael@0: #include "nsHTMLCanvasFrame.h" michael@0: michael@0: #include "nsIDOMWebGLRenderingContext.h" michael@0: michael@0: class nsIDocumentLoaderFactory; michael@0: michael@0: #define PRODUCT_NAME "Gecko" michael@0: michael@0: /* 0ddf4df8-4dbb-4133-8b79-9afb966514f5 */ michael@0: #define NS_PLUGINDOCLOADERFACTORY_CID \ michael@0: { 0x0ddf4df8, 0x4dbb, 0x4133, { 0x8b, 0x79, 0x9a, 0xfb, 0x96, 0x65, 0x14, 0xf5 } } michael@0: michael@0: #define NS_WINDOWCOMMANDTABLE_CID \ michael@0: { /* 0DE2FBFA-6B7F-11D7-BBBA-0003938A9D96 */ \ michael@0: 0x0DE2FBFA, 0x6B7F, 0x11D7, {0xBB, 0xBA, 0x00, 0x03, 0x93, 0x8A, 0x9D, 0x96} } michael@0: michael@0: #include "nsIBoxObject.h" michael@0: michael@0: #ifdef MOZ_XUL michael@0: #include "inDOMView.h" michael@0: #endif /* MOZ_XUL */ michael@0: michael@0: #include "inDeepTreeWalker.h" michael@0: #include "inFlasher.h" michael@0: #include "inCSSValueSearch.h" michael@0: #include "inDOMUtils.h" michael@0: michael@0: #ifdef MOZ_XUL michael@0: #include "nsIXULDocument.h" michael@0: #include "nsIXULSortService.h" michael@0: michael@0: nsresult michael@0: NS_NewXULContentBuilder(nsISupports* aOuter, REFNSIID aIID, void** aResult); michael@0: michael@0: nsresult michael@0: NS_NewXULTreeBuilder(nsISupports* aOuter, REFNSIID aIID, void** aResult); michael@0: #endif michael@0: michael@0: static void Shutdown(); michael@0: michael@0: #include "nsGeolocation.h" michael@0: #include "nsDeviceSensors.h" michael@0: #ifdef MOZ_GAMEPAD michael@0: #include "mozilla/dom/GamepadService.h" michael@0: #endif michael@0: #include "nsCSPService.h" michael@0: #include "nsISmsService.h" michael@0: #include "nsIMmsService.h" michael@0: #include "nsIMobileMessageService.h" michael@0: #include "nsIMobileMessageDatabaseService.h" michael@0: #include "mozilla/dom/mobilemessage/MobileMessageService.h" michael@0: #include "mozilla/dom/mobilemessage/SmsServicesFactory.h" michael@0: #include "nsIPowerManagerService.h" michael@0: #include "nsIAlarmHalService.h" michael@0: #include "nsIMediaManager.h" michael@0: #include "nsMixedContentBlocker.h" michael@0: michael@0: #include "AudioChannelService.h" michael@0: michael@0: #include "mozilla/dom/power/PowerManagerService.h" michael@0: #include "mozilla/dom/alarm/AlarmHalService.h" michael@0: #include "mozilla/dom/time/TimeService.h" michael@0: #include "StreamingProtocolService.h" michael@0: michael@0: #include "mozilla/dom/telephony/TelephonyFactory.h" michael@0: #include "nsITelephonyProvider.h" michael@0: michael@0: #ifdef MOZ_WIDGET_GONK michael@0: #include "GonkGPSGeolocationProvider.h" michael@0: #endif michael@0: #include "MediaManager.h" michael@0: michael@0: using namespace mozilla; michael@0: using namespace mozilla::dom; michael@0: using namespace mozilla::dom::mobilemessage; michael@0: using namespace mozilla::dom::telephony; michael@0: using mozilla::dom::alarm::AlarmHalService; michael@0: using mozilla::dom::indexedDB::IndexedDatabaseManager; michael@0: using mozilla::dom::power::PowerManagerService; michael@0: using mozilla::dom::quota::QuotaManager; michael@0: using mozilla::dom::TCPSocketChild; michael@0: using mozilla::dom::TCPSocketParent; michael@0: using mozilla::dom::TCPServerSocketChild; michael@0: using mozilla::dom::UDPSocketChild; michael@0: using mozilla::dom::time::TimeService; michael@0: using mozilla::net::StreamingProtocolControllerService; michael@0: michael@0: // Transformiix michael@0: /* 5d5d92cd-6bf8-11d9-bf4a-000a95dc234c */ michael@0: #define TRANSFORMIIX_NODESET_CID \ michael@0: { 0x5d5d92cd, 0x6bf8, 0x11d9, { 0xbf, 0x4a, 0x0, 0x0a, 0x95, 0xdc, 0x23, 0x4c } } michael@0: michael@0: #define TRANSFORMIIX_NODESET_CONTRACTID \ michael@0: "@mozilla.org/transformiix-nodeset;1" michael@0: michael@0: // Factory Constructor michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(txMozillaXSLTProcessor) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(XPathEvaluator) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(txNodeSetAdaptor, Init) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsDOMSerializer) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsXMLHttpRequest, Init) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsDOMFileReader, Init) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsFormData) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsBlobProtocolHandler) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsMediaStreamProtocolHandler) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsMediaSourceProtocolHandler) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsFontTableProtocolHandler) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsHostObjectURI) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(DOMParser) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(Exception) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(DOMSessionStorageManager) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(DOMLocalStorageManager) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsChannelPolicy) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(IndexedDatabaseManager, michael@0: IndexedDatabaseManager::FactoryCreate) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(DOMRequestService, michael@0: DOMRequestService::FactoryCreate) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(QuotaManager, michael@0: QuotaManager::FactoryCreate) michael@0: #ifdef MOZ_WIDGET_GONK michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(SystemWorkerManager, michael@0: SystemWorkerManager::FactoryCreate) michael@0: #endif michael@0: #ifdef MOZ_B2G_BT michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(BluetoothService, michael@0: BluetoothService::FactoryCreate) michael@0: #endif michael@0: michael@0: #ifdef MOZ_WEBSPEECH michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsSynthVoiceRegistry, michael@0: nsSynthVoiceRegistry::GetInstanceForService) michael@0: #endif michael@0: michael@0: #ifdef MOZ_WIDGET_GONK michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(AudioManager) michael@0: #endif michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(AudioChannelAgent) michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsDeviceSensors) michael@0: michael@0: #ifndef MOZ_WIDGET_GONK michael@0: #if defined(ANDROID) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsHapticFeedback) michael@0: #endif michael@0: #endif michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(ThirdPartyUtil, Init) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsISmsService, michael@0: SmsServicesFactory::CreateSmsService) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMmsService, michael@0: SmsServicesFactory::CreateMmsService) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMobileMessageService, michael@0: MobileMessageService::GetInstance) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMobileMessageDatabaseService, michael@0: SmsServicesFactory::CreateMobileMessageDatabaseService) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIPowerManagerService, michael@0: PowerManagerService::GetInstance) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIAlarmHalService, michael@0: AlarmHalService::GetInstance) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsITimeService, michael@0: TimeService::GetInstance) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIStreamingProtocolControllerService, michael@0: StreamingProtocolControllerService::GetInstance) michael@0: michael@0: #ifdef MOZ_GAMEPAD michael@0: using mozilla::dom::GamepadServiceTest; michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(GamepadServiceTest, michael@0: GamepadServiceTest::CreateService) michael@0: #endif michael@0: michael@0: #ifdef MOZ_WIDGET_GONK michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIGeolocationProvider, michael@0: GonkGPSGeolocationProvider::GetSingleton) michael@0: // Since the nsVolumeService constructor calls into nsIPowerManagerService, michael@0: // we need it to be constructed sometime after nsIPowerManagerService. michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsVolumeService, michael@0: nsVolumeService::GetSingleton) michael@0: #endif michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMediaManagerService, michael@0: MediaManager::GetInstance) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsITelephonyProvider, michael@0: TelephonyFactory::CreateTelephonyProvider) michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: michael@0: static bool gInitialized = false; michael@0: michael@0: // Perform our one-time intialization for this module michael@0: michael@0: // static michael@0: nsresult michael@0: Initialize() michael@0: { michael@0: if (gInitialized) { michael@0: NS_RUNTIMEABORT("Recursive layout module initialization"); michael@0: return NS_ERROR_FAILURE; michael@0: } michael@0: michael@0: static_assert(sizeof(uintptr_t) == sizeof(void*), michael@0: "Eeek! You'll need to adjust the size of uintptr_t to the " michael@0: "size of a pointer on your platform."); michael@0: michael@0: gInitialized = true; michael@0: michael@0: nsresult rv; michael@0: rv = xpcModuleCtor(); michael@0: if (NS_FAILED(rv)) michael@0: return rv; michael@0: michael@0: rv = nsLayoutStatics::Initialize(); michael@0: if (NS_FAILED(rv)) { michael@0: Shutdown(); michael@0: return rv; michael@0: } michael@0: michael@0: #ifdef DEBUG michael@0: nsStyleContext::AssertStyleStructMaxDifferenceValid(); michael@0: #endif michael@0: michael@0: return NS_OK; michael@0: } michael@0: michael@0: // Shutdown this module, releasing all of the module resources michael@0: michael@0: // static michael@0: void michael@0: Shutdown() michael@0: { michael@0: NS_PRECONDITION(gInitialized, "module not initialized"); michael@0: if (!gInitialized) michael@0: return; michael@0: michael@0: gInitialized = false; michael@0: michael@0: nsLayoutStatics::Release(); michael@0: } michael@0: michael@0: #ifdef DEBUG michael@0: nsresult NS_NewFrameUtil(nsIFrameUtil** aResult); michael@0: nsresult NS_NewLayoutDebugger(nsILayoutDebugger** aResult); michael@0: #endif michael@0: michael@0: nsresult NS_NewBoxObject(nsIBoxObject** aResult); michael@0: michael@0: #ifdef MOZ_XUL michael@0: nsresult NS_NewListBoxObject(nsIBoxObject** aResult); michael@0: nsresult NS_NewScrollBoxObject(nsIBoxObject** aResult); michael@0: nsresult NS_NewMenuBoxObject(nsIBoxObject** aResult); michael@0: nsresult NS_NewPopupBoxObject(nsIBoxObject** aResult); michael@0: nsresult NS_NewContainerBoxObject(nsIBoxObject** aResult); michael@0: nsresult NS_NewTreeBoxObject(nsIBoxObject** aResult); michael@0: #endif michael@0: michael@0: nsresult NS_NewCanvasRenderingContextWebGL(nsIDOMWebGLRenderingContext** aResult); michael@0: michael@0: nsresult NS_CreateFrameTraversal(nsIFrameTraversal** aResult); michael@0: michael@0: nsresult NS_NewDomSelection(nsISelection** aResult); michael@0: already_AddRefed NS_NewContentViewer(); michael@0: nsresult NS_NewGenRegularIterator(nsIContentIterator** aResult); michael@0: nsresult NS_NewGenSubtreeIterator(nsIContentIterator** aInstancePtrResult); michael@0: nsresult NS_NewContentDocumentLoaderFactory(nsIDocumentLoaderFactory** aResult); michael@0: nsresult NS_NewHTMLCopyTextEncoder(nsIDocumentEncoder** aResult); michael@0: nsresult NS_NewTextEncoder(nsIDocumentEncoder** aResult); michael@0: nsresult NS_NewContentPolicy(nsIContentPolicy** aResult); michael@0: michael@0: nsresult NS_NewEventListenerService(nsIEventListenerService** aResult); michael@0: nsresult NS_NewGlobalMessageManager(nsIMessageBroadcaster** aResult); michael@0: nsresult NS_NewParentProcessMessageManager(nsIMessageBroadcaster** aResult); michael@0: nsresult NS_NewChildProcessMessageManager(nsISyncMessageSender** aResult); michael@0: michael@0: nsresult NS_NewXULControllers(nsISupports* aOuter, REFNSIID aIID, void** aResult); michael@0: michael@0: #define MAKE_CTOR(ctor_, iface_, func_) \ michael@0: static nsresult \ michael@0: ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) \ michael@0: { \ michael@0: *aResult = nullptr; \ michael@0: if (aOuter) \ michael@0: return NS_ERROR_NO_AGGREGATION; \ michael@0: iface_* inst; \ michael@0: nsresult rv = func_(&inst); \ michael@0: if (NS_SUCCEEDED(rv)) { \ michael@0: rv = inst->QueryInterface(aIID, aResult); \ michael@0: NS_RELEASE(inst); \ michael@0: } \ michael@0: return rv; \ michael@0: } michael@0: michael@0: // As above, but expects michael@0: // already_AddRefed NS_NewFoo(); michael@0: // instead of michael@0: // nsresult NS_NewFoo(nsIFoo**); michael@0: #define MAKE_CTOR2(ctor_, iface_, func_) \ michael@0: static nsresult \ michael@0: ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) \ michael@0: { \ michael@0: *aResult = nullptr; \ michael@0: if (aOuter) { \ michael@0: return NS_ERROR_NO_AGGREGATION; \ michael@0: } \ michael@0: nsCOMPtr inst = func_(); \ michael@0: inst.forget(aResult); \ michael@0: return NS_OK; \ michael@0: } michael@0: michael@0: #ifdef DEBUG michael@0: MAKE_CTOR(CreateNewFrameUtil, nsIFrameUtil, NS_NewFrameUtil) michael@0: MAKE_CTOR(CreateNewLayoutDebugger, nsILayoutDebugger, NS_NewLayoutDebugger) michael@0: #endif michael@0: michael@0: MAKE_CTOR(CreateNewFrameTraversal, nsIFrameTraversal, NS_CreateFrameTraversal) michael@0: MAKE_CTOR(CreateNewBoxObject, nsIBoxObject, NS_NewBoxObject) michael@0: michael@0: #ifdef MOZ_XUL michael@0: MAKE_CTOR(CreateNewListBoxObject, nsIBoxObject, NS_NewListBoxObject) michael@0: MAKE_CTOR(CreateNewMenuBoxObject, nsIBoxObject, NS_NewMenuBoxObject) michael@0: MAKE_CTOR(CreateNewPopupBoxObject, nsIBoxObject, NS_NewPopupBoxObject) michael@0: MAKE_CTOR(CreateNewScrollBoxObject, nsIBoxObject, NS_NewScrollBoxObject) michael@0: MAKE_CTOR(CreateNewTreeBoxObject, nsIBoxObject, NS_NewTreeBoxObject) michael@0: MAKE_CTOR(CreateNewContainerBoxObject, nsIBoxObject, NS_NewContainerBoxObject) michael@0: #endif // MOZ_XUL michael@0: michael@0: #ifdef MOZ_XUL michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(inDOMView) michael@0: #endif michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(inDeepTreeWalker) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(inFlasher) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(inCSSValueSearch) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(inDOMUtils) michael@0: michael@0: MAKE_CTOR2(CreateContentViewer, nsIContentViewer, NS_NewContentViewer) michael@0: MAKE_CTOR(CreateHTMLDocument, nsIDocument, NS_NewHTMLDocument) michael@0: MAKE_CTOR(CreateXMLDocument, nsIDocument, NS_NewXMLDocument) michael@0: MAKE_CTOR(CreateSVGDocument, nsIDocument, NS_NewSVGDocument) michael@0: MAKE_CTOR(CreateImageDocument, nsIDocument, NS_NewImageDocument) michael@0: MAKE_CTOR(CreateDOMBlob, nsISupports, nsDOMMultipartFile::NewBlob) michael@0: MAKE_CTOR(CreateDOMFile, nsISupports, nsDOMMultipartFile::NewFile) michael@0: MAKE_CTOR(CreateDOMSelection, nsISelection, NS_NewDomSelection) michael@0: MAKE_CTOR2(CreateContentIterator, nsIContentIterator, NS_NewContentIterator) michael@0: MAKE_CTOR2(CreatePreContentIterator, nsIContentIterator, NS_NewPreContentIterator) michael@0: MAKE_CTOR2(CreateSubtreeIterator, nsIContentIterator, NS_NewContentSubtreeIterator) michael@0: MAKE_CTOR(CreateTextEncoder, nsIDocumentEncoder, NS_NewTextEncoder) michael@0: MAKE_CTOR(CreateHTMLCopyTextEncoder, nsIDocumentEncoder, NS_NewHTMLCopyTextEncoder) michael@0: MAKE_CTOR(CreateXMLContentSerializer, nsIContentSerializer, NS_NewXMLContentSerializer) michael@0: MAKE_CTOR(CreateHTMLContentSerializer, nsIContentSerializer, NS_NewHTMLContentSerializer) michael@0: MAKE_CTOR(CreateXHTMLContentSerializer, nsIContentSerializer, NS_NewXHTMLContentSerializer) michael@0: MAKE_CTOR(CreatePlainTextSerializer, nsIContentSerializer, NS_NewPlainTextSerializer) michael@0: MAKE_CTOR(CreateContentPolicy, nsIContentPolicy, NS_NewContentPolicy) michael@0: #ifdef MOZ_XUL michael@0: MAKE_CTOR(CreateXULSortService, nsIXULSortService, NS_NewXULSortService) michael@0: // NS_NewXULContentBuilder michael@0: // NS_NewXULTreeBuilder michael@0: MAKE_CTOR(CreateXULDocument, nsIXULDocument, NS_NewXULDocument) michael@0: // NS_NewXULControllers michael@0: #endif michael@0: MAKE_CTOR(CreateContentDLF, nsIDocumentLoaderFactory, NS_NewContentDocumentLoaderFactory) michael@0: MAKE_CTOR(CreateEventListenerService, nsIEventListenerService, NS_NewEventListenerService) michael@0: MAKE_CTOR(CreateGlobalMessageManager, nsIMessageBroadcaster, NS_NewGlobalMessageManager) michael@0: MAKE_CTOR(CreateParentMessageManager, nsIMessageBroadcaster, NS_NewParentProcessMessageManager) michael@0: MAKE_CTOR(CreateChildMessageManager, nsISyncMessageSender, NS_NewChildProcessMessageManager) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsDataDocumentContentPolicy) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsNoDataProtocolContentPolicy) michael@0: MAKE_CTOR(CreatePluginDocument, nsIDocument, NS_NewPluginDocument) michael@0: MAKE_CTOR(CreateVideoDocument, nsIDocument, NS_NewVideoDocument) michael@0: MAKE_CTOR(CreateFocusManager, nsIFocusManager, NS_NewFocusManager) michael@0: michael@0: MAKE_CTOR(CreateCanvasRenderingContextWebGL, nsIDOMWebGLRenderingContext, NS_NewCanvasRenderingContextWebGL) michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStyleSheetService, Init) michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsJSURI) michael@0: michael@0: // views are not refcounted, so this is the same as michael@0: // NS_GENERIC_FACTORY_CONSTRUCTOR without the NS_ADDREF/NS_RELEASE michael@0: #define NS_GENERIC_FACTORY_CONSTRUCTOR_NOREFS(_InstanceClass) \ michael@0: static nsresult \ michael@0: _InstanceClass##Constructor(nsISupports *aOuter, REFNSIID aIID, \ michael@0: void **aResult) \ michael@0: { \ michael@0: nsresult rv; \ michael@0: \ michael@0: *aResult = nullptr; \ michael@0: if (nullptr != aOuter) { \ michael@0: rv = NS_ERROR_NO_AGGREGATION; \ michael@0: return rv; \ michael@0: } \ michael@0: \ michael@0: _InstanceClass * inst = new _InstanceClass(); \ michael@0: if (nullptr == inst) { \ michael@0: rv = NS_ERROR_OUT_OF_MEMORY; \ michael@0: return rv; \ michael@0: } \ michael@0: rv = inst->QueryInterface(aIID, aResult); \ michael@0: \ michael@0: return rv; \ michael@0: } \ michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsDOMScriptObjectFactory) michael@0: michael@0: #define NS_GEOLOCATION_CID \ michael@0: { 0x1E1C3FF, 0x94A, 0xD048, { 0x44, 0xB4, 0x62, 0xD2, 0x9C, 0x7B, 0x4F, 0x39 } } michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(Geolocation, Init) michael@0: michael@0: #define NS_GEOLOCATION_SERVICE_CID \ michael@0: { 0x404d02a, 0x1CA, 0xAAAB, { 0x47, 0x62, 0x94, 0x4b, 0x1b, 0xf2, 0xf7, 0xb5 } } michael@0: michael@0: #define NS_AUDIOCHANNEL_SERVICE_CID \ michael@0: { 0xf712e983, 0x048a, 0x443f, { 0x88, 0x02, 0xfc, 0xc3, 0xd9, 0x27, 0xce, 0xac }} michael@0: michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsGeolocationService, nsGeolocationService::GetGeolocationService) michael@0: michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(AudioChannelService, AudioChannelService::GetAudioChannelService) michael@0: michael@0: #ifdef MOZ_WEBSPEECH michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(FakeSpeechRecognitionService) michael@0: #endif michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(CSPService) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsMixedContentBlocker) michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsPrincipal) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsSecurityNameSet) michael@0: NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsSystemPrincipal, michael@0: nsScriptSecurityManager::SystemPrincipalSingletonConstructor) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNullPrincipal, Init) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(nsStructuredCloneContainer) michael@0: michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(OSFileConstantsService) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(TCPSocketChild) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(TCPSocketParent) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(TCPServerSocketChild) michael@0: NS_GENERIC_FACTORY_CONSTRUCTOR(UDPSocketChild) michael@0: michael@0: #ifdef ACCESSIBILITY michael@0: #include "nsAccessibilityService.h" michael@0: michael@0: MAKE_CTOR(CreateA11yService, nsIAccessibilityService, NS_GetAccessibilityService) michael@0: #endif michael@0: michael@0: static nsresult michael@0: Construct_nsIScriptSecurityManager(nsISupports *aOuter, REFNSIID aIID, michael@0: void **aResult) michael@0: { michael@0: if (!aResult) michael@0: return NS_ERROR_NULL_POINTER; michael@0: *aResult = nullptr; michael@0: if (aOuter) michael@0: return NS_ERROR_NO_AGGREGATION; michael@0: nsScriptSecurityManager *obj = nsScriptSecurityManager::GetScriptSecurityManager(); michael@0: if (!obj) michael@0: return NS_ERROR_OUT_OF_MEMORY; michael@0: if (NS_FAILED(obj->QueryInterface(aIID, aResult))) michael@0: return NS_ERROR_FAILURE; michael@0: return NS_OK; michael@0: } michael@0: michael@0: #ifdef DEBUG michael@0: NS_DEFINE_NAMED_CID(NS_FRAME_UTIL_CID); michael@0: NS_DEFINE_NAMED_CID(NS_LAYOUT_DEBUGGER_CID); michael@0: #endif michael@0: NS_DEFINE_NAMED_CID(NS_FRAMETRAVERSAL_CID); michael@0: NS_DEFINE_NAMED_CID(NS_BOXOBJECT_CID); michael@0: #ifdef MOZ_XUL michael@0: NS_DEFINE_NAMED_CID(NS_LISTBOXOBJECT_CID); michael@0: NS_DEFINE_NAMED_CID(NS_MENUBOXOBJECT_CID); michael@0: NS_DEFINE_NAMED_CID(NS_POPUPBOXOBJECT_CID); michael@0: NS_DEFINE_NAMED_CID(NS_CONTAINERBOXOBJECT_CID); michael@0: NS_DEFINE_NAMED_CID(NS_SCROLLBOXOBJECT_CID); michael@0: NS_DEFINE_NAMED_CID(NS_TREEBOXOBJECT_CID); michael@0: #endif // MOZ_XUL michael@0: #ifdef MOZ_XUL michael@0: NS_DEFINE_NAMED_CID(IN_DOMVIEW_CID); michael@0: #endif michael@0: NS_DEFINE_NAMED_CID(IN_DEEPTREEWALKER_CID); michael@0: NS_DEFINE_NAMED_CID(IN_FLASHER_CID); michael@0: NS_DEFINE_NAMED_CID(IN_CSSVALUESEARCH_CID); michael@0: NS_DEFINE_NAMED_CID(IN_DOMUTILS_CID); michael@0: NS_DEFINE_NAMED_CID(NS_CONTENT_VIEWER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_HTMLDOCUMENT_CID); michael@0: NS_DEFINE_NAMED_CID(NS_XMLDOCUMENT_CID); michael@0: NS_DEFINE_NAMED_CID(NS_SVGDOCUMENT_CID); michael@0: NS_DEFINE_NAMED_CID(NS_IMAGEDOCUMENT_CID); michael@0: NS_DEFINE_NAMED_CID(NS_DOMMULTIPARTBLOB_CID); michael@0: NS_DEFINE_NAMED_CID(NS_DOMMULTIPARTFILE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_DOMSELECTION_CID); michael@0: NS_DEFINE_NAMED_CID(NS_CONTENTITERATOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_PRECONTENTITERATOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_SUBTREEITERATOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_CANVASRENDERINGCONTEXTWEBGL_CID); michael@0: NS_DEFINE_NAMED_CID(NS_TEXT_ENCODER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_HTMLCOPY_TEXT_ENCODER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_XMLCONTENTSERIALIZER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_XHTMLCONTENTSERIALIZER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_HTMLCONTENTSERIALIZER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_PLAINTEXTSERIALIZER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_PARSERUTILS_CID); michael@0: NS_DEFINE_NAMED_CID(NS_SCRIPTABLEUNESCAPEHTML_CID); michael@0: NS_DEFINE_NAMED_CID(NS_CONTENTPOLICY_CID); michael@0: NS_DEFINE_NAMED_CID(NS_DATADOCUMENTCONTENTPOLICY_CID); michael@0: NS_DEFINE_NAMED_CID(NS_NODATAPROTOCOLCONTENTPOLICY_CID); michael@0: NS_DEFINE_NAMED_CID(NS_XULCONTROLLERS_CID); michael@0: #ifdef MOZ_XUL michael@0: NS_DEFINE_NAMED_CID(NS_XULSORTSERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_XULTEMPLATEBUILDER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_XULTREEBUILDER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_XULDOCUMENT_CID); michael@0: #endif michael@0: NS_DEFINE_NAMED_CID(NS_CONTENT_DOCUMENT_LOADER_FACTORY_CID); michael@0: NS_DEFINE_NAMED_CID(NS_DOM_SCRIPT_OBJECT_FACTORY_CID); michael@0: NS_DEFINE_NAMED_CID(NS_JSPROTOCOLHANDLER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_JSURI_CID); michael@0: NS_DEFINE_NAMED_CID(NS_WINDOWCOMMANDTABLE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_WINDOWCONTROLLER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_PLUGINDOCLOADERFACTORY_CID); michael@0: NS_DEFINE_NAMED_CID(NS_PLUGINDOCUMENT_CID); michael@0: NS_DEFINE_NAMED_CID(NS_VIDEODOCUMENT_CID); michael@0: NS_DEFINE_NAMED_CID(NS_STYLESHEETSERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(TRANSFORMIIX_XSLT_PROCESSOR_CID); michael@0: NS_DEFINE_NAMED_CID(TRANSFORMIIX_XPATH_EVALUATOR_CID); michael@0: NS_DEFINE_NAMED_CID(TRANSFORMIIX_NODESET_CID); michael@0: NS_DEFINE_NAMED_CID(NS_XMLSERIALIZER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_FILEREADER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_FORMDATA_CID); michael@0: NS_DEFINE_NAMED_CID(NS_BLOBPROTOCOLHANDLER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_MEDIASTREAMPROTOCOLHANDLER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_MEDIASOURCEPROTOCOLHANDLER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_FONTTABLEPROTOCOLHANDLER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_HOSTOBJECTURI_CID); michael@0: NS_DEFINE_NAMED_CID(NS_XMLHTTPREQUEST_CID); michael@0: NS_DEFINE_NAMED_CID(NS_DOMPARSER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_DOMSESSIONSTORAGEMANAGER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_DOMLOCALSTORAGEMANAGER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_DOMJSON_CID); michael@0: NS_DEFINE_NAMED_CID(NS_TEXTEDITOR_CID); michael@0: NS_DEFINE_NAMED_CID(INDEXEDDB_MANAGER_CID); michael@0: NS_DEFINE_NAMED_CID(DOMREQUEST_SERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(QUOTA_MANAGER_CID); michael@0: #ifdef MOZ_WIDGET_GONK michael@0: NS_DEFINE_NAMED_CID(SYSTEMWORKERMANAGER_CID); michael@0: #endif michael@0: #ifdef MOZ_B2G_BT michael@0: NS_DEFINE_NAMED_CID(BLUETOOTHSERVICE_CID); michael@0: #endif michael@0: #ifdef MOZ_WIDGET_GONK michael@0: NS_DEFINE_NAMED_CID(NS_AUDIOMANAGER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_VOLUMESERVICE_CID); michael@0: #endif michael@0: michael@0: NS_DEFINE_NAMED_CID(NS_AUDIOCHANNELAGENT_CID); michael@0: michael@0: NS_DEFINE_NAMED_CID(NS_HTMLEDITOR_CID); michael@0: NS_DEFINE_NAMED_CID(NS_EDITORCONTROLLER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_EDITINGCONTROLLER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_EDITORCOMMANDTABLE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_EDITINGCOMMANDTABLE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_TEXTSERVICESDOCUMENT_CID); michael@0: NS_DEFINE_NAMED_CID(NS_GEOLOCATION_SERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_GEOLOCATION_CID); michael@0: NS_DEFINE_NAMED_CID(NS_AUDIOCHANNEL_SERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_FOCUSMANAGER_CID); michael@0: NS_DEFINE_NAMED_CID(CSPSERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_MIXEDCONTENTBLOCKER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_EVENTLISTENERSERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_GLOBALMESSAGEMANAGER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_PARENTPROCESSMESSAGEMANAGER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_CHILDPROCESSMESSAGEMANAGER_CID); michael@0: NS_DEFINE_NAMED_CID(NSCHANNELPOLICY_CID); michael@0: NS_DEFINE_NAMED_CID(NS_SCRIPTSECURITYMANAGER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_PRINCIPAL_CID); michael@0: NS_DEFINE_NAMED_CID(NS_SYSTEMPRINCIPAL_CID); michael@0: NS_DEFINE_NAMED_CID(NS_NULLPRINCIPAL_CID); michael@0: NS_DEFINE_NAMED_CID(NS_SECURITYNAMESET_CID); michael@0: NS_DEFINE_NAMED_CID(THIRDPARTYUTIL_CID); michael@0: NS_DEFINE_NAMED_CID(NS_STRUCTUREDCLONECONTAINER_CID); michael@0: NS_DEFINE_NAMED_CID(NS_DEVICE_SENSORS_CID); michael@0: michael@0: #ifndef MOZ_WIDGET_GONK michael@0: #if defined(ANDROID) michael@0: NS_DEFINE_NAMED_CID(NS_HAPTICFEEDBACK_CID); michael@0: #endif michael@0: #endif michael@0: NS_DEFINE_NAMED_CID(SMS_SERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(MMS_SERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(MOBILE_MESSAGE_SERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(MOBILE_MESSAGE_DATABASE_SERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_POWERMANAGERSERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(OSFILECONSTANTSSERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_ALARMHALSERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(TCPSOCKETCHILD_CID); michael@0: NS_DEFINE_NAMED_CID(TCPSOCKETPARENT_CID); michael@0: NS_DEFINE_NAMED_CID(TCPSERVERSOCKETCHILD_CID); michael@0: NS_DEFINE_NAMED_CID(UDPSOCKETCHILD_CID); michael@0: NS_DEFINE_NAMED_CID(NS_TIMESERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_MEDIASTREAMCONTROLLERSERVICE_CID); michael@0: #ifdef MOZ_WIDGET_GONK michael@0: NS_DEFINE_NAMED_CID(GONK_GPS_GEOLOCATION_PROVIDER_CID); michael@0: #endif michael@0: NS_DEFINE_NAMED_CID(NS_MEDIAMANAGERSERVICE_CID); michael@0: #ifdef MOZ_GAMEPAD michael@0: NS_DEFINE_NAMED_CID(NS_GAMEPAD_TEST_CID); michael@0: #endif michael@0: #ifdef MOZ_WEBSPEECH michael@0: NS_DEFINE_NAMED_CID(NS_FAKE_SPEECH_RECOGNITION_SERVICE_CID); michael@0: NS_DEFINE_NAMED_CID(NS_SYNTHVOICEREGISTRY_CID); michael@0: #endif michael@0: michael@0: #ifdef ACCESSIBILITY michael@0: NS_DEFINE_NAMED_CID(NS_ACCESSIBILITY_SERVICE_CID); michael@0: #endif michael@0: NS_DEFINE_NAMED_CID(TELEPHONY_PROVIDER_CID); michael@0: michael@0: static nsresult michael@0: CreateWindowCommandTableConstructor(nsISupports *aOuter, michael@0: REFNSIID aIID, void **aResult) michael@0: { michael@0: nsresult rv; michael@0: nsCOMPtr commandTable = michael@0: do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: rv = nsWindowCommandRegistration::RegisterWindowCommands(commandTable); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: return commandTable->QueryInterface(aIID, aResult); michael@0: } michael@0: michael@0: static nsresult michael@0: CreateWindowControllerWithSingletonCommandTable(nsISupports *aOuter, michael@0: REFNSIID aIID, void **aResult) michael@0: { michael@0: nsresult rv; michael@0: nsCOMPtr controller = michael@0: do_CreateInstance("@mozilla.org/embedcomp/base-command-controller;1", &rv); michael@0: michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: nsCOMPtr windowCommandTable = do_GetService(kNS_WINDOWCOMMANDTABLE_CID, &rv); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: // this is a singleton; make it immutable michael@0: windowCommandTable->MakeImmutable(); michael@0: michael@0: nsCOMPtr controllerContext = do_QueryInterface(controller, &rv); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: controllerContext->Init(windowCommandTable); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: return controller->QueryInterface(aIID, aResult); michael@0: } michael@0: michael@0: // Constructor of a controller which is set up to use, internally, a michael@0: // singleton command-table pre-filled with editor commands. michael@0: static nsresult michael@0: nsEditorControllerConstructor(nsISupports *aOuter, REFNSIID aIID, michael@0: void **aResult) michael@0: { michael@0: nsresult rv; michael@0: nsCOMPtr controller = do_CreateInstance("@mozilla.org/embedcomp/base-command-controller;1", &rv); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: nsCOMPtr editorCommandTable = do_GetService(kNS_EDITORCOMMANDTABLE_CID, &rv); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: // this guy is a singleton, so make it immutable michael@0: editorCommandTable->MakeImmutable(); michael@0: michael@0: nsCOMPtr controllerContext = do_QueryInterface(controller, &rv); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: rv = controllerContext->Init(editorCommandTable); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: return controller->QueryInterface(aIID, aResult); michael@0: } michael@0: michael@0: // Constructor of a controller which is set up to use, internally, a michael@0: // singleton command-table pre-filled with editing commands. michael@0: static nsresult michael@0: nsEditingControllerConstructor(nsISupports *aOuter, REFNSIID aIID, michael@0: void **aResult) michael@0: { michael@0: nsresult rv; michael@0: nsCOMPtr controller = do_CreateInstance("@mozilla.org/embedcomp/base-command-controller;1", &rv); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: nsCOMPtr editingCommandTable = do_GetService(kNS_EDITINGCOMMANDTABLE_CID, &rv); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: // this guy is a singleton, so make it immutable michael@0: editingCommandTable->MakeImmutable(); michael@0: michael@0: nsCOMPtr controllerContext = do_QueryInterface(controller, &rv); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: rv = controllerContext->Init(editingCommandTable); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: return controller->QueryInterface(aIID, aResult); michael@0: } michael@0: michael@0: // Constructor for a command-table pre-filled with editor commands michael@0: static nsresult michael@0: nsEditorCommandTableConstructor(nsISupports *aOuter, REFNSIID aIID, michael@0: void **aResult) michael@0: { michael@0: nsresult rv; michael@0: nsCOMPtr commandTable = michael@0: do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: rv = nsEditorController::RegisterEditorCommands(commandTable); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: // we don't know here whether we're being created as an instance, michael@0: // or a service, so we can't become immutable michael@0: michael@0: return commandTable->QueryInterface(aIID, aResult); michael@0: } michael@0: michael@0: // Constructor for a command-table pre-filled with editing commands michael@0: static nsresult michael@0: nsEditingCommandTableConstructor(nsISupports *aOuter, REFNSIID aIID, michael@0: void **aResult) michael@0: { michael@0: nsresult rv; michael@0: nsCOMPtr commandTable = michael@0: do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: rv = nsEditorController::RegisterEditingCommands(commandTable); michael@0: if (NS_FAILED(rv)) return rv; michael@0: michael@0: // we don't know here whether we're being created as an instance, michael@0: // or a service, so we can't become immutable michael@0: michael@0: return commandTable->QueryInterface(aIID, aResult); michael@0: } michael@0: michael@0: michael@0: static const mozilla::Module::CIDEntry kLayoutCIDs[] = { michael@0: XPCONNECT_CIDENTRIES michael@0: #ifdef DEBUG michael@0: { &kNS_FRAME_UTIL_CID, false, nullptr, CreateNewFrameUtil }, michael@0: { &kNS_LAYOUT_DEBUGGER_CID, false, nullptr, CreateNewLayoutDebugger }, michael@0: #endif michael@0: { &kNS_FRAMETRAVERSAL_CID, false, nullptr, CreateNewFrameTraversal }, michael@0: { &kNS_BOXOBJECT_CID, false, nullptr, CreateNewBoxObject }, michael@0: #ifdef MOZ_XUL michael@0: { &kNS_LISTBOXOBJECT_CID, false, nullptr, CreateNewListBoxObject }, michael@0: { &kNS_MENUBOXOBJECT_CID, false, nullptr, CreateNewMenuBoxObject }, michael@0: { &kNS_POPUPBOXOBJECT_CID, false, nullptr, CreateNewPopupBoxObject }, michael@0: { &kNS_CONTAINERBOXOBJECT_CID, false, nullptr, CreateNewContainerBoxObject }, michael@0: { &kNS_SCROLLBOXOBJECT_CID, false, nullptr, CreateNewScrollBoxObject }, michael@0: { &kNS_TREEBOXOBJECT_CID, false, nullptr, CreateNewTreeBoxObject }, michael@0: #endif // MOZ_XUL michael@0: #ifdef MOZ_XUL michael@0: { &kIN_DOMVIEW_CID, false, nullptr, inDOMViewConstructor }, michael@0: #endif michael@0: { &kIN_DEEPTREEWALKER_CID, false, nullptr, inDeepTreeWalkerConstructor }, michael@0: { &kIN_FLASHER_CID, false, nullptr, inFlasherConstructor }, michael@0: { &kIN_CSSVALUESEARCH_CID, false, nullptr, inCSSValueSearchConstructor }, michael@0: { &kIN_DOMUTILS_CID, false, nullptr, inDOMUtilsConstructor }, michael@0: { &kNS_CONTENT_VIEWER_CID, false, nullptr, CreateContentViewer }, michael@0: { &kNS_HTMLDOCUMENT_CID, false, nullptr, CreateHTMLDocument }, michael@0: { &kNS_XMLDOCUMENT_CID, false, nullptr, CreateXMLDocument }, michael@0: { &kNS_SVGDOCUMENT_CID, false, nullptr, CreateSVGDocument }, michael@0: { &kNS_IMAGEDOCUMENT_CID, false, nullptr, CreateImageDocument }, michael@0: { &kNS_DOMMULTIPARTBLOB_CID, false, nullptr, CreateDOMBlob }, michael@0: { &kNS_DOMMULTIPARTFILE_CID, false, nullptr, CreateDOMFile }, michael@0: { &kNS_DOMSELECTION_CID, false, nullptr, CreateDOMSelection }, michael@0: { &kNS_CONTENTITERATOR_CID, false, nullptr, CreateContentIterator }, michael@0: { &kNS_PRECONTENTITERATOR_CID, false, nullptr, CreatePreContentIterator }, michael@0: { &kNS_SUBTREEITERATOR_CID, false, nullptr, CreateSubtreeIterator }, michael@0: { &kNS_CANVASRENDERINGCONTEXTWEBGL_CID, false, nullptr, CreateCanvasRenderingContextWebGL }, michael@0: { &kNS_TEXT_ENCODER_CID, false, nullptr, CreateTextEncoder }, michael@0: { &kNS_HTMLCOPY_TEXT_ENCODER_CID, false, nullptr, CreateHTMLCopyTextEncoder }, michael@0: { &kNS_XMLCONTENTSERIALIZER_CID, false, nullptr, CreateXMLContentSerializer }, michael@0: { &kNS_HTMLCONTENTSERIALIZER_CID, false, nullptr, CreateHTMLContentSerializer }, michael@0: { &kNS_XHTMLCONTENTSERIALIZER_CID, false, nullptr, CreateXHTMLContentSerializer }, michael@0: { &kNS_PLAINTEXTSERIALIZER_CID, false, nullptr, CreatePlainTextSerializer }, michael@0: { &kNS_PARSERUTILS_CID, false, nullptr, nsParserUtilsConstructor }, michael@0: { &kNS_SCRIPTABLEUNESCAPEHTML_CID, false, nullptr, nsParserUtilsConstructor }, michael@0: { &kNS_CONTENTPOLICY_CID, false, nullptr, CreateContentPolicy }, michael@0: { &kNS_DATADOCUMENTCONTENTPOLICY_CID, false, nullptr, nsDataDocumentContentPolicyConstructor }, michael@0: { &kNS_NODATAPROTOCOLCONTENTPOLICY_CID, false, nullptr, nsNoDataProtocolContentPolicyConstructor }, michael@0: { &kNS_XULCONTROLLERS_CID, false, nullptr, NS_NewXULControllers }, michael@0: #ifdef MOZ_XUL michael@0: { &kNS_XULSORTSERVICE_CID, false, nullptr, CreateXULSortService }, michael@0: { &kNS_XULTEMPLATEBUILDER_CID, false, nullptr, NS_NewXULContentBuilder }, michael@0: { &kNS_XULTREEBUILDER_CID, false, nullptr, NS_NewXULTreeBuilder }, michael@0: { &kNS_XULDOCUMENT_CID, false, nullptr, CreateXULDocument }, michael@0: #endif michael@0: { &kNS_CONTENT_DOCUMENT_LOADER_FACTORY_CID, false, nullptr, CreateContentDLF }, michael@0: { &kNS_DOM_SCRIPT_OBJECT_FACTORY_CID, false, nullptr, nsDOMScriptObjectFactoryConstructor }, michael@0: { &kNS_JSPROTOCOLHANDLER_CID, false, nullptr, nsJSProtocolHandler::Create }, michael@0: { &kNS_JSURI_CID, false, nullptr, nsJSURIConstructor }, michael@0: { &kNS_WINDOWCOMMANDTABLE_CID, false, nullptr, CreateWindowCommandTableConstructor }, michael@0: { &kNS_WINDOWCONTROLLER_CID, false, nullptr, CreateWindowControllerWithSingletonCommandTable }, michael@0: { &kNS_PLUGINDOCLOADERFACTORY_CID, false, nullptr, CreateContentDLF }, michael@0: { &kNS_PLUGINDOCUMENT_CID, false, nullptr, CreatePluginDocument }, michael@0: { &kNS_VIDEODOCUMENT_CID, false, nullptr, CreateVideoDocument }, michael@0: { &kNS_STYLESHEETSERVICE_CID, false, nullptr, nsStyleSheetServiceConstructor }, michael@0: { &kTRANSFORMIIX_XSLT_PROCESSOR_CID, false, nullptr, txMozillaXSLTProcessorConstructor }, michael@0: { &kTRANSFORMIIX_XPATH_EVALUATOR_CID, false, nullptr, XPathEvaluatorConstructor }, michael@0: { &kTRANSFORMIIX_NODESET_CID, false, nullptr, txNodeSetAdaptorConstructor }, michael@0: { &kNS_XMLSERIALIZER_CID, false, nullptr, nsDOMSerializerConstructor }, michael@0: { &kNS_FILEREADER_CID, false, nullptr, nsDOMFileReaderConstructor }, michael@0: { &kNS_FORMDATA_CID, false, nullptr, nsFormDataConstructor }, michael@0: { &kNS_BLOBPROTOCOLHANDLER_CID, false, nullptr, nsBlobProtocolHandlerConstructor }, michael@0: { &kNS_MEDIASTREAMPROTOCOLHANDLER_CID, false, nullptr, nsMediaStreamProtocolHandlerConstructor }, michael@0: { &kNS_MEDIASOURCEPROTOCOLHANDLER_CID, false, nullptr, nsMediaSourceProtocolHandlerConstructor }, michael@0: { &kNS_FONTTABLEPROTOCOLHANDLER_CID, false, nullptr, nsFontTableProtocolHandlerConstructor }, michael@0: { &kNS_HOSTOBJECTURI_CID, false, nullptr, nsHostObjectURIConstructor }, michael@0: { &kNS_XMLHTTPREQUEST_CID, false, nullptr, nsXMLHttpRequestConstructor }, michael@0: { &kNS_DOMPARSER_CID, false, nullptr, DOMParserConstructor }, michael@0: { &kNS_XPCEXCEPTION_CID, false, nullptr, ExceptionConstructor }, michael@0: { &kNS_DOMSESSIONSTORAGEMANAGER_CID, false, nullptr, DOMSessionStorageManagerConstructor }, michael@0: { &kNS_DOMLOCALSTORAGEMANAGER_CID, false, nullptr, DOMLocalStorageManagerConstructor }, michael@0: { &kNS_DOMJSON_CID, false, nullptr, NS_NewJSON }, michael@0: { &kNS_TEXTEDITOR_CID, false, nullptr, nsPlaintextEditorConstructor }, michael@0: { &kINDEXEDDB_MANAGER_CID, false, nullptr, IndexedDatabaseManagerConstructor }, michael@0: { &kDOMREQUEST_SERVICE_CID, false, nullptr, DOMRequestServiceConstructor }, michael@0: { &kQUOTA_MANAGER_CID, false, nullptr, QuotaManagerConstructor }, michael@0: #ifdef MOZ_WIDGET_GONK michael@0: { &kSYSTEMWORKERMANAGER_CID, true, nullptr, SystemWorkerManagerConstructor }, michael@0: #endif michael@0: #ifdef MOZ_B2G_BT michael@0: { &kBLUETOOTHSERVICE_CID, true, nullptr, BluetoothServiceConstructor }, michael@0: #endif michael@0: #ifdef MOZ_WIDGET_GONK michael@0: { &kNS_AUDIOMANAGER_CID, true, nullptr, AudioManagerConstructor }, michael@0: { &kNS_VOLUMESERVICE_CID, true, nullptr, nsVolumeServiceConstructor }, michael@0: #endif michael@0: { &kNS_AUDIOCHANNELAGENT_CID, true, nullptr, AudioChannelAgentConstructor }, michael@0: { &kNS_HTMLEDITOR_CID, false, nullptr, nsHTMLEditorConstructor }, michael@0: { &kNS_EDITORCONTROLLER_CID, false, nullptr, nsEditorControllerConstructor }, michael@0: { &kNS_EDITINGCONTROLLER_CID, false, nullptr, nsEditingControllerConstructor }, michael@0: { &kNS_EDITORCOMMANDTABLE_CID, false, nullptr, nsEditorCommandTableConstructor }, michael@0: { &kNS_EDITINGCOMMANDTABLE_CID, false, nullptr, nsEditingCommandTableConstructor }, michael@0: { &kNS_TEXTSERVICESDOCUMENT_CID, false, nullptr, nsTextServicesDocumentConstructor }, michael@0: { &kNS_GEOLOCATION_SERVICE_CID, false, nullptr, nsGeolocationServiceConstructor }, michael@0: { &kNS_GEOLOCATION_CID, false, nullptr, GeolocationConstructor }, michael@0: { &kNS_AUDIOCHANNEL_SERVICE_CID, false, nullptr, AudioChannelServiceConstructor }, michael@0: { &kNS_FOCUSMANAGER_CID, false, nullptr, CreateFocusManager }, michael@0: #ifdef MOZ_WEBSPEECH michael@0: { &kNS_FAKE_SPEECH_RECOGNITION_SERVICE_CID, false, nullptr, FakeSpeechRecognitionServiceConstructor }, michael@0: { &kNS_SYNTHVOICEREGISTRY_CID, true, nullptr, nsSynthVoiceRegistryConstructor }, michael@0: #endif michael@0: { &kCSPSERVICE_CID, false, nullptr, CSPServiceConstructor }, michael@0: { &kNS_MIXEDCONTENTBLOCKER_CID, false, nullptr, nsMixedContentBlockerConstructor }, michael@0: { &kNS_EVENTLISTENERSERVICE_CID, false, nullptr, CreateEventListenerService }, michael@0: { &kNS_GLOBALMESSAGEMANAGER_CID, false, nullptr, CreateGlobalMessageManager }, michael@0: { &kNS_PARENTPROCESSMESSAGEMANAGER_CID, false, nullptr, CreateParentMessageManager }, michael@0: { &kNS_CHILDPROCESSMESSAGEMANAGER_CID, false, nullptr, CreateChildMessageManager }, michael@0: { &kNSCHANNELPOLICY_CID, false, nullptr, nsChannelPolicyConstructor }, michael@0: { &kNS_SCRIPTSECURITYMANAGER_CID, false, nullptr, Construct_nsIScriptSecurityManager }, michael@0: { &kNS_PRINCIPAL_CID, false, nullptr, nsPrincipalConstructor }, michael@0: { &kNS_SYSTEMPRINCIPAL_CID, false, nullptr, nsSystemPrincipalConstructor }, michael@0: { &kNS_NULLPRINCIPAL_CID, false, nullptr, nsNullPrincipalConstructor }, michael@0: { &kNS_SECURITYNAMESET_CID, false, nullptr, nsSecurityNameSetConstructor }, michael@0: { &kNS_DEVICE_SENSORS_CID, false, nullptr, nsDeviceSensorsConstructor }, michael@0: #ifndef MOZ_WIDGET_GONK michael@0: #if defined(ANDROID) michael@0: { &kNS_HAPTICFEEDBACK_CID, false, nullptr, nsHapticFeedbackConstructor }, michael@0: #endif michael@0: #endif michael@0: { &kTHIRDPARTYUTIL_CID, false, nullptr, ThirdPartyUtilConstructor }, michael@0: { &kNS_STRUCTUREDCLONECONTAINER_CID, false, nullptr, nsStructuredCloneContainerConstructor }, michael@0: { &kSMS_SERVICE_CID, false, nullptr, nsISmsServiceConstructor }, michael@0: { &kMMS_SERVICE_CID, false, nullptr, nsIMmsServiceConstructor }, michael@0: { &kMOBILE_MESSAGE_SERVICE_CID, false, nullptr, nsIMobileMessageServiceConstructor }, michael@0: { &kMOBILE_MESSAGE_DATABASE_SERVICE_CID, false, nullptr, nsIMobileMessageDatabaseServiceConstructor }, michael@0: { &kNS_POWERMANAGERSERVICE_CID, false, nullptr, nsIPowerManagerServiceConstructor }, michael@0: { &kOSFILECONSTANTSSERVICE_CID, true, nullptr, OSFileConstantsServiceConstructor }, michael@0: { &kNS_ALARMHALSERVICE_CID, false, nullptr, nsIAlarmHalServiceConstructor }, michael@0: { &kTCPSOCKETCHILD_CID, false, nullptr, TCPSocketChildConstructor }, michael@0: { &kTCPSOCKETPARENT_CID, false, nullptr, TCPSocketParentConstructor }, michael@0: { &kTCPSERVERSOCKETCHILD_CID, false, nullptr, TCPServerSocketChildConstructor }, michael@0: { &kUDPSOCKETCHILD_CID, false, nullptr, UDPSocketChildConstructor }, michael@0: { &kNS_TIMESERVICE_CID, false, nullptr, nsITimeServiceConstructor }, michael@0: { &kNS_MEDIASTREAMCONTROLLERSERVICE_CID, false, nullptr, nsIStreamingProtocolControllerServiceConstructor }, michael@0: #ifdef MOZ_WIDGET_GONK michael@0: { &kGONK_GPS_GEOLOCATION_PROVIDER_CID, false, nullptr, nsIGeolocationProviderConstructor }, michael@0: #endif michael@0: { &kNS_MEDIAMANAGERSERVICE_CID, false, nullptr, nsIMediaManagerServiceConstructor }, michael@0: #ifdef MOZ_GAMEPAD michael@0: { &kNS_GAMEPAD_TEST_CID, false, nullptr, GamepadServiceTestConstructor }, michael@0: #endif michael@0: #ifdef ACCESSIBILITY michael@0: { &kNS_ACCESSIBILITY_SERVICE_CID, false, nullptr, CreateA11yService }, michael@0: #endif michael@0: { &kTELEPHONY_PROVIDER_CID, false, nullptr, nsITelephonyProviderConstructor }, michael@0: { nullptr } michael@0: }; michael@0: michael@0: static const mozilla::Module::ContractIDEntry kLayoutContracts[] = { michael@0: XPCONNECT_CONTRACTS michael@0: { "@mozilla.org/layout/xul-boxobject;1", &kNS_BOXOBJECT_CID }, michael@0: #ifdef MOZ_XUL michael@0: { "@mozilla.org/layout/xul-boxobject-listbox;1", &kNS_LISTBOXOBJECT_CID }, michael@0: { "@mozilla.org/layout/xul-boxobject-menu;1", &kNS_MENUBOXOBJECT_CID }, michael@0: { "@mozilla.org/layout/xul-boxobject-popup;1", &kNS_POPUPBOXOBJECT_CID }, michael@0: { "@mozilla.org/layout/xul-boxobject-container;1", &kNS_CONTAINERBOXOBJECT_CID }, michael@0: { "@mozilla.org/layout/xul-boxobject-scrollbox;1", &kNS_SCROLLBOXOBJECT_CID }, michael@0: { "@mozilla.org/layout/xul-boxobject-tree;1", &kNS_TREEBOXOBJECT_CID }, michael@0: #endif // MOZ_XUL michael@0: #ifdef MOZ_XUL michael@0: { "@mozilla.org/inspector/dom-view;1", &kIN_DOMVIEW_CID }, michael@0: #endif michael@0: { "@mozilla.org/inspector/deep-tree-walker;1", &kIN_DEEPTREEWALKER_CID }, michael@0: { "@mozilla.org/inspector/flasher;1", &kIN_FLASHER_CID }, michael@0: { "@mozilla.org/inspector/search;1?type=cssvalue", &kIN_CSSVALUESEARCH_CID }, michael@0: { IN_DOMUTILS_CONTRACTID, &kIN_DOMUTILS_CID }, michael@0: { "@mozilla.org/xml/xml-document;1", &kNS_XMLDOCUMENT_CID }, michael@0: { "@mozilla.org/svg/svg-document;1", &kNS_SVGDOCUMENT_CID }, michael@0: { NS_DOMMULTIPARTBLOB_CONTRACTID, &kNS_DOMMULTIPARTBLOB_CID }, michael@0: { NS_DOMMULTIPARTFILE_CONTRACTID, &kNS_DOMMULTIPARTFILE_CID }, michael@0: { "@mozilla.org/content/dom-selection;1", &kNS_DOMSELECTION_CID }, michael@0: { "@mozilla.org/content/post-content-iterator;1", &kNS_CONTENTITERATOR_CID }, michael@0: { "@mozilla.org/content/pre-content-iterator;1", &kNS_PRECONTENTITERATOR_CID }, michael@0: { "@mozilla.org/content/subtree-content-iterator;1", &kNS_SUBTREEITERATOR_CID }, michael@0: { "@mozilla.org/content/canvas-rendering-context;1?id=experimental-webgl", &kNS_CANVASRENDERINGCONTEXTWEBGL_CID }, michael@0: #ifdef MOZ_WEBGL_CONFORMANT michael@0: { "@mozilla.org/content/canvas-rendering-context;1?id=webgl", &kNS_CANVASRENDERINGCONTEXTWEBGL_CID }, michael@0: #endif michael@0: { NS_DOC_ENCODER_CONTRACTID_BASE "text/xml", &kNS_TEXT_ENCODER_CID }, michael@0: { NS_DOC_ENCODER_CONTRACTID_BASE "application/xml", &kNS_TEXT_ENCODER_CID }, michael@0: { NS_DOC_ENCODER_CONTRACTID_BASE "application/xhtml+xml", &kNS_TEXT_ENCODER_CID }, michael@0: { NS_DOC_ENCODER_CONTRACTID_BASE "image/svg+xml", &kNS_TEXT_ENCODER_CID }, michael@0: { NS_DOC_ENCODER_CONTRACTID_BASE "text/html", &kNS_TEXT_ENCODER_CID }, michael@0: { NS_DOC_ENCODER_CONTRACTID_BASE "text/plain", &kNS_TEXT_ENCODER_CID }, michael@0: { NS_HTMLCOPY_ENCODER_CONTRACTID, &kNS_HTMLCOPY_TEXT_ENCODER_CID }, michael@0: { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/xml", &kNS_XMLCONTENTSERIALIZER_CID }, michael@0: { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/xml", &kNS_XMLCONTENTSERIALIZER_CID }, michael@0: { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/xhtml+xml", &kNS_XHTMLCONTENTSERIALIZER_CID }, michael@0: { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "image/svg+xml", &kNS_XMLCONTENTSERIALIZER_CID }, michael@0: { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/html", &kNS_HTMLCONTENTSERIALIZER_CID }, michael@0: { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/vnd.mozilla.xul+xml", &kNS_XMLCONTENTSERIALIZER_CID }, michael@0: { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/plain", &kNS_PLAINTEXTSERIALIZER_CID }, michael@0: { NS_PARSERUTILS_CONTRACTID, &kNS_PARSERUTILS_CID }, michael@0: { NS_SCRIPTABLEUNESCAPEHTML_CONTRACTID, &kNS_SCRIPTABLEUNESCAPEHTML_CID }, michael@0: { NS_CONTENTPOLICY_CONTRACTID, &kNS_CONTENTPOLICY_CID }, michael@0: { NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID, &kNS_DATADOCUMENTCONTENTPOLICY_CID }, michael@0: { NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID, &kNS_NODATAPROTOCOLCONTENTPOLICY_CID }, michael@0: { "@mozilla.org/xul/xul-controllers;1", &kNS_XULCONTROLLERS_CID }, michael@0: #ifdef MOZ_XUL michael@0: { "@mozilla.org/xul/xul-sort-service;1", &kNS_XULSORTSERVICE_CID }, michael@0: { "@mozilla.org/xul/xul-template-builder;1", &kNS_XULTEMPLATEBUILDER_CID }, michael@0: { "@mozilla.org/xul/xul-tree-builder;1", &kNS_XULTREEBUILDER_CID }, michael@0: { "@mozilla.org/xul/xul-document;1", &kNS_XULDOCUMENT_CID }, michael@0: #endif michael@0: { CONTENT_DLF_CONTRACTID, &kNS_CONTENT_DOCUMENT_LOADER_FACTORY_CID }, michael@0: { NS_JSPROTOCOLHANDLER_CONTRACTID, &kNS_JSPROTOCOLHANDLER_CID }, michael@0: { NS_WINDOWCONTROLLER_CONTRACTID, &kNS_WINDOWCONTROLLER_CID }, michael@0: { PLUGIN_DLF_CONTRACTID, &kNS_PLUGINDOCLOADERFACTORY_CID }, michael@0: { NS_STYLESHEETSERVICE_CONTRACTID, &kNS_STYLESHEETSERVICE_CID }, michael@0: { TRANSFORMIIX_XSLT_PROCESSOR_CONTRACTID, &kTRANSFORMIIX_XSLT_PROCESSOR_CID }, michael@0: { NS_XPATH_EVALUATOR_CONTRACTID, &kTRANSFORMIIX_XPATH_EVALUATOR_CID }, michael@0: { TRANSFORMIIX_NODESET_CONTRACTID, &kTRANSFORMIIX_NODESET_CID }, michael@0: { NS_XMLSERIALIZER_CONTRACTID, &kNS_XMLSERIALIZER_CID }, michael@0: { NS_FILEREADER_CONTRACTID, &kNS_FILEREADER_CID }, michael@0: { NS_FORMDATA_CONTRACTID, &kNS_FORMDATA_CID }, michael@0: { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX BLOBURI_SCHEME, &kNS_BLOBPROTOCOLHANDLER_CID }, michael@0: { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX MEDIASTREAMURI_SCHEME, &kNS_MEDIASTREAMPROTOCOLHANDLER_CID }, michael@0: { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX MEDIASOURCEURI_SCHEME, &kNS_MEDIASOURCEPROTOCOLHANDLER_CID }, michael@0: { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX FONTTABLEURI_SCHEME, &kNS_FONTTABLEPROTOCOLHANDLER_CID }, michael@0: { NS_XMLHTTPREQUEST_CONTRACTID, &kNS_XMLHTTPREQUEST_CID }, michael@0: { NS_DOMPARSER_CONTRACTID, &kNS_DOMPARSER_CID }, michael@0: { XPC_EXCEPTION_CONTRACTID, &kNS_XPCEXCEPTION_CID }, michael@0: { "@mozilla.org/dom/localStorage-manager;1", &kNS_DOMLOCALSTORAGEMANAGER_CID }, michael@0: // Keeping the old ContractID for backward compatibility michael@0: { "@mozilla.org/dom/storagemanager;1", &kNS_DOMLOCALSTORAGEMANAGER_CID }, michael@0: { "@mozilla.org/dom/sessionStorage-manager;1", &kNS_DOMSESSIONSTORAGEMANAGER_CID }, michael@0: { "@mozilla.org/dom/json;1", &kNS_DOMJSON_CID }, michael@0: { "@mozilla.org/editor/texteditor;1", &kNS_TEXTEDITOR_CID }, michael@0: { INDEXEDDB_MANAGER_CONTRACTID, &kINDEXEDDB_MANAGER_CID }, michael@0: { DOMREQUEST_SERVICE_CONTRACTID, &kDOMREQUEST_SERVICE_CID }, michael@0: { QUOTA_MANAGER_CONTRACTID, &kQUOTA_MANAGER_CID }, michael@0: #ifdef MOZ_WIDGET_GONK michael@0: { SYSTEMWORKERMANAGER_CONTRACTID, &kSYSTEMWORKERMANAGER_CID }, michael@0: #endif michael@0: #ifdef MOZ_B2G_BT michael@0: { BLUETOOTHSERVICE_CONTRACTID, &kBLUETOOTHSERVICE_CID }, michael@0: #endif michael@0: #ifdef MOZ_WIDGET_GONK michael@0: { NS_AUDIOMANAGER_CONTRACTID, &kNS_AUDIOMANAGER_CID }, michael@0: { NS_VOLUMESERVICE_CONTRACTID, &kNS_VOLUMESERVICE_CID }, michael@0: #endif michael@0: { NS_AUDIOCHANNELAGENT_CONTRACTID, &kNS_AUDIOCHANNELAGENT_CID }, michael@0: { "@mozilla.org/editor/htmleditor;1", &kNS_HTMLEDITOR_CID }, michael@0: { "@mozilla.org/editor/editorcontroller;1", &kNS_EDITORCONTROLLER_CID }, michael@0: { "@mozilla.org/editor/editingcontroller;1", &kNS_EDITINGCONTROLLER_CID }, michael@0: { "@mozilla.org/textservices/textservicesdocument;1", &kNS_TEXTSERVICESDOCUMENT_CID }, michael@0: { "@mozilla.org/geolocation/service;1", &kNS_GEOLOCATION_SERVICE_CID }, michael@0: { "@mozilla.org/geolocation;1", &kNS_GEOLOCATION_CID }, michael@0: { "@mozilla.org/audiochannel/service;1", &kNS_AUDIOCHANNEL_SERVICE_CID }, michael@0: { "@mozilla.org/focus-manager;1", &kNS_FOCUSMANAGER_CID }, michael@0: #ifdef MOZ_WEBSPEECH michael@0: { NS_SPEECH_RECOGNITION_SERVICE_CONTRACTID_PREFIX "fake", &kNS_FAKE_SPEECH_RECOGNITION_SERVICE_CID }, michael@0: { NS_SYNTHVOICEREGISTRY_CONTRACTID, &kNS_SYNTHVOICEREGISTRY_CID }, michael@0: #endif michael@0: { CSPSERVICE_CONTRACTID, &kCSPSERVICE_CID }, michael@0: { NS_MIXEDCONTENTBLOCKER_CONTRACTID, &kNS_MIXEDCONTENTBLOCKER_CID }, michael@0: { NS_EVENTLISTENERSERVICE_CONTRACTID, &kNS_EVENTLISTENERSERVICE_CID }, michael@0: { NS_GLOBALMESSAGEMANAGER_CONTRACTID, &kNS_GLOBALMESSAGEMANAGER_CID }, michael@0: { NS_PARENTPROCESSMESSAGEMANAGER_CONTRACTID, &kNS_PARENTPROCESSMESSAGEMANAGER_CID }, michael@0: { NS_CHILDPROCESSMESSAGEMANAGER_CONTRACTID, &kNS_CHILDPROCESSMESSAGEMANAGER_CID }, michael@0: { NSCHANNELPOLICY_CONTRACTID, &kNSCHANNELPOLICY_CID }, michael@0: { NS_SCRIPTSECURITYMANAGER_CONTRACTID, &kNS_SCRIPTSECURITYMANAGER_CID }, michael@0: { NS_GLOBAL_CHANNELEVENTSINK_CONTRACTID, &kNS_SCRIPTSECURITYMANAGER_CID }, michael@0: { NS_PRINCIPAL_CONTRACTID, &kNS_PRINCIPAL_CID }, michael@0: { NS_SYSTEMPRINCIPAL_CONTRACTID, &kNS_SYSTEMPRINCIPAL_CID }, michael@0: { NS_NULLPRINCIPAL_CONTRACTID, &kNS_NULLPRINCIPAL_CID }, michael@0: { NS_SECURITYNAMESET_CONTRACTID, &kNS_SECURITYNAMESET_CID }, michael@0: { NS_DEVICE_SENSORS_CONTRACTID, &kNS_DEVICE_SENSORS_CID }, michael@0: #ifndef MOZ_WIDGET_GONK michael@0: #if defined(ANDROID) michael@0: { "@mozilla.org/widget/hapticfeedback;1", &kNS_HAPTICFEEDBACK_CID }, michael@0: #endif michael@0: #endif michael@0: { THIRDPARTYUTIL_CONTRACTID, &kTHIRDPARTYUTIL_CID }, michael@0: { NS_STRUCTUREDCLONECONTAINER_CONTRACTID, &kNS_STRUCTUREDCLONECONTAINER_CID }, michael@0: { SMS_SERVICE_CONTRACTID, &kSMS_SERVICE_CID }, michael@0: { MMS_SERVICE_CONTRACTID, &kMMS_SERVICE_CID }, michael@0: { MOBILE_MESSAGE_SERVICE_CONTRACTID, &kMOBILE_MESSAGE_SERVICE_CID }, michael@0: { MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID, &kMOBILE_MESSAGE_DATABASE_SERVICE_CID }, michael@0: { POWERMANAGERSERVICE_CONTRACTID, &kNS_POWERMANAGERSERVICE_CID }, michael@0: { OSFILECONSTANTSSERVICE_CONTRACTID, &kOSFILECONSTANTSSERVICE_CID }, michael@0: { ALARMHALSERVICE_CONTRACTID, &kNS_ALARMHALSERVICE_CID }, michael@0: { "@mozilla.org/tcp-socket-child;1", &kTCPSOCKETCHILD_CID }, michael@0: { "@mozilla.org/tcp-socket-parent;1", &kTCPSOCKETPARENT_CID }, michael@0: { "@mozilla.org/tcp-server-socket-child;1", &kTCPSERVERSOCKETCHILD_CID }, michael@0: { "@mozilla.org/udp-socket-child;1", &kUDPSOCKETCHILD_CID }, michael@0: { TIMESERVICE_CONTRACTID, &kNS_TIMESERVICE_CID }, michael@0: { MEDIASTREAMCONTROLLERSERVICE_CONTRACTID, &kNS_MEDIASTREAMCONTROLLERSERVICE_CID }, michael@0: #ifdef MOZ_WIDGET_GONK michael@0: { GONK_GPS_GEOLOCATION_PROVIDER_CONTRACTID, &kGONK_GPS_GEOLOCATION_PROVIDER_CID }, michael@0: #endif michael@0: #ifdef MOZ_GAMEPAD michael@0: { NS_GAMEPAD_TEST_CONTRACTID, &kNS_GAMEPAD_TEST_CID }, michael@0: #endif michael@0: { MEDIAMANAGERSERVICE_CONTRACTID, &kNS_MEDIAMANAGERSERVICE_CID }, michael@0: #ifdef ACCESSIBILITY michael@0: { "@mozilla.org/accessibilityService;1", &kNS_ACCESSIBILITY_SERVICE_CID }, michael@0: { "@mozilla.org/accessibleRetrieval;1", &kNS_ACCESSIBILITY_SERVICE_CID }, michael@0: #endif michael@0: { TELEPHONY_PROVIDER_CONTRACTID, &kTELEPHONY_PROVIDER_CID }, michael@0: { nullptr } michael@0: }; michael@0: michael@0: static const mozilla::Module::CategoryEntry kLayoutCategories[] = { michael@0: XPCONNECT_CATEGORIES michael@0: { "content-policy", NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID, NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID }, michael@0: { "content-policy", NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID, NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID }, michael@0: { "content-policy", "CSPService", CSPSERVICE_CONTRACTID }, michael@0: { "content-policy", NS_MIXEDCONTENTBLOCKER_CONTRACTID, NS_MIXEDCONTENTBLOCKER_CONTRACTID }, michael@0: { "net-channel-event-sinks", "CSPService", CSPSERVICE_CONTRACTID }, michael@0: { JAVASCRIPT_GLOBAL_STATIC_NAMESET_CATEGORY, "PrivilegeManager", NS_SECURITYNAMESET_CONTRACTID }, michael@0: { "app-startup", "Script Security Manager", "service," NS_SCRIPTSECURITYMANAGER_CONTRACTID }, michael@0: { TOPIC_WEB_APP_CLEAR_DATA, "QuotaManager", "service," QUOTA_MANAGER_CONTRACTID }, michael@0: #ifdef MOZ_WIDGET_GONK michael@0: { "app-startup", "Volume Service", "service," NS_VOLUMESERVICE_CONTRACTID }, michael@0: #endif michael@0: CONTENTDLF_CATEGORIES michael@0: #ifdef MOZ_WIDGET_GONK michael@0: { "profile-after-change", "Gonk System Worker Manager", SYSTEMWORKERMANAGER_CONTRACTID }, michael@0: #endif michael@0: #ifdef MOZ_B2G_BT michael@0: { "profile-after-change", "Bluetooth Service", BLUETOOTHSERVICE_CONTRACTID }, michael@0: #endif michael@0: { nullptr } michael@0: }; michael@0: michael@0: static void michael@0: LayoutModuleDtor() michael@0: { michael@0: Shutdown(); michael@0: nsContentUtils::XPCOMShutdown(); michael@0: michael@0: // Layout depends heavily on gfx and imagelib, so we want to make sure that michael@0: // these modules are shut down after all the layout cleanup runs. michael@0: mozilla::image::ShutdownModule(); michael@0: gfxPlatform::Shutdown(); michael@0: michael@0: nsScriptSecurityManager::Shutdown(); michael@0: xpcModuleDtor(); michael@0: } michael@0: michael@0: static const mozilla::Module kLayoutModule = { michael@0: mozilla::Module::kVersion, michael@0: kLayoutCIDs, michael@0: kLayoutContracts, michael@0: kLayoutCategories, michael@0: nullptr, michael@0: Initialize, michael@0: LayoutModuleDtor michael@0: }; michael@0: michael@0: NSMODULE_DEFN(nsLayoutModule) = &kLayoutModule;