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