layout/build/nsLayoutModule.cpp

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/layout/build/nsLayoutModule.cpp	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,1273 @@
     1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.8 +
     1.9 +#include "base/basictypes.h"
    1.10 +
    1.11 +#include "XPCModule.h"
    1.12 +#include "mozilla/ModuleUtils.h"
    1.13 +#include "nsImageModule.h"
    1.14 +#include "nsLayoutStatics.h"
    1.15 +#include "nsContentCID.h"
    1.16 +#include "nsContentDLF.h"
    1.17 +#include "nsContentPolicyUtils.h"
    1.18 +#include "nsDataDocumentContentPolicy.h"
    1.19 +#include "nsNoDataProtocolContentPolicy.h"
    1.20 +#include "nsDOMCID.h"
    1.21 +#include "nsHTMLContentSerializer.h"
    1.22 +#include "nsHTMLParts.h"
    1.23 +#include "nsIComponentManager.h"
    1.24 +#include "nsIContentIterator.h"
    1.25 +#include "nsIContentSerializer.h"
    1.26 +#include "nsIContentViewer.h"
    1.27 +#include "nsIController.h"
    1.28 +#include "nsIControllers.h"
    1.29 +#include "nsIDOMDOMImplementation.h"
    1.30 +#include "nsIDocument.h"
    1.31 +#include "nsIDocumentEncoder.h"
    1.32 +#include "nsIFactory.h"
    1.33 +#include "nsIFrameUtil.h"
    1.34 +#include "nsHTMLStyleSheet.h"
    1.35 +#include "nsILayoutDebugger.h"
    1.36 +#include "nsNameSpaceManager.h"
    1.37 +#include "nsINodeInfo.h"
    1.38 +#include "nsIObserver.h"
    1.39 +#include "nsIObserverService.h"
    1.40 +#include "nsIScriptNameSpaceManager.h"
    1.41 +#include "nsISelection.h"
    1.42 +#include "nsCaret.h"
    1.43 +#include "nsPlainTextSerializer.h"
    1.44 +#include "nsXMLContentSerializer.h"
    1.45 +#include "nsXHTMLContentSerializer.h"
    1.46 +#include "nsRuleNode.h"
    1.47 +#include "nsContentAreaDragDrop.h"
    1.48 +#include "nsContentList.h"
    1.49 +#include "nsBox.h"
    1.50 +#include "nsIFrameTraversal.h"
    1.51 +#include "nsLayoutCID.h"
    1.52 +#include "nsStyleSheetService.h"
    1.53 +#include "nsFocusManager.h"
    1.54 +#include "ThirdPartyUtil.h"
    1.55 +#include "nsStructuredCloneContainer.h"
    1.56 +
    1.57 +#include "nsIEventListenerService.h"
    1.58 +#include "nsIMessageManager.h"
    1.59 +
    1.60 +// Transformiix stuff
    1.61 +#include "mozilla/dom/XPathEvaluator.h"
    1.62 +#include "txMozillaXSLTProcessor.h"
    1.63 +#include "txNodeSetAdaptor.h"
    1.64 +
    1.65 +#include "mozilla/dom/DOMParser.h"
    1.66 +#include "nsDOMSerializer.h"
    1.67 +#include "nsXMLHttpRequest.h"
    1.68 +#include "nsChannelPolicy.h"
    1.69 +
    1.70 +// view stuff
    1.71 +#include "nsContentCreatorFunctions.h"
    1.72 +
    1.73 +// DOM includes
    1.74 +#include "nsDOMBlobBuilder.h"
    1.75 +#include "nsDOMFileReader.h"
    1.76 +
    1.77 +#include "gfxPlatform.h"
    1.78 +#include "nsFormData.h"
    1.79 +#include "nsHostObjectProtocolHandler.h"
    1.80 +#include "nsHostObjectURI.h"
    1.81 +#include "nsGlobalWindowCommands.h"
    1.82 +#include "nsIControllerCommandTable.h"
    1.83 +#include "nsJSProtocolHandler.h"
    1.84 +#include "nsScriptNameSpaceManager.h"
    1.85 +#include "nsIControllerContext.h"
    1.86 +#include "nsDOMScriptObjectFactory.h"
    1.87 +#include "DOMStorageManager.h"
    1.88 +#include "nsJSON.h"
    1.89 +#include "nsZipArchive.h"
    1.90 +#include "mozIApplicationClearPrivateDataParams.h"
    1.91 +#include "mozilla/Attributes.h"
    1.92 +#include "mozilla/dom/DOMException.h"
    1.93 +#include "mozilla/dom/DOMRequest.h"
    1.94 +#include "mozilla/dom/indexedDB/IndexedDatabaseManager.h"
    1.95 +#include "mozilla/dom/network/TCPSocketChild.h"
    1.96 +#include "mozilla/dom/network/TCPSocketParent.h"
    1.97 +#include "mozilla/dom/network/TCPServerSocketChild.h"
    1.98 +#include "mozilla/dom/network/UDPSocketChild.h"
    1.99 +#include "mozilla/dom/quota/QuotaManager.h"
   1.100 +#include "mozilla/OSFileConstants.h"
   1.101 +#include "mozilla/Services.h"
   1.102 +
   1.103 +#ifdef MOZ_WEBSPEECH
   1.104 +#include "mozilla/dom/FakeSpeechRecognitionService.h"
   1.105 +#include "mozilla/dom/nsSynthVoiceRegistry.h"
   1.106 +#endif
   1.107 +
   1.108 +#ifdef MOZ_WIDGET_GONK
   1.109 +#include "SystemWorkerManager.h"
   1.110 +using mozilla::dom::gonk::SystemWorkerManager;
   1.111 +#define SYSTEMWORKERMANAGER_CID \
   1.112 +  {0xd53b6524, 0x6ac3, 0x42b0, {0xae, 0xca, 0x62, 0xb3, 0xc4, 0xe5, 0x2b, 0x04}}
   1.113 +#define SYSTEMWORKERMANAGER_CONTRACTID \
   1.114 +  "@mozilla.org/telephony/system-worker-manager;1"
   1.115 +#endif
   1.116 +
   1.117 +#ifdef MOZ_B2G_BT
   1.118 +#include "BluetoothService.h"
   1.119 +using mozilla::dom::bluetooth::BluetoothService;
   1.120 +#define BLUETOOTHSERVICE_CID \
   1.121 +  {0xa753b487, 0x3344, 0x4de4, {0xad, 0x5f, 0x06, 0x36, 0x76, 0xa7, 0xc1, 0x04}}
   1.122 +#define BLUETOOTHSERVICE_CONTRACTID \
   1.123 +  "@mozilla.org/bluetooth/service;1"
   1.124 +#endif
   1.125 +
   1.126 +#ifdef MOZ_WIDGET_GONK
   1.127 +#include "AudioManager.h"
   1.128 +using mozilla::dom::gonk::AudioManager;
   1.129 +#include "nsVolumeService.h"
   1.130 +using mozilla::system::nsVolumeService;
   1.131 +#endif
   1.132 +
   1.133 +#include "AudioChannelAgent.h"
   1.134 +using mozilla::dom::AudioChannelAgent;
   1.135 +
   1.136 +// Editor stuff
   1.137 +#include "nsEditorCID.h"
   1.138 +#include "nsEditor.h"
   1.139 +#include "nsPlaintextEditor.h"
   1.140 +#include "nsEditorController.h" //CID
   1.141 +
   1.142 +#include "nsHTMLEditor.h"
   1.143 +#include "nsTextServicesDocument.h"
   1.144 +#include "nsTextServicesCID.h"
   1.145 +
   1.146 +#include "nsScriptSecurityManager.h"
   1.147 +#include "nsPrincipal.h"
   1.148 +#include "nsSystemPrincipal.h"
   1.149 +#include "nsNullPrincipal.h"
   1.150 +#include "nsNetCID.h"
   1.151 +#ifndef MOZ_WIDGET_GONK
   1.152 +#if defined(MOZ_WIDGET_ANDROID)
   1.153 +#include "nsHapticFeedback.h"
   1.154 +#endif
   1.155 +#endif
   1.156 +#include "nsParserUtils.h"
   1.157 +
   1.158 +#define NS_EDITORCOMMANDTABLE_CID \
   1.159 +{ 0x4f5e62b8, 0xd659, 0x4156, { 0x84, 0xfc, 0x2f, 0x60, 0x99, 0x40, 0x03, 0x69 }}
   1.160 +
   1.161 +#define NS_EDITINGCOMMANDTABLE_CID \
   1.162 +{ 0xcb38a746, 0xbeb8, 0x43f3, { 0x94, 0x29, 0x77, 0x96, 0xe1, 0xa9, 0x3f, 0xb4 }}
   1.163 +
   1.164 +#define NS_HAPTICFEEDBACK_CID \
   1.165 +{ 0x1f15dbc8, 0xbfaa, 0x45de, \
   1.166 +{ 0x8a, 0x46, 0x08, 0xe2, 0xe2, 0x63, 0x26, 0xb0 } }
   1.167 +
   1.168 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsPlaintextEditor)
   1.169 +
   1.170 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsParserUtils)
   1.171 +
   1.172 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextServicesDocument)
   1.173 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLEditor)
   1.174 +
   1.175 +#include "nsHTMLCanvasFrame.h"
   1.176 +
   1.177 +#include "nsIDOMWebGLRenderingContext.h"
   1.178 +
   1.179 +class nsIDocumentLoaderFactory;
   1.180 +
   1.181 +#define PRODUCT_NAME "Gecko"
   1.182 +
   1.183 +/* 0ddf4df8-4dbb-4133-8b79-9afb966514f5 */
   1.184 +#define NS_PLUGINDOCLOADERFACTORY_CID \
   1.185 +{ 0x0ddf4df8, 0x4dbb, 0x4133, { 0x8b, 0x79, 0x9a, 0xfb, 0x96, 0x65, 0x14, 0xf5 } }
   1.186 +
   1.187 +#define NS_WINDOWCOMMANDTABLE_CID \
   1.188 + { /* 0DE2FBFA-6B7F-11D7-BBBA-0003938A9D96 */        \
   1.189 +  0x0DE2FBFA, 0x6B7F, 0x11D7, {0xBB, 0xBA, 0x00, 0x03, 0x93, 0x8A, 0x9D, 0x96} }
   1.190 +
   1.191 +#include "nsIBoxObject.h"
   1.192 +
   1.193 +#ifdef MOZ_XUL
   1.194 +#include "inDOMView.h"
   1.195 +#endif /* MOZ_XUL */
   1.196 +
   1.197 +#include "inDeepTreeWalker.h"
   1.198 +#include "inFlasher.h"
   1.199 +#include "inCSSValueSearch.h"
   1.200 +#include "inDOMUtils.h"
   1.201 +
   1.202 +#ifdef MOZ_XUL
   1.203 +#include "nsIXULDocument.h"
   1.204 +#include "nsIXULSortService.h"
   1.205 +
   1.206 +nsresult
   1.207 +NS_NewXULContentBuilder(nsISupports* aOuter, REFNSIID aIID, void** aResult);
   1.208 +
   1.209 +nsresult
   1.210 +NS_NewXULTreeBuilder(nsISupports* aOuter, REFNSIID aIID, void** aResult);
   1.211 +#endif
   1.212 +
   1.213 +static void Shutdown();
   1.214 +
   1.215 +#include "nsGeolocation.h"
   1.216 +#include "nsDeviceSensors.h"
   1.217 +#ifdef MOZ_GAMEPAD
   1.218 +#include "mozilla/dom/GamepadService.h"
   1.219 +#endif
   1.220 +#include "nsCSPService.h"
   1.221 +#include "nsISmsService.h"
   1.222 +#include "nsIMmsService.h"
   1.223 +#include "nsIMobileMessageService.h"
   1.224 +#include "nsIMobileMessageDatabaseService.h"
   1.225 +#include "mozilla/dom/mobilemessage/MobileMessageService.h"
   1.226 +#include "mozilla/dom/mobilemessage/SmsServicesFactory.h"
   1.227 +#include "nsIPowerManagerService.h"
   1.228 +#include "nsIAlarmHalService.h"
   1.229 +#include "nsIMediaManager.h"
   1.230 +#include "nsMixedContentBlocker.h"
   1.231 +
   1.232 +#include "AudioChannelService.h"
   1.233 +
   1.234 +#include "mozilla/dom/power/PowerManagerService.h"
   1.235 +#include "mozilla/dom/alarm/AlarmHalService.h"
   1.236 +#include "mozilla/dom/time/TimeService.h"
   1.237 +#include "StreamingProtocolService.h"
   1.238 +
   1.239 +#include "mozilla/dom/telephony/TelephonyFactory.h"
   1.240 +#include "nsITelephonyProvider.h"
   1.241 +
   1.242 +#ifdef MOZ_WIDGET_GONK
   1.243 +#include "GonkGPSGeolocationProvider.h"
   1.244 +#endif
   1.245 +#include "MediaManager.h"
   1.246 +
   1.247 +using namespace mozilla;
   1.248 +using namespace mozilla::dom;
   1.249 +using namespace mozilla::dom::mobilemessage;
   1.250 +using namespace mozilla::dom::telephony;
   1.251 +using mozilla::dom::alarm::AlarmHalService;
   1.252 +using mozilla::dom::indexedDB::IndexedDatabaseManager;
   1.253 +using mozilla::dom::power::PowerManagerService;
   1.254 +using mozilla::dom::quota::QuotaManager;
   1.255 +using mozilla::dom::TCPSocketChild;
   1.256 +using mozilla::dom::TCPSocketParent;
   1.257 +using mozilla::dom::TCPServerSocketChild;
   1.258 +using mozilla::dom::UDPSocketChild;
   1.259 +using mozilla::dom::time::TimeService;
   1.260 +using mozilla::net::StreamingProtocolControllerService;
   1.261 +
   1.262 +// Transformiix
   1.263 +/* 5d5d92cd-6bf8-11d9-bf4a-000a95dc234c */
   1.264 +#define TRANSFORMIIX_NODESET_CID \
   1.265 +{ 0x5d5d92cd, 0x6bf8, 0x11d9, { 0xbf, 0x4a, 0x0, 0x0a, 0x95, 0xdc, 0x23, 0x4c } }
   1.266 +
   1.267 +#define TRANSFORMIIX_NODESET_CONTRACTID \
   1.268 +"@mozilla.org/transformiix-nodeset;1"
   1.269 +
   1.270 +// Factory Constructor
   1.271 +NS_GENERIC_FACTORY_CONSTRUCTOR(txMozillaXSLTProcessor)
   1.272 +NS_GENERIC_FACTORY_CONSTRUCTOR(XPathEvaluator)
   1.273 +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(txNodeSetAdaptor, Init)
   1.274 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsDOMSerializer)
   1.275 +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsXMLHttpRequest, Init)
   1.276 +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsDOMFileReader, Init)
   1.277 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsFormData)
   1.278 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsBlobProtocolHandler)
   1.279 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsMediaStreamProtocolHandler)
   1.280 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsMediaSourceProtocolHandler)
   1.281 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsFontTableProtocolHandler)
   1.282 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsHostObjectURI)
   1.283 +NS_GENERIC_FACTORY_CONSTRUCTOR(DOMParser)
   1.284 +NS_GENERIC_FACTORY_CONSTRUCTOR(Exception)
   1.285 +NS_GENERIC_FACTORY_CONSTRUCTOR(DOMSessionStorageManager)
   1.286 +NS_GENERIC_FACTORY_CONSTRUCTOR(DOMLocalStorageManager)
   1.287 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsChannelPolicy)
   1.288 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(IndexedDatabaseManager,
   1.289 +                                         IndexedDatabaseManager::FactoryCreate)
   1.290 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(DOMRequestService,
   1.291 +                                         DOMRequestService::FactoryCreate)
   1.292 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(QuotaManager,
   1.293 +                                         QuotaManager::FactoryCreate)
   1.294 +#ifdef MOZ_WIDGET_GONK
   1.295 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(SystemWorkerManager,
   1.296 +                                         SystemWorkerManager::FactoryCreate)
   1.297 +#endif
   1.298 +#ifdef MOZ_B2G_BT
   1.299 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(BluetoothService,
   1.300 +                                         BluetoothService::FactoryCreate)
   1.301 +#endif
   1.302 +
   1.303 +#ifdef MOZ_WEBSPEECH
   1.304 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsSynthVoiceRegistry,
   1.305 +                                         nsSynthVoiceRegistry::GetInstanceForService)
   1.306 +#endif
   1.307 +
   1.308 +#ifdef MOZ_WIDGET_GONK
   1.309 +NS_GENERIC_FACTORY_CONSTRUCTOR(AudioManager)
   1.310 +#endif
   1.311 +
   1.312 +NS_GENERIC_FACTORY_CONSTRUCTOR(AudioChannelAgent)
   1.313 +
   1.314 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsDeviceSensors)
   1.315 +
   1.316 +#ifndef MOZ_WIDGET_GONK
   1.317 +#if defined(ANDROID)
   1.318 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsHapticFeedback)
   1.319 +#endif
   1.320 +#endif
   1.321 +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(ThirdPartyUtil, Init)
   1.322 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsISmsService,
   1.323 +                                         SmsServicesFactory::CreateSmsService)
   1.324 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMmsService,
   1.325 +                                         SmsServicesFactory::CreateMmsService)
   1.326 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMobileMessageService,
   1.327 +                                         MobileMessageService::GetInstance)
   1.328 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMobileMessageDatabaseService,
   1.329 +                                         SmsServicesFactory::CreateMobileMessageDatabaseService)
   1.330 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIPowerManagerService,
   1.331 +                                         PowerManagerService::GetInstance)
   1.332 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIAlarmHalService,
   1.333 +                                         AlarmHalService::GetInstance)
   1.334 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsITimeService,
   1.335 +                                         TimeService::GetInstance)
   1.336 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIStreamingProtocolControllerService,
   1.337 +                                         StreamingProtocolControllerService::GetInstance)
   1.338 +
   1.339 +#ifdef MOZ_GAMEPAD
   1.340 +using mozilla::dom::GamepadServiceTest;
   1.341 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(GamepadServiceTest,
   1.342 +                                         GamepadServiceTest::CreateService)
   1.343 +#endif
   1.344 +
   1.345 +#ifdef MOZ_WIDGET_GONK
   1.346 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIGeolocationProvider,
   1.347 +                                         GonkGPSGeolocationProvider::GetSingleton)
   1.348 +// Since the nsVolumeService constructor calls into nsIPowerManagerService,
   1.349 +// we need it to be constructed sometime after nsIPowerManagerService.
   1.350 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsVolumeService,
   1.351 +                                         nsVolumeService::GetSingleton)
   1.352 +#endif
   1.353 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMediaManagerService,
   1.354 +                                         MediaManager::GetInstance)
   1.355 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsITelephonyProvider,
   1.356 +                                         TelephonyFactory::CreateTelephonyProvider)
   1.357 +
   1.358 +//-----------------------------------------------------------------------------
   1.359 +
   1.360 +static bool gInitialized = false;
   1.361 +
   1.362 +// Perform our one-time intialization for this module
   1.363 +
   1.364 +// static
   1.365 +nsresult
   1.366 +Initialize()
   1.367 +{
   1.368 +  if (gInitialized) {
   1.369 +    NS_RUNTIMEABORT("Recursive layout module initialization");
   1.370 +    return NS_ERROR_FAILURE;
   1.371 +  }
   1.372 +
   1.373 +  static_assert(sizeof(uintptr_t) == sizeof(void*),
   1.374 +                "Eeek! You'll need to adjust the size of uintptr_t to the "
   1.375 +                "size of a pointer on your platform.");
   1.376 +
   1.377 +  gInitialized = true;
   1.378 +
   1.379 +  nsresult rv;
   1.380 +  rv = xpcModuleCtor();
   1.381 +  if (NS_FAILED(rv))
   1.382 +    return rv;
   1.383 +
   1.384 +  rv = nsLayoutStatics::Initialize();
   1.385 +  if (NS_FAILED(rv)) {
   1.386 +    Shutdown();
   1.387 +    return rv;
   1.388 +  }
   1.389 +
   1.390 +#ifdef DEBUG
   1.391 +  nsStyleContext::AssertStyleStructMaxDifferenceValid();
   1.392 +#endif
   1.393 +
   1.394 +  return NS_OK;
   1.395 +}
   1.396 +
   1.397 +// Shutdown this module, releasing all of the module resources
   1.398 +
   1.399 +// static
   1.400 +void
   1.401 +Shutdown()
   1.402 +{
   1.403 +  NS_PRECONDITION(gInitialized, "module not initialized");
   1.404 +  if (!gInitialized)
   1.405 +    return;
   1.406 +
   1.407 +  gInitialized = false;
   1.408 +
   1.409 +  nsLayoutStatics::Release();
   1.410 +}
   1.411 +
   1.412 +#ifdef DEBUG
   1.413 +nsresult NS_NewFrameUtil(nsIFrameUtil** aResult);
   1.414 +nsresult NS_NewLayoutDebugger(nsILayoutDebugger** aResult);
   1.415 +#endif
   1.416 +
   1.417 +nsresult NS_NewBoxObject(nsIBoxObject** aResult);
   1.418 +
   1.419 +#ifdef MOZ_XUL
   1.420 +nsresult NS_NewListBoxObject(nsIBoxObject** aResult);
   1.421 +nsresult NS_NewScrollBoxObject(nsIBoxObject** aResult);
   1.422 +nsresult NS_NewMenuBoxObject(nsIBoxObject** aResult);
   1.423 +nsresult NS_NewPopupBoxObject(nsIBoxObject** aResult);
   1.424 +nsresult NS_NewContainerBoxObject(nsIBoxObject** aResult);
   1.425 +nsresult NS_NewTreeBoxObject(nsIBoxObject** aResult);
   1.426 +#endif
   1.427 +
   1.428 +nsresult NS_NewCanvasRenderingContextWebGL(nsIDOMWebGLRenderingContext** aResult);
   1.429 +
   1.430 +nsresult NS_CreateFrameTraversal(nsIFrameTraversal** aResult);
   1.431 +
   1.432 +nsresult NS_NewDomSelection(nsISelection** aResult);
   1.433 +already_AddRefed<nsIContentViewer> NS_NewContentViewer();
   1.434 +nsresult NS_NewGenRegularIterator(nsIContentIterator** aResult);
   1.435 +nsresult NS_NewGenSubtreeIterator(nsIContentIterator** aInstancePtrResult);
   1.436 +nsresult NS_NewContentDocumentLoaderFactory(nsIDocumentLoaderFactory** aResult);
   1.437 +nsresult NS_NewHTMLCopyTextEncoder(nsIDocumentEncoder** aResult);
   1.438 +nsresult NS_NewTextEncoder(nsIDocumentEncoder** aResult);
   1.439 +nsresult NS_NewContentPolicy(nsIContentPolicy** aResult);
   1.440 +
   1.441 +nsresult NS_NewEventListenerService(nsIEventListenerService** aResult);
   1.442 +nsresult NS_NewGlobalMessageManager(nsIMessageBroadcaster** aResult);
   1.443 +nsresult NS_NewParentProcessMessageManager(nsIMessageBroadcaster** aResult);
   1.444 +nsresult NS_NewChildProcessMessageManager(nsISyncMessageSender** aResult);
   1.445 +
   1.446 +nsresult NS_NewXULControllers(nsISupports* aOuter, REFNSIID aIID, void** aResult);
   1.447 +
   1.448 +#define MAKE_CTOR(ctor_, iface_, func_)                   \
   1.449 +static nsresult                                           \
   1.450 +ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) \
   1.451 +{                                                         \
   1.452 +  *aResult = nullptr;                                      \
   1.453 +  if (aOuter)                                             \
   1.454 +    return NS_ERROR_NO_AGGREGATION;                       \
   1.455 +  iface_* inst;                                           \
   1.456 +  nsresult rv = func_(&inst);                             \
   1.457 +  if (NS_SUCCEEDED(rv)) {                                 \
   1.458 +    rv = inst->QueryInterface(aIID, aResult);             \
   1.459 +    NS_RELEASE(inst);                                     \
   1.460 +  }                                                       \
   1.461 +  return rv;                                              \
   1.462 +}
   1.463 +
   1.464 +// As above, but expects
   1.465 +//   already_AddRefed<nsIFoo> NS_NewFoo();
   1.466 +// instead of
   1.467 +//   nsresult NS_NewFoo(nsIFoo**);
   1.468 +#define MAKE_CTOR2(ctor_, iface_, func_)                  \
   1.469 +static nsresult                                           \
   1.470 +ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) \
   1.471 +{                                                         \
   1.472 +  *aResult = nullptr;                                      \
   1.473 +  if (aOuter) {                                           \
   1.474 +    return NS_ERROR_NO_AGGREGATION;                       \
   1.475 +  }                                                       \
   1.476 +  nsCOMPtr<iface_> inst = func_();                        \
   1.477 +  inst.forget(aResult);                                   \
   1.478 +  return NS_OK;                                           \
   1.479 +}
   1.480 +
   1.481 +#ifdef DEBUG
   1.482 +MAKE_CTOR(CreateNewFrameUtil,             nsIFrameUtil,                NS_NewFrameUtil)
   1.483 +MAKE_CTOR(CreateNewLayoutDebugger,        nsILayoutDebugger,           NS_NewLayoutDebugger)
   1.484 +#endif
   1.485 +
   1.486 +MAKE_CTOR(CreateNewFrameTraversal,      nsIFrameTraversal,      NS_CreateFrameTraversal)
   1.487 +MAKE_CTOR(CreateNewBoxObject,           nsIBoxObject,           NS_NewBoxObject)
   1.488 +
   1.489 +#ifdef MOZ_XUL
   1.490 +MAKE_CTOR(CreateNewListBoxObject,       nsIBoxObject,           NS_NewListBoxObject)
   1.491 +MAKE_CTOR(CreateNewMenuBoxObject,       nsIBoxObject,           NS_NewMenuBoxObject)
   1.492 +MAKE_CTOR(CreateNewPopupBoxObject,      nsIBoxObject,           NS_NewPopupBoxObject)
   1.493 +MAKE_CTOR(CreateNewScrollBoxObject,     nsIBoxObject,           NS_NewScrollBoxObject)
   1.494 +MAKE_CTOR(CreateNewTreeBoxObject,       nsIBoxObject,           NS_NewTreeBoxObject)
   1.495 +MAKE_CTOR(CreateNewContainerBoxObject,  nsIBoxObject,           NS_NewContainerBoxObject)
   1.496 +#endif // MOZ_XUL
   1.497 +
   1.498 +#ifdef MOZ_XUL
   1.499 +NS_GENERIC_FACTORY_CONSTRUCTOR(inDOMView)
   1.500 +#endif
   1.501 +NS_GENERIC_FACTORY_CONSTRUCTOR(inDeepTreeWalker)
   1.502 +NS_GENERIC_FACTORY_CONSTRUCTOR(inFlasher)
   1.503 +NS_GENERIC_FACTORY_CONSTRUCTOR(inCSSValueSearch)
   1.504 +NS_GENERIC_FACTORY_CONSTRUCTOR(inDOMUtils)
   1.505 +
   1.506 +MAKE_CTOR2(CreateContentViewer,           nsIContentViewer,            NS_NewContentViewer)
   1.507 +MAKE_CTOR(CreateHTMLDocument,             nsIDocument,                 NS_NewHTMLDocument)
   1.508 +MAKE_CTOR(CreateXMLDocument,              nsIDocument,                 NS_NewXMLDocument)
   1.509 +MAKE_CTOR(CreateSVGDocument,              nsIDocument,                 NS_NewSVGDocument)
   1.510 +MAKE_CTOR(CreateImageDocument,            nsIDocument,                 NS_NewImageDocument)
   1.511 +MAKE_CTOR(CreateDOMBlob,                  nsISupports,                 nsDOMMultipartFile::NewBlob)
   1.512 +MAKE_CTOR(CreateDOMFile,                  nsISupports,                 nsDOMMultipartFile::NewFile)
   1.513 +MAKE_CTOR(CreateDOMSelection,             nsISelection,                NS_NewDomSelection)
   1.514 +MAKE_CTOR2(CreateContentIterator,         nsIContentIterator,          NS_NewContentIterator)
   1.515 +MAKE_CTOR2(CreatePreContentIterator,      nsIContentIterator,          NS_NewPreContentIterator)
   1.516 +MAKE_CTOR2(CreateSubtreeIterator,         nsIContentIterator,          NS_NewContentSubtreeIterator)
   1.517 +MAKE_CTOR(CreateTextEncoder,              nsIDocumentEncoder,          NS_NewTextEncoder)
   1.518 +MAKE_CTOR(CreateHTMLCopyTextEncoder,      nsIDocumentEncoder,          NS_NewHTMLCopyTextEncoder)
   1.519 +MAKE_CTOR(CreateXMLContentSerializer,     nsIContentSerializer,        NS_NewXMLContentSerializer)
   1.520 +MAKE_CTOR(CreateHTMLContentSerializer,    nsIContentSerializer,        NS_NewHTMLContentSerializer)
   1.521 +MAKE_CTOR(CreateXHTMLContentSerializer,   nsIContentSerializer,        NS_NewXHTMLContentSerializer)
   1.522 +MAKE_CTOR(CreatePlainTextSerializer,      nsIContentSerializer,        NS_NewPlainTextSerializer)
   1.523 +MAKE_CTOR(CreateContentPolicy,            nsIContentPolicy,            NS_NewContentPolicy)
   1.524 +#ifdef MOZ_XUL
   1.525 +MAKE_CTOR(CreateXULSortService,           nsIXULSortService,           NS_NewXULSortService)
   1.526 +// NS_NewXULContentBuilder
   1.527 +// NS_NewXULTreeBuilder
   1.528 +MAKE_CTOR(CreateXULDocument,              nsIXULDocument,              NS_NewXULDocument)
   1.529 +// NS_NewXULControllers
   1.530 +#endif
   1.531 +MAKE_CTOR(CreateContentDLF,               nsIDocumentLoaderFactory,    NS_NewContentDocumentLoaderFactory)
   1.532 +MAKE_CTOR(CreateEventListenerService,     nsIEventListenerService,     NS_NewEventListenerService)
   1.533 +MAKE_CTOR(CreateGlobalMessageManager,     nsIMessageBroadcaster,       NS_NewGlobalMessageManager)
   1.534 +MAKE_CTOR(CreateParentMessageManager,     nsIMessageBroadcaster,       NS_NewParentProcessMessageManager)
   1.535 +MAKE_CTOR(CreateChildMessageManager,      nsISyncMessageSender,        NS_NewChildProcessMessageManager)
   1.536 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsDataDocumentContentPolicy)
   1.537 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsNoDataProtocolContentPolicy)
   1.538 +MAKE_CTOR(CreatePluginDocument,           nsIDocument,                 NS_NewPluginDocument)
   1.539 +MAKE_CTOR(CreateVideoDocument,            nsIDocument,                 NS_NewVideoDocument)
   1.540 +MAKE_CTOR(CreateFocusManager,             nsIFocusManager,      NS_NewFocusManager)
   1.541 +
   1.542 +MAKE_CTOR(CreateCanvasRenderingContextWebGL, nsIDOMWebGLRenderingContext, NS_NewCanvasRenderingContextWebGL)
   1.543 +
   1.544 +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStyleSheetService, Init)
   1.545 +
   1.546 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsJSURI)
   1.547 +
   1.548 +// views are not refcounted, so this is the same as
   1.549 +// NS_GENERIC_FACTORY_CONSTRUCTOR without the NS_ADDREF/NS_RELEASE
   1.550 +#define NS_GENERIC_FACTORY_CONSTRUCTOR_NOREFS(_InstanceClass)                 \
   1.551 +static nsresult                                                               \
   1.552 +_InstanceClass##Constructor(nsISupports *aOuter, REFNSIID aIID,               \
   1.553 +                            void **aResult)                                   \
   1.554 +{                                                                             \
   1.555 +    nsresult rv;                                                              \
   1.556 +                                                                              \
   1.557 +    *aResult = nullptr;                                                       \
   1.558 +    if (nullptr != aOuter) {                                                  \
   1.559 +        rv = NS_ERROR_NO_AGGREGATION;                                         \
   1.560 +        return rv;                                                            \
   1.561 +    }                                                                         \
   1.562 +                                                                              \
   1.563 +    _InstanceClass * inst = new _InstanceClass();                             \
   1.564 +    if (nullptr == inst) {                                                    \
   1.565 +        rv = NS_ERROR_OUT_OF_MEMORY;                                          \
   1.566 +        return rv;                                                            \
   1.567 +    }                                                                         \
   1.568 +    rv = inst->QueryInterface(aIID, aResult);                                 \
   1.569 +                                                                              \
   1.570 +    return rv;                                                                \
   1.571 +}                                                                             \
   1.572 +
   1.573 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsDOMScriptObjectFactory)
   1.574 +
   1.575 +#define NS_GEOLOCATION_CID \
   1.576 +  { 0x1E1C3FF, 0x94A, 0xD048, { 0x44, 0xB4, 0x62, 0xD2, 0x9C, 0x7B, 0x4F, 0x39 } }
   1.577 +
   1.578 +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(Geolocation, Init)
   1.579 +
   1.580 +#define NS_GEOLOCATION_SERVICE_CID \
   1.581 +  { 0x404d02a, 0x1CA, 0xAAAB, { 0x47, 0x62, 0x94, 0x4b, 0x1b, 0xf2, 0xf7, 0xb5 } }
   1.582 +
   1.583 +#define NS_AUDIOCHANNEL_SERVICE_CID \
   1.584 +  { 0xf712e983, 0x048a, 0x443f, { 0x88, 0x02, 0xfc, 0xc3, 0xd9, 0x27, 0xce, 0xac }}
   1.585 +
   1.586 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsGeolocationService, nsGeolocationService::GetGeolocationService)
   1.587 +
   1.588 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(AudioChannelService, AudioChannelService::GetAudioChannelService)
   1.589 +
   1.590 +#ifdef MOZ_WEBSPEECH
   1.591 +NS_GENERIC_FACTORY_CONSTRUCTOR(FakeSpeechRecognitionService)
   1.592 +#endif
   1.593 +
   1.594 +NS_GENERIC_FACTORY_CONSTRUCTOR(CSPService)
   1.595 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsMixedContentBlocker)
   1.596 +
   1.597 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsPrincipal)
   1.598 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsSecurityNameSet)
   1.599 +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsSystemPrincipal,
   1.600 +    nsScriptSecurityManager::SystemPrincipalSingletonConstructor)
   1.601 +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNullPrincipal, Init)
   1.602 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsStructuredCloneContainer)
   1.603 +
   1.604 +NS_GENERIC_FACTORY_CONSTRUCTOR(OSFileConstantsService)
   1.605 +NS_GENERIC_FACTORY_CONSTRUCTOR(TCPSocketChild)
   1.606 +NS_GENERIC_FACTORY_CONSTRUCTOR(TCPSocketParent)
   1.607 +NS_GENERIC_FACTORY_CONSTRUCTOR(TCPServerSocketChild)
   1.608 +NS_GENERIC_FACTORY_CONSTRUCTOR(UDPSocketChild)
   1.609 +
   1.610 +#ifdef ACCESSIBILITY
   1.611 +#include "nsAccessibilityService.h"
   1.612 +
   1.613 +  MAKE_CTOR(CreateA11yService, nsIAccessibilityService, NS_GetAccessibilityService)
   1.614 +#endif
   1.615 +
   1.616 +static nsresult
   1.617 +Construct_nsIScriptSecurityManager(nsISupports *aOuter, REFNSIID aIID,
   1.618 +                                   void **aResult)
   1.619 +{
   1.620 +    if (!aResult)
   1.621 +        return NS_ERROR_NULL_POINTER;
   1.622 +    *aResult = nullptr;
   1.623 +    if (aOuter)
   1.624 +        return NS_ERROR_NO_AGGREGATION;
   1.625 +    nsScriptSecurityManager *obj = nsScriptSecurityManager::GetScriptSecurityManager();
   1.626 +    if (!obj)
   1.627 +        return NS_ERROR_OUT_OF_MEMORY;
   1.628 +    if (NS_FAILED(obj->QueryInterface(aIID, aResult)))
   1.629 +        return NS_ERROR_FAILURE;
   1.630 +    return NS_OK;
   1.631 +}
   1.632 +
   1.633 +#ifdef DEBUG
   1.634 +NS_DEFINE_NAMED_CID(NS_FRAME_UTIL_CID);
   1.635 +NS_DEFINE_NAMED_CID(NS_LAYOUT_DEBUGGER_CID);
   1.636 +#endif
   1.637 +NS_DEFINE_NAMED_CID(NS_FRAMETRAVERSAL_CID);
   1.638 +NS_DEFINE_NAMED_CID(NS_BOXOBJECT_CID);
   1.639 +#ifdef MOZ_XUL
   1.640 +NS_DEFINE_NAMED_CID(NS_LISTBOXOBJECT_CID);
   1.641 +NS_DEFINE_NAMED_CID(NS_MENUBOXOBJECT_CID);
   1.642 +NS_DEFINE_NAMED_CID(NS_POPUPBOXOBJECT_CID);
   1.643 +NS_DEFINE_NAMED_CID(NS_CONTAINERBOXOBJECT_CID);
   1.644 +NS_DEFINE_NAMED_CID(NS_SCROLLBOXOBJECT_CID);
   1.645 +NS_DEFINE_NAMED_CID(NS_TREEBOXOBJECT_CID);
   1.646 +#endif // MOZ_XUL
   1.647 +#ifdef MOZ_XUL
   1.648 +NS_DEFINE_NAMED_CID(IN_DOMVIEW_CID);
   1.649 +#endif
   1.650 +NS_DEFINE_NAMED_CID(IN_DEEPTREEWALKER_CID);
   1.651 +NS_DEFINE_NAMED_CID(IN_FLASHER_CID);
   1.652 +NS_DEFINE_NAMED_CID(IN_CSSVALUESEARCH_CID);
   1.653 +NS_DEFINE_NAMED_CID(IN_DOMUTILS_CID);
   1.654 +NS_DEFINE_NAMED_CID(NS_CONTENT_VIEWER_CID);
   1.655 +NS_DEFINE_NAMED_CID(NS_HTMLDOCUMENT_CID);
   1.656 +NS_DEFINE_NAMED_CID(NS_XMLDOCUMENT_CID);
   1.657 +NS_DEFINE_NAMED_CID(NS_SVGDOCUMENT_CID);
   1.658 +NS_DEFINE_NAMED_CID(NS_IMAGEDOCUMENT_CID);
   1.659 +NS_DEFINE_NAMED_CID(NS_DOMMULTIPARTBLOB_CID);
   1.660 +NS_DEFINE_NAMED_CID(NS_DOMMULTIPARTFILE_CID);
   1.661 +NS_DEFINE_NAMED_CID(NS_DOMSELECTION_CID);
   1.662 +NS_DEFINE_NAMED_CID(NS_CONTENTITERATOR_CID);
   1.663 +NS_DEFINE_NAMED_CID(NS_PRECONTENTITERATOR_CID);
   1.664 +NS_DEFINE_NAMED_CID(NS_SUBTREEITERATOR_CID);
   1.665 +NS_DEFINE_NAMED_CID(NS_CANVASRENDERINGCONTEXTWEBGL_CID);
   1.666 +NS_DEFINE_NAMED_CID(NS_TEXT_ENCODER_CID);
   1.667 +NS_DEFINE_NAMED_CID(NS_HTMLCOPY_TEXT_ENCODER_CID);
   1.668 +NS_DEFINE_NAMED_CID(NS_XMLCONTENTSERIALIZER_CID);
   1.669 +NS_DEFINE_NAMED_CID(NS_XHTMLCONTENTSERIALIZER_CID);
   1.670 +NS_DEFINE_NAMED_CID(NS_HTMLCONTENTSERIALIZER_CID);
   1.671 +NS_DEFINE_NAMED_CID(NS_PLAINTEXTSERIALIZER_CID);
   1.672 +NS_DEFINE_NAMED_CID(NS_PARSERUTILS_CID);
   1.673 +NS_DEFINE_NAMED_CID(NS_SCRIPTABLEUNESCAPEHTML_CID);
   1.674 +NS_DEFINE_NAMED_CID(NS_CONTENTPOLICY_CID);
   1.675 +NS_DEFINE_NAMED_CID(NS_DATADOCUMENTCONTENTPOLICY_CID);
   1.676 +NS_DEFINE_NAMED_CID(NS_NODATAPROTOCOLCONTENTPOLICY_CID);
   1.677 +NS_DEFINE_NAMED_CID(NS_XULCONTROLLERS_CID);
   1.678 +#ifdef MOZ_XUL
   1.679 +NS_DEFINE_NAMED_CID(NS_XULSORTSERVICE_CID);
   1.680 +NS_DEFINE_NAMED_CID(NS_XULTEMPLATEBUILDER_CID);
   1.681 +NS_DEFINE_NAMED_CID(NS_XULTREEBUILDER_CID);
   1.682 +NS_DEFINE_NAMED_CID(NS_XULDOCUMENT_CID);
   1.683 +#endif
   1.684 +NS_DEFINE_NAMED_CID(NS_CONTENT_DOCUMENT_LOADER_FACTORY_CID);
   1.685 +NS_DEFINE_NAMED_CID(NS_DOM_SCRIPT_OBJECT_FACTORY_CID);
   1.686 +NS_DEFINE_NAMED_CID(NS_JSPROTOCOLHANDLER_CID);
   1.687 +NS_DEFINE_NAMED_CID(NS_JSURI_CID);
   1.688 +NS_DEFINE_NAMED_CID(NS_WINDOWCOMMANDTABLE_CID);
   1.689 +NS_DEFINE_NAMED_CID(NS_WINDOWCONTROLLER_CID);
   1.690 +NS_DEFINE_NAMED_CID(NS_PLUGINDOCLOADERFACTORY_CID);
   1.691 +NS_DEFINE_NAMED_CID(NS_PLUGINDOCUMENT_CID);
   1.692 +NS_DEFINE_NAMED_CID(NS_VIDEODOCUMENT_CID);
   1.693 +NS_DEFINE_NAMED_CID(NS_STYLESHEETSERVICE_CID);
   1.694 +NS_DEFINE_NAMED_CID(TRANSFORMIIX_XSLT_PROCESSOR_CID);
   1.695 +NS_DEFINE_NAMED_CID(TRANSFORMIIX_XPATH_EVALUATOR_CID);
   1.696 +NS_DEFINE_NAMED_CID(TRANSFORMIIX_NODESET_CID);
   1.697 +NS_DEFINE_NAMED_CID(NS_XMLSERIALIZER_CID);
   1.698 +NS_DEFINE_NAMED_CID(NS_FILEREADER_CID);
   1.699 +NS_DEFINE_NAMED_CID(NS_FORMDATA_CID);
   1.700 +NS_DEFINE_NAMED_CID(NS_BLOBPROTOCOLHANDLER_CID);
   1.701 +NS_DEFINE_NAMED_CID(NS_MEDIASTREAMPROTOCOLHANDLER_CID);
   1.702 +NS_DEFINE_NAMED_CID(NS_MEDIASOURCEPROTOCOLHANDLER_CID);
   1.703 +NS_DEFINE_NAMED_CID(NS_FONTTABLEPROTOCOLHANDLER_CID);
   1.704 +NS_DEFINE_NAMED_CID(NS_HOSTOBJECTURI_CID);
   1.705 +NS_DEFINE_NAMED_CID(NS_XMLHTTPREQUEST_CID);
   1.706 +NS_DEFINE_NAMED_CID(NS_DOMPARSER_CID);
   1.707 +NS_DEFINE_NAMED_CID(NS_DOMSESSIONSTORAGEMANAGER_CID);
   1.708 +NS_DEFINE_NAMED_CID(NS_DOMLOCALSTORAGEMANAGER_CID);
   1.709 +NS_DEFINE_NAMED_CID(NS_DOMJSON_CID);
   1.710 +NS_DEFINE_NAMED_CID(NS_TEXTEDITOR_CID);
   1.711 +NS_DEFINE_NAMED_CID(INDEXEDDB_MANAGER_CID);
   1.712 +NS_DEFINE_NAMED_CID(DOMREQUEST_SERVICE_CID);
   1.713 +NS_DEFINE_NAMED_CID(QUOTA_MANAGER_CID);
   1.714 +#ifdef MOZ_WIDGET_GONK
   1.715 +NS_DEFINE_NAMED_CID(SYSTEMWORKERMANAGER_CID);
   1.716 +#endif
   1.717 +#ifdef MOZ_B2G_BT
   1.718 +NS_DEFINE_NAMED_CID(BLUETOOTHSERVICE_CID);
   1.719 +#endif
   1.720 +#ifdef MOZ_WIDGET_GONK
   1.721 +NS_DEFINE_NAMED_CID(NS_AUDIOMANAGER_CID);
   1.722 +NS_DEFINE_NAMED_CID(NS_VOLUMESERVICE_CID);
   1.723 +#endif
   1.724 +
   1.725 +NS_DEFINE_NAMED_CID(NS_AUDIOCHANNELAGENT_CID);
   1.726 +
   1.727 +NS_DEFINE_NAMED_CID(NS_HTMLEDITOR_CID);
   1.728 +NS_DEFINE_NAMED_CID(NS_EDITORCONTROLLER_CID);
   1.729 +NS_DEFINE_NAMED_CID(NS_EDITINGCONTROLLER_CID);
   1.730 +NS_DEFINE_NAMED_CID(NS_EDITORCOMMANDTABLE_CID);
   1.731 +NS_DEFINE_NAMED_CID(NS_EDITINGCOMMANDTABLE_CID);
   1.732 +NS_DEFINE_NAMED_CID(NS_TEXTSERVICESDOCUMENT_CID);
   1.733 +NS_DEFINE_NAMED_CID(NS_GEOLOCATION_SERVICE_CID);
   1.734 +NS_DEFINE_NAMED_CID(NS_GEOLOCATION_CID);
   1.735 +NS_DEFINE_NAMED_CID(NS_AUDIOCHANNEL_SERVICE_CID);
   1.736 +NS_DEFINE_NAMED_CID(NS_FOCUSMANAGER_CID);
   1.737 +NS_DEFINE_NAMED_CID(CSPSERVICE_CID);
   1.738 +NS_DEFINE_NAMED_CID(NS_MIXEDCONTENTBLOCKER_CID);
   1.739 +NS_DEFINE_NAMED_CID(NS_EVENTLISTENERSERVICE_CID);
   1.740 +NS_DEFINE_NAMED_CID(NS_GLOBALMESSAGEMANAGER_CID);
   1.741 +NS_DEFINE_NAMED_CID(NS_PARENTPROCESSMESSAGEMANAGER_CID);
   1.742 +NS_DEFINE_NAMED_CID(NS_CHILDPROCESSMESSAGEMANAGER_CID);
   1.743 +NS_DEFINE_NAMED_CID(NSCHANNELPOLICY_CID);
   1.744 +NS_DEFINE_NAMED_CID(NS_SCRIPTSECURITYMANAGER_CID);
   1.745 +NS_DEFINE_NAMED_CID(NS_PRINCIPAL_CID);
   1.746 +NS_DEFINE_NAMED_CID(NS_SYSTEMPRINCIPAL_CID);
   1.747 +NS_DEFINE_NAMED_CID(NS_NULLPRINCIPAL_CID);
   1.748 +NS_DEFINE_NAMED_CID(NS_SECURITYNAMESET_CID);
   1.749 +NS_DEFINE_NAMED_CID(THIRDPARTYUTIL_CID);
   1.750 +NS_DEFINE_NAMED_CID(NS_STRUCTUREDCLONECONTAINER_CID);
   1.751 +NS_DEFINE_NAMED_CID(NS_DEVICE_SENSORS_CID);
   1.752 +
   1.753 +#ifndef MOZ_WIDGET_GONK
   1.754 +#if defined(ANDROID)
   1.755 +NS_DEFINE_NAMED_CID(NS_HAPTICFEEDBACK_CID);
   1.756 +#endif
   1.757 +#endif
   1.758 +NS_DEFINE_NAMED_CID(SMS_SERVICE_CID);
   1.759 +NS_DEFINE_NAMED_CID(MMS_SERVICE_CID);
   1.760 +NS_DEFINE_NAMED_CID(MOBILE_MESSAGE_SERVICE_CID);
   1.761 +NS_DEFINE_NAMED_CID(MOBILE_MESSAGE_DATABASE_SERVICE_CID);
   1.762 +NS_DEFINE_NAMED_CID(NS_POWERMANAGERSERVICE_CID);
   1.763 +NS_DEFINE_NAMED_CID(OSFILECONSTANTSSERVICE_CID);
   1.764 +NS_DEFINE_NAMED_CID(NS_ALARMHALSERVICE_CID);
   1.765 +NS_DEFINE_NAMED_CID(TCPSOCKETCHILD_CID);
   1.766 +NS_DEFINE_NAMED_CID(TCPSOCKETPARENT_CID);
   1.767 +NS_DEFINE_NAMED_CID(TCPSERVERSOCKETCHILD_CID);
   1.768 +NS_DEFINE_NAMED_CID(UDPSOCKETCHILD_CID);
   1.769 +NS_DEFINE_NAMED_CID(NS_TIMESERVICE_CID);
   1.770 +NS_DEFINE_NAMED_CID(NS_MEDIASTREAMCONTROLLERSERVICE_CID);
   1.771 +#ifdef MOZ_WIDGET_GONK
   1.772 +NS_DEFINE_NAMED_CID(GONK_GPS_GEOLOCATION_PROVIDER_CID);
   1.773 +#endif
   1.774 +NS_DEFINE_NAMED_CID(NS_MEDIAMANAGERSERVICE_CID);
   1.775 +#ifdef MOZ_GAMEPAD
   1.776 +NS_DEFINE_NAMED_CID(NS_GAMEPAD_TEST_CID);
   1.777 +#endif
   1.778 +#ifdef MOZ_WEBSPEECH
   1.779 +NS_DEFINE_NAMED_CID(NS_FAKE_SPEECH_RECOGNITION_SERVICE_CID);
   1.780 +NS_DEFINE_NAMED_CID(NS_SYNTHVOICEREGISTRY_CID);
   1.781 +#endif
   1.782 +
   1.783 +#ifdef ACCESSIBILITY
   1.784 +NS_DEFINE_NAMED_CID(NS_ACCESSIBILITY_SERVICE_CID);
   1.785 +#endif
   1.786 +NS_DEFINE_NAMED_CID(TELEPHONY_PROVIDER_CID);
   1.787 +
   1.788 +static nsresult
   1.789 +CreateWindowCommandTableConstructor(nsISupports *aOuter,
   1.790 +                                    REFNSIID aIID, void **aResult)
   1.791 +{
   1.792 +  nsresult rv;
   1.793 +  nsCOMPtr<nsIControllerCommandTable> commandTable =
   1.794 +      do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv);
   1.795 +  if (NS_FAILED(rv)) return rv;
   1.796 +
   1.797 +  rv = nsWindowCommandRegistration::RegisterWindowCommands(commandTable);
   1.798 +  if (NS_FAILED(rv)) return rv;
   1.799 +
   1.800 +  return commandTable->QueryInterface(aIID, aResult);
   1.801 +}
   1.802 +
   1.803 +static nsresult
   1.804 +CreateWindowControllerWithSingletonCommandTable(nsISupports *aOuter,
   1.805 +                                      REFNSIID aIID, void **aResult)
   1.806 +{
   1.807 +  nsresult rv;
   1.808 +  nsCOMPtr<nsIController> controller =
   1.809 +       do_CreateInstance("@mozilla.org/embedcomp/base-command-controller;1", &rv);
   1.810 +
   1.811 + if (NS_FAILED(rv)) return rv;
   1.812 +
   1.813 +  nsCOMPtr<nsIControllerCommandTable> windowCommandTable = do_GetService(kNS_WINDOWCOMMANDTABLE_CID, &rv);
   1.814 +  if (NS_FAILED(rv)) return rv;
   1.815 +
   1.816 +  // this is a singleton; make it immutable
   1.817 +  windowCommandTable->MakeImmutable();
   1.818 +
   1.819 +  nsCOMPtr<nsIControllerContext> controllerContext = do_QueryInterface(controller, &rv);
   1.820 +  if (NS_FAILED(rv)) return rv;
   1.821 +
   1.822 +  controllerContext->Init(windowCommandTable);
   1.823 +  if (NS_FAILED(rv)) return rv;
   1.824 +
   1.825 +  return controller->QueryInterface(aIID, aResult);
   1.826 +}
   1.827 +
   1.828 +// Constructor of a controller which is set up to use, internally, a
   1.829 +// singleton command-table pre-filled with editor commands.
   1.830 +static nsresult
   1.831 +nsEditorControllerConstructor(nsISupports *aOuter, REFNSIID aIID,
   1.832 +                              void **aResult)
   1.833 +{
   1.834 +  nsresult rv;
   1.835 +  nsCOMPtr<nsIController> controller = do_CreateInstance("@mozilla.org/embedcomp/base-command-controller;1", &rv);
   1.836 +  if (NS_FAILED(rv)) return rv;
   1.837 +
   1.838 +  nsCOMPtr<nsIControllerCommandTable> editorCommandTable = do_GetService(kNS_EDITORCOMMANDTABLE_CID, &rv);
   1.839 +  if (NS_FAILED(rv)) return rv;
   1.840 +
   1.841 +  // this guy is a singleton, so make it immutable
   1.842 +  editorCommandTable->MakeImmutable();
   1.843 +
   1.844 +  nsCOMPtr<nsIControllerContext> controllerContext = do_QueryInterface(controller, &rv);
   1.845 +  if (NS_FAILED(rv)) return rv;
   1.846 +
   1.847 +  rv = controllerContext->Init(editorCommandTable);
   1.848 +  if (NS_FAILED(rv)) return rv;
   1.849 +
   1.850 +  return controller->QueryInterface(aIID, aResult);
   1.851 +}
   1.852 +
   1.853 +// Constructor of a controller which is set up to use, internally, a
   1.854 +// singleton command-table pre-filled with editing commands.
   1.855 +static nsresult
   1.856 +nsEditingControllerConstructor(nsISupports *aOuter, REFNSIID aIID,
   1.857 +                                void **aResult)
   1.858 +{
   1.859 +  nsresult rv;
   1.860 +  nsCOMPtr<nsIController> controller = do_CreateInstance("@mozilla.org/embedcomp/base-command-controller;1", &rv);
   1.861 +  if (NS_FAILED(rv)) return rv;
   1.862 +
   1.863 +  nsCOMPtr<nsIControllerCommandTable> editingCommandTable = do_GetService(kNS_EDITINGCOMMANDTABLE_CID, &rv);
   1.864 +  if (NS_FAILED(rv)) return rv;
   1.865 +
   1.866 +  // this guy is a singleton, so make it immutable
   1.867 +  editingCommandTable->MakeImmutable();
   1.868 +
   1.869 +  nsCOMPtr<nsIControllerContext> controllerContext = do_QueryInterface(controller, &rv);
   1.870 +  if (NS_FAILED(rv)) return rv;
   1.871 +
   1.872 +  rv = controllerContext->Init(editingCommandTable);
   1.873 +  if (NS_FAILED(rv)) return rv;
   1.874 +
   1.875 +  return controller->QueryInterface(aIID, aResult);
   1.876 +}
   1.877 +
   1.878 +// Constructor for a command-table pre-filled with editor commands
   1.879 +static nsresult
   1.880 +nsEditorCommandTableConstructor(nsISupports *aOuter, REFNSIID aIID,
   1.881 +                                            void **aResult)
   1.882 +{
   1.883 +  nsresult rv;
   1.884 +  nsCOMPtr<nsIControllerCommandTable> commandTable =
   1.885 +      do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv);
   1.886 +  if (NS_FAILED(rv)) return rv;
   1.887 +
   1.888 +  rv = nsEditorController::RegisterEditorCommands(commandTable);
   1.889 +  if (NS_FAILED(rv)) return rv;
   1.890 +
   1.891 +  // we don't know here whether we're being created as an instance,
   1.892 +  // or a service, so we can't become immutable
   1.893 +
   1.894 +  return commandTable->QueryInterface(aIID, aResult);
   1.895 +}
   1.896 +
   1.897 +// Constructor for a command-table pre-filled with editing commands
   1.898 +static nsresult
   1.899 +nsEditingCommandTableConstructor(nsISupports *aOuter, REFNSIID aIID,
   1.900 +                                              void **aResult)
   1.901 +{
   1.902 +  nsresult rv;
   1.903 +  nsCOMPtr<nsIControllerCommandTable> commandTable =
   1.904 +      do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv);
   1.905 +  if (NS_FAILED(rv)) return rv;
   1.906 +
   1.907 +  rv = nsEditorController::RegisterEditingCommands(commandTable);
   1.908 +  if (NS_FAILED(rv)) return rv;
   1.909 +
   1.910 +  // we don't know here whether we're being created as an instance,
   1.911 +  // or a service, so we can't become immutable
   1.912 +
   1.913 +  return commandTable->QueryInterface(aIID, aResult);
   1.914 +}
   1.915 +
   1.916 +
   1.917 +static const mozilla::Module::CIDEntry kLayoutCIDs[] = {
   1.918 +  XPCONNECT_CIDENTRIES
   1.919 +#ifdef DEBUG
   1.920 +  { &kNS_FRAME_UTIL_CID, false, nullptr, CreateNewFrameUtil },
   1.921 +  { &kNS_LAYOUT_DEBUGGER_CID, false, nullptr, CreateNewLayoutDebugger },
   1.922 +#endif
   1.923 +  { &kNS_FRAMETRAVERSAL_CID, false, nullptr, CreateNewFrameTraversal },
   1.924 +  { &kNS_BOXOBJECT_CID, false, nullptr, CreateNewBoxObject },
   1.925 +#ifdef MOZ_XUL
   1.926 +  { &kNS_LISTBOXOBJECT_CID, false, nullptr, CreateNewListBoxObject },
   1.927 +  { &kNS_MENUBOXOBJECT_CID, false, nullptr, CreateNewMenuBoxObject },
   1.928 +  { &kNS_POPUPBOXOBJECT_CID, false, nullptr, CreateNewPopupBoxObject },
   1.929 +  { &kNS_CONTAINERBOXOBJECT_CID, false, nullptr, CreateNewContainerBoxObject },
   1.930 +  { &kNS_SCROLLBOXOBJECT_CID, false, nullptr, CreateNewScrollBoxObject },
   1.931 +  { &kNS_TREEBOXOBJECT_CID, false, nullptr, CreateNewTreeBoxObject },
   1.932 +#endif // MOZ_XUL
   1.933 +#ifdef MOZ_XUL
   1.934 +  { &kIN_DOMVIEW_CID, false, nullptr, inDOMViewConstructor },
   1.935 +#endif
   1.936 +  { &kIN_DEEPTREEWALKER_CID, false, nullptr, inDeepTreeWalkerConstructor },
   1.937 +  { &kIN_FLASHER_CID, false, nullptr, inFlasherConstructor },
   1.938 +  { &kIN_CSSVALUESEARCH_CID, false, nullptr, inCSSValueSearchConstructor },
   1.939 +  { &kIN_DOMUTILS_CID, false, nullptr, inDOMUtilsConstructor },
   1.940 +  { &kNS_CONTENT_VIEWER_CID, false, nullptr, CreateContentViewer },
   1.941 +  { &kNS_HTMLDOCUMENT_CID, false, nullptr, CreateHTMLDocument },
   1.942 +  { &kNS_XMLDOCUMENT_CID, false, nullptr, CreateXMLDocument },
   1.943 +  { &kNS_SVGDOCUMENT_CID, false, nullptr, CreateSVGDocument },
   1.944 +  { &kNS_IMAGEDOCUMENT_CID, false, nullptr, CreateImageDocument },
   1.945 +  { &kNS_DOMMULTIPARTBLOB_CID, false, nullptr, CreateDOMBlob },
   1.946 +  { &kNS_DOMMULTIPARTFILE_CID, false, nullptr, CreateDOMFile },
   1.947 +  { &kNS_DOMSELECTION_CID, false, nullptr, CreateDOMSelection },
   1.948 +  { &kNS_CONTENTITERATOR_CID, false, nullptr, CreateContentIterator },
   1.949 +  { &kNS_PRECONTENTITERATOR_CID, false, nullptr, CreatePreContentIterator },
   1.950 +  { &kNS_SUBTREEITERATOR_CID, false, nullptr, CreateSubtreeIterator },
   1.951 +  { &kNS_CANVASRENDERINGCONTEXTWEBGL_CID, false, nullptr, CreateCanvasRenderingContextWebGL },
   1.952 +  { &kNS_TEXT_ENCODER_CID, false, nullptr, CreateTextEncoder },
   1.953 +  { &kNS_HTMLCOPY_TEXT_ENCODER_CID, false, nullptr, CreateHTMLCopyTextEncoder },
   1.954 +  { &kNS_XMLCONTENTSERIALIZER_CID, false, nullptr, CreateXMLContentSerializer },
   1.955 +  { &kNS_HTMLCONTENTSERIALIZER_CID, false, nullptr, CreateHTMLContentSerializer },
   1.956 +  { &kNS_XHTMLCONTENTSERIALIZER_CID, false, nullptr, CreateXHTMLContentSerializer },
   1.957 +  { &kNS_PLAINTEXTSERIALIZER_CID, false, nullptr, CreatePlainTextSerializer },
   1.958 +  { &kNS_PARSERUTILS_CID, false, nullptr, nsParserUtilsConstructor },
   1.959 +  { &kNS_SCRIPTABLEUNESCAPEHTML_CID, false, nullptr, nsParserUtilsConstructor },
   1.960 +  { &kNS_CONTENTPOLICY_CID, false, nullptr, CreateContentPolicy },
   1.961 +  { &kNS_DATADOCUMENTCONTENTPOLICY_CID, false, nullptr, nsDataDocumentContentPolicyConstructor },
   1.962 +  { &kNS_NODATAPROTOCOLCONTENTPOLICY_CID, false, nullptr, nsNoDataProtocolContentPolicyConstructor },
   1.963 +  { &kNS_XULCONTROLLERS_CID, false, nullptr, NS_NewXULControllers },
   1.964 +#ifdef MOZ_XUL
   1.965 +  { &kNS_XULSORTSERVICE_CID, false, nullptr, CreateXULSortService },
   1.966 +  { &kNS_XULTEMPLATEBUILDER_CID, false, nullptr, NS_NewXULContentBuilder },
   1.967 +  { &kNS_XULTREEBUILDER_CID, false, nullptr, NS_NewXULTreeBuilder },
   1.968 +  { &kNS_XULDOCUMENT_CID, false, nullptr, CreateXULDocument },
   1.969 +#endif
   1.970 +  { &kNS_CONTENT_DOCUMENT_LOADER_FACTORY_CID, false, nullptr, CreateContentDLF },
   1.971 +  { &kNS_DOM_SCRIPT_OBJECT_FACTORY_CID, false, nullptr, nsDOMScriptObjectFactoryConstructor },
   1.972 +  { &kNS_JSPROTOCOLHANDLER_CID, false, nullptr, nsJSProtocolHandler::Create },
   1.973 +  { &kNS_JSURI_CID, false, nullptr, nsJSURIConstructor },
   1.974 +  { &kNS_WINDOWCOMMANDTABLE_CID, false, nullptr, CreateWindowCommandTableConstructor },
   1.975 +  { &kNS_WINDOWCONTROLLER_CID, false, nullptr, CreateWindowControllerWithSingletonCommandTable },
   1.976 +  { &kNS_PLUGINDOCLOADERFACTORY_CID, false, nullptr, CreateContentDLF },
   1.977 +  { &kNS_PLUGINDOCUMENT_CID, false, nullptr, CreatePluginDocument },
   1.978 +  { &kNS_VIDEODOCUMENT_CID, false, nullptr, CreateVideoDocument },
   1.979 +  { &kNS_STYLESHEETSERVICE_CID, false, nullptr, nsStyleSheetServiceConstructor },
   1.980 +  { &kTRANSFORMIIX_XSLT_PROCESSOR_CID, false, nullptr, txMozillaXSLTProcessorConstructor },
   1.981 +  { &kTRANSFORMIIX_XPATH_EVALUATOR_CID, false, nullptr, XPathEvaluatorConstructor },
   1.982 +  { &kTRANSFORMIIX_NODESET_CID, false, nullptr, txNodeSetAdaptorConstructor },
   1.983 +  { &kNS_XMLSERIALIZER_CID, false, nullptr, nsDOMSerializerConstructor },
   1.984 +  { &kNS_FILEREADER_CID, false, nullptr, nsDOMFileReaderConstructor },
   1.985 +  { &kNS_FORMDATA_CID, false, nullptr, nsFormDataConstructor },
   1.986 +  { &kNS_BLOBPROTOCOLHANDLER_CID, false, nullptr, nsBlobProtocolHandlerConstructor },
   1.987 +  { &kNS_MEDIASTREAMPROTOCOLHANDLER_CID, false, nullptr, nsMediaStreamProtocolHandlerConstructor },
   1.988 +  { &kNS_MEDIASOURCEPROTOCOLHANDLER_CID, false, nullptr, nsMediaSourceProtocolHandlerConstructor },
   1.989 +  { &kNS_FONTTABLEPROTOCOLHANDLER_CID, false, nullptr, nsFontTableProtocolHandlerConstructor },
   1.990 +  { &kNS_HOSTOBJECTURI_CID, false, nullptr, nsHostObjectURIConstructor },
   1.991 +  { &kNS_XMLHTTPREQUEST_CID, false, nullptr, nsXMLHttpRequestConstructor },
   1.992 +  { &kNS_DOMPARSER_CID, false, nullptr, DOMParserConstructor },
   1.993 +  { &kNS_XPCEXCEPTION_CID, false, nullptr, ExceptionConstructor },
   1.994 +  { &kNS_DOMSESSIONSTORAGEMANAGER_CID, false, nullptr, DOMSessionStorageManagerConstructor },
   1.995 +  { &kNS_DOMLOCALSTORAGEMANAGER_CID, false, nullptr, DOMLocalStorageManagerConstructor },
   1.996 +  { &kNS_DOMJSON_CID, false, nullptr, NS_NewJSON },
   1.997 +  { &kNS_TEXTEDITOR_CID, false, nullptr, nsPlaintextEditorConstructor },
   1.998 +  { &kINDEXEDDB_MANAGER_CID, false, nullptr, IndexedDatabaseManagerConstructor },
   1.999 +  { &kDOMREQUEST_SERVICE_CID, false, nullptr, DOMRequestServiceConstructor },
  1.1000 +  { &kQUOTA_MANAGER_CID, false, nullptr, QuotaManagerConstructor },
  1.1001 +#ifdef MOZ_WIDGET_GONK
  1.1002 +  { &kSYSTEMWORKERMANAGER_CID, true, nullptr, SystemWorkerManagerConstructor },
  1.1003 +#endif
  1.1004 +#ifdef MOZ_B2G_BT
  1.1005 +  { &kBLUETOOTHSERVICE_CID, true, nullptr, BluetoothServiceConstructor },
  1.1006 +#endif
  1.1007 +#ifdef MOZ_WIDGET_GONK
  1.1008 +  { &kNS_AUDIOMANAGER_CID, true, nullptr, AudioManagerConstructor },
  1.1009 +  { &kNS_VOLUMESERVICE_CID, true, nullptr, nsVolumeServiceConstructor },
  1.1010 +#endif
  1.1011 +  { &kNS_AUDIOCHANNELAGENT_CID, true, nullptr, AudioChannelAgentConstructor },
  1.1012 +  { &kNS_HTMLEDITOR_CID, false, nullptr, nsHTMLEditorConstructor },
  1.1013 +  { &kNS_EDITORCONTROLLER_CID, false, nullptr, nsEditorControllerConstructor },
  1.1014 +  { &kNS_EDITINGCONTROLLER_CID, false, nullptr, nsEditingControllerConstructor },
  1.1015 +  { &kNS_EDITORCOMMANDTABLE_CID, false, nullptr, nsEditorCommandTableConstructor },
  1.1016 +  { &kNS_EDITINGCOMMANDTABLE_CID, false, nullptr, nsEditingCommandTableConstructor },
  1.1017 +  { &kNS_TEXTSERVICESDOCUMENT_CID, false, nullptr, nsTextServicesDocumentConstructor },
  1.1018 +  { &kNS_GEOLOCATION_SERVICE_CID, false, nullptr, nsGeolocationServiceConstructor },
  1.1019 +  { &kNS_GEOLOCATION_CID, false, nullptr, GeolocationConstructor },
  1.1020 +  { &kNS_AUDIOCHANNEL_SERVICE_CID, false, nullptr, AudioChannelServiceConstructor },
  1.1021 +  { &kNS_FOCUSMANAGER_CID, false, nullptr, CreateFocusManager },
  1.1022 +#ifdef MOZ_WEBSPEECH
  1.1023 +  { &kNS_FAKE_SPEECH_RECOGNITION_SERVICE_CID, false, nullptr, FakeSpeechRecognitionServiceConstructor },
  1.1024 +  { &kNS_SYNTHVOICEREGISTRY_CID, true, nullptr, nsSynthVoiceRegistryConstructor },
  1.1025 +#endif
  1.1026 +  { &kCSPSERVICE_CID, false, nullptr, CSPServiceConstructor },
  1.1027 +  { &kNS_MIXEDCONTENTBLOCKER_CID, false, nullptr, nsMixedContentBlockerConstructor },
  1.1028 +  { &kNS_EVENTLISTENERSERVICE_CID, false, nullptr, CreateEventListenerService },
  1.1029 +  { &kNS_GLOBALMESSAGEMANAGER_CID, false, nullptr, CreateGlobalMessageManager },
  1.1030 +  { &kNS_PARENTPROCESSMESSAGEMANAGER_CID, false, nullptr, CreateParentMessageManager },
  1.1031 +  { &kNS_CHILDPROCESSMESSAGEMANAGER_CID, false, nullptr, CreateChildMessageManager },
  1.1032 +  { &kNSCHANNELPOLICY_CID, false, nullptr, nsChannelPolicyConstructor },
  1.1033 +  { &kNS_SCRIPTSECURITYMANAGER_CID, false, nullptr, Construct_nsIScriptSecurityManager },
  1.1034 +  { &kNS_PRINCIPAL_CID, false, nullptr, nsPrincipalConstructor },
  1.1035 +  { &kNS_SYSTEMPRINCIPAL_CID, false, nullptr, nsSystemPrincipalConstructor },
  1.1036 +  { &kNS_NULLPRINCIPAL_CID, false, nullptr, nsNullPrincipalConstructor },
  1.1037 +  { &kNS_SECURITYNAMESET_CID, false, nullptr, nsSecurityNameSetConstructor },
  1.1038 +  { &kNS_DEVICE_SENSORS_CID, false, nullptr, nsDeviceSensorsConstructor },
  1.1039 +#ifndef MOZ_WIDGET_GONK
  1.1040 +#if defined(ANDROID)
  1.1041 +  { &kNS_HAPTICFEEDBACK_CID, false, nullptr, nsHapticFeedbackConstructor },
  1.1042 +#endif
  1.1043 +#endif
  1.1044 +  { &kTHIRDPARTYUTIL_CID, false, nullptr, ThirdPartyUtilConstructor },
  1.1045 +  { &kNS_STRUCTUREDCLONECONTAINER_CID, false, nullptr, nsStructuredCloneContainerConstructor },
  1.1046 +  { &kSMS_SERVICE_CID, false, nullptr, nsISmsServiceConstructor },
  1.1047 +  { &kMMS_SERVICE_CID, false, nullptr, nsIMmsServiceConstructor },
  1.1048 +  { &kMOBILE_MESSAGE_SERVICE_CID, false, nullptr, nsIMobileMessageServiceConstructor },
  1.1049 +  { &kMOBILE_MESSAGE_DATABASE_SERVICE_CID, false, nullptr, nsIMobileMessageDatabaseServiceConstructor },
  1.1050 +  { &kNS_POWERMANAGERSERVICE_CID, false, nullptr, nsIPowerManagerServiceConstructor },
  1.1051 +  { &kOSFILECONSTANTSSERVICE_CID, true, nullptr, OSFileConstantsServiceConstructor },
  1.1052 +  { &kNS_ALARMHALSERVICE_CID, false, nullptr, nsIAlarmHalServiceConstructor },
  1.1053 +  { &kTCPSOCKETCHILD_CID, false, nullptr, TCPSocketChildConstructor },
  1.1054 +  { &kTCPSOCKETPARENT_CID, false, nullptr, TCPSocketParentConstructor },
  1.1055 +  { &kTCPSERVERSOCKETCHILD_CID, false, nullptr, TCPServerSocketChildConstructor },
  1.1056 +  { &kUDPSOCKETCHILD_CID, false, nullptr, UDPSocketChildConstructor },
  1.1057 +  { &kNS_TIMESERVICE_CID, false, nullptr, nsITimeServiceConstructor },
  1.1058 +  { &kNS_MEDIASTREAMCONTROLLERSERVICE_CID, false, nullptr, nsIStreamingProtocolControllerServiceConstructor },
  1.1059 +#ifdef MOZ_WIDGET_GONK
  1.1060 +  { &kGONK_GPS_GEOLOCATION_PROVIDER_CID, false, nullptr, nsIGeolocationProviderConstructor },
  1.1061 +#endif
  1.1062 +  { &kNS_MEDIAMANAGERSERVICE_CID, false, nullptr, nsIMediaManagerServiceConstructor },
  1.1063 +#ifdef MOZ_GAMEPAD
  1.1064 +  { &kNS_GAMEPAD_TEST_CID, false, nullptr, GamepadServiceTestConstructor },
  1.1065 +#endif
  1.1066 +#ifdef ACCESSIBILITY
  1.1067 +  { &kNS_ACCESSIBILITY_SERVICE_CID, false, nullptr, CreateA11yService },
  1.1068 +#endif
  1.1069 +  { &kTELEPHONY_PROVIDER_CID, false, nullptr, nsITelephonyProviderConstructor },
  1.1070 +  { nullptr }
  1.1071 +};
  1.1072 +
  1.1073 +static const mozilla::Module::ContractIDEntry kLayoutContracts[] = {
  1.1074 +  XPCONNECT_CONTRACTS
  1.1075 +  { "@mozilla.org/layout/xul-boxobject;1", &kNS_BOXOBJECT_CID },
  1.1076 +#ifdef MOZ_XUL
  1.1077 +  { "@mozilla.org/layout/xul-boxobject-listbox;1", &kNS_LISTBOXOBJECT_CID },
  1.1078 +  { "@mozilla.org/layout/xul-boxobject-menu;1", &kNS_MENUBOXOBJECT_CID },
  1.1079 +  { "@mozilla.org/layout/xul-boxobject-popup;1", &kNS_POPUPBOXOBJECT_CID },
  1.1080 +  { "@mozilla.org/layout/xul-boxobject-container;1", &kNS_CONTAINERBOXOBJECT_CID },
  1.1081 +  { "@mozilla.org/layout/xul-boxobject-scrollbox;1", &kNS_SCROLLBOXOBJECT_CID },
  1.1082 +  { "@mozilla.org/layout/xul-boxobject-tree;1", &kNS_TREEBOXOBJECT_CID },
  1.1083 +#endif // MOZ_XUL
  1.1084 +#ifdef MOZ_XUL
  1.1085 +  { "@mozilla.org/inspector/dom-view;1", &kIN_DOMVIEW_CID },
  1.1086 +#endif
  1.1087 +  { "@mozilla.org/inspector/deep-tree-walker;1", &kIN_DEEPTREEWALKER_CID },
  1.1088 +  { "@mozilla.org/inspector/flasher;1", &kIN_FLASHER_CID },
  1.1089 +  { "@mozilla.org/inspector/search;1?type=cssvalue", &kIN_CSSVALUESEARCH_CID },
  1.1090 +  { IN_DOMUTILS_CONTRACTID, &kIN_DOMUTILS_CID },
  1.1091 +  { "@mozilla.org/xml/xml-document;1", &kNS_XMLDOCUMENT_CID },
  1.1092 +  { "@mozilla.org/svg/svg-document;1", &kNS_SVGDOCUMENT_CID },
  1.1093 +  { NS_DOMMULTIPARTBLOB_CONTRACTID, &kNS_DOMMULTIPARTBLOB_CID },
  1.1094 +  { NS_DOMMULTIPARTFILE_CONTRACTID, &kNS_DOMMULTIPARTFILE_CID },
  1.1095 +  { "@mozilla.org/content/dom-selection;1", &kNS_DOMSELECTION_CID },
  1.1096 +  { "@mozilla.org/content/post-content-iterator;1", &kNS_CONTENTITERATOR_CID },
  1.1097 +  { "@mozilla.org/content/pre-content-iterator;1", &kNS_PRECONTENTITERATOR_CID },
  1.1098 +  { "@mozilla.org/content/subtree-content-iterator;1", &kNS_SUBTREEITERATOR_CID },
  1.1099 +  { "@mozilla.org/content/canvas-rendering-context;1?id=experimental-webgl", &kNS_CANVASRENDERINGCONTEXTWEBGL_CID },
  1.1100 +#ifdef MOZ_WEBGL_CONFORMANT
  1.1101 +  { "@mozilla.org/content/canvas-rendering-context;1?id=webgl", &kNS_CANVASRENDERINGCONTEXTWEBGL_CID },
  1.1102 +#endif
  1.1103 +  { NS_DOC_ENCODER_CONTRACTID_BASE "text/xml", &kNS_TEXT_ENCODER_CID },
  1.1104 +  { NS_DOC_ENCODER_CONTRACTID_BASE "application/xml", &kNS_TEXT_ENCODER_CID },
  1.1105 +  { NS_DOC_ENCODER_CONTRACTID_BASE "application/xhtml+xml", &kNS_TEXT_ENCODER_CID },
  1.1106 +  { NS_DOC_ENCODER_CONTRACTID_BASE "image/svg+xml", &kNS_TEXT_ENCODER_CID },
  1.1107 +  { NS_DOC_ENCODER_CONTRACTID_BASE "text/html", &kNS_TEXT_ENCODER_CID },
  1.1108 +  { NS_DOC_ENCODER_CONTRACTID_BASE "text/plain", &kNS_TEXT_ENCODER_CID },
  1.1109 +  { NS_HTMLCOPY_ENCODER_CONTRACTID, &kNS_HTMLCOPY_TEXT_ENCODER_CID },
  1.1110 +  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/xml", &kNS_XMLCONTENTSERIALIZER_CID },
  1.1111 +  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/xml", &kNS_XMLCONTENTSERIALIZER_CID },
  1.1112 +  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/xhtml+xml", &kNS_XHTMLCONTENTSERIALIZER_CID },
  1.1113 +  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "image/svg+xml", &kNS_XMLCONTENTSERIALIZER_CID },
  1.1114 +  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/html", &kNS_HTMLCONTENTSERIALIZER_CID },
  1.1115 +  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/vnd.mozilla.xul+xml", &kNS_XMLCONTENTSERIALIZER_CID },
  1.1116 +  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/plain", &kNS_PLAINTEXTSERIALIZER_CID },
  1.1117 +  { NS_PARSERUTILS_CONTRACTID, &kNS_PARSERUTILS_CID },
  1.1118 +  { NS_SCRIPTABLEUNESCAPEHTML_CONTRACTID, &kNS_SCRIPTABLEUNESCAPEHTML_CID },
  1.1119 +  { NS_CONTENTPOLICY_CONTRACTID, &kNS_CONTENTPOLICY_CID },
  1.1120 +  { NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID, &kNS_DATADOCUMENTCONTENTPOLICY_CID },
  1.1121 +  { NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID, &kNS_NODATAPROTOCOLCONTENTPOLICY_CID },
  1.1122 +  { "@mozilla.org/xul/xul-controllers;1", &kNS_XULCONTROLLERS_CID },
  1.1123 +#ifdef MOZ_XUL
  1.1124 +  { "@mozilla.org/xul/xul-sort-service;1", &kNS_XULSORTSERVICE_CID },
  1.1125 +  { "@mozilla.org/xul/xul-template-builder;1", &kNS_XULTEMPLATEBUILDER_CID },
  1.1126 +  { "@mozilla.org/xul/xul-tree-builder;1", &kNS_XULTREEBUILDER_CID },
  1.1127 +  { "@mozilla.org/xul/xul-document;1", &kNS_XULDOCUMENT_CID },
  1.1128 +#endif
  1.1129 +  { CONTENT_DLF_CONTRACTID, &kNS_CONTENT_DOCUMENT_LOADER_FACTORY_CID },
  1.1130 +  { NS_JSPROTOCOLHANDLER_CONTRACTID, &kNS_JSPROTOCOLHANDLER_CID },
  1.1131 +  { NS_WINDOWCONTROLLER_CONTRACTID, &kNS_WINDOWCONTROLLER_CID },
  1.1132 +  { PLUGIN_DLF_CONTRACTID, &kNS_PLUGINDOCLOADERFACTORY_CID },
  1.1133 +  { NS_STYLESHEETSERVICE_CONTRACTID, &kNS_STYLESHEETSERVICE_CID },
  1.1134 +  { TRANSFORMIIX_XSLT_PROCESSOR_CONTRACTID, &kTRANSFORMIIX_XSLT_PROCESSOR_CID },
  1.1135 +  { NS_XPATH_EVALUATOR_CONTRACTID, &kTRANSFORMIIX_XPATH_EVALUATOR_CID },
  1.1136 +  { TRANSFORMIIX_NODESET_CONTRACTID, &kTRANSFORMIIX_NODESET_CID },
  1.1137 +  { NS_XMLSERIALIZER_CONTRACTID, &kNS_XMLSERIALIZER_CID },
  1.1138 +  { NS_FILEREADER_CONTRACTID, &kNS_FILEREADER_CID },
  1.1139 +  { NS_FORMDATA_CONTRACTID, &kNS_FORMDATA_CID },
  1.1140 +  { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX BLOBURI_SCHEME, &kNS_BLOBPROTOCOLHANDLER_CID },
  1.1141 +  { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX MEDIASTREAMURI_SCHEME, &kNS_MEDIASTREAMPROTOCOLHANDLER_CID },
  1.1142 +  { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX MEDIASOURCEURI_SCHEME, &kNS_MEDIASOURCEPROTOCOLHANDLER_CID },
  1.1143 +  { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX FONTTABLEURI_SCHEME, &kNS_FONTTABLEPROTOCOLHANDLER_CID },
  1.1144 +  { NS_XMLHTTPREQUEST_CONTRACTID, &kNS_XMLHTTPREQUEST_CID },
  1.1145 +  { NS_DOMPARSER_CONTRACTID, &kNS_DOMPARSER_CID },
  1.1146 +  { XPC_EXCEPTION_CONTRACTID, &kNS_XPCEXCEPTION_CID },
  1.1147 +  { "@mozilla.org/dom/localStorage-manager;1", &kNS_DOMLOCALSTORAGEMANAGER_CID },
  1.1148 +  // Keeping the old ContractID for backward compatibility
  1.1149 +  { "@mozilla.org/dom/storagemanager;1", &kNS_DOMLOCALSTORAGEMANAGER_CID },
  1.1150 +  { "@mozilla.org/dom/sessionStorage-manager;1", &kNS_DOMSESSIONSTORAGEMANAGER_CID },
  1.1151 +  { "@mozilla.org/dom/json;1", &kNS_DOMJSON_CID },
  1.1152 +  { "@mozilla.org/editor/texteditor;1", &kNS_TEXTEDITOR_CID },
  1.1153 +  { INDEXEDDB_MANAGER_CONTRACTID, &kINDEXEDDB_MANAGER_CID },
  1.1154 +  { DOMREQUEST_SERVICE_CONTRACTID, &kDOMREQUEST_SERVICE_CID },
  1.1155 +  { QUOTA_MANAGER_CONTRACTID, &kQUOTA_MANAGER_CID },
  1.1156 +#ifdef MOZ_WIDGET_GONK
  1.1157 +  { SYSTEMWORKERMANAGER_CONTRACTID, &kSYSTEMWORKERMANAGER_CID },
  1.1158 +#endif
  1.1159 +#ifdef MOZ_B2G_BT
  1.1160 +  { BLUETOOTHSERVICE_CONTRACTID, &kBLUETOOTHSERVICE_CID },
  1.1161 +#endif
  1.1162 +#ifdef MOZ_WIDGET_GONK
  1.1163 +  { NS_AUDIOMANAGER_CONTRACTID, &kNS_AUDIOMANAGER_CID },
  1.1164 +  { NS_VOLUMESERVICE_CONTRACTID, &kNS_VOLUMESERVICE_CID },
  1.1165 +#endif
  1.1166 +  { NS_AUDIOCHANNELAGENT_CONTRACTID, &kNS_AUDIOCHANNELAGENT_CID },
  1.1167 +  { "@mozilla.org/editor/htmleditor;1", &kNS_HTMLEDITOR_CID },
  1.1168 +  { "@mozilla.org/editor/editorcontroller;1", &kNS_EDITORCONTROLLER_CID },
  1.1169 +  { "@mozilla.org/editor/editingcontroller;1", &kNS_EDITINGCONTROLLER_CID },
  1.1170 +  { "@mozilla.org/textservices/textservicesdocument;1", &kNS_TEXTSERVICESDOCUMENT_CID },
  1.1171 +  { "@mozilla.org/geolocation/service;1", &kNS_GEOLOCATION_SERVICE_CID },
  1.1172 +  { "@mozilla.org/geolocation;1", &kNS_GEOLOCATION_CID },
  1.1173 +  { "@mozilla.org/audiochannel/service;1", &kNS_AUDIOCHANNEL_SERVICE_CID },
  1.1174 +  { "@mozilla.org/focus-manager;1", &kNS_FOCUSMANAGER_CID },
  1.1175 +#ifdef MOZ_WEBSPEECH
  1.1176 +  { NS_SPEECH_RECOGNITION_SERVICE_CONTRACTID_PREFIX "fake", &kNS_FAKE_SPEECH_RECOGNITION_SERVICE_CID },
  1.1177 +  { NS_SYNTHVOICEREGISTRY_CONTRACTID, &kNS_SYNTHVOICEREGISTRY_CID },
  1.1178 +#endif
  1.1179 +  { CSPSERVICE_CONTRACTID, &kCSPSERVICE_CID },
  1.1180 +  { NS_MIXEDCONTENTBLOCKER_CONTRACTID, &kNS_MIXEDCONTENTBLOCKER_CID },
  1.1181 +  { NS_EVENTLISTENERSERVICE_CONTRACTID, &kNS_EVENTLISTENERSERVICE_CID },
  1.1182 +  { NS_GLOBALMESSAGEMANAGER_CONTRACTID, &kNS_GLOBALMESSAGEMANAGER_CID },
  1.1183 +  { NS_PARENTPROCESSMESSAGEMANAGER_CONTRACTID, &kNS_PARENTPROCESSMESSAGEMANAGER_CID },
  1.1184 +  { NS_CHILDPROCESSMESSAGEMANAGER_CONTRACTID, &kNS_CHILDPROCESSMESSAGEMANAGER_CID },
  1.1185 +  { NSCHANNELPOLICY_CONTRACTID, &kNSCHANNELPOLICY_CID },
  1.1186 +  { NS_SCRIPTSECURITYMANAGER_CONTRACTID, &kNS_SCRIPTSECURITYMANAGER_CID },
  1.1187 +  { NS_GLOBAL_CHANNELEVENTSINK_CONTRACTID, &kNS_SCRIPTSECURITYMANAGER_CID },
  1.1188 +  { NS_PRINCIPAL_CONTRACTID, &kNS_PRINCIPAL_CID },
  1.1189 +  { NS_SYSTEMPRINCIPAL_CONTRACTID, &kNS_SYSTEMPRINCIPAL_CID },
  1.1190 +  { NS_NULLPRINCIPAL_CONTRACTID, &kNS_NULLPRINCIPAL_CID },
  1.1191 +  { NS_SECURITYNAMESET_CONTRACTID, &kNS_SECURITYNAMESET_CID },
  1.1192 +  { NS_DEVICE_SENSORS_CONTRACTID, &kNS_DEVICE_SENSORS_CID },
  1.1193 +#ifndef MOZ_WIDGET_GONK
  1.1194 +#if defined(ANDROID)
  1.1195 +  { "@mozilla.org/widget/hapticfeedback;1", &kNS_HAPTICFEEDBACK_CID },
  1.1196 +#endif
  1.1197 +#endif
  1.1198 +  { THIRDPARTYUTIL_CONTRACTID, &kTHIRDPARTYUTIL_CID },
  1.1199 +  { NS_STRUCTUREDCLONECONTAINER_CONTRACTID, &kNS_STRUCTUREDCLONECONTAINER_CID },
  1.1200 +  { SMS_SERVICE_CONTRACTID, &kSMS_SERVICE_CID },
  1.1201 +  { MMS_SERVICE_CONTRACTID, &kMMS_SERVICE_CID },
  1.1202 +  { MOBILE_MESSAGE_SERVICE_CONTRACTID, &kMOBILE_MESSAGE_SERVICE_CID },
  1.1203 +  { MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID, &kMOBILE_MESSAGE_DATABASE_SERVICE_CID },
  1.1204 +  { POWERMANAGERSERVICE_CONTRACTID, &kNS_POWERMANAGERSERVICE_CID },
  1.1205 +  { OSFILECONSTANTSSERVICE_CONTRACTID, &kOSFILECONSTANTSSERVICE_CID },
  1.1206 +  { ALARMHALSERVICE_CONTRACTID, &kNS_ALARMHALSERVICE_CID },
  1.1207 +  { "@mozilla.org/tcp-socket-child;1", &kTCPSOCKETCHILD_CID },
  1.1208 +  { "@mozilla.org/tcp-socket-parent;1", &kTCPSOCKETPARENT_CID },
  1.1209 +  { "@mozilla.org/tcp-server-socket-child;1", &kTCPSERVERSOCKETCHILD_CID },
  1.1210 +  { "@mozilla.org/udp-socket-child;1", &kUDPSOCKETCHILD_CID },
  1.1211 +  { TIMESERVICE_CONTRACTID, &kNS_TIMESERVICE_CID },
  1.1212 +  { MEDIASTREAMCONTROLLERSERVICE_CONTRACTID, &kNS_MEDIASTREAMCONTROLLERSERVICE_CID },
  1.1213 +#ifdef MOZ_WIDGET_GONK
  1.1214 +  { GONK_GPS_GEOLOCATION_PROVIDER_CONTRACTID, &kGONK_GPS_GEOLOCATION_PROVIDER_CID },
  1.1215 +#endif
  1.1216 +#ifdef MOZ_GAMEPAD
  1.1217 +  { NS_GAMEPAD_TEST_CONTRACTID, &kNS_GAMEPAD_TEST_CID },
  1.1218 +#endif
  1.1219 +  { MEDIAMANAGERSERVICE_CONTRACTID, &kNS_MEDIAMANAGERSERVICE_CID },
  1.1220 +#ifdef ACCESSIBILITY
  1.1221 +  { "@mozilla.org/accessibilityService;1", &kNS_ACCESSIBILITY_SERVICE_CID },
  1.1222 +  { "@mozilla.org/accessibleRetrieval;1", &kNS_ACCESSIBILITY_SERVICE_CID },
  1.1223 +#endif
  1.1224 +  { TELEPHONY_PROVIDER_CONTRACTID, &kTELEPHONY_PROVIDER_CID },
  1.1225 +  { nullptr }
  1.1226 +};
  1.1227 +
  1.1228 +static const mozilla::Module::CategoryEntry kLayoutCategories[] = {
  1.1229 +  XPCONNECT_CATEGORIES
  1.1230 +  { "content-policy", NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID, NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID },
  1.1231 +  { "content-policy", NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID, NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID },
  1.1232 +  { "content-policy", "CSPService", CSPSERVICE_CONTRACTID },
  1.1233 +  { "content-policy", NS_MIXEDCONTENTBLOCKER_CONTRACTID, NS_MIXEDCONTENTBLOCKER_CONTRACTID },
  1.1234 +  { "net-channel-event-sinks", "CSPService", CSPSERVICE_CONTRACTID },
  1.1235 +  { JAVASCRIPT_GLOBAL_STATIC_NAMESET_CATEGORY, "PrivilegeManager", NS_SECURITYNAMESET_CONTRACTID },
  1.1236 +  { "app-startup", "Script Security Manager", "service," NS_SCRIPTSECURITYMANAGER_CONTRACTID },
  1.1237 +  { TOPIC_WEB_APP_CLEAR_DATA, "QuotaManager", "service," QUOTA_MANAGER_CONTRACTID },
  1.1238 +#ifdef MOZ_WIDGET_GONK
  1.1239 +  { "app-startup", "Volume Service", "service," NS_VOLUMESERVICE_CONTRACTID },
  1.1240 +#endif
  1.1241 +  CONTENTDLF_CATEGORIES
  1.1242 +#ifdef MOZ_WIDGET_GONK
  1.1243 +  { "profile-after-change", "Gonk System Worker Manager", SYSTEMWORKERMANAGER_CONTRACTID },
  1.1244 +#endif
  1.1245 +#ifdef MOZ_B2G_BT
  1.1246 +  { "profile-after-change", "Bluetooth Service", BLUETOOTHSERVICE_CONTRACTID },
  1.1247 +#endif
  1.1248 +  { nullptr }
  1.1249 +};
  1.1250 +
  1.1251 +static void
  1.1252 +LayoutModuleDtor()
  1.1253 +{
  1.1254 +  Shutdown();
  1.1255 +  nsContentUtils::XPCOMShutdown();
  1.1256 +
  1.1257 +  // Layout depends heavily on gfx and imagelib, so we want to make sure that
  1.1258 +  // these modules are shut down after all the layout cleanup runs.
  1.1259 +  mozilla::image::ShutdownModule();
  1.1260 +  gfxPlatform::Shutdown();
  1.1261 +
  1.1262 +  nsScriptSecurityManager::Shutdown();
  1.1263 +  xpcModuleDtor();
  1.1264 +}
  1.1265 +
  1.1266 +static const mozilla::Module kLayoutModule = {
  1.1267 +  mozilla::Module::kVersion,
  1.1268 +  kLayoutCIDs,
  1.1269 +  kLayoutContracts,
  1.1270 +  kLayoutCategories,
  1.1271 +  nullptr,
  1.1272 +  Initialize,
  1.1273 +  LayoutModuleDtor
  1.1274 +};
  1.1275 +
  1.1276 +NSMODULE_DEFN(nsLayoutModule) = &kLayoutModule;

mercurial