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;