Line data Source code
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/. */
5 :
6 : #include "base/basictypes.h"
7 :
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 "nsIIdleService.h"
32 : #include "nsHTMLStyleSheet.h"
33 : #include "nsILayoutDebugger.h"
34 : #include "nsNameSpaceManager.h"
35 : #include "nsIObserver.h"
36 : #include "nsIObserverService.h"
37 : #include "nsIScriptNameSpaceManager.h"
38 : #include "nsIScriptError.h"
39 : #include "nsISelection.h"
40 : #include "nsCaret.h"
41 : #include "nsPlainTextSerializer.h"
42 : #include "nsXMLContentSerializer.h"
43 : #include "nsXHTMLContentSerializer.h"
44 : #include "nsRuleNode.h"
45 : #include "nsContentAreaDragDrop.h"
46 : #include "nsContentList.h"
47 : #include "nsBox.h"
48 : #include "nsIFrameTraversal.h"
49 : #include "nsLayoutCID.h"
50 : #include "nsStyleSheetService.h"
51 : #include "nsFocusManager.h"
52 : #include "ThirdPartyUtil.h"
53 : #include "nsStructuredCloneContainer.h"
54 : #include "gfxPlatform.h"
55 : #include "mozilla/gfx/gfxVars.h"
56 :
57 : #include "nsIEventListenerService.h"
58 : #include "nsIMessageManager.h"
59 :
60 : // Transformiix stuff
61 : #include "mozilla/dom/XPathEvaluator.h"
62 : #include "txMozillaXSLTProcessor.h"
63 : #include "txNodeSetAdaptor.h"
64 :
65 : #include "mozilla/dom/DOMParser.h"
66 : #include "mozilla/dom/XMLHttpRequestMainThread.h"
67 : #include "nsDOMSerializer.h"
68 :
69 : // view stuff
70 : #include "nsContentCreatorFunctions.h"
71 :
72 : #include "mozilla/dom/FormData.h"
73 : #include "nsHostObjectURI.h"
74 : #include "nsGlobalWindowCommands.h"
75 : #include "nsIControllerCommandTable.h"
76 : #include "nsJSProtocolHandler.h"
77 : #include "nsScriptNameSpaceManager.h"
78 : #include "nsIControllerContext.h"
79 : #include "nsJSON.h"
80 : #include "nsZipArchive.h"
81 : #include "mozilla/Attributes.h"
82 : #include "mozilla/dom/DOMException.h"
83 : #include "mozilla/dom/DOMRequest.h"
84 : #include "mozilla/dom/LocalStorageManager.h"
85 : #include "mozilla/dom/network/UDPSocketChild.h"
86 : #include "mozilla/dom/quota/QuotaManagerService.h"
87 : #include "mozilla/dom/SessionStorageManager.h"
88 : #include "mozilla/dom/workers/ServiceWorkerManager.h"
89 : #include "mozilla/dom/workers/WorkerDebuggerManager.h"
90 : #include "mozilla/dom/Notification.h"
91 : #include "mozilla/OSFileConstants.h"
92 : #include "mozilla/Services.h"
93 :
94 : #ifdef MOZ_WEBSPEECH_TEST_BACKEND
95 : #include "mozilla/dom/FakeSpeechRecognitionService.h"
96 : #endif
97 : #ifdef MOZ_WEBSPEECH_POCKETSPHINX
98 : #include "mozilla/dom/PocketSphinxSpeechRecognitionService.h"
99 : #endif
100 : #ifdef MOZ_WEBSPEECH
101 : #include "mozilla/dom/nsSynthVoiceRegistry.h"
102 : #endif
103 :
104 : #include "mozilla/dom/PushNotifier.h"
105 : using mozilla::dom::PushNotifier;
106 : #define PUSHNOTIFIER_CID \
107 : { 0x2fc2d3e3, 0x020f, 0x404e, { 0xb0, 0x6a, 0x6e, 0xcf, 0x3e, 0xa2, 0x33, 0x4a } }
108 :
109 : #include "AudioChannelAgent.h"
110 : using mozilla::dom::AudioChannelAgent;
111 :
112 : // Editor stuff
113 : #include "nsEditorCID.h"
114 : #include "mozilla/EditorController.h" //CID
115 : #include "mozilla/HTMLEditor.h"
116 :
117 : #include "nsTextServicesDocument.h"
118 : #include "nsTextServicesCID.h"
119 :
120 : #include "nsScriptSecurityManager.h"
121 : #include "ContentPrincipal.h"
122 : #include "SystemPrincipal.h"
123 : #include "NullPrincipal.h"
124 : #include "nsNetCID.h"
125 : #if defined(MOZ_WIDGET_ANDROID)
126 : #include "nsHapticFeedback.h"
127 : #endif
128 : #include "nsParserUtils.h"
129 :
130 : #include "nsHTMLCanvasFrame.h"
131 :
132 : #include "nsIDOMWebGLRenderingContext.h"
133 :
134 : class nsIDocumentLoaderFactory;
135 :
136 : #define PRODUCT_NAME "Gecko"
137 :
138 : /* 0ddf4df8-4dbb-4133-8b79-9afb966514f5 */
139 : #define NS_PLUGINDOCLOADERFACTORY_CID \
140 : { 0x0ddf4df8, 0x4dbb, 0x4133, { 0x8b, 0x79, 0x9a, 0xfb, 0x96, 0x65, 0x14, 0xf5 } }
141 :
142 : #define NS_WINDOWCOMMANDTABLE_CID \
143 : { /* 0DE2FBFA-6B7F-11D7-BBBA-0003938A9D96 */ \
144 : 0x0DE2FBFA, 0x6B7F, 0x11D7, {0xBB, 0xBA, 0x00, 0x03, 0x93, 0x8A, 0x9D, 0x96} }
145 :
146 : #include "nsIBoxObject.h"
147 :
148 : #ifdef MOZ_XUL
149 : #include "inDOMView.h"
150 : #endif /* MOZ_XUL */
151 :
152 : #include "inDeepTreeWalker.h"
153 : #include "inCSSValueSearch.h"
154 : #include "inDOMUtils.h"
155 :
156 : #ifdef MOZ_XUL
157 : #include "nsIXULDocument.h"
158 : #include "nsIXULSortService.h"
159 : #endif
160 :
161 : static void Shutdown();
162 :
163 : #include "nsGeolocation.h"
164 : #include "nsDeviceSensors.h"
165 : #include "mozilla/dom/nsContentSecurityManager.h"
166 : #include "mozilla/dom/nsCSPService.h"
167 : #include "mozilla/dom/nsCSPContext.h"
168 : #include "nsIPowerManagerService.h"
169 : #include "nsIMediaManager.h"
170 : #include "mozilla/dom/nsMixedContentBlocker.h"
171 :
172 : #include "AudioChannelService.h"
173 : #include "mozilla/net/WebSocketEventService.h"
174 :
175 : #include "mozilla/dom/FlyWebService.h"
176 :
177 : #include "mozilla/dom/power/PowerManagerService.h"
178 : #include "mozilla/dom/time/TimeService.h"
179 : #include "StreamingProtocolService.h"
180 :
181 : #include "nsIPresentationService.h"
182 :
183 : #include "MediaManager.h"
184 :
185 : #include "GMPService.h"
186 :
187 : #include "mozilla/dom/PresentationDeviceManager.h"
188 : #include "mozilla/dom/PresentationTCPSessionTransport.h"
189 :
190 : #include "nsScriptError.h"
191 :
192 : #include "mozilla/TextInputProcessor.h"
193 :
194 : using namespace mozilla;
195 : using namespace mozilla::dom;
196 : using mozilla::dom::power::PowerManagerService;
197 : using mozilla::dom::quota::QuotaManagerService;
198 : using mozilla::dom::workers::ServiceWorkerManager;
199 : using mozilla::dom::workers::WorkerDebuggerManager;
200 : using mozilla::dom::UDPSocketChild;
201 : using mozilla::dom::time::TimeService;
202 : using mozilla::net::StreamingProtocolControllerService;
203 : using mozilla::gmp::GeckoMediaPluginService;
204 : using mozilla::dom::NotificationTelemetryService;
205 :
206 : #define NS_EDITORCOMMANDTABLE_CID \
207 : { 0x4f5e62b8, 0xd659, 0x4156, \
208 : { 0x84, 0xfc, 0x2f, 0x60, 0x99, 0x40, 0x03, 0x69 } }
209 :
210 : #define NS_EDITINGCOMMANDTABLE_CID \
211 : { 0xcb38a746, 0xbeb8, 0x43f3, \
212 : { 0x94, 0x29, 0x77, 0x96, 0xe1, 0xa9, 0x3f, 0xb4 } }
213 :
214 : #define NS_HAPTICFEEDBACK_CID \
215 : { 0x1f15dbc8, 0xbfaa, 0x45de, \
216 : { 0x8a, 0x46, 0x08, 0xe2, 0xe2, 0x63, 0x26, 0xb0 } }
217 :
218 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(TextEditor)
219 :
220 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsParserUtils)
221 :
222 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextServicesDocument)
223 :
224 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(HTMLEditor)
225 :
226 : // Transformiix
227 : /* 5d5d92cd-6bf8-11d9-bf4a-000a95dc234c */
228 : #define TRANSFORMIIX_NODESET_CID \
229 : { 0x5d5d92cd, 0x6bf8, 0x11d9, { 0xbf, 0x4a, 0x0, 0x0a, 0x95, 0xdc, 0x23, 0x4c } }
230 :
231 : #define TRANSFORMIIX_NODESET_CONTRACTID \
232 : "@mozilla.org/transformiix-nodeset;1"
233 :
234 : // PresentationDeviceManager
235 : /* e1e79dec-4085-4994-ac5b-744b016697e6 */
236 : #define PRESENTATION_DEVICE_MANAGER_CID \
237 : { 0xe1e79dec, 0x4085, 0x4994, { 0xac, 0x5b, 0x74, 0x4b, 0x01, 0x66, 0x97, 0xe6 } }
238 :
239 : #define PRESENTATION_TCP_SESSION_TRANSPORT_CID \
240 : { 0xc9d023f4, 0x6228, 0x4c07, { 0x8b, 0x1d, 0x9c, 0x19, 0x57, 0x3f, 0xaa, 0x27 } }
241 :
242 : already_AddRefed<nsIPresentationService> NS_CreatePresentationService();
243 :
244 : // Factory Constructor
245 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(txMozillaXSLTProcessor)
246 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(XPathEvaluator)
247 0 : NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(txNodeSetAdaptor, Init)
248 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsDOMSerializer)
249 0 : NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(XMLHttpRequestMainThread, Init)
250 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(FormData)
251 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsHostObjectURI)
252 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(DOMParser)
253 4 : NS_GENERIC_FACTORY_CONSTRUCTOR(Exception)
254 4 : NS_GENERIC_FACTORY_CONSTRUCTOR(LocalStorageManager)
255 2 : NS_GENERIC_FACTORY_CONSTRUCTOR(SessionStorageManager)
256 0 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(DOMRequestService,
257 : DOMRequestService::FactoryCreate)
258 0 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(QuotaManagerService,
259 : QuotaManagerService::FactoryCreate)
260 2 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(ServiceWorkerManager,
261 : ServiceWorkerManager::GetInstance)
262 0 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(WorkerDebuggerManager,
263 : WorkerDebuggerManager::GetInstance)
264 :
265 : #ifdef MOZ_WEBSPEECH
266 0 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsSynthVoiceRegistry,
267 : nsSynthVoiceRegistry::GetInstanceForService)
268 : #endif
269 :
270 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(AudioChannelAgent)
271 :
272 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsDeviceSensors)
273 :
274 : #if defined(ANDROID)
275 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsHapticFeedback)
276 : #endif
277 4 : NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(ThirdPartyUtil, Init)
278 1 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIPowerManagerService,
279 : PowerManagerService::GetInstance)
280 0 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsITimeService,
281 : TimeService::GetInstance)
282 0 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIStreamingProtocolControllerService,
283 : StreamingProtocolControllerService::GetInstance)
284 :
285 0 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMediaManagerService,
286 : MediaManager::GetInstance)
287 2 : NS_GENERIC_FACTORY_CONSTRUCTOR(PresentationDeviceManager)
288 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(TextInputProcessor)
289 1 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIPresentationService,
290 : NS_CreatePresentationService)
291 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(PresentationTCPSessionTransport)
292 2 : NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(NotificationTelemetryService, Init)
293 4 : NS_GENERIC_FACTORY_CONSTRUCTOR(PushNotifier)
294 :
295 : //-----------------------------------------------------------------------------
296 :
297 : static bool gInitialized = false;
298 :
299 : // Perform our one-time intialization for this module
300 :
301 : // static
302 : nsresult
303 3 : Initialize()
304 : {
305 3 : if (gInitialized) {
306 0 : MOZ_CRASH("Recursive layout module initialization");
307 : return NS_ERROR_FAILURE;
308 : }
309 3 : if (XRE_GetProcessType() == GeckoProcessType_GPU) {
310 : // We mark the layout module as being available in the GPU process so that
311 : // XPCOM's component manager initializes the power manager service, which
312 : // is needed for nsAppShell. However, we don't actually need anything in
313 : // the layout module itself.
314 0 : return NS_OK;
315 : }
316 :
317 : static_assert(sizeof(uintptr_t) == sizeof(void*),
318 : "Eeek! You'll need to adjust the size of uintptr_t to the "
319 : "size of a pointer on your platform.");
320 :
321 3 : gInitialized = true;
322 :
323 : nsresult rv;
324 3 : rv = xpcModuleCtor();
325 3 : if (NS_FAILED(rv))
326 0 : return rv;
327 :
328 3 : rv = nsLayoutStatics::Initialize();
329 3 : if (NS_FAILED(rv)) {
330 0 : Shutdown();
331 0 : return rv;
332 : }
333 :
334 3 : return NS_OK;
335 : }
336 :
337 : // Shutdown this module, releasing all of the module resources
338 :
339 : // static
340 : void
341 0 : Shutdown()
342 : {
343 0 : NS_PRECONDITION(gInitialized, "module not initialized");
344 0 : if (!gInitialized)
345 0 : return;
346 :
347 0 : gInitialized = false;
348 :
349 0 : nsLayoutStatics::Release();
350 : }
351 :
352 : #ifdef DEBUG
353 : nsresult NS_NewFrameUtil(nsIFrameUtil** aResult);
354 : nsresult NS_NewLayoutDebugger(nsILayoutDebugger** aResult);
355 : #endif
356 :
357 : nsresult NS_NewBoxObject(nsIBoxObject** aResult);
358 :
359 : #ifdef MOZ_XUL
360 : nsresult NS_NewListBoxObject(nsIBoxObject** aResult);
361 : nsresult NS_NewScrollBoxObject(nsIBoxObject** aResult);
362 : nsresult NS_NewMenuBoxObject(nsIBoxObject** aResult);
363 : nsresult NS_NewPopupBoxObject(nsIBoxObject** aResult);
364 : nsresult NS_NewContainerBoxObject(nsIBoxObject** aResult);
365 : nsresult NS_NewTreeBoxObject(nsIBoxObject** aResult);
366 : #endif
367 :
368 : nsresult NS_NewCanvasRenderingContextWebGL(nsIDOMWebGLRenderingContext** aResult);
369 :
370 : nsresult NS_CreateFrameTraversal(nsIFrameTraversal** aResult);
371 :
372 : nsresult NS_NewDomSelection(nsISelection** aResult);
373 : already_AddRefed<nsIContentViewer> NS_NewContentViewer();
374 : nsresult NS_NewGenRegularIterator(nsIContentIterator** aResult);
375 : nsresult NS_NewGenSubtreeIterator(nsIContentIterator** aInstancePtrResult);
376 : nsresult NS_NewContentDocumentLoaderFactory(nsIDocumentLoaderFactory** aResult);
377 : nsresult NS_NewHTMLCopyTextEncoder(nsIDocumentEncoder** aResult);
378 : nsresult NS_NewTextEncoder(nsIDocumentEncoder** aResult);
379 : nsresult NS_NewContentPolicy(nsIContentPolicy** aResult);
380 :
381 : nsresult NS_NewEventListenerService(nsIEventListenerService** aResult);
382 : nsresult NS_NewGlobalMessageManager(nsIMessageBroadcaster** aResult);
383 : nsresult NS_NewParentProcessMessageManager(nsIMessageBroadcaster** aResult);
384 : nsresult NS_NewChildProcessMessageManager(nsISyncMessageSender** aResult);
385 :
386 : nsresult NS_NewXULControllers(nsISupports* aOuter, REFNSIID aIID, void** aResult);
387 :
388 : #define MAKE_CTOR(ctor_, iface_, func_) \
389 : static nsresult \
390 : ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) \
391 : { \
392 : *aResult = nullptr; \
393 : if (aOuter) \
394 : return NS_ERROR_NO_AGGREGATION; \
395 : iface_* inst; \
396 : nsresult rv = func_(&inst); \
397 : if (NS_SUCCEEDED(rv)) { \
398 : rv = inst->QueryInterface(aIID, aResult); \
399 : NS_RELEASE(inst); \
400 : } \
401 : return rv; \
402 : }
403 :
404 : // As above, but expects
405 : // already_AddRefed<nsIFoo> NS_NewFoo();
406 : // instead of
407 : // nsresult NS_NewFoo(nsIFoo**);
408 : #define MAKE_CTOR2(ctor_, iface_, func_) \
409 : static nsresult \
410 : ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) \
411 : { \
412 : *aResult = nullptr; \
413 : if (aOuter) { \
414 : return NS_ERROR_NO_AGGREGATION; \
415 : } \
416 : nsCOMPtr<iface_> inst = func_(); \
417 : inst.forget(aResult); \
418 : return NS_OK; \
419 : }
420 :
421 : #ifdef DEBUG
422 0 : MAKE_CTOR(CreateNewFrameUtil, nsIFrameUtil, NS_NewFrameUtil)
423 0 : MAKE_CTOR(CreateNewLayoutDebugger, nsILayoutDebugger, NS_NewLayoutDebugger)
424 : #endif
425 :
426 0 : MAKE_CTOR(CreateNewFrameTraversal, nsIFrameTraversal, NS_CreateFrameTraversal)
427 0 : MAKE_CTOR(CreateNewBoxObject, nsIBoxObject, NS_NewBoxObject)
428 :
429 : #ifdef MOZ_XUL
430 0 : MAKE_CTOR(CreateNewListBoxObject, nsIBoxObject, NS_NewListBoxObject)
431 0 : MAKE_CTOR(CreateNewMenuBoxObject, nsIBoxObject, NS_NewMenuBoxObject)
432 0 : MAKE_CTOR(CreateNewPopupBoxObject, nsIBoxObject, NS_NewPopupBoxObject)
433 0 : MAKE_CTOR(CreateNewScrollBoxObject, nsIBoxObject, NS_NewScrollBoxObject)
434 0 : MAKE_CTOR(CreateNewTreeBoxObject, nsIBoxObject, NS_NewTreeBoxObject)
435 0 : MAKE_CTOR(CreateNewContainerBoxObject, nsIBoxObject, NS_NewContainerBoxObject)
436 : #endif // MOZ_XUL
437 :
438 : #ifdef MOZ_XUL
439 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(inDOMView)
440 : #endif
441 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(inDeepTreeWalker)
442 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(inCSSValueSearch)
443 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(inDOMUtils)
444 :
445 0 : MAKE_CTOR2(CreateContentViewer, nsIContentViewer, NS_NewContentViewer)
446 7 : MAKE_CTOR(CreateHTMLDocument, nsIDocument, NS_NewHTMLDocument)
447 0 : MAKE_CTOR(CreateXMLDocument, nsIDocument, NS_NewXMLDocument)
448 21 : MAKE_CTOR(CreateSVGDocument, nsIDocument, NS_NewSVGDocument)
449 0 : MAKE_CTOR(CreateImageDocument, nsIDocument, NS_NewImageDocument)
450 0 : MAKE_CTOR(CreateDOMSelection, nsISelection, NS_NewDomSelection)
451 0 : MAKE_CTOR2(CreateContentIterator, nsIContentIterator, NS_NewContentIterator)
452 0 : MAKE_CTOR2(CreatePreContentIterator, nsIContentIterator, NS_NewPreContentIterator)
453 0 : MAKE_CTOR2(CreateSubtreeIterator, nsIContentIterator, NS_NewContentSubtreeIterator)
454 0 : MAKE_CTOR(CreateTextEncoder, nsIDocumentEncoder, NS_NewTextEncoder)
455 0 : MAKE_CTOR(CreateHTMLCopyTextEncoder, nsIDocumentEncoder, NS_NewHTMLCopyTextEncoder)
456 0 : MAKE_CTOR(CreateXMLContentSerializer, nsIContentSerializer, NS_NewXMLContentSerializer)
457 0 : MAKE_CTOR(CreateHTMLContentSerializer, nsIContentSerializer, NS_NewHTMLContentSerializer)
458 0 : MAKE_CTOR(CreateXHTMLContentSerializer, nsIContentSerializer, NS_NewXHTMLContentSerializer)
459 0 : MAKE_CTOR(CreatePlainTextSerializer, nsIContentSerializer, NS_NewPlainTextSerializer)
460 3 : MAKE_CTOR(CreateContentPolicy, nsIContentPolicy, NS_NewContentPolicy)
461 : #ifdef MOZ_XUL
462 0 : MAKE_CTOR(CreateXULSortService, nsIXULSortService, NS_NewXULSortService)
463 1 : MAKE_CTOR(CreateXULDocument, nsIXULDocument, NS_NewXULDocument)
464 : // NS_NewXULControllers
465 : #endif
466 2 : MAKE_CTOR(CreateContentDLF, nsIDocumentLoaderFactory, NS_NewContentDocumentLoaderFactory)
467 2 : MAKE_CTOR(CreateEventListenerService, nsIEventListenerService, NS_NewEventListenerService)
468 1 : MAKE_CTOR(CreateGlobalMessageManager, nsIMessageBroadcaster, NS_NewGlobalMessageManager)
469 1 : MAKE_CTOR(CreateParentMessageManager, nsIMessageBroadcaster, NS_NewParentProcessMessageManager)
470 3 : MAKE_CTOR(CreateChildMessageManager, nsISyncMessageSender, NS_NewChildProcessMessageManager)
471 4 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsDataDocumentContentPolicy)
472 4 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsNoDataProtocolContentPolicy)
473 0 : MAKE_CTOR(CreatePluginDocument, nsIDocument, NS_NewPluginDocument)
474 0 : MAKE_CTOR(CreateVideoDocument, nsIDocument, NS_NewVideoDocument)
475 2 : MAKE_CTOR(CreateFocusManager, nsIFocusManager, NS_NewFocusManager)
476 :
477 0 : MAKE_CTOR(CreateCanvasRenderingContextWebGL, nsIDOMWebGLRenderingContext, NS_NewCanvasRenderingContextWebGL)
478 :
479 6 : NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStyleSheetService, Init)
480 :
481 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsJSURI)
482 :
483 : // views are not refcounted, so this is the same as
484 : // NS_GENERIC_FACTORY_CONSTRUCTOR without the NS_ADDREF/NS_RELEASE
485 : #define NS_GENERIC_FACTORY_CONSTRUCTOR_NOREFS(_InstanceClass) \
486 : static nsresult \
487 : _InstanceClass##Constructor(nsISupports *aOuter, REFNSIID aIID, \
488 : void **aResult) \
489 : { \
490 : nsresult rv; \
491 : \
492 : *aResult = nullptr; \
493 : if (nullptr != aOuter) { \
494 : rv = NS_ERROR_NO_AGGREGATION; \
495 : return rv; \
496 : } \
497 : \
498 : _InstanceClass * inst = new _InstanceClass(); \
499 : if (nullptr == inst) { \
500 : rv = NS_ERROR_OUT_OF_MEMORY; \
501 : return rv; \
502 : } \
503 : rv = inst->QueryInterface(aIID, aResult); \
504 : \
505 : return rv; \
506 : } \
507 :
508 : #define NS_GEOLOCATION_CID \
509 : { 0x1E1C3FF, 0x94A, 0xD048, { 0x44, 0xB4, 0x62, 0xD2, 0x9C, 0x7B, 0x4F, 0x39 } }
510 :
511 0 : NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(Geolocation, Init)
512 :
513 : #define NS_GEOLOCATION_SERVICE_CID \
514 : { 0x404d02a, 0x1CA, 0xAAAB, { 0x47, 0x62, 0x94, 0x4b, 0x1b, 0xf2, 0xf7, 0xb5 } }
515 :
516 : #define NS_AUDIOCHANNEL_SERVICE_CID \
517 : { 0xf712e983, 0x048a, 0x443f, { 0x88, 0x02, 0xfc, 0xc3, 0xd9, 0x27, 0xce, 0xac }}
518 :
519 : #define NS_WEBSOCKETEVENT_SERVICE_CID \
520 : { 0x31689828, 0xda66, 0x49a6, { 0x87, 0x0c, 0xdf, 0x62, 0xb8, 0x3f, 0xe7, 0x89 }}
521 :
522 : #define NS_FLYWEB_SERVICE_CID \
523 : { 0x5de19ef0, 0x895e, 0x4c0c, { 0xa6, 0xe0, 0xea, 0xe0, 0x23, 0x2b, 0x84, 0x5a } }
524 :
525 0 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsGeolocationService, nsGeolocationService::GetGeolocationService)
526 :
527 0 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(AudioChannelService, AudioChannelService::GetOrCreate)
528 :
529 0 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(WebSocketEventService, WebSocketEventService::GetOrCreate)
530 :
531 0 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(FlyWebService, FlyWebService::GetOrCreateAddRefed)
532 :
533 : #ifdef MOZ_WEBSPEECH_TEST_BACKEND
534 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(FakeSpeechRecognitionService)
535 : #endif
536 : #ifdef MOZ_WEBSPEECH_POCKETSPHINX
537 : NS_GENERIC_FACTORY_CONSTRUCTOR(PocketSphinxSpeechRecognitionService)
538 : #endif
539 :
540 4 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsContentSecurityManager)
541 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsCSPContext)
542 6 : NS_GENERIC_FACTORY_CONSTRUCTOR(CSPService)
543 6 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsMixedContentBlocker)
544 :
545 2 : NS_GENERIC_FACTORY_CONSTRUCTOR(ContentPrincipal)
546 24 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(SystemPrincipal,
547 : nsScriptSecurityManager::SystemPrincipalSingletonConstructor)
548 0 : NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(NullPrincipal, Init)
549 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsStructuredCloneContainer)
550 :
551 2 : NS_GENERIC_FACTORY_CONSTRUCTOR(OSFileConstantsService)
552 0 : NS_GENERIC_FACTORY_CONSTRUCTOR(UDPSocketChild)
553 :
554 1 : NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(GeckoMediaPluginService, GeckoMediaPluginService::GetGeckoMediaPluginService)
555 :
556 4 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsScriptError)
557 :
558 : #ifdef ACCESSIBILITY
559 : #include "xpcAccessibilityService.h"
560 :
561 0 : MAKE_CTOR(CreateA11yService, nsIAccessibilityService, NS_GetAccessibilityService)
562 : #endif
563 :
564 : static nsresult
565 3 : Construct_nsIScriptSecurityManager(nsISupports *aOuter, REFNSIID aIID,
566 : void **aResult)
567 : {
568 3 : if (!aResult)
569 0 : return NS_ERROR_NULL_POINTER;
570 3 : *aResult = nullptr;
571 3 : if (aOuter)
572 0 : return NS_ERROR_NO_AGGREGATION;
573 3 : nsScriptSecurityManager *obj = nsScriptSecurityManager::GetScriptSecurityManager();
574 3 : if (!obj)
575 0 : return NS_ERROR_OUT_OF_MEMORY;
576 3 : if (NS_FAILED(obj->QueryInterface(aIID, aResult)))
577 0 : return NS_ERROR_FAILURE;
578 3 : return NS_OK;
579 : }
580 :
581 : #ifdef DEBUG
582 : NS_DEFINE_NAMED_CID(NS_FRAME_UTIL_CID);
583 : NS_DEFINE_NAMED_CID(NS_LAYOUT_DEBUGGER_CID);
584 : #endif
585 : NS_DEFINE_NAMED_CID(NS_FRAMETRAVERSAL_CID);
586 : NS_DEFINE_NAMED_CID(NS_BOXOBJECT_CID);
587 : #ifdef MOZ_XUL
588 : NS_DEFINE_NAMED_CID(NS_LISTBOXOBJECT_CID);
589 : NS_DEFINE_NAMED_CID(NS_MENUBOXOBJECT_CID);
590 : NS_DEFINE_NAMED_CID(NS_POPUPBOXOBJECT_CID);
591 : NS_DEFINE_NAMED_CID(NS_CONTAINERBOXOBJECT_CID);
592 : NS_DEFINE_NAMED_CID(NS_SCROLLBOXOBJECT_CID);
593 : NS_DEFINE_NAMED_CID(NS_TREEBOXOBJECT_CID);
594 : #endif // MOZ_XUL
595 : #ifdef MOZ_XUL
596 : NS_DEFINE_NAMED_CID(IN_DOMVIEW_CID);
597 : #endif
598 : NS_DEFINE_NAMED_CID(IN_DEEPTREEWALKER_CID);
599 : NS_DEFINE_NAMED_CID(IN_CSSVALUESEARCH_CID);
600 : NS_DEFINE_NAMED_CID(IN_DOMUTILS_CID);
601 : NS_DEFINE_NAMED_CID(NS_CONTENT_VIEWER_CID);
602 : NS_DEFINE_NAMED_CID(NS_HTMLDOCUMENT_CID);
603 : NS_DEFINE_NAMED_CID(NS_XMLDOCUMENT_CID);
604 : NS_DEFINE_NAMED_CID(NS_SVGDOCUMENT_CID);
605 : NS_DEFINE_NAMED_CID(NS_IMAGEDOCUMENT_CID);
606 : NS_DEFINE_NAMED_CID(NS_DOMSELECTION_CID);
607 : NS_DEFINE_NAMED_CID(NS_CONTENTITERATOR_CID);
608 : NS_DEFINE_NAMED_CID(NS_PRECONTENTITERATOR_CID);
609 : NS_DEFINE_NAMED_CID(NS_SUBTREEITERATOR_CID);
610 : NS_DEFINE_NAMED_CID(NS_CANVASRENDERINGCONTEXTWEBGL_CID);
611 : NS_DEFINE_NAMED_CID(NS_TEXT_ENCODER_CID);
612 : NS_DEFINE_NAMED_CID(NS_HTMLCOPY_TEXT_ENCODER_CID);
613 : NS_DEFINE_NAMED_CID(NS_XMLCONTENTSERIALIZER_CID);
614 : NS_DEFINE_NAMED_CID(NS_XHTMLCONTENTSERIALIZER_CID);
615 : NS_DEFINE_NAMED_CID(NS_HTMLCONTENTSERIALIZER_CID);
616 : NS_DEFINE_NAMED_CID(NS_PLAINTEXTSERIALIZER_CID);
617 : NS_DEFINE_NAMED_CID(NS_PARSERUTILS_CID);
618 : NS_DEFINE_NAMED_CID(NS_SCRIPTABLEUNESCAPEHTML_CID);
619 : NS_DEFINE_NAMED_CID(NS_CONTENTPOLICY_CID);
620 : NS_DEFINE_NAMED_CID(NS_DATADOCUMENTCONTENTPOLICY_CID);
621 : NS_DEFINE_NAMED_CID(NS_NODATAPROTOCOLCONTENTPOLICY_CID);
622 : NS_DEFINE_NAMED_CID(NS_XULCONTROLLERS_CID);
623 : #ifdef MOZ_XUL
624 : NS_DEFINE_NAMED_CID(NS_XULSORTSERVICE_CID);
625 : NS_DEFINE_NAMED_CID(NS_XULDOCUMENT_CID);
626 : #endif
627 : NS_DEFINE_NAMED_CID(NS_CONTENT_DOCUMENT_LOADER_FACTORY_CID);
628 : NS_DEFINE_NAMED_CID(NS_JSPROTOCOLHANDLER_CID);
629 : NS_DEFINE_NAMED_CID(NS_JSURI_CID);
630 : NS_DEFINE_NAMED_CID(NS_WINDOWCOMMANDTABLE_CID);
631 : NS_DEFINE_NAMED_CID(NS_WINDOWCONTROLLER_CID);
632 : NS_DEFINE_NAMED_CID(NS_PLUGINDOCLOADERFACTORY_CID);
633 : NS_DEFINE_NAMED_CID(NS_PLUGINDOCUMENT_CID);
634 : NS_DEFINE_NAMED_CID(NS_VIDEODOCUMENT_CID);
635 : NS_DEFINE_NAMED_CID(NS_STYLESHEETSERVICE_CID);
636 : NS_DEFINE_NAMED_CID(TRANSFORMIIX_XSLT_PROCESSOR_CID);
637 : NS_DEFINE_NAMED_CID(TRANSFORMIIX_XPATH_EVALUATOR_CID);
638 : NS_DEFINE_NAMED_CID(TRANSFORMIIX_NODESET_CID);
639 : NS_DEFINE_NAMED_CID(NS_XMLSERIALIZER_CID);
640 : NS_DEFINE_NAMED_CID(NS_FORMDATA_CID);
641 : NS_DEFINE_NAMED_CID(NS_HOSTOBJECTURI_CID);
642 : NS_DEFINE_NAMED_CID(NS_XMLHTTPREQUEST_CID);
643 : NS_DEFINE_NAMED_CID(NS_DOMPARSER_CID);
644 : NS_DEFINE_NAMED_CID(NS_DOMSESSIONSTORAGEMANAGER_CID);
645 : NS_DEFINE_NAMED_CID(NS_DOMLOCALSTORAGEMANAGER_CID);
646 : NS_DEFINE_NAMED_CID(NS_DOMJSON_CID);
647 : NS_DEFINE_NAMED_CID(NS_TEXTEDITOR_CID);
648 : NS_DEFINE_NAMED_CID(DOMREQUEST_SERVICE_CID);
649 : NS_DEFINE_NAMED_CID(QUOTAMANAGER_SERVICE_CID);
650 : NS_DEFINE_NAMED_CID(SERVICEWORKERMANAGER_CID);
651 : NS_DEFINE_NAMED_CID(NOTIFICATIONTELEMETRYSERVICE_CID);
652 : NS_DEFINE_NAMED_CID(PUSHNOTIFIER_CID);
653 : NS_DEFINE_NAMED_CID(WORKERDEBUGGERMANAGER_CID);
654 : NS_DEFINE_NAMED_CID(NS_AUDIOCHANNELAGENT_CID);
655 : NS_DEFINE_NAMED_CID(NS_HTMLEDITOR_CID);
656 : NS_DEFINE_NAMED_CID(NS_EDITORCONTROLLER_CID);
657 : NS_DEFINE_NAMED_CID(NS_EDITINGCONTROLLER_CID);
658 : NS_DEFINE_NAMED_CID(NS_EDITORCOMMANDTABLE_CID);
659 : NS_DEFINE_NAMED_CID(NS_EDITINGCOMMANDTABLE_CID);
660 : NS_DEFINE_NAMED_CID(NS_TEXTSERVICESDOCUMENT_CID);
661 : NS_DEFINE_NAMED_CID(NS_GEOLOCATION_SERVICE_CID);
662 : NS_DEFINE_NAMED_CID(NS_GEOLOCATION_CID);
663 : NS_DEFINE_NAMED_CID(NS_AUDIOCHANNEL_SERVICE_CID);
664 : NS_DEFINE_NAMED_CID(NS_WEBSOCKETEVENT_SERVICE_CID);
665 : NS_DEFINE_NAMED_CID(NS_FLYWEB_SERVICE_CID);
666 : NS_DEFINE_NAMED_CID(NS_FOCUSMANAGER_CID);
667 : NS_DEFINE_NAMED_CID(NS_CONTENTSECURITYMANAGER_CID);
668 : NS_DEFINE_NAMED_CID(CSPSERVICE_CID);
669 : NS_DEFINE_NAMED_CID(NS_CSPCONTEXT_CID);
670 : NS_DEFINE_NAMED_CID(NS_MIXEDCONTENTBLOCKER_CID);
671 : NS_DEFINE_NAMED_CID(NS_EVENTLISTENERSERVICE_CID);
672 : NS_DEFINE_NAMED_CID(NS_GLOBALMESSAGEMANAGER_CID);
673 : NS_DEFINE_NAMED_CID(NS_PARENTPROCESSMESSAGEMANAGER_CID);
674 : NS_DEFINE_NAMED_CID(NS_CHILDPROCESSMESSAGEMANAGER_CID);
675 : NS_DEFINE_NAMED_CID(NS_SCRIPTSECURITYMANAGER_CID);
676 : NS_DEFINE_NAMED_CID(NS_PRINCIPAL_CID);
677 : NS_DEFINE_NAMED_CID(NS_SYSTEMPRINCIPAL_CID);
678 : NS_DEFINE_NAMED_CID(NS_NULLPRINCIPAL_CID);
679 : NS_DEFINE_NAMED_CID(THIRDPARTYUTIL_CID);
680 : NS_DEFINE_NAMED_CID(NS_STRUCTUREDCLONECONTAINER_CID);
681 : NS_DEFINE_NAMED_CID(NS_DEVICE_SENSORS_CID);
682 : #if defined(ANDROID)
683 : NS_DEFINE_NAMED_CID(NS_HAPTICFEEDBACK_CID);
684 : #endif
685 : NS_DEFINE_NAMED_CID(NS_POWERMANAGERSERVICE_CID);
686 : NS_DEFINE_NAMED_CID(OSFILECONSTANTSSERVICE_CID);
687 : NS_DEFINE_NAMED_CID(UDPSOCKETCHILD_CID);
688 : NS_DEFINE_NAMED_CID(NS_TIMESERVICE_CID);
689 : NS_DEFINE_NAMED_CID(NS_MEDIASTREAMCONTROLLERSERVICE_CID);
690 : NS_DEFINE_NAMED_CID(NS_MEDIAMANAGERSERVICE_CID);
691 : #ifdef MOZ_WEBSPEECH_TEST_BACKEND
692 : NS_DEFINE_NAMED_CID(NS_FAKE_SPEECH_RECOGNITION_SERVICE_CID);
693 : #endif
694 : #ifdef MOZ_WEBSPEECH_POCKETSPHINX
695 : NS_DEFINE_NAMED_CID(NS_POCKETSPHINX_SPEECH_RECOGNITION_SERVICE_CID);
696 : #endif
697 : #ifdef MOZ_WEBSPEECH
698 : NS_DEFINE_NAMED_CID(NS_SYNTHVOICEREGISTRY_CID);
699 : #endif
700 :
701 : #ifdef ACCESSIBILITY
702 : NS_DEFINE_NAMED_CID(NS_ACCESSIBILITY_SERVICE_CID);
703 : #endif
704 :
705 : NS_DEFINE_NAMED_CID(GECKO_MEDIA_PLUGIN_SERVICE_CID);
706 :
707 : NS_DEFINE_NAMED_CID(PRESENTATION_SERVICE_CID);
708 : NS_DEFINE_NAMED_CID(PRESENTATION_DEVICE_MANAGER_CID);
709 : NS_DEFINE_NAMED_CID(PRESENTATION_TCP_SESSION_TRANSPORT_CID);
710 :
711 : NS_DEFINE_NAMED_CID(TEXT_INPUT_PROCESSOR_CID);
712 :
713 : NS_DEFINE_NAMED_CID(NS_SCRIPTERROR_CID);
714 :
715 : static nsresult
716 2 : CreateWindowCommandTableConstructor(nsISupports *aOuter,
717 : REFNSIID aIID, void **aResult)
718 : {
719 : nsresult rv;
720 : nsCOMPtr<nsIControllerCommandTable> commandTable =
721 4 : do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv);
722 2 : if (NS_FAILED(rv)) return rv;
723 :
724 2 : rv = nsWindowCommandRegistration::RegisterWindowCommands(commandTable);
725 2 : if (NS_FAILED(rv)) return rv;
726 :
727 2 : return commandTable->QueryInterface(aIID, aResult);
728 : }
729 :
730 : static nsresult
731 2 : CreateWindowControllerWithSingletonCommandTable(nsISupports *aOuter,
732 : REFNSIID aIID, void **aResult)
733 : {
734 : nsresult rv;
735 : nsCOMPtr<nsIController> controller =
736 4 : do_CreateInstance("@mozilla.org/embedcomp/base-command-controller;1", &rv);
737 :
738 2 : if (NS_FAILED(rv)) return rv;
739 :
740 4 : nsCOMPtr<nsIControllerCommandTable> windowCommandTable = do_GetService(kNS_WINDOWCOMMANDTABLE_CID, &rv);
741 2 : if (NS_FAILED(rv)) return rv;
742 :
743 : // this is a singleton; make it immutable
744 2 : windowCommandTable->MakeImmutable();
745 :
746 4 : nsCOMPtr<nsIControllerContext> controllerContext = do_QueryInterface(controller, &rv);
747 2 : if (NS_FAILED(rv)) return rv;
748 :
749 2 : controllerContext->Init(windowCommandTable);
750 2 : if (NS_FAILED(rv)) return rv;
751 :
752 2 : return controller->QueryInterface(aIID, aResult);
753 : }
754 :
755 : // Constructor of a controller which is set up to use, internally, a
756 : // singleton command-table pre-filled with editor commands.
757 : static nsresult
758 2 : EditorControllerConstructor(nsISupports* aOuter, REFNSIID aIID, void** aResult)
759 : {
760 : nsresult rv;
761 4 : nsCOMPtr<nsIController> controller = do_CreateInstance("@mozilla.org/embedcomp/base-command-controller;1", &rv);
762 2 : if (NS_FAILED(rv)) return rv;
763 :
764 4 : nsCOMPtr<nsIControllerCommandTable> editorCommandTable = do_GetService(kNS_EDITORCOMMANDTABLE_CID, &rv);
765 2 : if (NS_FAILED(rv)) return rv;
766 :
767 : // this guy is a singleton, so make it immutable
768 2 : editorCommandTable->MakeImmutable();
769 :
770 4 : nsCOMPtr<nsIControllerContext> controllerContext = do_QueryInterface(controller, &rv);
771 2 : if (NS_FAILED(rv)) return rv;
772 :
773 2 : rv = controllerContext->Init(editorCommandTable);
774 2 : if (NS_FAILED(rv)) return rv;
775 :
776 2 : return controller->QueryInterface(aIID, aResult);
777 : }
778 :
779 : // Constructor of a controller which is set up to use, internally, a
780 : // singleton command-table pre-filled with editing commands.
781 : static nsresult
782 2 : nsEditingControllerConstructor(nsISupports *aOuter, REFNSIID aIID,
783 : void **aResult)
784 : {
785 : nsresult rv;
786 4 : nsCOMPtr<nsIController> controller = do_CreateInstance("@mozilla.org/embedcomp/base-command-controller;1", &rv);
787 2 : if (NS_FAILED(rv)) return rv;
788 :
789 4 : nsCOMPtr<nsIControllerCommandTable> editingCommandTable = do_GetService(kNS_EDITINGCOMMANDTABLE_CID, &rv);
790 2 : if (NS_FAILED(rv)) return rv;
791 :
792 : // this guy is a singleton, so make it immutable
793 2 : editingCommandTable->MakeImmutable();
794 :
795 4 : nsCOMPtr<nsIControllerContext> controllerContext = do_QueryInterface(controller, &rv);
796 2 : if (NS_FAILED(rv)) return rv;
797 :
798 2 : rv = controllerContext->Init(editingCommandTable);
799 2 : if (NS_FAILED(rv)) return rv;
800 :
801 2 : return controller->QueryInterface(aIID, aResult);
802 : }
803 :
804 : // Constructor for a command-table pre-filled with editor commands
805 : static nsresult
806 1 : nsEditorCommandTableConstructor(nsISupports *aOuter, REFNSIID aIID,
807 : void **aResult)
808 : {
809 : nsresult rv;
810 : nsCOMPtr<nsIControllerCommandTable> commandTable =
811 2 : do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv);
812 1 : if (NS_FAILED(rv)) return rv;
813 :
814 1 : rv = EditorController::RegisterEditorCommands(commandTable);
815 1 : if (NS_FAILED(rv)) return rv;
816 :
817 : // we don't know here whether we're being created as an instance,
818 : // or a service, so we can't become immutable
819 :
820 1 : return commandTable->QueryInterface(aIID, aResult);
821 : }
822 :
823 : // Constructor for a command-table pre-filled with editing commands
824 : static nsresult
825 1 : nsEditingCommandTableConstructor(nsISupports *aOuter, REFNSIID aIID,
826 : void **aResult)
827 : {
828 : nsresult rv;
829 : nsCOMPtr<nsIControllerCommandTable> commandTable =
830 2 : do_CreateInstance(NS_CONTROLLERCOMMANDTABLE_CONTRACTID, &rv);
831 1 : if (NS_FAILED(rv)) return rv;
832 :
833 1 : rv = EditorController::RegisterEditingCommands(commandTable);
834 1 : if (NS_FAILED(rv)) return rv;
835 :
836 : // we don't know here whether we're being created as an instance,
837 : // or a service, so we can't become immutable
838 :
839 1 : return commandTable->QueryInterface(aIID, aResult);
840 : }
841 :
842 : static const mozilla::Module::CIDEntry kLayoutCIDs[] = {
843 : XPCONNECT_CIDENTRIES
844 : #ifdef DEBUG
845 : { &kNS_FRAME_UTIL_CID, false, nullptr, CreateNewFrameUtil },
846 : { &kNS_LAYOUT_DEBUGGER_CID, false, nullptr, CreateNewLayoutDebugger },
847 : #endif
848 : { &kNS_FRAMETRAVERSAL_CID, false, nullptr, CreateNewFrameTraversal },
849 : { &kNS_BOXOBJECT_CID, false, nullptr, CreateNewBoxObject },
850 : #ifdef MOZ_XUL
851 : { &kNS_LISTBOXOBJECT_CID, false, nullptr, CreateNewListBoxObject },
852 : { &kNS_MENUBOXOBJECT_CID, false, nullptr, CreateNewMenuBoxObject },
853 : { &kNS_POPUPBOXOBJECT_CID, false, nullptr, CreateNewPopupBoxObject },
854 : { &kNS_CONTAINERBOXOBJECT_CID, false, nullptr, CreateNewContainerBoxObject },
855 : { &kNS_SCROLLBOXOBJECT_CID, false, nullptr, CreateNewScrollBoxObject },
856 : { &kNS_TREEBOXOBJECT_CID, false, nullptr, CreateNewTreeBoxObject },
857 : #endif // MOZ_XUL
858 : #ifdef MOZ_XUL
859 : { &kIN_DOMVIEW_CID, false, nullptr, inDOMViewConstructor },
860 : #endif
861 : { &kIN_DEEPTREEWALKER_CID, false, nullptr, inDeepTreeWalkerConstructor },
862 : { &kIN_CSSVALUESEARCH_CID, false, nullptr, inCSSValueSearchConstructor },
863 : { &kIN_DOMUTILS_CID, false, nullptr, inDOMUtilsConstructor },
864 : { &kNS_CONTENT_VIEWER_CID, false, nullptr, CreateContentViewer },
865 : { &kNS_HTMLDOCUMENT_CID, false, nullptr, CreateHTMLDocument },
866 : { &kNS_XMLDOCUMENT_CID, false, nullptr, CreateXMLDocument },
867 : { &kNS_SVGDOCUMENT_CID, false, nullptr, CreateSVGDocument },
868 : { &kNS_IMAGEDOCUMENT_CID, false, nullptr, CreateImageDocument },
869 : { &kNS_DOMSELECTION_CID, false, nullptr, CreateDOMSelection },
870 : { &kNS_CONTENTITERATOR_CID, false, nullptr, CreateContentIterator },
871 : { &kNS_PRECONTENTITERATOR_CID, false, nullptr, CreatePreContentIterator },
872 : { &kNS_SUBTREEITERATOR_CID, false, nullptr, CreateSubtreeIterator },
873 : { &kNS_CANVASRENDERINGCONTEXTWEBGL_CID, false, nullptr, CreateCanvasRenderingContextWebGL },
874 : { &kNS_TEXT_ENCODER_CID, false, nullptr, CreateTextEncoder },
875 : { &kNS_HTMLCOPY_TEXT_ENCODER_CID, false, nullptr, CreateHTMLCopyTextEncoder },
876 : { &kNS_XMLCONTENTSERIALIZER_CID, false, nullptr, CreateXMLContentSerializer },
877 : { &kNS_HTMLCONTENTSERIALIZER_CID, false, nullptr, CreateHTMLContentSerializer },
878 : { &kNS_XHTMLCONTENTSERIALIZER_CID, false, nullptr, CreateXHTMLContentSerializer },
879 : { &kNS_PLAINTEXTSERIALIZER_CID, false, nullptr, CreatePlainTextSerializer },
880 : { &kNS_PARSERUTILS_CID, false, nullptr, nsParserUtilsConstructor },
881 : { &kNS_SCRIPTABLEUNESCAPEHTML_CID, false, nullptr, nsParserUtilsConstructor },
882 : { &kNS_CONTENTPOLICY_CID, false, nullptr, CreateContentPolicy },
883 : { &kNS_DATADOCUMENTCONTENTPOLICY_CID, false, nullptr, nsDataDocumentContentPolicyConstructor },
884 : { &kNS_NODATAPROTOCOLCONTENTPOLICY_CID, false, nullptr, nsNoDataProtocolContentPolicyConstructor },
885 : { &kNS_XULCONTROLLERS_CID, false, nullptr, NS_NewXULControllers },
886 : #ifdef MOZ_XUL
887 : { &kNS_XULSORTSERVICE_CID, false, nullptr, CreateXULSortService },
888 : { &kNS_XULDOCUMENT_CID, false, nullptr, CreateXULDocument },
889 : #endif
890 : { &kNS_CONTENT_DOCUMENT_LOADER_FACTORY_CID, false, nullptr, CreateContentDLF },
891 : { &kNS_JSPROTOCOLHANDLER_CID, false, nullptr, nsJSProtocolHandler::Create },
892 : { &kNS_JSURI_CID, false, nullptr, nsJSURIConstructor },
893 : { &kNS_WINDOWCOMMANDTABLE_CID, false, nullptr, CreateWindowCommandTableConstructor },
894 : { &kNS_WINDOWCONTROLLER_CID, false, nullptr, CreateWindowControllerWithSingletonCommandTable },
895 : { &kNS_PLUGINDOCLOADERFACTORY_CID, false, nullptr, CreateContentDLF },
896 : { &kNS_PLUGINDOCUMENT_CID, false, nullptr, CreatePluginDocument },
897 : { &kNS_VIDEODOCUMENT_CID, false, nullptr, CreateVideoDocument },
898 : { &kNS_STYLESHEETSERVICE_CID, false, nullptr, nsStyleSheetServiceConstructor },
899 : { &kTRANSFORMIIX_XSLT_PROCESSOR_CID, false, nullptr, txMozillaXSLTProcessorConstructor },
900 : { &kTRANSFORMIIX_XPATH_EVALUATOR_CID, false, nullptr, XPathEvaluatorConstructor },
901 : { &kTRANSFORMIIX_NODESET_CID, false, nullptr, txNodeSetAdaptorConstructor },
902 : { &kNS_XMLSERIALIZER_CID, false, nullptr, nsDOMSerializerConstructor },
903 : { &kNS_FORMDATA_CID, false, nullptr, FormDataConstructor },
904 : { &kNS_HOSTOBJECTURI_CID, false, nullptr, nsHostObjectURIConstructor },
905 : { &kNS_XMLHTTPREQUEST_CID, false, nullptr, XMLHttpRequestMainThreadConstructor },
906 : { &kNS_DOMPARSER_CID, false, nullptr, DOMParserConstructor },
907 : { &kNS_XPCEXCEPTION_CID, false, nullptr, ExceptionConstructor },
908 : { &kNS_DOMSESSIONSTORAGEMANAGER_CID, false, nullptr, SessionStorageManagerConstructor },
909 : { &kNS_DOMLOCALSTORAGEMANAGER_CID, false, nullptr, LocalStorageManagerConstructor },
910 : { &kNS_DOMJSON_CID, false, nullptr, NS_NewJSON },
911 : { &kNS_TEXTEDITOR_CID, false, nullptr, TextEditorConstructor },
912 : { &kDOMREQUEST_SERVICE_CID, false, nullptr, DOMRequestServiceConstructor },
913 : { &kQUOTAMANAGER_SERVICE_CID, false, nullptr, QuotaManagerServiceConstructor },
914 : { &kSERVICEWORKERMANAGER_CID, false, nullptr, ServiceWorkerManagerConstructor },
915 : { &kNOTIFICATIONTELEMETRYSERVICE_CID, false, nullptr, NotificationTelemetryServiceConstructor },
916 : { &kPUSHNOTIFIER_CID, false, nullptr, PushNotifierConstructor },
917 : { &kWORKERDEBUGGERMANAGER_CID, true, nullptr, WorkerDebuggerManagerConstructor },
918 : { &kNS_AUDIOCHANNELAGENT_CID, true, nullptr, AudioChannelAgentConstructor },
919 : { &kNS_HTMLEDITOR_CID, false, nullptr, HTMLEditorConstructor },
920 : { &kNS_EDITORCONTROLLER_CID, false, nullptr, EditorControllerConstructor },
921 : { &kNS_EDITINGCONTROLLER_CID, false, nullptr, nsEditingControllerConstructor },
922 : { &kNS_EDITORCOMMANDTABLE_CID, false, nullptr, nsEditorCommandTableConstructor },
923 : { &kNS_EDITINGCOMMANDTABLE_CID, false, nullptr, nsEditingCommandTableConstructor },
924 : { &kNS_TEXTSERVICESDOCUMENT_CID, false, nullptr, nsTextServicesDocumentConstructor },
925 : { &kNS_GEOLOCATION_SERVICE_CID, false, nullptr, nsGeolocationServiceConstructor },
926 : { &kNS_GEOLOCATION_CID, false, nullptr, GeolocationConstructor },
927 : { &kNS_AUDIOCHANNEL_SERVICE_CID, false, nullptr, AudioChannelServiceConstructor },
928 : { &kNS_WEBSOCKETEVENT_SERVICE_CID, false, nullptr, WebSocketEventServiceConstructor },
929 : { &kNS_FLYWEB_SERVICE_CID, false, nullptr, FlyWebServiceConstructor },
930 : { &kNS_FOCUSMANAGER_CID, false, nullptr, CreateFocusManager },
931 : #ifdef MOZ_WEBSPEECH_TEST_BACKEND
932 : { &kNS_FAKE_SPEECH_RECOGNITION_SERVICE_CID, false, nullptr, FakeSpeechRecognitionServiceConstructor },
933 : #endif
934 : #ifdef MOZ_WEBSPEECH_POCKETSPHINX
935 : { &kNS_POCKETSPHINX_SPEECH_RECOGNITION_SERVICE_CID, false, nullptr, PocketSphinxSpeechRecognitionServiceConstructor },
936 : #endif
937 : #ifdef MOZ_WEBSPEECH
938 : { &kNS_SYNTHVOICEREGISTRY_CID, true, nullptr, nsSynthVoiceRegistryConstructor },
939 : #endif
940 : { &kNS_CONTENTSECURITYMANAGER_CID, false, nullptr, nsContentSecurityManagerConstructor },
941 : { &kCSPSERVICE_CID, false, nullptr, CSPServiceConstructor },
942 : { &kNS_CSPCONTEXT_CID, false, nullptr, nsCSPContextConstructor },
943 : { &kNS_MIXEDCONTENTBLOCKER_CID, false, nullptr, nsMixedContentBlockerConstructor },
944 : { &kNS_EVENTLISTENERSERVICE_CID, false, nullptr, CreateEventListenerService },
945 : { &kNS_GLOBALMESSAGEMANAGER_CID, false, nullptr, CreateGlobalMessageManager },
946 : { &kNS_PARENTPROCESSMESSAGEMANAGER_CID, false, nullptr, CreateParentMessageManager },
947 : { &kNS_CHILDPROCESSMESSAGEMANAGER_CID, false, nullptr, CreateChildMessageManager },
948 : { &kNS_SCRIPTSECURITYMANAGER_CID, false, nullptr, Construct_nsIScriptSecurityManager },
949 : { &kNS_PRINCIPAL_CID, false, nullptr, ContentPrincipalConstructor },
950 : { &kNS_SYSTEMPRINCIPAL_CID, false, nullptr, SystemPrincipalConstructor },
951 : { &kNS_NULLPRINCIPAL_CID, false, nullptr, NullPrincipalConstructor },
952 : { &kNS_DEVICE_SENSORS_CID, false, nullptr, nsDeviceSensorsConstructor },
953 : #if defined(ANDROID)
954 : { &kNS_HAPTICFEEDBACK_CID, false, nullptr, nsHapticFeedbackConstructor },
955 : #endif
956 : { &kTHIRDPARTYUTIL_CID, false, nullptr, ThirdPartyUtilConstructor },
957 : { &kNS_STRUCTUREDCLONECONTAINER_CID, false, nullptr, nsStructuredCloneContainerConstructor },
958 : { &kNS_POWERMANAGERSERVICE_CID, false, nullptr, nsIPowerManagerServiceConstructor, Module::ALLOW_IN_GPU_PROCESS },
959 : { &kOSFILECONSTANTSSERVICE_CID, true, nullptr, OSFileConstantsServiceConstructor },
960 : { &kUDPSOCKETCHILD_CID, false, nullptr, UDPSocketChildConstructor },
961 : { &kGECKO_MEDIA_PLUGIN_SERVICE_CID, true, nullptr, GeckoMediaPluginServiceConstructor },
962 : { &kNS_TIMESERVICE_CID, false, nullptr, nsITimeServiceConstructor },
963 : { &kNS_MEDIASTREAMCONTROLLERSERVICE_CID, false, nullptr, nsIStreamingProtocolControllerServiceConstructor },
964 : { &kNS_MEDIAMANAGERSERVICE_CID, false, nullptr, nsIMediaManagerServiceConstructor },
965 : #ifdef ACCESSIBILITY
966 : { &kNS_ACCESSIBILITY_SERVICE_CID, false, nullptr, CreateA11yService },
967 : #endif
968 : { &kPRESENTATION_SERVICE_CID, false, nullptr, nsIPresentationServiceConstructor },
969 : { &kPRESENTATION_DEVICE_MANAGER_CID, false, nullptr, PresentationDeviceManagerConstructor },
970 : { &kPRESENTATION_TCP_SESSION_TRANSPORT_CID, false, nullptr, PresentationTCPSessionTransportConstructor },
971 : { &kTEXT_INPUT_PROCESSOR_CID, false, nullptr, TextInputProcessorConstructor },
972 : { &kNS_SCRIPTERROR_CID, false, nullptr, nsScriptErrorConstructor },
973 : { nullptr }
974 : };
975 :
976 : static const mozilla::Module::ContractIDEntry kLayoutContracts[] = {
977 : XPCONNECT_CONTRACTS
978 : { "@mozilla.org/layout/xul-boxobject;1", &kNS_BOXOBJECT_CID },
979 : #ifdef MOZ_XUL
980 : { "@mozilla.org/layout/xul-boxobject-listbox;1", &kNS_LISTBOXOBJECT_CID },
981 : { "@mozilla.org/layout/xul-boxobject-menu;1", &kNS_MENUBOXOBJECT_CID },
982 : { "@mozilla.org/layout/xul-boxobject-popup;1", &kNS_POPUPBOXOBJECT_CID },
983 : { "@mozilla.org/layout/xul-boxobject-container;1", &kNS_CONTAINERBOXOBJECT_CID },
984 : { "@mozilla.org/layout/xul-boxobject-scrollbox;1", &kNS_SCROLLBOXOBJECT_CID },
985 : { "@mozilla.org/layout/xul-boxobject-tree;1", &kNS_TREEBOXOBJECT_CID },
986 : #endif // MOZ_XUL
987 : #ifdef MOZ_XUL
988 : { "@mozilla.org/inspector/dom-view;1", &kIN_DOMVIEW_CID },
989 : #endif
990 : { "@mozilla.org/inspector/deep-tree-walker;1", &kIN_DEEPTREEWALKER_CID },
991 : { "@mozilla.org/inspector/search;1?type=cssvalue", &kIN_CSSVALUESEARCH_CID },
992 : { IN_DOMUTILS_CONTRACTID, &kIN_DOMUTILS_CID },
993 : { "@mozilla.org/xml/xml-document;1", &kNS_XMLDOCUMENT_CID },
994 : { "@mozilla.org/svg/svg-document;1", &kNS_SVGDOCUMENT_CID },
995 : { "@mozilla.org/content/dom-selection;1", &kNS_DOMSELECTION_CID },
996 : { "@mozilla.org/content/post-content-iterator;1", &kNS_CONTENTITERATOR_CID },
997 : { "@mozilla.org/content/pre-content-iterator;1", &kNS_PRECONTENTITERATOR_CID },
998 : { "@mozilla.org/content/subtree-content-iterator;1", &kNS_SUBTREEITERATOR_CID },
999 : { "@mozilla.org/content/canvas-rendering-context;1?id=webgl", &kNS_CANVASRENDERINGCONTEXTWEBGL_CID },
1000 : { NS_DOC_ENCODER_CONTRACTID_BASE "text/xml", &kNS_TEXT_ENCODER_CID },
1001 : { NS_DOC_ENCODER_CONTRACTID_BASE "application/xml", &kNS_TEXT_ENCODER_CID },
1002 : { NS_DOC_ENCODER_CONTRACTID_BASE "application/xhtml+xml", &kNS_TEXT_ENCODER_CID },
1003 : { NS_DOC_ENCODER_CONTRACTID_BASE "image/svg+xml", &kNS_TEXT_ENCODER_CID },
1004 : { NS_DOC_ENCODER_CONTRACTID_BASE "text/html", &kNS_TEXT_ENCODER_CID },
1005 : { NS_DOC_ENCODER_CONTRACTID_BASE "text/plain", &kNS_TEXT_ENCODER_CID },
1006 : { NS_HTMLCOPY_ENCODER_CONTRACTID, &kNS_HTMLCOPY_TEXT_ENCODER_CID },
1007 : { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/xml", &kNS_XMLCONTENTSERIALIZER_CID },
1008 : { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/xml", &kNS_XMLCONTENTSERIALIZER_CID },
1009 : { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/xhtml+xml", &kNS_XHTMLCONTENTSERIALIZER_CID },
1010 : { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "image/svg+xml", &kNS_XMLCONTENTSERIALIZER_CID },
1011 : { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/html", &kNS_HTMLCONTENTSERIALIZER_CID },
1012 : { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/vnd.mozilla.xul+xml", &kNS_XMLCONTENTSERIALIZER_CID },
1013 : { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/plain", &kNS_PLAINTEXTSERIALIZER_CID },
1014 : { NS_PARSERUTILS_CONTRACTID, &kNS_PARSERUTILS_CID },
1015 : { NS_SCRIPTABLEUNESCAPEHTML_CONTRACTID, &kNS_SCRIPTABLEUNESCAPEHTML_CID },
1016 : { NS_CONTENTPOLICY_CONTRACTID, &kNS_CONTENTPOLICY_CID },
1017 : { NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID, &kNS_DATADOCUMENTCONTENTPOLICY_CID },
1018 : { NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID, &kNS_NODATAPROTOCOLCONTENTPOLICY_CID },
1019 : { "@mozilla.org/xul/xul-controllers;1", &kNS_XULCONTROLLERS_CID },
1020 : #ifdef MOZ_XUL
1021 : { "@mozilla.org/xul/xul-sort-service;1", &kNS_XULSORTSERVICE_CID },
1022 : { "@mozilla.org/xul/xul-document;1", &kNS_XULDOCUMENT_CID },
1023 : #endif
1024 : { CONTENT_DLF_CONTRACTID, &kNS_CONTENT_DOCUMENT_LOADER_FACTORY_CID },
1025 : { NS_JSPROTOCOLHANDLER_CONTRACTID, &kNS_JSPROTOCOLHANDLER_CID },
1026 : { NS_WINDOWCONTROLLER_CONTRACTID, &kNS_WINDOWCONTROLLER_CID },
1027 : { PLUGIN_DLF_CONTRACTID, &kNS_PLUGINDOCLOADERFACTORY_CID },
1028 : { NS_STYLESHEETSERVICE_CONTRACTID, &kNS_STYLESHEETSERVICE_CID },
1029 : { TRANSFORMIIX_XSLT_PROCESSOR_CONTRACTID, &kTRANSFORMIIX_XSLT_PROCESSOR_CID },
1030 : { NS_XPATH_EVALUATOR_CONTRACTID, &kTRANSFORMIIX_XPATH_EVALUATOR_CID },
1031 : { TRANSFORMIIX_NODESET_CONTRACTID, &kTRANSFORMIIX_NODESET_CID },
1032 : { NS_XMLSERIALIZER_CONTRACTID, &kNS_XMLSERIALIZER_CID },
1033 : { NS_FORMDATA_CONTRACTID, &kNS_FORMDATA_CID },
1034 : { NS_XMLHTTPREQUEST_CONTRACTID, &kNS_XMLHTTPREQUEST_CID },
1035 : { NS_DOMPARSER_CONTRACTID, &kNS_DOMPARSER_CID },
1036 : { XPC_EXCEPTION_CONTRACTID, &kNS_XPCEXCEPTION_CID },
1037 : { "@mozilla.org/dom/localStorage-manager;1", &kNS_DOMLOCALSTORAGEMANAGER_CID },
1038 : // Keeping the old ContractID for backward compatibility
1039 : { "@mozilla.org/dom/storagemanager;1", &kNS_DOMLOCALSTORAGEMANAGER_CID },
1040 : { "@mozilla.org/dom/sessionStorage-manager;1", &kNS_DOMSESSIONSTORAGEMANAGER_CID },
1041 : { "@mozilla.org/dom/json;1", &kNS_DOMJSON_CID },
1042 : { "@mozilla.org/editor/texteditor;1", &kNS_TEXTEDITOR_CID },
1043 : { DOMREQUEST_SERVICE_CONTRACTID, &kDOMREQUEST_SERVICE_CID },
1044 : { QUOTAMANAGER_SERVICE_CONTRACTID, &kQUOTAMANAGER_SERVICE_CID },
1045 : { SERVICEWORKERMANAGER_CONTRACTID, &kSERVICEWORKERMANAGER_CID },
1046 : { NOTIFICATIONTELEMETRYSERVICE_CONTRACTID, &kNOTIFICATIONTELEMETRYSERVICE_CID },
1047 : { PUSHNOTIFIER_CONTRACTID, &kPUSHNOTIFIER_CID },
1048 : { WORKERDEBUGGERMANAGER_CONTRACTID, &kWORKERDEBUGGERMANAGER_CID },
1049 : { NS_AUDIOCHANNELAGENT_CONTRACTID, &kNS_AUDIOCHANNELAGENT_CID },
1050 : { "@mozilla.org/editor/htmleditor;1", &kNS_HTMLEDITOR_CID },
1051 : { "@mozilla.org/editor/editorcontroller;1", &kNS_EDITORCONTROLLER_CID },
1052 : { "@mozilla.org/editor/editingcontroller;1", &kNS_EDITINGCONTROLLER_CID },
1053 : { "@mozilla.org/textservices/textservicesdocument;1", &kNS_TEXTSERVICESDOCUMENT_CID },
1054 : { "@mozilla.org/geolocation/service;1", &kNS_GEOLOCATION_SERVICE_CID },
1055 : { "@mozilla.org/geolocation;1", &kNS_GEOLOCATION_CID },
1056 : { "@mozilla.org/audiochannel/service;1", &kNS_AUDIOCHANNEL_SERVICE_CID },
1057 : { "@mozilla.org/websocketevent/service;1", &kNS_WEBSOCKETEVENT_SERVICE_CID },
1058 : { "@mozilla.org/flyweb-service;1", &kNS_FLYWEB_SERVICE_CID },
1059 : { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "flyweb", &kNS_FLYWEB_SERVICE_CID },
1060 : { "@mozilla.org/focus-manager;1", &kNS_FOCUSMANAGER_CID },
1061 : #ifdef MOZ_WEBSPEECH_TEST_BACKEND
1062 : { NS_SPEECH_RECOGNITION_SERVICE_CONTRACTID_PREFIX "fake", &kNS_FAKE_SPEECH_RECOGNITION_SERVICE_CID },
1063 : #endif
1064 : #ifdef MOZ_WEBSPEECH_POCKETSPHINX
1065 : { NS_SPEECH_RECOGNITION_SERVICE_CONTRACTID_PREFIX "pocketsphinx-en-US", &kNS_POCKETSPHINX_SPEECH_RECOGNITION_SERVICE_CID },
1066 : #endif
1067 : #ifdef MOZ_WEBSPEECH
1068 : { NS_SYNTHVOICEREGISTRY_CONTRACTID, &kNS_SYNTHVOICEREGISTRY_CID },
1069 : #endif
1070 : { NS_CONTENTSECURITYMANAGER_CONTRACTID, &kNS_CONTENTSECURITYMANAGER_CID },
1071 : { CSPSERVICE_CONTRACTID, &kCSPSERVICE_CID },
1072 : { NS_CSPCONTEXT_CONTRACTID, &kNS_CSPCONTEXT_CID },
1073 : { NS_MIXEDCONTENTBLOCKER_CONTRACTID, &kNS_MIXEDCONTENTBLOCKER_CID },
1074 : { NS_EVENTLISTENERSERVICE_CONTRACTID, &kNS_EVENTLISTENERSERVICE_CID },
1075 : { NS_GLOBALMESSAGEMANAGER_CONTRACTID, &kNS_GLOBALMESSAGEMANAGER_CID },
1076 : { NS_PARENTPROCESSMESSAGEMANAGER_CONTRACTID, &kNS_PARENTPROCESSMESSAGEMANAGER_CID },
1077 : { NS_CHILDPROCESSMESSAGEMANAGER_CONTRACTID, &kNS_CHILDPROCESSMESSAGEMANAGER_CID },
1078 : { NS_SCRIPTSECURITYMANAGER_CONTRACTID, &kNS_SCRIPTSECURITYMANAGER_CID },
1079 : { NS_PRINCIPAL_CONTRACTID, &kNS_PRINCIPAL_CID },
1080 : { NS_SYSTEMPRINCIPAL_CONTRACTID, &kNS_SYSTEMPRINCIPAL_CID },
1081 : { NS_NULLPRINCIPAL_CONTRACTID, &kNS_NULLPRINCIPAL_CID },
1082 : { NS_DEVICE_SENSORS_CONTRACTID, &kNS_DEVICE_SENSORS_CID },
1083 : #if defined(ANDROID)
1084 : { "@mozilla.org/widget/hapticfeedback;1", &kNS_HAPTICFEEDBACK_CID },
1085 : #endif
1086 : { THIRDPARTYUTIL_CONTRACTID, &kTHIRDPARTYUTIL_CID },
1087 : { NS_STRUCTUREDCLONECONTAINER_CONTRACTID, &kNS_STRUCTUREDCLONECONTAINER_CID },
1088 : { POWERMANAGERSERVICE_CONTRACTID, &kNS_POWERMANAGERSERVICE_CID, Module::ALLOW_IN_GPU_PROCESS },
1089 : { OSFILECONSTANTSSERVICE_CONTRACTID, &kOSFILECONSTANTSSERVICE_CID },
1090 : { "@mozilla.org/udp-socket-child;1", &kUDPSOCKETCHILD_CID },
1091 : { TIMESERVICE_CONTRACTID, &kNS_TIMESERVICE_CID },
1092 : { MEDIASTREAMCONTROLLERSERVICE_CONTRACTID, &kNS_MEDIASTREAMCONTROLLERSERVICE_CID },
1093 : { MEDIAMANAGERSERVICE_CONTRACTID, &kNS_MEDIAMANAGERSERVICE_CID },
1094 : #ifdef ACCESSIBILITY
1095 : { "@mozilla.org/accessibilityService;1", &kNS_ACCESSIBILITY_SERVICE_CID },
1096 : { "@mozilla.org/accessibleRetrieval;1", &kNS_ACCESSIBILITY_SERVICE_CID },
1097 : #endif
1098 : { "@mozilla.org/gecko-media-plugin-service;1", &kGECKO_MEDIA_PLUGIN_SERVICE_CID },
1099 : { PRESENTATION_SERVICE_CONTRACTID, &kPRESENTATION_SERVICE_CID },
1100 : { PRESENTATION_DEVICE_MANAGER_CONTRACTID, &kPRESENTATION_DEVICE_MANAGER_CID },
1101 : { PRESENTATION_TCP_SESSION_TRANSPORT_CONTRACTID, &kPRESENTATION_TCP_SESSION_TRANSPORT_CID },
1102 : { "@mozilla.org/text-input-processor;1", &kTEXT_INPUT_PROCESSOR_CID },
1103 : { NS_SCRIPTERROR_CONTRACTID, &kNS_SCRIPTERROR_CID },
1104 : { nullptr }
1105 : };
1106 :
1107 : static const mozilla::Module::CategoryEntry kLayoutCategories[] = {
1108 : XPCONNECT_CATEGORIES
1109 : { "content-policy", NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID, NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID },
1110 : { "content-policy", NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID, NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID },
1111 : { "content-policy", "CSPService", CSPSERVICE_CONTRACTID },
1112 : { "content-policy", NS_MIXEDCONTENTBLOCKER_CONTRACTID, NS_MIXEDCONTENTBLOCKER_CONTRACTID },
1113 : { "net-channel-event-sinks", "CSPService", CSPSERVICE_CONTRACTID },
1114 : { "net-channel-event-sinks", NS_MIXEDCONTENTBLOCKER_CONTRACTID, NS_MIXEDCONTENTBLOCKER_CONTRACTID },
1115 : { "app-startup", "Script Security Manager", "service," NS_SCRIPTSECURITYMANAGER_CONTRACTID },
1116 : { "app-startup", "Push Notifier", "service," PUSHNOTIFIER_CONTRACTID },
1117 : { "clear-origin-attributes-data", "QuotaManagerService", "service," QUOTAMANAGER_SERVICE_CONTRACTID },
1118 : { OBSERVER_TOPIC_IDLE_DAILY, "QuotaManagerService", QUOTAMANAGER_SERVICE_CONTRACTID },
1119 : CONTENTDLF_CATEGORIES
1120 : { "profile-after-change", "PresentationDeviceManager", PRESENTATION_DEVICE_MANAGER_CONTRACTID },
1121 : { "profile-after-change", "PresentationService", PRESENTATION_SERVICE_CONTRACTID },
1122 : { "profile-after-change", "Notification Telemetry Service", NOTIFICATIONTELEMETRYSERVICE_CONTRACTID },
1123 : { nullptr }
1124 : };
1125 :
1126 : static void
1127 0 : LayoutModuleDtor()
1128 : {
1129 0 : if (XRE_GetProcessType() == GeckoProcessType_GPU) {
1130 0 : return;
1131 : }
1132 :
1133 0 : Shutdown();
1134 0 : nsContentUtils::XPCOMShutdown();
1135 :
1136 : // Layout depends heavily on gfx and imagelib, so we want to make sure that
1137 : // these modules are shut down after all the layout cleanup runs.
1138 0 : mozilla::image::ShutdownModule();
1139 0 : gfxPlatform::Shutdown();
1140 0 : gfx::gfxVars::Shutdown();
1141 :
1142 0 : nsScriptSecurityManager::Shutdown();
1143 0 : xpcModuleDtor();
1144 : }
1145 :
1146 : static const mozilla::Module kLayoutModule = {
1147 : mozilla::Module::kVersion,
1148 : kLayoutCIDs,
1149 : kLayoutContracts,
1150 : kLayoutCategories,
1151 : nullptr,
1152 : Initialize,
1153 : LayoutModuleDtor,
1154 : Module::ALLOW_IN_GPU_PROCESS
1155 : };
1156 :
1157 : NSMODULE_DEFN(nsLayoutModule) = &kLayoutModule;
|