Backed out changeset 5a28afa66e38 (bug 1051633) for bustage.
[gecko.git] / layout / build / nsLayoutModule.cpp
blobc465ab1e70c90ff3d5ae87218442bf0e7ce64af5
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #include "base/basictypes.h"
8 #include "XPCModule.h"
9 #include "mozilla/ModuleUtils.h"
10 #include "nsImageModule.h"
11 #include "nsLayoutStatics.h"
12 #include "nsContentCID.h"
13 #include "nsContentDLF.h"
14 #include "nsContentPolicyUtils.h"
15 #include "nsDataDocumentContentPolicy.h"
16 #include "nsNoDataProtocolContentPolicy.h"
17 #include "nsDOMCID.h"
18 #include "nsHTMLContentSerializer.h"
19 #include "nsHTMLParts.h"
20 #include "nsIComponentManager.h"
21 #include "nsIContentIterator.h"
22 #include "nsIContentSerializer.h"
23 #include "nsIContentViewer.h"
24 #include "nsIController.h"
25 #include "nsIControllers.h"
26 #include "nsIDOMDOMImplementation.h"
27 #include "nsIDocument.h"
28 #include "nsIDocumentEncoder.h"
29 #include "nsIFactory.h"
30 #include "nsIFrameUtil.h"
31 #include "nsHTMLStyleSheet.h"
32 #include "nsILayoutDebugger.h"
33 #include "nsNameSpaceManager.h"
34 #include "nsIObserver.h"
35 #include "nsIObserverService.h"
36 #include "nsIScriptNameSpaceManager.h"
37 #include "nsISelection.h"
38 #include "nsCaret.h"
39 #include "nsPlainTextSerializer.h"
40 #include "nsXMLContentSerializer.h"
41 #include "nsXHTMLContentSerializer.h"
42 #include "nsRuleNode.h"
43 #include "nsContentAreaDragDrop.h"
44 #include "nsContentList.h"
45 #include "nsBox.h"
46 #include "nsIFrameTraversal.h"
47 #include "nsLayoutCID.h"
48 #include "nsStyleSheetService.h"
49 #include "nsFocusManager.h"
50 #include "ThirdPartyUtil.h"
51 #include "nsStructuredCloneContainer.h"
53 #include "nsIEventListenerService.h"
54 #include "nsIMessageManager.h"
56 // Transformiix stuff
57 #include "mozilla/dom/XPathEvaluator.h"
58 #include "txMozillaXSLTProcessor.h"
59 #include "txNodeSetAdaptor.h"
61 #include "mozilla/dom/DOMParser.h"
62 #include "nsDOMSerializer.h"
63 #include "nsXMLHttpRequest.h"
64 #include "nsChannelPolicy.h"
66 // view stuff
67 #include "nsContentCreatorFunctions.h"
69 // DOM includes
70 #include "nsDOMBlobBuilder.h"
71 #include "nsDOMFileReader.h"
73 #include "nsFormData.h"
74 #include "nsHostObjectProtocolHandler.h"
75 #include "nsHostObjectURI.h"
76 #include "nsGlobalWindowCommands.h"
77 #include "nsIControllerCommandTable.h"
78 #include "nsJSProtocolHandler.h"
79 #include "nsScriptNameSpaceManager.h"
80 #include "nsIControllerContext.h"
81 #include "nsDOMScriptObjectFactory.h"
82 #include "DOMStorageManager.h"
83 #include "nsJSON.h"
84 #include "nsZipArchive.h"
85 #include "mozIApplicationClearPrivateDataParams.h"
86 #include "mozilla/Attributes.h"
87 #include "mozilla/dom/DOMException.h"
88 #include "mozilla/dom/DOMRequest.h"
89 #include "mozilla/dom/network/TCPSocketChild.h"
90 #include "mozilla/dom/network/TCPSocketParent.h"
91 #include "mozilla/dom/network/TCPServerSocketChild.h"
92 #include "mozilla/dom/network/UDPSocketChild.h"
93 #include "mozilla/dom/quota/QuotaManager.h"
94 #include "mozilla/dom/workers/ServiceWorkerManager.h"
95 #include "mozilla/OSFileConstants.h"
96 #include "mozilla/Services.h"
98 #ifdef MOZ_WEBSPEECH
99 #include "mozilla/dom/FakeSpeechRecognitionService.h"
100 #include "mozilla/dom/nsSynthVoiceRegistry.h"
101 #endif
103 #ifdef MOZ_WIDGET_GONK
104 #include "SystemWorkerManager.h"
105 using mozilla::dom::gonk::SystemWorkerManager;
106 #define SYSTEMWORKERMANAGER_CID \
107 {0xd53b6524, 0x6ac3, 0x42b0, {0xae, 0xca, 0x62, 0xb3, 0xc4, 0xe5, 0x2b, 0x04}}
108 #define SYSTEMWORKERMANAGER_CONTRACTID \
109 "@mozilla.org/telephony/system-worker-manager;1"
110 #endif
112 #ifdef MOZ_B2G_BT
113 #include "BluetoothService.h"
114 using mozilla::dom::bluetooth::BluetoothService;
115 #define BLUETOOTHSERVICE_CID \
116 {0xa753b487, 0x3344, 0x4de4, {0xad, 0x5f, 0x06, 0x36, 0x76, 0xa7, 0xc1, 0x04}}
117 #define BLUETOOTHSERVICE_CONTRACTID \
118 "@mozilla.org/bluetooth/service;1"
119 #endif
121 #ifdef MOZ_WIDGET_GONK
122 #include "AudioManager.h"
123 using mozilla::dom::gonk::AudioManager;
124 #include "nsVolumeService.h"
125 using mozilla::system::nsVolumeService;
126 #endif
128 #include "AudioChannelAgent.h"
129 using mozilla::dom::AudioChannelAgent;
131 // Editor stuff
132 #include "nsEditorCID.h"
133 #include "nsEditor.h"
134 #include "nsPlaintextEditor.h"
135 #include "nsEditorController.h" //CID
137 #include "nsHTMLEditor.h"
138 #include "nsTextServicesDocument.h"
139 #include "nsTextServicesCID.h"
141 #include "nsScriptSecurityManager.h"
142 #include "nsPrincipal.h"
143 #include "nsSystemPrincipal.h"
144 #include "nsNullPrincipal.h"
145 #include "nsNetCID.h"
146 #ifndef MOZ_WIDGET_GONK
147 #if defined(MOZ_WIDGET_ANDROID)
148 #include "nsHapticFeedback.h"
149 #endif
150 #endif
151 #include "nsParserUtils.h"
153 #define NS_EDITORCOMMANDTABLE_CID \
154 { 0x4f5e62b8, 0xd659, 0x4156, { 0x84, 0xfc, 0x2f, 0x60, 0x99, 0x40, 0x03, 0x69 }}
156 #define NS_EDITINGCOMMANDTABLE_CID \
157 { 0xcb38a746, 0xbeb8, 0x43f3, { 0x94, 0x29, 0x77, 0x96, 0xe1, 0xa9, 0x3f, 0xb4 }}
159 #define NS_HAPTICFEEDBACK_CID \
160 { 0x1f15dbc8, 0xbfaa, 0x45de, \
161 { 0x8a, 0x46, 0x08, 0xe2, 0xe2, 0x63, 0x26, 0xb0 } }
163 NS_GENERIC_FACTORY_CONSTRUCTOR(nsPlaintextEditor)
165 NS_GENERIC_FACTORY_CONSTRUCTOR(nsParserUtils)
167 NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextServicesDocument)
168 NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLEditor)
170 #include "nsHTMLCanvasFrame.h"
172 #include "nsIDOMWebGLRenderingContext.h"
174 class nsIDocumentLoaderFactory;
176 #define PRODUCT_NAME "Gecko"
178 /* 0ddf4df8-4dbb-4133-8b79-9afb966514f5 */
179 #define NS_PLUGINDOCLOADERFACTORY_CID \
180 { 0x0ddf4df8, 0x4dbb, 0x4133, { 0x8b, 0x79, 0x9a, 0xfb, 0x96, 0x65, 0x14, 0xf5 } }
182 #define NS_WINDOWCOMMANDTABLE_CID \
183 { /* 0DE2FBFA-6B7F-11D7-BBBA-0003938A9D96 */ \
184 0x0DE2FBFA, 0x6B7F, 0x11D7, {0xBB, 0xBA, 0x00, 0x03, 0x93, 0x8A, 0x9D, 0x96} }
186 #include "nsIBoxObject.h"
188 #ifdef MOZ_XUL
189 #include "inDOMView.h"
190 #endif /* MOZ_XUL */
192 #include "inDeepTreeWalker.h"
193 #include "inFlasher.h"
194 #include "inCSSValueSearch.h"
195 #include "inDOMUtils.h"
197 #ifdef MOZ_XUL
198 #include "nsIXULDocument.h"
199 #include "nsIXULSortService.h"
201 nsresult
202 NS_NewXULContentBuilder(nsISupports* aOuter, REFNSIID aIID, void** aResult);
204 nsresult
205 NS_NewXULTreeBuilder(nsISupports* aOuter, REFNSIID aIID, void** aResult);
206 #endif
208 static void Shutdown();
210 #include "nsGeolocation.h"
211 #include "nsDeviceSensors.h"
212 #ifdef MOZ_GAMEPAD
213 #include "mozilla/dom/GamepadService.h"
214 #endif
215 #include "nsCSPService.h"
216 #include "nsCSPContext.h"
217 #include "nsISmsService.h"
218 #include "nsIMmsService.h"
219 #include "nsIMobileMessageService.h"
220 #include "nsIMobileMessageDatabaseService.h"
221 #include "mozilla/dom/mobilemessage/MobileMessageService.h"
222 #include "mozilla/dom/mobilemessage/SmsServicesFactory.h"
223 #include "nsIPowerManagerService.h"
224 #include "nsIAlarmHalService.h"
225 #include "nsIMediaManager.h"
226 #include "nsMixedContentBlocker.h"
228 #include "AudioChannelService.h"
230 #include "mozilla/dom/DataStoreService.h"
232 #include "mozilla/dom/power/PowerManagerService.h"
233 #include "mozilla/dom/alarm/AlarmHalService.h"
234 #include "mozilla/dom/time/TimeService.h"
235 #include "StreamingProtocolService.h"
237 #include "mozilla/dom/telephony/TelephonyFactory.h"
238 #include "nsITelephonyService.h"
240 #ifdef MOZ_WIDGET_GONK
241 #include "GonkGPSGeolocationProvider.h"
242 #endif
243 #include "MediaManager.h"
245 #include "GMPService.h"
247 using namespace mozilla;
248 using namespace mozilla::dom;
249 using namespace mozilla::dom::mobilemessage;
250 using namespace mozilla::dom::telephony;
251 using mozilla::dom::alarm::AlarmHalService;
252 using mozilla::dom::power::PowerManagerService;
253 using mozilla::dom::quota::QuotaManager;
254 using mozilla::dom::workers::ServiceWorkerManager;
255 using mozilla::dom::TCPSocketChild;
256 using mozilla::dom::TCPSocketParent;
257 using mozilla::dom::TCPServerSocketChild;
258 using mozilla::dom::UDPSocketChild;
259 using mozilla::dom::time::TimeService;
260 using mozilla::net::StreamingProtocolControllerService;
261 using mozilla::gmp::GeckoMediaPluginService;
263 // Transformiix
264 /* 5d5d92cd-6bf8-11d9-bf4a-000a95dc234c */
265 #define TRANSFORMIIX_NODESET_CID \
266 { 0x5d5d92cd, 0x6bf8, 0x11d9, { 0xbf, 0x4a, 0x0, 0x0a, 0x95, 0xdc, 0x23, 0x4c } }
268 #define TRANSFORMIIX_NODESET_CONTRACTID \
269 "@mozilla.org/transformiix-nodeset;1"
271 // Factory Constructor
272 NS_GENERIC_FACTORY_CONSTRUCTOR(txMozillaXSLTProcessor)
273 NS_GENERIC_FACTORY_CONSTRUCTOR(XPathEvaluator)
274 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(txNodeSetAdaptor, Init)
275 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDOMSerializer)
276 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsXMLHttpRequest, Init)
277 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsDOMFileReader, Init)
278 NS_GENERIC_FACTORY_CONSTRUCTOR(nsFormData)
279 NS_GENERIC_FACTORY_CONSTRUCTOR(nsBlobProtocolHandler)
280 NS_GENERIC_FACTORY_CONSTRUCTOR(nsMediaStreamProtocolHandler)
281 NS_GENERIC_FACTORY_CONSTRUCTOR(nsMediaSourceProtocolHandler)
282 NS_GENERIC_FACTORY_CONSTRUCTOR(nsFontTableProtocolHandler)
283 NS_GENERIC_FACTORY_CONSTRUCTOR(nsHostObjectURI)
284 NS_GENERIC_FACTORY_CONSTRUCTOR(DOMParser)
285 NS_GENERIC_FACTORY_CONSTRUCTOR(Exception)
286 NS_GENERIC_FACTORY_CONSTRUCTOR(DOMSessionStorageManager)
287 NS_GENERIC_FACTORY_CONSTRUCTOR(DOMLocalStorageManager)
288 NS_GENERIC_FACTORY_CONSTRUCTOR(nsChannelPolicy)
289 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(DOMRequestService,
290 DOMRequestService::FactoryCreate)
291 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(QuotaManager,
292 QuotaManager::FactoryCreate)
293 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(ServiceWorkerManager,
294 ServiceWorkerManager::FactoryCreate)
295 #ifdef MOZ_WIDGET_GONK
296 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(SystemWorkerManager,
297 SystemWorkerManager::FactoryCreate)
298 #endif
299 #ifdef MOZ_B2G_BT
300 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(BluetoothService,
301 BluetoothService::FactoryCreate)
302 #endif
304 #ifdef MOZ_WEBSPEECH
305 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsSynthVoiceRegistry,
306 nsSynthVoiceRegistry::GetInstanceForService)
307 #endif
309 #ifdef MOZ_WIDGET_GONK
310 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(AudioManager,
311 AudioManager::GetInstance)
312 #endif
314 NS_GENERIC_FACTORY_CONSTRUCTOR(AudioChannelAgent)
316 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDeviceSensors)
318 #ifndef MOZ_WIDGET_GONK
319 #if defined(ANDROID)
320 NS_GENERIC_FACTORY_CONSTRUCTOR(nsHapticFeedback)
321 #endif
322 #endif
323 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(ThirdPartyUtil, Init)
324 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsISmsService,
325 SmsServicesFactory::CreateSmsService)
326 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMmsService,
327 SmsServicesFactory::CreateMmsService)
328 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMobileMessageService,
329 MobileMessageService::GetInstance)
330 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMobileMessageDatabaseService,
331 SmsServicesFactory::CreateMobileMessageDatabaseService)
332 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIPowerManagerService,
333 PowerManagerService::GetInstance)
334 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIAlarmHalService,
335 AlarmHalService::GetInstance)
336 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsITimeService,
337 TimeService::GetInstance)
338 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIStreamingProtocolControllerService,
339 StreamingProtocolControllerService::GetInstance)
341 #ifdef MOZ_GAMEPAD
342 using mozilla::dom::GamepadServiceTest;
343 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(GamepadServiceTest,
344 GamepadServiceTest::CreateService)
345 #endif
347 #ifdef MOZ_WIDGET_GONK
348 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIGeolocationProvider,
349 GonkGPSGeolocationProvider::GetSingleton)
350 // Since the nsVolumeService constructor calls into nsIPowerManagerService,
351 // we need it to be constructed sometime after nsIPowerManagerService.
352 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsVolumeService,
353 nsVolumeService::GetSingleton)
354 #endif
355 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMediaManagerService,
356 MediaManager::GetInstance)
357 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsITelephonyService,
358 TelephonyFactory::CreateTelephonyService)
360 //-----------------------------------------------------------------------------
362 static bool gInitialized = false;
364 // Perform our one-time intialization for this module
366 // static
367 nsresult
368 Initialize()
370 if (gInitialized) {
371 NS_RUNTIMEABORT("Recursive layout module initialization");
372 return NS_ERROR_FAILURE;
375 static_assert(sizeof(uintptr_t) == sizeof(void*),
376 "Eeek! You'll need to adjust the size of uintptr_t to the "
377 "size of a pointer on your platform.");
379 gInitialized = true;
381 nsresult rv;
382 rv = xpcModuleCtor();
383 if (NS_FAILED(rv))
384 return rv;
386 rv = nsLayoutStatics::Initialize();
387 if (NS_FAILED(rv)) {
388 Shutdown();
389 return rv;
392 #ifdef DEBUG
393 nsStyleContext::AssertStyleStructMaxDifferenceValid();
394 #endif
396 return NS_OK;
399 // Shutdown this module, releasing all of the module resources
401 // static
402 void
403 Shutdown()
405 NS_PRECONDITION(gInitialized, "module not initialized");
406 if (!gInitialized)
407 return;
409 gInitialized = false;
411 nsLayoutStatics::Release();
414 #ifdef DEBUG
415 nsresult NS_NewFrameUtil(nsIFrameUtil** aResult);
416 nsresult NS_NewLayoutDebugger(nsILayoutDebugger** aResult);
417 #endif
419 nsresult NS_NewBoxObject(nsIBoxObject** aResult);
421 #ifdef MOZ_XUL
422 nsresult NS_NewListBoxObject(nsIBoxObject** aResult);
423 nsresult NS_NewScrollBoxObject(nsIBoxObject** aResult);
424 nsresult NS_NewMenuBoxObject(nsIBoxObject** aResult);
425 nsresult NS_NewPopupBoxObject(nsIBoxObject** aResult);
426 nsresult NS_NewContainerBoxObject(nsIBoxObject** aResult);
427 nsresult NS_NewTreeBoxObject(nsIBoxObject** aResult);
428 #endif
430 nsresult NS_NewCanvasRenderingContextWebGL(nsIDOMWebGLRenderingContext** aResult);
432 nsresult NS_CreateFrameTraversal(nsIFrameTraversal** aResult);
434 nsresult NS_NewDomSelection(nsISelection** aResult);
435 already_AddRefed<nsIContentViewer> NS_NewContentViewer();
436 nsresult NS_NewGenRegularIterator(nsIContentIterator** aResult);
437 nsresult NS_NewGenSubtreeIterator(nsIContentIterator** aInstancePtrResult);
438 nsresult NS_NewContentDocumentLoaderFactory(nsIDocumentLoaderFactory** aResult);
439 nsresult NS_NewHTMLCopyTextEncoder(nsIDocumentEncoder** aResult);
440 nsresult NS_NewTextEncoder(nsIDocumentEncoder** aResult);
441 nsresult NS_NewContentPolicy(nsIContentPolicy** aResult);
443 nsresult NS_NewEventListenerService(nsIEventListenerService** aResult);
444 nsresult NS_NewGlobalMessageManager(nsIMessageBroadcaster** aResult);
445 nsresult NS_NewParentProcessMessageManager(nsIMessageBroadcaster** aResult);
446 nsresult NS_NewChildProcessMessageManager(nsISyncMessageSender** aResult);
448 nsresult NS_NewXULControllers(nsISupports* aOuter, REFNSIID aIID, void** aResult);
450 #define MAKE_CTOR(ctor_, iface_, func_) \
451 static nsresult \
452 ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) \
454 *aResult = nullptr; \
455 if (aOuter) \
456 return NS_ERROR_NO_AGGREGATION; \
457 iface_* inst; \
458 nsresult rv = func_(&inst); \
459 if (NS_SUCCEEDED(rv)) { \
460 rv = inst->QueryInterface(aIID, aResult); \
461 NS_RELEASE(inst); \
463 return rv; \
466 // As above, but expects
467 // already_AddRefed<nsIFoo> NS_NewFoo();
468 // instead of
469 // nsresult NS_NewFoo(nsIFoo**);
470 #define MAKE_CTOR2(ctor_, iface_, func_) \
471 static nsresult \
472 ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) \
474 *aResult = nullptr; \
475 if (aOuter) { \
476 return NS_ERROR_NO_AGGREGATION; \
478 nsCOMPtr<iface_> inst = func_(); \
479 inst.forget(aResult); \
480 return NS_OK; \
483 #ifdef DEBUG
484 MAKE_CTOR(CreateNewFrameUtil, nsIFrameUtil, NS_NewFrameUtil)
485 MAKE_CTOR(CreateNewLayoutDebugger, nsILayoutDebugger, NS_NewLayoutDebugger)
486 #endif
488 MAKE_CTOR(CreateNewFrameTraversal, nsIFrameTraversal, NS_CreateFrameTraversal)
489 MAKE_CTOR(CreateNewBoxObject, nsIBoxObject, NS_NewBoxObject)
491 #ifdef MOZ_XUL
492 MAKE_CTOR(CreateNewListBoxObject, nsIBoxObject, NS_NewListBoxObject)
493 MAKE_CTOR(CreateNewMenuBoxObject, nsIBoxObject, NS_NewMenuBoxObject)
494 MAKE_CTOR(CreateNewPopupBoxObject, nsIBoxObject, NS_NewPopupBoxObject)
495 MAKE_CTOR(CreateNewScrollBoxObject, nsIBoxObject, NS_NewScrollBoxObject)
496 MAKE_CTOR(CreateNewTreeBoxObject, nsIBoxObject, NS_NewTreeBoxObject)
497 MAKE_CTOR(CreateNewContainerBoxObject, nsIBoxObject, NS_NewContainerBoxObject)
498 #endif // MOZ_XUL
500 #ifdef MOZ_XUL
501 NS_GENERIC_FACTORY_CONSTRUCTOR(inDOMView)
502 #endif
503 NS_GENERIC_FACTORY_CONSTRUCTOR(inDeepTreeWalker)
504 NS_GENERIC_FACTORY_CONSTRUCTOR(inFlasher)
505 NS_GENERIC_FACTORY_CONSTRUCTOR(inCSSValueSearch)
506 NS_GENERIC_FACTORY_CONSTRUCTOR(inDOMUtils)
508 MAKE_CTOR2(CreateContentViewer, nsIContentViewer, NS_NewContentViewer)
509 MAKE_CTOR(CreateHTMLDocument, nsIDocument, NS_NewHTMLDocument)
510 MAKE_CTOR(CreateXMLDocument, nsIDocument, NS_NewXMLDocument)
511 MAKE_CTOR(CreateSVGDocument, nsIDocument, NS_NewSVGDocument)
512 MAKE_CTOR(CreateImageDocument, nsIDocument, NS_NewImageDocument)
513 MAKE_CTOR(CreateDOMBlob, nsISupports, DOMMultipartFileImpl::NewBlob)
514 MAKE_CTOR(CreateDOMFile, nsISupports, DOMMultipartFileImpl::NewFile)
515 MAKE_CTOR(CreateDOMSelection, nsISelection, NS_NewDomSelection)
516 MAKE_CTOR2(CreateContentIterator, nsIContentIterator, NS_NewContentIterator)
517 MAKE_CTOR2(CreatePreContentIterator, nsIContentIterator, NS_NewPreContentIterator)
518 MAKE_CTOR2(CreateSubtreeIterator, nsIContentIterator, NS_NewContentSubtreeIterator)
519 MAKE_CTOR(CreateTextEncoder, nsIDocumentEncoder, NS_NewTextEncoder)
520 MAKE_CTOR(CreateHTMLCopyTextEncoder, nsIDocumentEncoder, NS_NewHTMLCopyTextEncoder)
521 MAKE_CTOR(CreateXMLContentSerializer, nsIContentSerializer, NS_NewXMLContentSerializer)
522 MAKE_CTOR(CreateHTMLContentSerializer, nsIContentSerializer, NS_NewHTMLContentSerializer)
523 MAKE_CTOR(CreateXHTMLContentSerializer, nsIContentSerializer, NS_NewXHTMLContentSerializer)
524 MAKE_CTOR(CreatePlainTextSerializer, nsIContentSerializer, NS_NewPlainTextSerializer)
525 MAKE_CTOR(CreateContentPolicy, nsIContentPolicy, NS_NewContentPolicy)
526 #ifdef MOZ_XUL
527 MAKE_CTOR(CreateXULSortService, nsIXULSortService, NS_NewXULSortService)
528 // NS_NewXULContentBuilder
529 // NS_NewXULTreeBuilder
530 MAKE_CTOR(CreateXULDocument, nsIXULDocument, NS_NewXULDocument)
531 // NS_NewXULControllers
532 #endif
533 MAKE_CTOR(CreateContentDLF, nsIDocumentLoaderFactory, NS_NewContentDocumentLoaderFactory)
534 MAKE_CTOR(CreateEventListenerService, nsIEventListenerService, NS_NewEventListenerService)
535 MAKE_CTOR(CreateGlobalMessageManager, nsIMessageBroadcaster, NS_NewGlobalMessageManager)
536 MAKE_CTOR(CreateParentMessageManager, nsIMessageBroadcaster, NS_NewParentProcessMessageManager)
537 MAKE_CTOR(CreateChildMessageManager, nsISyncMessageSender, NS_NewChildProcessMessageManager)
538 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDataDocumentContentPolicy)
539 NS_GENERIC_FACTORY_CONSTRUCTOR(nsNoDataProtocolContentPolicy)
540 MAKE_CTOR(CreatePluginDocument, nsIDocument, NS_NewPluginDocument)
541 MAKE_CTOR(CreateVideoDocument, nsIDocument, NS_NewVideoDocument)
542 MAKE_CTOR(CreateFocusManager, nsIFocusManager, NS_NewFocusManager)
544 MAKE_CTOR(CreateCanvasRenderingContextWebGL, nsIDOMWebGLRenderingContext, NS_NewCanvasRenderingContextWebGL)
546 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStyleSheetService, Init)
548 NS_GENERIC_FACTORY_CONSTRUCTOR(nsJSURI)
550 // views are not refcounted, so this is the same as
551 // NS_GENERIC_FACTORY_CONSTRUCTOR without the NS_ADDREF/NS_RELEASE
552 #define NS_GENERIC_FACTORY_CONSTRUCTOR_NOREFS(_InstanceClass) \
553 static nsresult \
554 _InstanceClass##Constructor(nsISupports *aOuter, REFNSIID aIID, \
555 void **aResult) \
557 nsresult rv; \
559 *aResult = nullptr; \
560 if (nullptr != aOuter) { \
561 rv = NS_ERROR_NO_AGGREGATION; \
562 return rv; \
565 _InstanceClass * inst = new _InstanceClass(); \
566 if (nullptr == inst) { \
567 rv = NS_ERROR_OUT_OF_MEMORY; \
568 return rv; \
570 rv = inst->QueryInterface(aIID, aResult); \
572 return rv; \
575 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDOMScriptObjectFactory)
577 #define NS_GEOLOCATION_CID \
578 { 0x1E1C3FF, 0x94A, 0xD048, { 0x44, 0xB4, 0x62, 0xD2, 0x9C, 0x7B, 0x4F, 0x39 } }
580 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(Geolocation, Init)
582 #define NS_GEOLOCATION_SERVICE_CID \
583 { 0x404d02a, 0x1CA, 0xAAAB, { 0x47, 0x62, 0x94, 0x4b, 0x1b, 0xf2, 0xf7, 0xb5 } }
585 #define NS_AUDIOCHANNEL_SERVICE_CID \
586 { 0xf712e983, 0x048a, 0x443f, { 0x88, 0x02, 0xfc, 0xc3, 0xd9, 0x27, 0xce, 0xac }}
588 #define NS_DATASTORE_SERVICE_CID \
589 { 0x0d4285fe, 0xf1b3, 0x49fa, { 0xbc, 0x51, 0xa4, 0xa8, 0x3f, 0x0a, 0xaf, 0x85 }}
591 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsGeolocationService, nsGeolocationService::GetGeolocationService)
593 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(AudioChannelService, AudioChannelService::GetOrCreateAudioChannelService)
595 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(DataStoreService, DataStoreService::GetOrCreate)
597 #ifdef MOZ_WEBSPEECH
598 NS_GENERIC_FACTORY_CONSTRUCTOR(FakeSpeechRecognitionService)
599 #endif
601 NS_GENERIC_FACTORY_CONSTRUCTOR(nsCSPContext)
602 NS_GENERIC_FACTORY_CONSTRUCTOR(CSPService)
603 NS_GENERIC_FACTORY_CONSTRUCTOR(nsMixedContentBlocker)
605 NS_GENERIC_FACTORY_CONSTRUCTOR(nsPrincipal)
606 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsSystemPrincipal,
607 nsScriptSecurityManager::SystemPrincipalSingletonConstructor)
608 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNullPrincipal, Init)
609 NS_GENERIC_FACTORY_CONSTRUCTOR(nsStructuredCloneContainer)
611 NS_GENERIC_FACTORY_CONSTRUCTOR(OSFileConstantsService)
612 NS_GENERIC_FACTORY_CONSTRUCTOR(TCPSocketChild)
613 NS_GENERIC_FACTORY_CONSTRUCTOR(TCPSocketParent)
614 NS_GENERIC_FACTORY_CONSTRUCTOR(TCPServerSocketChild)
615 NS_GENERIC_FACTORY_CONSTRUCTOR(UDPSocketChild)
617 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(GeckoMediaPluginService, GeckoMediaPluginService::GetGeckoMediaPluginService)
619 #ifdef ACCESSIBILITY
620 #include "nsAccessibilityService.h"
622 MAKE_CTOR(CreateA11yService, nsIAccessibilityService, NS_GetAccessibilityService)
623 #endif
625 static nsresult
626 Construct_nsIScriptSecurityManager(nsISupports *aOuter, REFNSIID aIID,
627 void **aResult)
629 if (!aResult)
630 return NS_ERROR_NULL_POINTER;
631 *aResult = nullptr;
632 if (aOuter)
633 return NS_ERROR_NO_AGGREGATION;
634 nsScriptSecurityManager *obj = nsScriptSecurityManager::GetScriptSecurityManager();
635 if (!obj)
636 return NS_ERROR_OUT_OF_MEMORY;
637 if (NS_FAILED(obj->QueryInterface(aIID, aResult)))
638 return NS_ERROR_FAILURE;
639 return NS_OK;
642 #ifdef DEBUG
643 NS_DEFINE_NAMED_CID(NS_FRAME_UTIL_CID);
644 NS_DEFINE_NAMED_CID(NS_LAYOUT_DEBUGGER_CID);
645 #endif
646 NS_DEFINE_NAMED_CID(NS_FRAMETRAVERSAL_CID);
647 NS_DEFINE_NAMED_CID(NS_BOXOBJECT_CID);
648 #ifdef MOZ_XUL
649 NS_DEFINE_NAMED_CID(NS_LISTBOXOBJECT_CID);
650 NS_DEFINE_NAMED_CID(NS_MENUBOXOBJECT_CID);
651 NS_DEFINE_NAMED_CID(NS_POPUPBOXOBJECT_CID);
652 NS_DEFINE_NAMED_CID(NS_CONTAINERBOXOBJECT_CID);
653 NS_DEFINE_NAMED_CID(NS_SCROLLBOXOBJECT_CID);
654 NS_DEFINE_NAMED_CID(NS_TREEBOXOBJECT_CID);
655 #endif // MOZ_XUL
656 #ifdef MOZ_XUL
657 NS_DEFINE_NAMED_CID(IN_DOMVIEW_CID);
658 #endif
659 NS_DEFINE_NAMED_CID(IN_DEEPTREEWALKER_CID);
660 NS_DEFINE_NAMED_CID(IN_FLASHER_CID);
661 NS_DEFINE_NAMED_CID(IN_CSSVALUESEARCH_CID);
662 NS_DEFINE_NAMED_CID(IN_DOMUTILS_CID);
663 NS_DEFINE_NAMED_CID(NS_CONTENT_VIEWER_CID);
664 NS_DEFINE_NAMED_CID(NS_HTMLDOCUMENT_CID);
665 NS_DEFINE_NAMED_CID(NS_XMLDOCUMENT_CID);
666 NS_DEFINE_NAMED_CID(NS_SVGDOCUMENT_CID);
667 NS_DEFINE_NAMED_CID(NS_IMAGEDOCUMENT_CID);
668 NS_DEFINE_NAMED_CID(NS_DOMMULTIPARTBLOB_CID);
669 NS_DEFINE_NAMED_CID(NS_DOMMULTIPARTFILE_CID);
670 NS_DEFINE_NAMED_CID(NS_DOMSELECTION_CID);
671 NS_DEFINE_NAMED_CID(NS_CONTENTITERATOR_CID);
672 NS_DEFINE_NAMED_CID(NS_PRECONTENTITERATOR_CID);
673 NS_DEFINE_NAMED_CID(NS_SUBTREEITERATOR_CID);
674 NS_DEFINE_NAMED_CID(NS_CANVASRENDERINGCONTEXTWEBGL_CID);
675 NS_DEFINE_NAMED_CID(NS_TEXT_ENCODER_CID);
676 NS_DEFINE_NAMED_CID(NS_HTMLCOPY_TEXT_ENCODER_CID);
677 NS_DEFINE_NAMED_CID(NS_XMLCONTENTSERIALIZER_CID);
678 NS_DEFINE_NAMED_CID(NS_XHTMLCONTENTSERIALIZER_CID);
679 NS_DEFINE_NAMED_CID(NS_HTMLCONTENTSERIALIZER_CID);
680 NS_DEFINE_NAMED_CID(NS_PLAINTEXTSERIALIZER_CID);
681 NS_DEFINE_NAMED_CID(NS_PARSERUTILS_CID);
682 NS_DEFINE_NAMED_CID(NS_SCRIPTABLEUNESCAPEHTML_CID);
683 NS_DEFINE_NAMED_CID(NS_CONTENTPOLICY_CID);
684 NS_DEFINE_NAMED_CID(NS_DATADOCUMENTCONTENTPOLICY_CID);
685 NS_DEFINE_NAMED_CID(NS_NODATAPROTOCOLCONTENTPOLICY_CID);
686 NS_DEFINE_NAMED_CID(NS_XULCONTROLLERS_CID);
687 #ifdef MOZ_XUL
688 NS_DEFINE_NAMED_CID(NS_XULSORTSERVICE_CID);
689 NS_DEFINE_NAMED_CID(NS_XULTEMPLATEBUILDER_CID);
690 NS_DEFINE_NAMED_CID(NS_XULTREEBUILDER_CID);
691 NS_DEFINE_NAMED_CID(NS_XULDOCUMENT_CID);
692 #endif
693 NS_DEFINE_NAMED_CID(NS_CONTENT_DOCUMENT_LOADER_FACTORY_CID);
694 NS_DEFINE_NAMED_CID(NS_DOM_SCRIPT_OBJECT_FACTORY_CID);
695 NS_DEFINE_NAMED_CID(NS_JSPROTOCOLHANDLER_CID);
696 NS_DEFINE_NAMED_CID(NS_JSURI_CID);
697 NS_DEFINE_NAMED_CID(NS_WINDOWCOMMANDTABLE_CID);
698 NS_DEFINE_NAMED_CID(NS_WINDOWCONTROLLER_CID);
699 NS_DEFINE_NAMED_CID(NS_PLUGINDOCLOADERFACTORY_CID);
700 NS_DEFINE_NAMED_CID(NS_PLUGINDOCUMENT_CID);
701 NS_DEFINE_NAMED_CID(NS_VIDEODOCUMENT_CID);
702 NS_DEFINE_NAMED_CID(NS_STYLESHEETSERVICE_CID);
703 NS_DEFINE_NAMED_CID(TRANSFORMIIX_XSLT_PROCESSOR_CID);
704 NS_DEFINE_NAMED_CID(TRANSFORMIIX_XPATH_EVALUATOR_CID);
705 NS_DEFINE_NAMED_CID(TRANSFORMIIX_NODESET_CID);
706 NS_DEFINE_NAMED_CID(NS_XMLSERIALIZER_CID);
707 NS_DEFINE_NAMED_CID(NS_FILEREADER_CID);
708 NS_DEFINE_NAMED_CID(NS_FORMDATA_CID);
709 NS_DEFINE_NAMED_CID(NS_BLOBPROTOCOLHANDLER_CID);
710 NS_DEFINE_NAMED_CID(NS_MEDIASTREAMPROTOCOLHANDLER_CID);
711 NS_DEFINE_NAMED_CID(NS_MEDIASOURCEPROTOCOLHANDLER_CID);
712 NS_DEFINE_NAMED_CID(NS_FONTTABLEPROTOCOLHANDLER_CID);
713 NS_DEFINE_NAMED_CID(NS_HOSTOBJECTURI_CID);
714 NS_DEFINE_NAMED_CID(NS_XMLHTTPREQUEST_CID);
715 NS_DEFINE_NAMED_CID(NS_DOMPARSER_CID);
716 NS_DEFINE_NAMED_CID(NS_DOMSESSIONSTORAGEMANAGER_CID);
717 NS_DEFINE_NAMED_CID(NS_DOMLOCALSTORAGEMANAGER_CID);
718 NS_DEFINE_NAMED_CID(NS_DOMJSON_CID);
719 NS_DEFINE_NAMED_CID(NS_TEXTEDITOR_CID);
720 NS_DEFINE_NAMED_CID(DOMREQUEST_SERVICE_CID);
721 NS_DEFINE_NAMED_CID(QUOTA_MANAGER_CID);
722 NS_DEFINE_NAMED_CID(SERVICEWORKERMANAGER_CID);
723 #ifdef MOZ_WIDGET_GONK
724 NS_DEFINE_NAMED_CID(SYSTEMWORKERMANAGER_CID);
725 #endif
726 #ifdef MOZ_B2G_BT
727 NS_DEFINE_NAMED_CID(BLUETOOTHSERVICE_CID);
728 #endif
729 #ifdef MOZ_WIDGET_GONK
730 NS_DEFINE_NAMED_CID(NS_AUDIOMANAGER_CID);
731 NS_DEFINE_NAMED_CID(NS_VOLUMESERVICE_CID);
732 #endif
734 NS_DEFINE_NAMED_CID(NS_AUDIOCHANNELAGENT_CID);
736 NS_DEFINE_NAMED_CID(NS_HTMLEDITOR_CID);
737 NS_DEFINE_NAMED_CID(NS_EDITORCONTROLLER_CID);
738 NS_DEFINE_NAMED_CID(NS_EDITINGCONTROLLER_CID);
739 NS_DEFINE_NAMED_CID(NS_EDITORCOMMANDTABLE_CID);
740 NS_DEFINE_NAMED_CID(NS_EDITINGCOMMANDTABLE_CID);
741 NS_DEFINE_NAMED_CID(NS_TEXTSERVICESDOCUMENT_CID);
742 NS_DEFINE_NAMED_CID(NS_GEOLOCATION_SERVICE_CID);
743 NS_DEFINE_NAMED_CID(NS_GEOLOCATION_CID);
744 NS_DEFINE_NAMED_CID(NS_AUDIOCHANNEL_SERVICE_CID);
745 NS_DEFINE_NAMED_CID(NS_DATASTORE_SERVICE_CID);
746 NS_DEFINE_NAMED_CID(NS_FOCUSMANAGER_CID);
747 NS_DEFINE_NAMED_CID(CSPSERVICE_CID);
748 NS_DEFINE_NAMED_CID(NS_CSPCONTEXT_CID);
749 NS_DEFINE_NAMED_CID(NS_MIXEDCONTENTBLOCKER_CID);
750 NS_DEFINE_NAMED_CID(NS_EVENTLISTENERSERVICE_CID);
751 NS_DEFINE_NAMED_CID(NS_GLOBALMESSAGEMANAGER_CID);
752 NS_DEFINE_NAMED_CID(NS_PARENTPROCESSMESSAGEMANAGER_CID);
753 NS_DEFINE_NAMED_CID(NS_CHILDPROCESSMESSAGEMANAGER_CID);
754 NS_DEFINE_NAMED_CID(NSCHANNELPOLICY_CID);
755 NS_DEFINE_NAMED_CID(NS_SCRIPTSECURITYMANAGER_CID);
756 NS_DEFINE_NAMED_CID(NS_PRINCIPAL_CID);
757 NS_DEFINE_NAMED_CID(NS_SYSTEMPRINCIPAL_CID);
758 NS_DEFINE_NAMED_CID(NS_NULLPRINCIPAL_CID);
759 NS_DEFINE_NAMED_CID(THIRDPARTYUTIL_CID);
760 NS_DEFINE_NAMED_CID(NS_STRUCTUREDCLONECONTAINER_CID);
761 NS_DEFINE_NAMED_CID(NS_DEVICE_SENSORS_CID);
763 #ifndef MOZ_WIDGET_GONK
764 #if defined(ANDROID)
765 NS_DEFINE_NAMED_CID(NS_HAPTICFEEDBACK_CID);
766 #endif
767 #endif
768 NS_DEFINE_NAMED_CID(SMS_SERVICE_CID);
769 NS_DEFINE_NAMED_CID(MMS_SERVICE_CID);
770 NS_DEFINE_NAMED_CID(MOBILE_MESSAGE_SERVICE_CID);
771 NS_DEFINE_NAMED_CID(MOBILE_MESSAGE_DATABASE_SERVICE_CID);
772 NS_DEFINE_NAMED_CID(NS_POWERMANAGERSERVICE_CID);
773 NS_DEFINE_NAMED_CID(OSFILECONSTANTSSERVICE_CID);
774 NS_DEFINE_NAMED_CID(NS_ALARMHALSERVICE_CID);
775 NS_DEFINE_NAMED_CID(TCPSOCKETCHILD_CID);
776 NS_DEFINE_NAMED_CID(TCPSOCKETPARENT_CID);
777 NS_DEFINE_NAMED_CID(TCPSERVERSOCKETCHILD_CID);
778 NS_DEFINE_NAMED_CID(UDPSOCKETCHILD_CID);
779 NS_DEFINE_NAMED_CID(NS_TIMESERVICE_CID);
780 NS_DEFINE_NAMED_CID(NS_MEDIASTREAMCONTROLLERSERVICE_CID);
781 #ifdef MOZ_WIDGET_GONK
782 NS_DEFINE_NAMED_CID(GONK_GPS_GEOLOCATION_PROVIDER_CID);
783 #endif
784 NS_DEFINE_NAMED_CID(NS_MEDIAMANAGERSERVICE_CID);
785 #ifdef MOZ_GAMEPAD
786 NS_DEFINE_NAMED_CID(NS_GAMEPAD_TEST_CID);
787 #endif
788 #ifdef MOZ_WEBSPEECH
789 NS_DEFINE_NAMED_CID(NS_FAKE_SPEECH_RECOGNITION_SERVICE_CID);
790 NS_DEFINE_NAMED_CID(NS_SYNTHVOICEREGISTRY_CID);
791 #endif
793 #ifdef ACCESSIBILITY
794 NS_DEFINE_NAMED_CID(NS_ACCESSIBILITY_SERVICE_CID);
795 #endif
796 NS_DEFINE_NAMED_CID(TELEPHONY_SERVICE_CID);
798 NS_DEFINE_NAMED_CID(GECKO_MEDIA_PLUGIN_SERVICE_CID);
800 static nsresult
801 CreateWindowCommandTableConstructor(nsISupports *aOuter,
802 REFNSIID aIID, void **aResult)
804 nsresult rv;
805 nsCOMPtr<nsIControllerCommandTable> commandTable =
806 do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv);
807 if (NS_FAILED(rv)) return rv;
809 rv = nsWindowCommandRegistration::RegisterWindowCommands(commandTable);
810 if (NS_FAILED(rv)) return rv;
812 return commandTable->QueryInterface(aIID, aResult);
815 static nsresult
816 CreateWindowControllerWithSingletonCommandTable(nsISupports *aOuter,
817 REFNSIID aIID, void **aResult)
819 nsresult rv;
820 nsCOMPtr<nsIController> controller =
821 do_CreateInstance("@mozilla.org/embedcomp/base-command-controller;1", &rv);
823 if (NS_FAILED(rv)) return rv;
825 nsCOMPtr<nsIControllerCommandTable> windowCommandTable = do_GetService(kNS_WINDOWCOMMANDTABLE_CID, &rv);
826 if (NS_FAILED(rv)) return rv;
828 // this is a singleton; make it immutable
829 windowCommandTable->MakeImmutable();
831 nsCOMPtr<nsIControllerContext> controllerContext = do_QueryInterface(controller, &rv);
832 if (NS_FAILED(rv)) return rv;
834 controllerContext->Init(windowCommandTable);
835 if (NS_FAILED(rv)) return rv;
837 return controller->QueryInterface(aIID, aResult);
840 // Constructor of a controller which is set up to use, internally, a
841 // singleton command-table pre-filled with editor commands.
842 static nsresult
843 nsEditorControllerConstructor(nsISupports *aOuter, REFNSIID aIID,
844 void **aResult)
846 nsresult rv;
847 nsCOMPtr<nsIController> controller = do_CreateInstance("@mozilla.org/embedcomp/base-command-controller;1", &rv);
848 if (NS_FAILED(rv)) return rv;
850 nsCOMPtr<nsIControllerCommandTable> editorCommandTable = do_GetService(kNS_EDITORCOMMANDTABLE_CID, &rv);
851 if (NS_FAILED(rv)) return rv;
853 // this guy is a singleton, so make it immutable
854 editorCommandTable->MakeImmutable();
856 nsCOMPtr<nsIControllerContext> controllerContext = do_QueryInterface(controller, &rv);
857 if (NS_FAILED(rv)) return rv;
859 rv = controllerContext->Init(editorCommandTable);
860 if (NS_FAILED(rv)) return rv;
862 return controller->QueryInterface(aIID, aResult);
865 // Constructor of a controller which is set up to use, internally, a
866 // singleton command-table pre-filled with editing commands.
867 static nsresult
868 nsEditingControllerConstructor(nsISupports *aOuter, REFNSIID aIID,
869 void **aResult)
871 nsresult rv;
872 nsCOMPtr<nsIController> controller = do_CreateInstance("@mozilla.org/embedcomp/base-command-controller;1", &rv);
873 if (NS_FAILED(rv)) return rv;
875 nsCOMPtr<nsIControllerCommandTable> editingCommandTable = do_GetService(kNS_EDITINGCOMMANDTABLE_CID, &rv);
876 if (NS_FAILED(rv)) return rv;
878 // this guy is a singleton, so make it immutable
879 editingCommandTable->MakeImmutable();
881 nsCOMPtr<nsIControllerContext> controllerContext = do_QueryInterface(controller, &rv);
882 if (NS_FAILED(rv)) return rv;
884 rv = controllerContext->Init(editingCommandTable);
885 if (NS_FAILED(rv)) return rv;
887 return controller->QueryInterface(aIID, aResult);
890 // Constructor for a command-table pre-filled with editor commands
891 static nsresult
892 nsEditorCommandTableConstructor(nsISupports *aOuter, REFNSIID aIID,
893 void **aResult)
895 nsresult rv;
896 nsCOMPtr<nsIControllerCommandTable> commandTable =
897 do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv);
898 if (NS_FAILED(rv)) return rv;
900 rv = nsEditorController::RegisterEditorCommands(commandTable);
901 if (NS_FAILED(rv)) return rv;
903 // we don't know here whether we're being created as an instance,
904 // or a service, so we can't become immutable
906 return commandTable->QueryInterface(aIID, aResult);
909 // Constructor for a command-table pre-filled with editing commands
910 static nsresult
911 nsEditingCommandTableConstructor(nsISupports *aOuter, REFNSIID aIID,
912 void **aResult)
914 nsresult rv;
915 nsCOMPtr<nsIControllerCommandTable> commandTable =
916 do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv);
917 if (NS_FAILED(rv)) return rv;
919 rv = nsEditorController::RegisterEditingCommands(commandTable);
920 if (NS_FAILED(rv)) return rv;
922 // we don't know here whether we're being created as an instance,
923 // or a service, so we can't become immutable
925 return commandTable->QueryInterface(aIID, aResult);
929 static const mozilla::Module::CIDEntry kLayoutCIDs[] = {
930 XPCONNECT_CIDENTRIES
931 #ifdef DEBUG
932 { &kNS_FRAME_UTIL_CID, false, nullptr, CreateNewFrameUtil },
933 { &kNS_LAYOUT_DEBUGGER_CID, false, nullptr, CreateNewLayoutDebugger },
934 #endif
935 { &kNS_FRAMETRAVERSAL_CID, false, nullptr, CreateNewFrameTraversal },
936 { &kNS_BOXOBJECT_CID, false, nullptr, CreateNewBoxObject },
937 #ifdef MOZ_XUL
938 { &kNS_LISTBOXOBJECT_CID, false, nullptr, CreateNewListBoxObject },
939 { &kNS_MENUBOXOBJECT_CID, false, nullptr, CreateNewMenuBoxObject },
940 { &kNS_POPUPBOXOBJECT_CID, false, nullptr, CreateNewPopupBoxObject },
941 { &kNS_CONTAINERBOXOBJECT_CID, false, nullptr, CreateNewContainerBoxObject },
942 { &kNS_SCROLLBOXOBJECT_CID, false, nullptr, CreateNewScrollBoxObject },
943 { &kNS_TREEBOXOBJECT_CID, false, nullptr, CreateNewTreeBoxObject },
944 #endif // MOZ_XUL
945 #ifdef MOZ_XUL
946 { &kIN_DOMVIEW_CID, false, nullptr, inDOMViewConstructor },
947 #endif
948 { &kIN_DEEPTREEWALKER_CID, false, nullptr, inDeepTreeWalkerConstructor },
949 { &kIN_FLASHER_CID, false, nullptr, inFlasherConstructor },
950 { &kIN_CSSVALUESEARCH_CID, false, nullptr, inCSSValueSearchConstructor },
951 { &kIN_DOMUTILS_CID, false, nullptr, inDOMUtilsConstructor },
952 { &kNS_CONTENT_VIEWER_CID, false, nullptr, CreateContentViewer },
953 { &kNS_HTMLDOCUMENT_CID, false, nullptr, CreateHTMLDocument },
954 { &kNS_XMLDOCUMENT_CID, false, nullptr, CreateXMLDocument },
955 { &kNS_SVGDOCUMENT_CID, false, nullptr, CreateSVGDocument },
956 { &kNS_IMAGEDOCUMENT_CID, false, nullptr, CreateImageDocument },
957 { &kNS_DOMMULTIPARTBLOB_CID, false, nullptr, CreateDOMBlob },
958 { &kNS_DOMMULTIPARTFILE_CID, false, nullptr, CreateDOMFile },
959 { &kNS_DOMSELECTION_CID, false, nullptr, CreateDOMSelection },
960 { &kNS_CONTENTITERATOR_CID, false, nullptr, CreateContentIterator },
961 { &kNS_PRECONTENTITERATOR_CID, false, nullptr, CreatePreContentIterator },
962 { &kNS_SUBTREEITERATOR_CID, false, nullptr, CreateSubtreeIterator },
963 { &kNS_CANVASRENDERINGCONTEXTWEBGL_CID, false, nullptr, CreateCanvasRenderingContextWebGL },
964 { &kNS_TEXT_ENCODER_CID, false, nullptr, CreateTextEncoder },
965 { &kNS_HTMLCOPY_TEXT_ENCODER_CID, false, nullptr, CreateHTMLCopyTextEncoder },
966 { &kNS_XMLCONTENTSERIALIZER_CID, false, nullptr, CreateXMLContentSerializer },
967 { &kNS_HTMLCONTENTSERIALIZER_CID, false, nullptr, CreateHTMLContentSerializer },
968 { &kNS_XHTMLCONTENTSERIALIZER_CID, false, nullptr, CreateXHTMLContentSerializer },
969 { &kNS_PLAINTEXTSERIALIZER_CID, false, nullptr, CreatePlainTextSerializer },
970 { &kNS_PARSERUTILS_CID, false, nullptr, nsParserUtilsConstructor },
971 { &kNS_SCRIPTABLEUNESCAPEHTML_CID, false, nullptr, nsParserUtilsConstructor },
972 { &kNS_CONTENTPOLICY_CID, false, nullptr, CreateContentPolicy },
973 { &kNS_DATADOCUMENTCONTENTPOLICY_CID, false, nullptr, nsDataDocumentContentPolicyConstructor },
974 { &kNS_NODATAPROTOCOLCONTENTPOLICY_CID, false, nullptr, nsNoDataProtocolContentPolicyConstructor },
975 { &kNS_XULCONTROLLERS_CID, false, nullptr, NS_NewXULControllers },
976 #ifdef MOZ_XUL
977 { &kNS_XULSORTSERVICE_CID, false, nullptr, CreateXULSortService },
978 { &kNS_XULTEMPLATEBUILDER_CID, false, nullptr, NS_NewXULContentBuilder },
979 { &kNS_XULTREEBUILDER_CID, false, nullptr, NS_NewXULTreeBuilder },
980 { &kNS_XULDOCUMENT_CID, false, nullptr, CreateXULDocument },
981 #endif
982 { &kNS_CONTENT_DOCUMENT_LOADER_FACTORY_CID, false, nullptr, CreateContentDLF },
983 { &kNS_DOM_SCRIPT_OBJECT_FACTORY_CID, false, nullptr, nsDOMScriptObjectFactoryConstructor },
984 { &kNS_JSPROTOCOLHANDLER_CID, false, nullptr, nsJSProtocolHandler::Create },
985 { &kNS_JSURI_CID, false, nullptr, nsJSURIConstructor },
986 { &kNS_WINDOWCOMMANDTABLE_CID, false, nullptr, CreateWindowCommandTableConstructor },
987 { &kNS_WINDOWCONTROLLER_CID, false, nullptr, CreateWindowControllerWithSingletonCommandTable },
988 { &kNS_PLUGINDOCLOADERFACTORY_CID, false, nullptr, CreateContentDLF },
989 { &kNS_PLUGINDOCUMENT_CID, false, nullptr, CreatePluginDocument },
990 { &kNS_VIDEODOCUMENT_CID, false, nullptr, CreateVideoDocument },
991 { &kNS_STYLESHEETSERVICE_CID, false, nullptr, nsStyleSheetServiceConstructor },
992 { &kTRANSFORMIIX_XSLT_PROCESSOR_CID, false, nullptr, txMozillaXSLTProcessorConstructor },
993 { &kTRANSFORMIIX_XPATH_EVALUATOR_CID, false, nullptr, XPathEvaluatorConstructor },
994 { &kTRANSFORMIIX_NODESET_CID, false, nullptr, txNodeSetAdaptorConstructor },
995 { &kNS_XMLSERIALIZER_CID, false, nullptr, nsDOMSerializerConstructor },
996 { &kNS_FILEREADER_CID, false, nullptr, nsDOMFileReaderConstructor },
997 { &kNS_FORMDATA_CID, false, nullptr, nsFormDataConstructor },
998 { &kNS_BLOBPROTOCOLHANDLER_CID, false, nullptr, nsBlobProtocolHandlerConstructor },
999 { &kNS_MEDIASTREAMPROTOCOLHANDLER_CID, false, nullptr, nsMediaStreamProtocolHandlerConstructor },
1000 { &kNS_MEDIASOURCEPROTOCOLHANDLER_CID, false, nullptr, nsMediaSourceProtocolHandlerConstructor },
1001 { &kNS_FONTTABLEPROTOCOLHANDLER_CID, false, nullptr, nsFontTableProtocolHandlerConstructor },
1002 { &kNS_HOSTOBJECTURI_CID, false, nullptr, nsHostObjectURIConstructor },
1003 { &kNS_XMLHTTPREQUEST_CID, false, nullptr, nsXMLHttpRequestConstructor },
1004 { &kNS_DOMPARSER_CID, false, nullptr, DOMParserConstructor },
1005 { &kNS_XPCEXCEPTION_CID, false, nullptr, ExceptionConstructor },
1006 { &kNS_DOMSESSIONSTORAGEMANAGER_CID, false, nullptr, DOMSessionStorageManagerConstructor },
1007 { &kNS_DOMLOCALSTORAGEMANAGER_CID, false, nullptr, DOMLocalStorageManagerConstructor },
1008 { &kNS_DOMJSON_CID, false, nullptr, NS_NewJSON },
1009 { &kNS_TEXTEDITOR_CID, false, nullptr, nsPlaintextEditorConstructor },
1010 { &kDOMREQUEST_SERVICE_CID, false, nullptr, DOMRequestServiceConstructor },
1011 { &kQUOTA_MANAGER_CID, false, nullptr, QuotaManagerConstructor },
1012 { &kSERVICEWORKERMANAGER_CID, false, nullptr, ServiceWorkerManagerConstructor },
1013 #ifdef MOZ_WIDGET_GONK
1014 { &kSYSTEMWORKERMANAGER_CID, true, nullptr, SystemWorkerManagerConstructor },
1015 #endif
1016 #ifdef MOZ_B2G_BT
1017 { &kBLUETOOTHSERVICE_CID, true, nullptr, BluetoothServiceConstructor },
1018 #endif
1019 #ifdef MOZ_WIDGET_GONK
1020 { &kNS_AUDIOMANAGER_CID, true, nullptr, AudioManagerConstructor },
1021 { &kNS_VOLUMESERVICE_CID, true, nullptr, nsVolumeServiceConstructor },
1022 #endif
1023 { &kNS_AUDIOCHANNELAGENT_CID, true, nullptr, AudioChannelAgentConstructor },
1024 { &kNS_HTMLEDITOR_CID, false, nullptr, nsHTMLEditorConstructor },
1025 { &kNS_EDITORCONTROLLER_CID, false, nullptr, nsEditorControllerConstructor },
1026 { &kNS_EDITINGCONTROLLER_CID, false, nullptr, nsEditingControllerConstructor },
1027 { &kNS_EDITORCOMMANDTABLE_CID, false, nullptr, nsEditorCommandTableConstructor },
1028 { &kNS_EDITINGCOMMANDTABLE_CID, false, nullptr, nsEditingCommandTableConstructor },
1029 { &kNS_TEXTSERVICESDOCUMENT_CID, false, nullptr, nsTextServicesDocumentConstructor },
1030 { &kNS_GEOLOCATION_SERVICE_CID, false, nullptr, nsGeolocationServiceConstructor },
1031 { &kNS_GEOLOCATION_CID, false, nullptr, GeolocationConstructor },
1032 { &kNS_AUDIOCHANNEL_SERVICE_CID, false, nullptr, AudioChannelServiceConstructor },
1033 { &kNS_DATASTORE_SERVICE_CID, false, nullptr, DataStoreServiceConstructor },
1034 { &kNS_FOCUSMANAGER_CID, false, nullptr, CreateFocusManager },
1035 #ifdef MOZ_WEBSPEECH
1036 { &kNS_FAKE_SPEECH_RECOGNITION_SERVICE_CID, false, nullptr, FakeSpeechRecognitionServiceConstructor },
1037 { &kNS_SYNTHVOICEREGISTRY_CID, true, nullptr, nsSynthVoiceRegistryConstructor },
1038 #endif
1039 { &kCSPSERVICE_CID, false, nullptr, CSPServiceConstructor },
1040 { &kNS_CSPCONTEXT_CID, false, nullptr, nsCSPContextConstructor },
1041 { &kNS_MIXEDCONTENTBLOCKER_CID, false, nullptr, nsMixedContentBlockerConstructor },
1042 { &kNS_EVENTLISTENERSERVICE_CID, false, nullptr, CreateEventListenerService },
1043 { &kNS_GLOBALMESSAGEMANAGER_CID, false, nullptr, CreateGlobalMessageManager },
1044 { &kNS_PARENTPROCESSMESSAGEMANAGER_CID, false, nullptr, CreateParentMessageManager },
1045 { &kNS_CHILDPROCESSMESSAGEMANAGER_CID, false, nullptr, CreateChildMessageManager },
1046 { &kNSCHANNELPOLICY_CID, false, nullptr, nsChannelPolicyConstructor },
1047 { &kNS_SCRIPTSECURITYMANAGER_CID, false, nullptr, Construct_nsIScriptSecurityManager },
1048 { &kNS_PRINCIPAL_CID, false, nullptr, nsPrincipalConstructor },
1049 { &kNS_SYSTEMPRINCIPAL_CID, false, nullptr, nsSystemPrincipalConstructor },
1050 { &kNS_NULLPRINCIPAL_CID, false, nullptr, nsNullPrincipalConstructor },
1051 { &kNS_DEVICE_SENSORS_CID, false, nullptr, nsDeviceSensorsConstructor },
1052 #ifndef MOZ_WIDGET_GONK
1053 #if defined(ANDROID)
1054 { &kNS_HAPTICFEEDBACK_CID, false, nullptr, nsHapticFeedbackConstructor },
1055 #endif
1056 #endif
1057 { &kTHIRDPARTYUTIL_CID, false, nullptr, ThirdPartyUtilConstructor },
1058 { &kNS_STRUCTUREDCLONECONTAINER_CID, false, nullptr, nsStructuredCloneContainerConstructor },
1059 { &kSMS_SERVICE_CID, false, nullptr, nsISmsServiceConstructor },
1060 { &kMMS_SERVICE_CID, false, nullptr, nsIMmsServiceConstructor },
1061 { &kMOBILE_MESSAGE_SERVICE_CID, false, nullptr, nsIMobileMessageServiceConstructor },
1062 { &kMOBILE_MESSAGE_DATABASE_SERVICE_CID, false, nullptr, nsIMobileMessageDatabaseServiceConstructor },
1063 { &kNS_POWERMANAGERSERVICE_CID, false, nullptr, nsIPowerManagerServiceConstructor },
1064 { &kOSFILECONSTANTSSERVICE_CID, true, nullptr, OSFileConstantsServiceConstructor },
1065 { &kNS_ALARMHALSERVICE_CID, false, nullptr, nsIAlarmHalServiceConstructor },
1066 { &kTCPSOCKETCHILD_CID, false, nullptr, TCPSocketChildConstructor },
1067 { &kTCPSOCKETPARENT_CID, false, nullptr, TCPSocketParentConstructor },
1068 { &kTCPSERVERSOCKETCHILD_CID, false, nullptr, TCPServerSocketChildConstructor },
1069 { &kUDPSOCKETCHILD_CID, false, nullptr, UDPSocketChildConstructor },
1070 { &kGECKO_MEDIA_PLUGIN_SERVICE_CID, true, nullptr, GeckoMediaPluginServiceConstructor },
1071 { &kNS_TIMESERVICE_CID, false, nullptr, nsITimeServiceConstructor },
1072 { &kNS_MEDIASTREAMCONTROLLERSERVICE_CID, false, nullptr, nsIStreamingProtocolControllerServiceConstructor },
1073 #ifdef MOZ_WIDGET_GONK
1074 { &kGONK_GPS_GEOLOCATION_PROVIDER_CID, false, nullptr, nsIGeolocationProviderConstructor },
1075 #endif
1076 { &kNS_MEDIAMANAGERSERVICE_CID, false, nullptr, nsIMediaManagerServiceConstructor },
1077 #ifdef MOZ_GAMEPAD
1078 { &kNS_GAMEPAD_TEST_CID, false, nullptr, GamepadServiceTestConstructor },
1079 #endif
1080 #ifdef ACCESSIBILITY
1081 { &kNS_ACCESSIBILITY_SERVICE_CID, false, nullptr, CreateA11yService },
1082 #endif
1083 { &kTELEPHONY_SERVICE_CID, false, nullptr, nsITelephonyServiceConstructor },
1084 { nullptr }
1087 static const mozilla::Module::ContractIDEntry kLayoutContracts[] = {
1088 XPCONNECT_CONTRACTS
1089 { "@mozilla.org/layout/xul-boxobject;1", &kNS_BOXOBJECT_CID },
1090 #ifdef MOZ_XUL
1091 { "@mozilla.org/layout/xul-boxobject-listbox;1", &kNS_LISTBOXOBJECT_CID },
1092 { "@mozilla.org/layout/xul-boxobject-menu;1", &kNS_MENUBOXOBJECT_CID },
1093 { "@mozilla.org/layout/xul-boxobject-popup;1", &kNS_POPUPBOXOBJECT_CID },
1094 { "@mozilla.org/layout/xul-boxobject-container;1", &kNS_CONTAINERBOXOBJECT_CID },
1095 { "@mozilla.org/layout/xul-boxobject-scrollbox;1", &kNS_SCROLLBOXOBJECT_CID },
1096 { "@mozilla.org/layout/xul-boxobject-tree;1", &kNS_TREEBOXOBJECT_CID },
1097 #endif // MOZ_XUL
1098 #ifdef MOZ_XUL
1099 { "@mozilla.org/inspector/dom-view;1", &kIN_DOMVIEW_CID },
1100 #endif
1101 { "@mozilla.org/inspector/deep-tree-walker;1", &kIN_DEEPTREEWALKER_CID },
1102 { "@mozilla.org/inspector/flasher;1", &kIN_FLASHER_CID },
1103 { "@mozilla.org/inspector/search;1?type=cssvalue", &kIN_CSSVALUESEARCH_CID },
1104 { IN_DOMUTILS_CONTRACTID, &kIN_DOMUTILS_CID },
1105 { "@mozilla.org/xml/xml-document;1", &kNS_XMLDOCUMENT_CID },
1106 { "@mozilla.org/svg/svg-document;1", &kNS_SVGDOCUMENT_CID },
1107 { NS_DOMMULTIPARTBLOB_CONTRACTID, &kNS_DOMMULTIPARTBLOB_CID },
1108 { NS_DOMMULTIPARTFILE_CONTRACTID, &kNS_DOMMULTIPARTFILE_CID },
1109 { "@mozilla.org/content/dom-selection;1", &kNS_DOMSELECTION_CID },
1110 { "@mozilla.org/content/post-content-iterator;1", &kNS_CONTENTITERATOR_CID },
1111 { "@mozilla.org/content/pre-content-iterator;1", &kNS_PRECONTENTITERATOR_CID },
1112 { "@mozilla.org/content/subtree-content-iterator;1", &kNS_SUBTREEITERATOR_CID },
1113 { "@mozilla.org/content/canvas-rendering-context;1?id=experimental-webgl", &kNS_CANVASRENDERINGCONTEXTWEBGL_CID },
1114 #ifdef MOZ_WEBGL_CONFORMANT
1115 { "@mozilla.org/content/canvas-rendering-context;1?id=webgl", &kNS_CANVASRENDERINGCONTEXTWEBGL_CID },
1116 #endif
1117 { NS_DOC_ENCODER_CONTRACTID_BASE "text/xml", &kNS_TEXT_ENCODER_CID },
1118 { NS_DOC_ENCODER_CONTRACTID_BASE "application/xml", &kNS_TEXT_ENCODER_CID },
1119 { NS_DOC_ENCODER_CONTRACTID_BASE "application/xhtml+xml", &kNS_TEXT_ENCODER_CID },
1120 { NS_DOC_ENCODER_CONTRACTID_BASE "image/svg+xml", &kNS_TEXT_ENCODER_CID },
1121 { NS_DOC_ENCODER_CONTRACTID_BASE "text/html", &kNS_TEXT_ENCODER_CID },
1122 { NS_DOC_ENCODER_CONTRACTID_BASE "text/plain", &kNS_TEXT_ENCODER_CID },
1123 { NS_HTMLCOPY_ENCODER_CONTRACTID, &kNS_HTMLCOPY_TEXT_ENCODER_CID },
1124 { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/xml", &kNS_XMLCONTENTSERIALIZER_CID },
1125 { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/xml", &kNS_XMLCONTENTSERIALIZER_CID },
1126 { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/xhtml+xml", &kNS_XHTMLCONTENTSERIALIZER_CID },
1127 { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "image/svg+xml", &kNS_XMLCONTENTSERIALIZER_CID },
1128 { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/html", &kNS_HTMLCONTENTSERIALIZER_CID },
1129 { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/vnd.mozilla.xul+xml", &kNS_XMLCONTENTSERIALIZER_CID },
1130 { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/plain", &kNS_PLAINTEXTSERIALIZER_CID },
1131 { NS_PARSERUTILS_CONTRACTID, &kNS_PARSERUTILS_CID },
1132 { NS_SCRIPTABLEUNESCAPEHTML_CONTRACTID, &kNS_SCRIPTABLEUNESCAPEHTML_CID },
1133 { NS_CONTENTPOLICY_CONTRACTID, &kNS_CONTENTPOLICY_CID },
1134 { NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID, &kNS_DATADOCUMENTCONTENTPOLICY_CID },
1135 { NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID, &kNS_NODATAPROTOCOLCONTENTPOLICY_CID },
1136 { "@mozilla.org/xul/xul-controllers;1", &kNS_XULCONTROLLERS_CID },
1137 #ifdef MOZ_XUL
1138 { "@mozilla.org/xul/xul-sort-service;1", &kNS_XULSORTSERVICE_CID },
1139 { "@mozilla.org/xul/xul-template-builder;1", &kNS_XULTEMPLATEBUILDER_CID },
1140 { "@mozilla.org/xul/xul-tree-builder;1", &kNS_XULTREEBUILDER_CID },
1141 { "@mozilla.org/xul/xul-document;1", &kNS_XULDOCUMENT_CID },
1142 #endif
1143 { CONTENT_DLF_CONTRACTID, &kNS_CONTENT_DOCUMENT_LOADER_FACTORY_CID },
1144 { NS_JSPROTOCOLHANDLER_CONTRACTID, &kNS_JSPROTOCOLHANDLER_CID },
1145 { NS_WINDOWCONTROLLER_CONTRACTID, &kNS_WINDOWCONTROLLER_CID },
1146 { PLUGIN_DLF_CONTRACTID, &kNS_PLUGINDOCLOADERFACTORY_CID },
1147 { NS_STYLESHEETSERVICE_CONTRACTID, &kNS_STYLESHEETSERVICE_CID },
1148 { TRANSFORMIIX_XSLT_PROCESSOR_CONTRACTID, &kTRANSFORMIIX_XSLT_PROCESSOR_CID },
1149 { NS_XPATH_EVALUATOR_CONTRACTID, &kTRANSFORMIIX_XPATH_EVALUATOR_CID },
1150 { TRANSFORMIIX_NODESET_CONTRACTID, &kTRANSFORMIIX_NODESET_CID },
1151 { NS_XMLSERIALIZER_CONTRACTID, &kNS_XMLSERIALIZER_CID },
1152 { NS_FILEREADER_CONTRACTID, &kNS_FILEREADER_CID },
1153 { NS_FORMDATA_CONTRACTID, &kNS_FORMDATA_CID },
1154 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX BLOBURI_SCHEME, &kNS_BLOBPROTOCOLHANDLER_CID },
1155 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX MEDIASTREAMURI_SCHEME, &kNS_MEDIASTREAMPROTOCOLHANDLER_CID },
1156 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX MEDIASOURCEURI_SCHEME, &kNS_MEDIASOURCEPROTOCOLHANDLER_CID },
1157 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX FONTTABLEURI_SCHEME, &kNS_FONTTABLEPROTOCOLHANDLER_CID },
1158 { NS_XMLHTTPREQUEST_CONTRACTID, &kNS_XMLHTTPREQUEST_CID },
1159 { NS_DOMPARSER_CONTRACTID, &kNS_DOMPARSER_CID },
1160 { XPC_EXCEPTION_CONTRACTID, &kNS_XPCEXCEPTION_CID },
1161 { "@mozilla.org/dom/localStorage-manager;1", &kNS_DOMLOCALSTORAGEMANAGER_CID },
1162 // Keeping the old ContractID for backward compatibility
1163 { "@mozilla.org/dom/storagemanager;1", &kNS_DOMLOCALSTORAGEMANAGER_CID },
1164 { "@mozilla.org/dom/sessionStorage-manager;1", &kNS_DOMSESSIONSTORAGEMANAGER_CID },
1165 { "@mozilla.org/dom/json;1", &kNS_DOMJSON_CID },
1166 { "@mozilla.org/editor/texteditor;1", &kNS_TEXTEDITOR_CID },
1167 { DOMREQUEST_SERVICE_CONTRACTID, &kDOMREQUEST_SERVICE_CID },
1168 { QUOTA_MANAGER_CONTRACTID, &kQUOTA_MANAGER_CID },
1169 { SERVICEWORKERMANAGER_CONTRACTID, &kSERVICEWORKERMANAGER_CID },
1170 #ifdef MOZ_WIDGET_GONK
1171 { SYSTEMWORKERMANAGER_CONTRACTID, &kSYSTEMWORKERMANAGER_CID },
1172 #endif
1173 #ifdef MOZ_B2G_BT
1174 { BLUETOOTHSERVICE_CONTRACTID, &kBLUETOOTHSERVICE_CID },
1175 #endif
1176 #ifdef MOZ_WIDGET_GONK
1177 { NS_AUDIOMANAGER_CONTRACTID, &kNS_AUDIOMANAGER_CID },
1178 { NS_VOLUMESERVICE_CONTRACTID, &kNS_VOLUMESERVICE_CID },
1179 #endif
1180 { NS_AUDIOCHANNELAGENT_CONTRACTID, &kNS_AUDIOCHANNELAGENT_CID },
1181 { "@mozilla.org/editor/htmleditor;1", &kNS_HTMLEDITOR_CID },
1182 { "@mozilla.org/editor/editorcontroller;1", &kNS_EDITORCONTROLLER_CID },
1183 { "@mozilla.org/editor/editingcontroller;1", &kNS_EDITINGCONTROLLER_CID },
1184 { "@mozilla.org/textservices/textservicesdocument;1", &kNS_TEXTSERVICESDOCUMENT_CID },
1185 { "@mozilla.org/geolocation/service;1", &kNS_GEOLOCATION_SERVICE_CID },
1186 { "@mozilla.org/geolocation;1", &kNS_GEOLOCATION_CID },
1187 { "@mozilla.org/audiochannel/service;1", &kNS_AUDIOCHANNEL_SERVICE_CID },
1188 { "@mozilla.org/datastore-service;1", &kNS_DATASTORE_SERVICE_CID },
1189 { "@mozilla.org/focus-manager;1", &kNS_FOCUSMANAGER_CID },
1190 #ifdef MOZ_WEBSPEECH
1191 { NS_SPEECH_RECOGNITION_SERVICE_CONTRACTID_PREFIX "fake", &kNS_FAKE_SPEECH_RECOGNITION_SERVICE_CID },
1192 { NS_SYNTHVOICEREGISTRY_CONTRACTID, &kNS_SYNTHVOICEREGISTRY_CID },
1193 #endif
1194 { CSPSERVICE_CONTRACTID, &kCSPSERVICE_CID },
1195 { NS_CSPCONTEXT_CONTRACTID, &kNS_CSPCONTEXT_CID },
1196 { NS_MIXEDCONTENTBLOCKER_CONTRACTID, &kNS_MIXEDCONTENTBLOCKER_CID },
1197 { NS_EVENTLISTENERSERVICE_CONTRACTID, &kNS_EVENTLISTENERSERVICE_CID },
1198 { NS_GLOBALMESSAGEMANAGER_CONTRACTID, &kNS_GLOBALMESSAGEMANAGER_CID },
1199 { NS_PARENTPROCESSMESSAGEMANAGER_CONTRACTID, &kNS_PARENTPROCESSMESSAGEMANAGER_CID },
1200 { NS_CHILDPROCESSMESSAGEMANAGER_CONTRACTID, &kNS_CHILDPROCESSMESSAGEMANAGER_CID },
1201 { NSCHANNELPOLICY_CONTRACTID, &kNSCHANNELPOLICY_CID },
1202 { NS_SCRIPTSECURITYMANAGER_CONTRACTID, &kNS_SCRIPTSECURITYMANAGER_CID },
1203 { NS_GLOBAL_CHANNELEVENTSINK_CONTRACTID, &kNS_SCRIPTSECURITYMANAGER_CID },
1204 { NS_PRINCIPAL_CONTRACTID, &kNS_PRINCIPAL_CID },
1205 { NS_SYSTEMPRINCIPAL_CONTRACTID, &kNS_SYSTEMPRINCIPAL_CID },
1206 { NS_NULLPRINCIPAL_CONTRACTID, &kNS_NULLPRINCIPAL_CID },
1207 { NS_DEVICE_SENSORS_CONTRACTID, &kNS_DEVICE_SENSORS_CID },
1208 #ifndef MOZ_WIDGET_GONK
1209 #if defined(ANDROID)
1210 { "@mozilla.org/widget/hapticfeedback;1", &kNS_HAPTICFEEDBACK_CID },
1211 #endif
1212 #endif
1213 { THIRDPARTYUTIL_CONTRACTID, &kTHIRDPARTYUTIL_CID },
1214 { NS_STRUCTUREDCLONECONTAINER_CONTRACTID, &kNS_STRUCTUREDCLONECONTAINER_CID },
1215 { SMS_SERVICE_CONTRACTID, &kSMS_SERVICE_CID },
1216 { MMS_SERVICE_CONTRACTID, &kMMS_SERVICE_CID },
1217 { MOBILE_MESSAGE_SERVICE_CONTRACTID, &kMOBILE_MESSAGE_SERVICE_CID },
1218 { MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID, &kMOBILE_MESSAGE_DATABASE_SERVICE_CID },
1219 { POWERMANAGERSERVICE_CONTRACTID, &kNS_POWERMANAGERSERVICE_CID },
1220 { OSFILECONSTANTSSERVICE_CONTRACTID, &kOSFILECONSTANTSSERVICE_CID },
1221 { ALARMHALSERVICE_CONTRACTID, &kNS_ALARMHALSERVICE_CID },
1222 { "@mozilla.org/tcp-socket-child;1", &kTCPSOCKETCHILD_CID },
1223 { "@mozilla.org/tcp-socket-parent;1", &kTCPSOCKETPARENT_CID },
1224 { "@mozilla.org/tcp-server-socket-child;1", &kTCPSERVERSOCKETCHILD_CID },
1225 { "@mozilla.org/udp-socket-child;1", &kUDPSOCKETCHILD_CID },
1226 { TIMESERVICE_CONTRACTID, &kNS_TIMESERVICE_CID },
1227 { MEDIASTREAMCONTROLLERSERVICE_CONTRACTID, &kNS_MEDIASTREAMCONTROLLERSERVICE_CID },
1228 #ifdef MOZ_WIDGET_GONK
1229 { GONK_GPS_GEOLOCATION_PROVIDER_CONTRACTID, &kGONK_GPS_GEOLOCATION_PROVIDER_CID },
1230 #endif
1231 #ifdef MOZ_GAMEPAD
1232 { NS_GAMEPAD_TEST_CONTRACTID, &kNS_GAMEPAD_TEST_CID },
1233 #endif
1234 { MEDIAMANAGERSERVICE_CONTRACTID, &kNS_MEDIAMANAGERSERVICE_CID },
1235 #ifdef ACCESSIBILITY
1236 { "@mozilla.org/accessibilityService;1", &kNS_ACCESSIBILITY_SERVICE_CID },
1237 { "@mozilla.org/accessibleRetrieval;1", &kNS_ACCESSIBILITY_SERVICE_CID },
1238 #endif
1239 { TELEPHONY_SERVICE_CONTRACTID, &kTELEPHONY_SERVICE_CID },
1240 { "@mozilla.org/gecko-media-plugin-service;1", &kGECKO_MEDIA_PLUGIN_SERVICE_CID },
1241 { nullptr }
1244 static const mozilla::Module::CategoryEntry kLayoutCategories[] = {
1245 XPCONNECT_CATEGORIES
1246 { "content-policy", NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID, NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID },
1247 { "content-policy", NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID, NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID },
1248 { "content-policy", "CSPService", CSPSERVICE_CONTRACTID },
1249 { "content-policy", NS_MIXEDCONTENTBLOCKER_CONTRACTID, NS_MIXEDCONTENTBLOCKER_CONTRACTID },
1250 { "net-channel-event-sinks", "CSPService", CSPSERVICE_CONTRACTID },
1251 { "app-startup", "Script Security Manager", "service," NS_SCRIPTSECURITYMANAGER_CONTRACTID },
1252 { TOPIC_WEB_APP_CLEAR_DATA, "QuotaManager", "service," QUOTA_MANAGER_CONTRACTID },
1253 #ifdef MOZ_WIDGET_GONK
1254 { "app-startup", "Volume Service", "service," NS_VOLUMESERVICE_CONTRACTID },
1255 #endif
1256 CONTENTDLF_CATEGORIES
1257 #ifdef MOZ_WIDGET_GONK
1258 { "profile-after-change", "Gonk System Worker Manager", SYSTEMWORKERMANAGER_CONTRACTID },
1259 #endif
1260 #ifdef MOZ_B2G_BT
1261 { "profile-after-change", "Bluetooth Service", BLUETOOTHSERVICE_CONTRACTID },
1262 #endif
1263 { nullptr }
1266 static void
1267 LayoutModuleDtor()
1269 Shutdown();
1270 nsContentUtils::XPCOMShutdown();
1272 // Layout depends heavily on gfx and imagelib, so we want to make sure that
1273 // these modules are shut down after all the layout cleanup runs.
1274 mozilla::image::ShutdownModule();
1275 gfxPlatform::Shutdown();
1277 nsScriptSecurityManager::Shutdown();
1278 xpcModuleDtor();
1281 static const mozilla::Module kLayoutModule = {
1282 mozilla::Module::kVersion,
1283 kLayoutCIDs,
1284 kLayoutContracts,
1285 kLayoutCategories,
1286 nullptr,
1287 Initialize,
1288 LayoutModuleDtor
1291 NSMODULE_DEFN(nsLayoutModule) = &kLayoutModule;