Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/layout/build/nsLayoutModule.cpp
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#include "base/basictypes.h"
8
9
#include "XPCModule.h"
10
#include "mozilla/ModuleUtils.h"
11
#include "nsImageModule.h"
12
#include "nsLayoutStatics.h"
13
#include "nsContentCID.h"
14
#include "nsContentDLF.h"
15
#include "nsContentPolicyUtils.h"
16
#include "nsDataDocumentContentPolicy.h"
17
#include "nsNoDataProtocolContentPolicy.h"
18
#include "nsDOMCID.h"
19
#include "nsFrameMessageManager.h"
20
#include "nsHTMLContentSerializer.h"
21
#include "nsHTMLParts.h"
22
#include "nsIComponentManager.h"
23
#include "nsIContentSerializer.h"
24
#include "nsIContentViewer.h"
25
#include "nsIController.h"
26
#include "nsIControllers.h"
27
#include "nsIDocumentEncoder.h"
28
#include "nsIFactory.h"
29
#include "nsIIdleService.h"
30
#include "nsHTMLStyleSheet.h"
31
#include "nsILayoutDebugger.h"
32
#include "nsNameSpaceManager.h"
33
#include "nsIObserver.h"
34
#include "nsIObserverService.h"
35
#include "nsIScriptError.h"
36
#include "nsCaret.h"
37
#include "nsPlainTextSerializer.h"
38
#include "nsXMLContentSerializer.h"
39
#include "nsXHTMLContentSerializer.h"
40
#include "nsContentAreaDragDrop.h"
41
#include "nsIFrameTraversal.h"
42
#include "nsLayoutCID.h"
43
#include "nsStyleSheetService.h"
44
#include "nsFocusManager.h"
45
#include "ThirdPartyUtil.h"
46
#include "nsStructuredCloneContainer.h"
47
#include "gfxPlatform.h"
48
#include "mozilla/gfx/gfxVars.h"
49
50
#include "nsIEventListenerService.h"
51
#include "nsIMessageManager.h"
52
53
// Transformiix stuff
54
#include "mozilla/dom/XPathEvaluator.h"
55
56
// view stuff
57
#include "nsContentCreatorFunctions.h"
58
59
#include "nsGlobalWindowCommands.h"
60
#include "nsJSProtocolHandler.h"
61
#include "nsIControllerContext.h"
62
#include "nsZipArchive.h"
63
#include "mozilla/Attributes.h"
64
#include "mozilla/dom/BlobURL.h"
65
#include "mozilla/dom/DOMRequest.h"
66
#include "mozilla/dom/SDBConnection.h"
67
#include "mozilla/dom/LocalStorageManager.h"
68
#include "mozilla/dom/network/UDPSocketChild.h"
69
#include "mozilla/dom/quota/QuotaManagerService.h"
70
#include "mozilla/dom/ServiceWorkerManager.h"
71
#include "mozilla/dom/StorageActivityService.h"
72
#include "mozilla/dom/WorkerDebuggerManager.h"
73
#include "mozilla/dom/Notification.h"
74
#include "mozilla/OSFileConstants.h"
75
#include "mozilla/Services.h"
76
77
#ifdef MOZ_WEBSPEECH_TEST_BACKEND
78
#include "mozilla/dom/FakeSpeechRecognitionService.h"
79
#endif
80
#ifdef MOZ_WEBSPEECH
81
#include "mozilla/dom/nsSynthVoiceRegistry.h"
82
#endif
83
84
#include "mozilla/dom/PushNotifier.h"
85
using mozilla::dom::PushNotifier;
86
#define PUSHNOTIFIER_CID \
87
{ 0x2fc2d3e3, 0x020f, 0x404e, { 0xb0, 0x6a, 0x6e, 0xcf, 0x3e, 0xa2, 0x33, 0x4a } }
88
89
// Editor stuff
90
#include "mozilla/EditorController.h" //CID
91
92
#include "nsScriptSecurityManager.h"
93
#include "ExpandedPrincipal.h"
94
#include "mozilla/ContentPrincipal.h"
95
#include "mozilla/NullPrincipal.h"
96
#include "mozilla/SystemPrincipal.h"
97
#include "nsNetCID.h"
98
#if defined(MOZ_WIDGET_ANDROID)
99
#include "nsHapticFeedback.h"
100
#endif
101
#include "nsParserUtils.h"
102
103
#include "nsHTMLCanvasFrame.h"
104
105
class nsIDocumentLoaderFactory;
106
107
#define PRODUCT_NAME "Gecko"
108
109
/* 0ddf4df8-4dbb-4133-8b79-9afb966514f5 */
110
#define NS_PLUGINDOCLOADERFACTORY_CID \
111
{ 0x0ddf4df8, 0x4dbb, 0x4133, { 0x8b, 0x79, 0x9a, 0xfb, 0x96, 0x65, 0x14, 0xf5 } }
112
113
#include "inDeepTreeWalker.h"
114
115
static void Shutdown();
116
117
#include "nsGeolocation.h"
118
#include "nsDeviceSensors.h"
119
#include "mozilla/dom/nsContentSecurityManager.h"
120
#include "mozilla/dom/nsCSPService.h"
121
#include "mozilla/dom/nsCSPContext.h"
122
#include "nsIPowerManagerService.h"
123
#include "nsIMediaManager.h"
124
#include "mozilla/dom/nsMixedContentBlocker.h"
125
126
#include "mozilla/net/WebSocketEventService.h"
127
128
#include "mozilla/dom/power/PowerManagerService.h"
129
130
#include "nsIPresentationService.h"
131
132
#include "MediaManager.h"
133
134
#include "GMPService.h"
135
136
#include "mozilla/dom/PresentationDeviceManager.h"
137
#include "mozilla/dom/PresentationTCPSessionTransport.h"
138
139
#include "nsScriptError.h"
140
#include "nsBaseCommandController.h"
141
#include "nsControllerCommandTable.h"
142
143
#include "mozilla/TextInputProcessor.h"
144
145
using namespace mozilla;
146
using namespace mozilla::dom;
147
using namespace mozilla::net;
148
using mozilla::dom::power::PowerManagerService;
149
using mozilla::dom::quota::QuotaManagerService;
150
using mozilla::gmp::GeckoMediaPluginService;
151
152
#define NS_HAPTICFEEDBACK_CID \
153
{ 0x1f15dbc8, 0xbfaa, 0x45de, \
154
  { 0x8a, 0x46, 0x08, 0xe2, 0xe2, 0x63, 0x26, 0xb0 } }
155
156
NS_GENERIC_FACTORY_CONSTRUCTOR(nsParserUtils)
157
158
// PresentationDeviceManager
159
/* e1e79dec-4085-4994-ac5b-744b016697e6 */
160
#define PRESENTATION_DEVICE_MANAGER_CID \
161
{ 0xe1e79dec, 0x4085, 0x4994, { 0xac, 0x5b, 0x74, 0x4b, 0x01, 0x66, 0x97, 0xe6 } }
162
163
#define PRESENTATION_TCP_SESSION_TRANSPORT_CID \
164
{ 0xc9d023f4, 0x6228, 0x4c07, { 0x8b, 0x1d, 0x9c, 0x19, 0x57, 0x3f, 0xaa, 0x27 } }
165
166
already_AddRefed<nsIPresentationService> NS_CreatePresentationService();
167
168
// Factory Constructor
169
typedef mozilla::dom::BlobURL::Mutator BlobURLMutator;
170
NS_GENERIC_FACTORY_CONSTRUCTOR(BlobURLMutator)
171
NS_GENERIC_FACTORY_CONSTRUCTOR(LocalStorageManager)
172
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(DOMRequestService,
173
                                         DOMRequestService::FactoryCreate)
174
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(QuotaManagerService,
175
                                         QuotaManagerService::FactoryCreate)
176
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(ServiceWorkerManager,
177
                                         ServiceWorkerManager::GetInstance)
178
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(WorkerDebuggerManager,
179
                                         WorkerDebuggerManager::GetInstance)
180
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(StorageActivityService,
181
                                         StorageActivityService::GetOrCreate)
182
183
#ifdef MOZ_WEBSPEECH
184
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsSynthVoiceRegistry,
185
                                         nsSynthVoiceRegistry::GetInstanceForService)
186
#endif
187
188
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDeviceSensors)
189
190
#if defined(ANDROID)
191
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHapticFeedback)
192
#endif
193
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(ThirdPartyUtil, Init)
194
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIPowerManagerService,
195
                                         PowerManagerService::GetInstance)
196
197
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIMediaManagerService,
198
                                         MediaManager::GetInstance)
199
NS_GENERIC_FACTORY_CONSTRUCTOR(PresentationDeviceManager)
200
NS_GENERIC_FACTORY_CONSTRUCTOR(TextInputProcessor)
201
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIPresentationService,
202
                                         NS_CreatePresentationService)
203
NS_GENERIC_FACTORY_CONSTRUCTOR(PresentationTCPSessionTransport)
204
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(NotificationTelemetryService, Init)
205
NS_GENERIC_FACTORY_CONSTRUCTOR(PushNotifier)
206
207
//-----------------------------------------------------------------------------
208
209
static bool gInitialized = false;
210
211
// Perform our one-time intialization for this module
212
213
static nsresult
214
Initialize()
215
3
{
216
3
  if (gInitialized) {
217
0
    MOZ_CRASH("Recursive layout module initialization");
218
0
    return NS_ERROR_FAILURE;
219
3
  }
220
3
  if (XRE_GetProcessType() == GeckoProcessType_GPU) {
221
0
    // We mark the layout module as being available in the GPU process so that
222
0
    // XPCOM's component manager initializes the power manager service, which
223
0
    // is needed for nsAppShell. However, we don't actually need anything in
224
0
    // the layout module itself.
225
0
    return NS_OK;
226
0
  }
227
3
228
3
  static_assert(sizeof(uintptr_t) == sizeof(void*),
229
3
                "Eeek! You'll need to adjust the size of uintptr_t to the "
230
3
                "size of a pointer on your platform.");
231
3
232
3
  gInitialized = true;
233
3
234
3
  nsresult rv;
235
3
  rv = xpcModuleCtor();
236
3
  if (NS_FAILED(rv))
237
3
    return rv;
238
3
239
3
  rv = nsLayoutStatics::Initialize();
240
3
  if (NS_FAILED(rv)) {
241
0
    Shutdown();
242
0
    return rv;
243
0
  }
244
3
245
3
  return NS_OK;
246
3
}
247
248
// Shutdown this module, releasing all of the module resources
249
250
// static
251
void
252
Shutdown()
253
0
{
254
0
  MOZ_ASSERT(gInitialized, "module not initialized");
255
0
  if (!gInitialized)
256
0
    return;
257
0
258
0
  gInitialized = false;
259
0
260
0
  nsLayoutStatics::Release();
261
0
}
262
263
#ifdef DEBUG
264
nsresult NS_NewLayoutDebugger(nsILayoutDebugger** aResult);
265
#endif
266
267
nsresult NS_CreateFrameTraversal(nsIFrameTraversal** aResult);
268
269
already_AddRefed<nsIContentViewer> NS_NewContentViewer();
270
nsresult NS_NewContentDocumentLoaderFactory(nsIDocumentLoaderFactory** aResult);
271
nsresult NS_NewHTMLCopyTextEncoder(nsIDocumentEncoder** aResult);
272
nsresult NS_NewTextEncoder(nsIDocumentEncoder** aResult);
273
nsresult NS_NewContentPolicy(nsIContentPolicy** aResult);
274
275
nsresult NS_NewEventListenerService(nsIEventListenerService** aResult);
276
nsresult NS_NewGlobalMessageManager(nsISupports** aResult);
277
nsresult NS_NewParentProcessMessageManager(nsISupports** aResult);
278
nsresult NS_NewChildProcessMessageManager(nsISupports** aResult);
279
280
#define MAKE_CTOR(ctor_, iface_, func_)                   \
281
static nsresult                                           \
282
1
ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) \
283
1
{                                                         \
284
1
  *aResult = nullptr;                                      \
285
1
  if (aOuter)                                             \
286
1
    return NS_ERROR_NO_AGGREGATION;                       \
287
1
  iface_* inst;                                           \
288
1
  nsresult rv = func_(&inst);                             \
289
1
  if (NS_SUCCEEDED(rv)) {                                 \
290
1
    rv = inst->QueryInterface(aIID, aResult);             \
291
1
    NS_RELEASE(inst);                                     \
292
1
  }                                                       \
293
1
  return rv;                                              \
294
1
}
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateNewFrameTraversal(nsISupports*, nsID const&, void**)
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateTextEncoder(nsISupports*, nsID const&, void**)
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateHTMLCopyTextEncoder(nsISupports*, nsID const&, void**)
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateXMLContentSerializer(nsISupports*, nsID const&, void**)
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateHTMLContentSerializer(nsISupports*, nsID const&, void**)
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateXHTMLContentSerializer(nsISupports*, nsID const&, void**)
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreatePlainTextSerializer(nsISupports*, nsID const&, void**)
Unified_cpp_layout_build0.cpp:CreateContentPolicy(nsISupports*, nsID const&, void**)
Line
Count
Source
282
1
ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) \
283
1
{                                                         \
284
1
  *aResult = nullptr;                                      \
285
1
  if (aOuter)                                             \
286
1
    return NS_ERROR_NO_AGGREGATION;                       \
287
1
  iface_* inst;                                           \
288
1
  nsresult rv = func_(&inst);                             \
289
1
  if (NS_SUCCEEDED(rv)) {                                 \
290
1
    rv = inst->QueryInterface(aIID, aResult);             \
291
1
    NS_RELEASE(inst);                                     \
292
1
  }                                                       \
293
1
  return rv;                                              \
294
1
}
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateContentDLF(nsISupports*, nsID const&, void**)
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateFocusManager(nsISupports*, nsID const&, void**)
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateEventListenerService(nsISupports*, nsID const&, void**)
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateGlobalMessageManager(nsISupports*, nsID const&, void**)
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateParentMessageManager(nsISupports*, nsID const&, void**)
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateChildMessageManager(nsISupports*, nsID const&, void**)
Unexecuted instantiation: Unified_cpp_layout_build0.cpp:CreateA11yService(nsISupports*, nsID const&, void**)
295
296
// As above, but expects
297
//   already_AddRefed<nsIFoo> NS_NewFoo();
298
// instead of
299
//   nsresult NS_NewFoo(nsIFoo**);
300
#define MAKE_CTOR2(ctor_, iface_, func_)                  \
301
static nsresult                                           \
302
0
ctor_(nsISupports* aOuter, REFNSIID aIID, void** aResult) \
303
0
{                                                         \
304
0
  *aResult = nullptr;                                      \
305
0
  if (aOuter) {                                           \
306
0
    return NS_ERROR_NO_AGGREGATION;                       \
307
0
  }                                                       \
308
0
  nsCOMPtr<iface_> inst = func_();                        \
309
0
  inst.forget(aResult);                                   \
310
0
  return NS_OK;                                           \
311
0
}
312
313
#ifdef DEBUG
314
MAKE_CTOR(CreateNewLayoutDebugger,        nsILayoutDebugger,           NS_NewLayoutDebugger)
315
#endif
316
317
MAKE_CTOR(CreateNewFrameTraversal,      nsIFrameTraversal,      NS_CreateFrameTraversal)
318
319
NS_GENERIC_FACTORY_CONSTRUCTOR(inDeepTreeWalker)
320
321
MAKE_CTOR2(CreateContentViewer,           nsIContentViewer,            NS_NewContentViewer)
322
MAKE_CTOR(CreateTextEncoder,              nsIDocumentEncoder,          NS_NewTextEncoder)
323
MAKE_CTOR(CreateHTMLCopyTextEncoder,      nsIDocumentEncoder,          NS_NewHTMLCopyTextEncoder)
324
MAKE_CTOR(CreateXMLContentSerializer,     nsIContentSerializer,        NS_NewXMLContentSerializer)
325
MAKE_CTOR(CreateHTMLContentSerializer,    nsIContentSerializer,        NS_NewHTMLContentSerializer)
326
MAKE_CTOR(CreateXHTMLContentSerializer,   nsIContentSerializer,        NS_NewXHTMLContentSerializer)
327
MAKE_CTOR(CreatePlainTextSerializer,      nsIContentSerializer,        NS_NewPlainTextSerializer)
328
MAKE_CTOR(CreateContentPolicy,            nsIContentPolicy,            NS_NewContentPolicy)
329
MAKE_CTOR(CreateContentDLF,               nsIDocumentLoaderFactory,    NS_NewContentDocumentLoaderFactory)
330
MAKE_CTOR(CreateEventListenerService,     nsIEventListenerService,     NS_NewEventListenerService)
331
MAKE_CTOR(CreateGlobalMessageManager,     nsISupports,                 NS_NewGlobalMessageManager)
332
MAKE_CTOR(CreateParentMessageManager,     nsISupports,                 NS_NewParentProcessMessageManager)
333
MAKE_CTOR(CreateChildMessageManager,      nsISupports,                 NS_NewChildProcessMessageManager)
334
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDataDocumentContentPolicy)
335
NS_GENERIC_FACTORY_CONSTRUCTOR(nsNoDataProtocolContentPolicy)
336
MAKE_CTOR(CreateFocusManager,             nsIFocusManager,      NS_NewFocusManager)
337
338
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStyleSheetService, Init)
339
340
typedef nsJSURI::Mutator nsJSURIMutator;
341
NS_GENERIC_FACTORY_CONSTRUCTOR(nsJSURIMutator)
342
343
// views are not refcounted, so this is the same as
344
// NS_GENERIC_FACTORY_CONSTRUCTOR without the NS_ADDREF/NS_RELEASE
345
#define NS_GENERIC_FACTORY_CONSTRUCTOR_NOREFS(_InstanceClass)                 \
346
static nsresult                                                               \
347
_InstanceClass##Constructor(nsISupports *aOuter, REFNSIID aIID,               \
348
                            void **aResult)                                   \
349
{                                                                             \
350
    nsresult rv;                                                              \
351
                                                                              \
352
    *aResult = nullptr;                                                       \
353
    if (nullptr != aOuter) {                                                  \
354
        rv = NS_ERROR_NO_AGGREGATION;                                         \
355
        return rv;                                                            \
356
    }                                                                         \
357
                                                                              \
358
    _InstanceClass * inst = new _InstanceClass();                             \
359
    if (nullptr == inst) {                                                    \
360
        rv = NS_ERROR_OUT_OF_MEMORY;                                          \
361
        return rv;                                                            \
362
    }                                                                         \
363
    rv = inst->QueryInterface(aIID, aResult);                                 \
364
                                                                              \
365
    return rv;                                                                \
366
}                                                                             \
367
368
#define NS_GEOLOCATION_CID \
369
  { 0x1E1C3FF, 0x94A, 0xD048, { 0x44, 0xB4, 0x62, 0xD2, 0x9C, 0x7B, 0x4F, 0x39 } }
370
371
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(Geolocation, Geolocation::NonWindowSingleton)
372
373
#define NS_WEBSOCKETEVENT_SERVICE_CID \
374
  { 0x31689828, 0xda66, 0x49a6, { 0x87, 0x0c, 0xdf, 0x62, 0xb8, 0x3f, 0xe7, 0x89 }}
375
376
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(WebSocketEventService, WebSocketEventService::GetOrCreate)
377
378
#ifdef MOZ_WEBSPEECH_TEST_BACKEND
379
NS_GENERIC_FACTORY_CONSTRUCTOR(FakeSpeechRecognitionService)
380
#endif
381
382
NS_GENERIC_FACTORY_CONSTRUCTOR(nsContentSecurityManager)
383
NS_GENERIC_FACTORY_CONSTRUCTOR(nsCSPContext)
384
NS_GENERIC_FACTORY_CONSTRUCTOR(CSPService)
385
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMixedContentBlocker)
386
387
NS_GENERIC_FACTORY_CONSTRUCTOR(ContentPrincipal)
388
NS_GENERIC_FACTORY_CONSTRUCTOR(ExpandedPrincipal)
389
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(SystemPrincipal,
390
    nsScriptSecurityManager::SystemPrincipalSingletonConstructor)
391
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(NullPrincipal, Init)
392
NS_GENERIC_FACTORY_CONSTRUCTOR(nsStructuredCloneContainer)
393
394
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(OSFileConstantsService,
395
                                         OSFileConstantsService::GetOrCreate);
396
397
NS_GENERIC_FACTORY_CONSTRUCTOR(UDPSocketChild)
398
399
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(GeckoMediaPluginService, GeckoMediaPluginService::GetGeckoMediaPluginService)
400
401
NS_GENERIC_FACTORY_CONSTRUCTOR(nsScriptError)
402
403
#ifdef ACCESSIBILITY
404
#include "xpcAccessibilityService.h"
405
406
  MAKE_CTOR(CreateA11yService, nsIAccessibilityService, NS_GetAccessibilityService)
407
#endif
408
409
static nsresult
410
Construct_nsIScriptSecurityManager(nsISupports *aOuter, REFNSIID aIID,
411
                                   void **aResult)
412
0
{
413
0
    if (!aResult)
414
0
        return NS_ERROR_NULL_POINTER;
415
0
    *aResult = nullptr;
416
0
    if (aOuter)
417
0
        return NS_ERROR_NO_AGGREGATION;
418
0
    nsScriptSecurityManager *obj = nsScriptSecurityManager::GetScriptSecurityManager();
419
0
    if (!obj)
420
0
        return NS_ERROR_OUT_OF_MEMORY;
421
0
    if (NS_FAILED(obj->QueryInterface(aIID, aResult)))
422
0
        return NS_ERROR_FAILURE;
423
0
    return NS_OK;
424
0
}
425
426
#ifdef DEBUG
427
NS_DEFINE_NAMED_CID(NS_LAYOUT_DEBUGGER_CID);
428
#endif
429
NS_DEFINE_NAMED_CID(NS_FRAMETRAVERSAL_CID);
430
NS_DEFINE_NAMED_CID(IN_DEEPTREEWALKER_CID);
431
NS_DEFINE_NAMED_CID(NS_CONTENT_VIEWER_CID);
432
NS_DEFINE_NAMED_CID(NS_TEXT_ENCODER_CID);
433
NS_DEFINE_NAMED_CID(NS_HTMLCOPY_TEXT_ENCODER_CID);
434
NS_DEFINE_NAMED_CID(NS_XMLCONTENTSERIALIZER_CID);
435
NS_DEFINE_NAMED_CID(NS_XHTMLCONTENTSERIALIZER_CID);
436
NS_DEFINE_NAMED_CID(NS_HTMLCONTENTSERIALIZER_CID);
437
NS_DEFINE_NAMED_CID(NS_PLAINTEXTSERIALIZER_CID);
438
NS_DEFINE_NAMED_CID(NS_PARSERUTILS_CID);
439
NS_DEFINE_NAMED_CID(NS_SCRIPTABLEUNESCAPEHTML_CID);
440
NS_DEFINE_NAMED_CID(NS_CONTENTPOLICY_CID);
441
NS_DEFINE_NAMED_CID(NS_DATADOCUMENTCONTENTPOLICY_CID);
442
NS_DEFINE_NAMED_CID(NS_NODATAPROTOCOLCONTENTPOLICY_CID);
443
NS_DEFINE_NAMED_CID(NS_CONTENT_DOCUMENT_LOADER_FACTORY_CID);
444
NS_DEFINE_NAMED_CID(NS_JSPROTOCOLHANDLER_CID);
445
NS_DEFINE_NAMED_CID(NS_JSURI_CID);
446
NS_DEFINE_NAMED_CID(NS_JSURIMUTATOR_CID);
447
NS_DEFINE_NAMED_CID(NS_PLUGINDOCLOADERFACTORY_CID);
448
NS_DEFINE_NAMED_CID(NS_STYLESHEETSERVICE_CID);
449
NS_DEFINE_NAMED_CID(NS_HOSTOBJECTURI_CID);
450
NS_DEFINE_NAMED_CID(NS_HOSTOBJECTURIMUTATOR_CID);
451
NS_DEFINE_NAMED_CID(NS_SDBCONNECTION_CID);
452
NS_DEFINE_NAMED_CID(NS_DOMLOCALSTORAGEMANAGER_CID);
453
NS_DEFINE_NAMED_CID(DOMREQUEST_SERVICE_CID);
454
NS_DEFINE_NAMED_CID(QUOTAMANAGER_SERVICE_CID);
455
NS_DEFINE_NAMED_CID(SERVICEWORKERMANAGER_CID);
456
NS_DEFINE_NAMED_CID(STORAGEACTIVITYSERVICE_CID);
457
NS_DEFINE_NAMED_CID(NOTIFICATIONTELEMETRYSERVICE_CID);
458
NS_DEFINE_NAMED_CID(PUSHNOTIFIER_CID);
459
NS_DEFINE_NAMED_CID(WORKERDEBUGGERMANAGER_CID);
460
NS_DEFINE_NAMED_CID(NS_GEOLOCATION_CID);
461
NS_DEFINE_NAMED_CID(NS_WEBSOCKETEVENT_SERVICE_CID);
462
NS_DEFINE_NAMED_CID(NS_FOCUSMANAGER_CID);
463
NS_DEFINE_NAMED_CID(NS_CONTENTSECURITYMANAGER_CID);
464
NS_DEFINE_NAMED_CID(CSPSERVICE_CID);
465
NS_DEFINE_NAMED_CID(NS_CSPCONTEXT_CID);
466
NS_DEFINE_NAMED_CID(NS_MIXEDCONTENTBLOCKER_CID);
467
NS_DEFINE_NAMED_CID(NS_EVENTLISTENERSERVICE_CID);
468
NS_DEFINE_NAMED_CID(NS_GLOBALMESSAGEMANAGER_CID);
469
NS_DEFINE_NAMED_CID(NS_PARENTPROCESSMESSAGEMANAGER_CID);
470
NS_DEFINE_NAMED_CID(NS_CHILDPROCESSMESSAGEMANAGER_CID);
471
NS_DEFINE_NAMED_CID(NS_SCRIPTSECURITYMANAGER_CID);
472
NS_DEFINE_NAMED_CID(NS_PRINCIPAL_CID);
473
NS_DEFINE_NAMED_CID(NS_EXPANDEDPRINCIPAL_CID);
474
NS_DEFINE_NAMED_CID(NS_SYSTEMPRINCIPAL_CID);
475
NS_DEFINE_NAMED_CID(NS_NULLPRINCIPAL_CID);
476
NS_DEFINE_NAMED_CID(THIRDPARTYUTIL_CID);
477
NS_DEFINE_NAMED_CID(NS_STRUCTUREDCLONECONTAINER_CID);
478
NS_DEFINE_NAMED_CID(NS_DEVICE_SENSORS_CID);
479
#if defined(ANDROID)
480
NS_DEFINE_NAMED_CID(NS_HAPTICFEEDBACK_CID);
481
#endif
482
NS_DEFINE_NAMED_CID(NS_POWERMANAGERSERVICE_CID);
483
NS_DEFINE_NAMED_CID(OSFILECONSTANTSSERVICE_CID);
484
NS_DEFINE_NAMED_CID(UDPSOCKETCHILD_CID);
485
NS_DEFINE_NAMED_CID(NS_MEDIAMANAGERSERVICE_CID);
486
#ifdef MOZ_WEBSPEECH_TEST_BACKEND
487
NS_DEFINE_NAMED_CID(NS_FAKE_SPEECH_RECOGNITION_SERVICE_CID);
488
#endif
489
#ifdef MOZ_WEBSPEECH
490
NS_DEFINE_NAMED_CID(NS_SYNTHVOICEREGISTRY_CID);
491
#endif
492
493
#ifdef ACCESSIBILITY
494
NS_DEFINE_NAMED_CID(NS_ACCESSIBILITY_SERVICE_CID);
495
#endif
496
497
NS_DEFINE_NAMED_CID(GECKO_MEDIA_PLUGIN_SERVICE_CID);
498
499
NS_DEFINE_NAMED_CID(PRESENTATION_SERVICE_CID);
500
NS_DEFINE_NAMED_CID(PRESENTATION_DEVICE_MANAGER_CID);
501
NS_DEFINE_NAMED_CID(PRESENTATION_TCP_SESSION_TRANSPORT_CID);
502
503
NS_DEFINE_NAMED_CID(TEXT_INPUT_PROCESSOR_CID);
504
505
NS_DEFINE_NAMED_CID(NS_SCRIPTERROR_CID);
506
507
static const mozilla::Module::CIDEntry kLayoutCIDs[] = {
508
  XPCONNECT_CIDENTRIES
509
#ifdef DEBUG
510
  { &kNS_LAYOUT_DEBUGGER_CID, false, nullptr, CreateNewLayoutDebugger },
511
#endif
512
  { &kNS_FRAMETRAVERSAL_CID, false, nullptr, CreateNewFrameTraversal },
513
  { &kIN_DEEPTREEWALKER_CID, false, nullptr, inDeepTreeWalkerConstructor },
514
  { &kNS_CONTENT_VIEWER_CID, false, nullptr, CreateContentViewer },
515
  { &kNS_TEXT_ENCODER_CID, false, nullptr, CreateTextEncoder },
516
  { &kNS_HTMLCOPY_TEXT_ENCODER_CID, false, nullptr, CreateHTMLCopyTextEncoder },
517
  { &kNS_XMLCONTENTSERIALIZER_CID, false, nullptr, CreateXMLContentSerializer },
518
  { &kNS_HTMLCONTENTSERIALIZER_CID, false, nullptr, CreateHTMLContentSerializer },
519
  { &kNS_XHTMLCONTENTSERIALIZER_CID, false, nullptr, CreateXHTMLContentSerializer },
520
  { &kNS_PLAINTEXTSERIALIZER_CID, false, nullptr, CreatePlainTextSerializer },
521
  { &kNS_PARSERUTILS_CID, false, nullptr, nsParserUtilsConstructor },
522
  { &kNS_SCRIPTABLEUNESCAPEHTML_CID, false, nullptr, nsParserUtilsConstructor },
523
  { &kNS_CONTENTPOLICY_CID, false, nullptr, CreateContentPolicy },
524
  { &kNS_DATADOCUMENTCONTENTPOLICY_CID, false, nullptr, nsDataDocumentContentPolicyConstructor },
525
  { &kNS_NODATAPROTOCOLCONTENTPOLICY_CID, false, nullptr, nsNoDataProtocolContentPolicyConstructor },
526
  { &kNS_CONTENT_DOCUMENT_LOADER_FACTORY_CID, false, nullptr, CreateContentDLF },
527
  { &kNS_JSPROTOCOLHANDLER_CID, false, nullptr, nsJSProtocolHandler::Create },
528
  { &kNS_JSURI_CID, false, nullptr, nsJSURIMutatorConstructor }, // do_CreateInstance returns mutator
529
  { &kNS_JSURIMUTATOR_CID, false, nullptr, nsJSURIMutatorConstructor },
530
  { &kNS_PLUGINDOCLOADERFACTORY_CID, false, nullptr, CreateContentDLF },
531
  { &kNS_STYLESHEETSERVICE_CID, false, nullptr, nsStyleSheetServiceConstructor },
532
  { &kNS_HOSTOBJECTURI_CID, false, nullptr, BlobURLMutatorConstructor }, // do_CreateInstance returns mutator
533
  { &kNS_HOSTOBJECTURIMUTATOR_CID, false, nullptr, BlobURLMutatorConstructor },
534
  { &kNS_SDBCONNECTION_CID, false, nullptr, SDBConnection::Create },
535
  { &kNS_DOMLOCALSTORAGEMANAGER_CID, false, nullptr, LocalStorageManagerConstructor },
536
  { &kDOMREQUEST_SERVICE_CID, false, nullptr, DOMRequestServiceConstructor },
537
  { &kQUOTAMANAGER_SERVICE_CID, false, nullptr, QuotaManagerServiceConstructor },
538
  { &kSERVICEWORKERMANAGER_CID, false, nullptr, ServiceWorkerManagerConstructor },
539
  { &kSTORAGEACTIVITYSERVICE_CID, false, nullptr, StorageActivityServiceConstructor },
540
  { &kNOTIFICATIONTELEMETRYSERVICE_CID, false, nullptr, NotificationTelemetryServiceConstructor },
541
  { &kPUSHNOTIFIER_CID, false, nullptr, PushNotifierConstructor },
542
  { &kWORKERDEBUGGERMANAGER_CID, true, nullptr, WorkerDebuggerManagerConstructor },
543
  { &kNS_GEOLOCATION_CID, false, nullptr, GeolocationConstructor },
544
  { &kNS_WEBSOCKETEVENT_SERVICE_CID, false, nullptr, WebSocketEventServiceConstructor },
545
  { &kNS_FOCUSMANAGER_CID, false, nullptr, CreateFocusManager },
546
#ifdef MOZ_WEBSPEECH_TEST_BACKEND
547
  { &kNS_FAKE_SPEECH_RECOGNITION_SERVICE_CID, false, nullptr, FakeSpeechRecognitionServiceConstructor },
548
#endif
549
#ifdef MOZ_WEBSPEECH
550
  { &kNS_SYNTHVOICEREGISTRY_CID, true, nullptr, nsSynthVoiceRegistryConstructor },
551
#endif
552
  { &kNS_CONTENTSECURITYMANAGER_CID, false, nullptr, nsContentSecurityManagerConstructor },
553
  { &kCSPSERVICE_CID, false, nullptr, CSPServiceConstructor },
554
  { &kNS_CSPCONTEXT_CID, false, nullptr, nsCSPContextConstructor },
555
  { &kNS_MIXEDCONTENTBLOCKER_CID, false, nullptr, nsMixedContentBlockerConstructor },
556
  { &kNS_EVENTLISTENERSERVICE_CID, false, nullptr, CreateEventListenerService },
557
  { &kNS_GLOBALMESSAGEMANAGER_CID, false, nullptr, CreateGlobalMessageManager },
558
  { &kNS_PARENTPROCESSMESSAGEMANAGER_CID, false, nullptr, CreateParentMessageManager },
559
  { &kNS_CHILDPROCESSMESSAGEMANAGER_CID, false, nullptr, CreateChildMessageManager },
560
  { &kNS_SCRIPTSECURITYMANAGER_CID, false, nullptr, Construct_nsIScriptSecurityManager },
561
  { &kNS_PRINCIPAL_CID, false, nullptr, ContentPrincipalConstructor },
562
  { &kNS_EXPANDEDPRINCIPAL_CID, false, nullptr, ExpandedPrincipalConstructor },
563
  { &kNS_SYSTEMPRINCIPAL_CID, false, nullptr, SystemPrincipalConstructor },
564
  { &kNS_NULLPRINCIPAL_CID, false, nullptr, NullPrincipalConstructor },
565
  { &kNS_DEVICE_SENSORS_CID, false, nullptr, nsDeviceSensorsConstructor },
566
#if defined(ANDROID)
567
  { &kNS_HAPTICFEEDBACK_CID, false, nullptr, nsHapticFeedbackConstructor },
568
#endif
569
  { &kTHIRDPARTYUTIL_CID, false, nullptr, ThirdPartyUtilConstructor },
570
  { &kNS_STRUCTUREDCLONECONTAINER_CID, false, nullptr, nsStructuredCloneContainerConstructor },
571
  { &kNS_POWERMANAGERSERVICE_CID, false, nullptr, nsIPowerManagerServiceConstructor, Module::ALLOW_IN_GPU_PROCESS },
572
  { &kOSFILECONSTANTSSERVICE_CID, true, nullptr, OSFileConstantsServiceConstructor },
573
  { &kUDPSOCKETCHILD_CID, false, nullptr, UDPSocketChildConstructor },
574
  { &kGECKO_MEDIA_PLUGIN_SERVICE_CID, true, nullptr, GeckoMediaPluginServiceConstructor },
575
  { &kNS_MEDIAMANAGERSERVICE_CID, false, nullptr, nsIMediaManagerServiceConstructor },
576
#ifdef ACCESSIBILITY
577
  { &kNS_ACCESSIBILITY_SERVICE_CID, false, nullptr, CreateA11yService },
578
#endif
579
  { &kPRESENTATION_SERVICE_CID, false, nullptr, nsIPresentationServiceConstructor },
580
  { &kPRESENTATION_DEVICE_MANAGER_CID, false, nullptr, PresentationDeviceManagerConstructor },
581
  { &kPRESENTATION_TCP_SESSION_TRANSPORT_CID, false, nullptr, PresentationTCPSessionTransportConstructor },
582
  { &kTEXT_INPUT_PROCESSOR_CID, false, nullptr, TextInputProcessorConstructor },
583
  { &kNS_SCRIPTERROR_CID, false, nullptr, nsScriptErrorConstructor },
584
  { nullptr }
585
};
586
587
static const mozilla::Module::ContractIDEntry kLayoutContracts[] = {
588
  XPCONNECT_CONTRACTS
589
  { "@mozilla.org/inspector/deep-tree-walker;1", &kIN_DEEPTREEWALKER_CID },
590
  { NS_DOC_ENCODER_CONTRACTID_BASE "text/xml", &kNS_TEXT_ENCODER_CID },
591
  { NS_DOC_ENCODER_CONTRACTID_BASE "application/xml", &kNS_TEXT_ENCODER_CID },
592
  { NS_DOC_ENCODER_CONTRACTID_BASE "application/xhtml+xml", &kNS_TEXT_ENCODER_CID },
593
  { NS_DOC_ENCODER_CONTRACTID_BASE "image/svg+xml", &kNS_TEXT_ENCODER_CID },
594
  { NS_DOC_ENCODER_CONTRACTID_BASE "text/html", &kNS_TEXT_ENCODER_CID },
595
  { NS_DOC_ENCODER_CONTRACTID_BASE "text/plain", &kNS_TEXT_ENCODER_CID },
596
  { NS_HTMLCOPY_ENCODER_CONTRACTID, &kNS_HTMLCOPY_TEXT_ENCODER_CID },
597
  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/xml", &kNS_XMLCONTENTSERIALIZER_CID },
598
  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/xml", &kNS_XMLCONTENTSERIALIZER_CID },
599
  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/xhtml+xml", &kNS_XHTMLCONTENTSERIALIZER_CID },
600
  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "image/svg+xml", &kNS_XMLCONTENTSERIALIZER_CID },
601
  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/html", &kNS_HTMLCONTENTSERIALIZER_CID },
602
  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "application/vnd.mozilla.xul+xml", &kNS_XMLCONTENTSERIALIZER_CID },
603
  { NS_CONTENTSERIALIZER_CONTRACTID_PREFIX "text/plain", &kNS_PLAINTEXTSERIALIZER_CID },
604
  { NS_PARSERUTILS_CONTRACTID, &kNS_PARSERUTILS_CID },
605
  { NS_SCRIPTABLEUNESCAPEHTML_CONTRACTID, &kNS_SCRIPTABLEUNESCAPEHTML_CID },
606
  { NS_CONTENTPOLICY_CONTRACTID, &kNS_CONTENTPOLICY_CID },
607
  { NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID, &kNS_DATADOCUMENTCONTENTPOLICY_CID },
608
  { NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID, &kNS_NODATAPROTOCOLCONTENTPOLICY_CID },
609
  { CONTENT_DLF_CONTRACTID, &kNS_CONTENT_DOCUMENT_LOADER_FACTORY_CID },
610
  { NS_JSPROTOCOLHANDLER_CONTRACTID, &kNS_JSPROTOCOLHANDLER_CID },
611
  { PLUGIN_DLF_CONTRACTID, &kNS_PLUGINDOCLOADERFACTORY_CID },
612
  { NS_STYLESHEETSERVICE_CONTRACTID, &kNS_STYLESHEETSERVICE_CID },
613
  { NS_SDBCONNECTION_CONTRACTID, &kNS_SDBCONNECTION_CID },
614
  { "@mozilla.org/dom/localStorage-manager;1", &kNS_DOMLOCALSTORAGEMANAGER_CID },
615
  { DOMREQUEST_SERVICE_CONTRACTID, &kDOMREQUEST_SERVICE_CID },
616
  { QUOTAMANAGER_SERVICE_CONTRACTID, &kQUOTAMANAGER_SERVICE_CID },
617
  { SERVICEWORKERMANAGER_CONTRACTID, &kSERVICEWORKERMANAGER_CID },
618
  { STORAGE_ACTIVITY_SERVICE_CONTRACTID, &kSTORAGEACTIVITYSERVICE_CID },
619
  { NOTIFICATIONTELEMETRYSERVICE_CONTRACTID, &kNOTIFICATIONTELEMETRYSERVICE_CID },
620
  { PUSHNOTIFIER_CONTRACTID, &kPUSHNOTIFIER_CID },
621
  { WORKERDEBUGGERMANAGER_CONTRACTID, &kWORKERDEBUGGERMANAGER_CID },
622
  { "@mozilla.org/geolocation;1", &kNS_GEOLOCATION_CID },
623
  { "@mozilla.org/websocketevent/service;1", &kNS_WEBSOCKETEVENT_SERVICE_CID },
624
  { "@mozilla.org/focus-manager;1", &kNS_FOCUSMANAGER_CID },
625
#ifdef MOZ_WEBSPEECH_TEST_BACKEND
626
  { NS_SPEECH_RECOGNITION_SERVICE_CONTRACTID_PREFIX "fake", &kNS_FAKE_SPEECH_RECOGNITION_SERVICE_CID },
627
#endif
628
#ifdef MOZ_WEBSPEECH
629
  { NS_SYNTHVOICEREGISTRY_CONTRACTID, &kNS_SYNTHVOICEREGISTRY_CID },
630
#endif
631
  { NS_CONTENTSECURITYMANAGER_CONTRACTID, &kNS_CONTENTSECURITYMANAGER_CID },
632
  { CSPSERVICE_CONTRACTID, &kCSPSERVICE_CID },
633
  { NS_CSPCONTEXT_CONTRACTID, &kNS_CSPCONTEXT_CID },
634
  { NS_MIXEDCONTENTBLOCKER_CONTRACTID, &kNS_MIXEDCONTENTBLOCKER_CID },
635
  { NS_EVENTLISTENERSERVICE_CONTRACTID, &kNS_EVENTLISTENERSERVICE_CID },
636
  { NS_GLOBALMESSAGEMANAGER_CONTRACTID, &kNS_GLOBALMESSAGEMANAGER_CID },
637
  { NS_PARENTPROCESSMESSAGEMANAGER_CONTRACTID, &kNS_PARENTPROCESSMESSAGEMANAGER_CID },
638
  { NS_CHILDPROCESSMESSAGEMANAGER_CONTRACTID, &kNS_CHILDPROCESSMESSAGEMANAGER_CID },
639
  { NS_SCRIPTSECURITYMANAGER_CONTRACTID, &kNS_SCRIPTSECURITYMANAGER_CID },
640
  { NS_PRINCIPAL_CONTRACTID, &kNS_PRINCIPAL_CID },
641
  { NS_EXPANDEDPRINCIPAL_CONTRACTID, &kNS_EXPANDEDPRINCIPAL_CID },
642
  { NS_SYSTEMPRINCIPAL_CONTRACTID, &kNS_SYSTEMPRINCIPAL_CID },
643
  { NS_NULLPRINCIPAL_CONTRACTID, &kNS_NULLPRINCIPAL_CID },
644
  { NS_DEVICE_SENSORS_CONTRACTID, &kNS_DEVICE_SENSORS_CID },
645
#if defined(ANDROID)
646
  { "@mozilla.org/widget/hapticfeedback;1", &kNS_HAPTICFEEDBACK_CID },
647
#endif
648
  { THIRDPARTYUTIL_CONTRACTID, &kTHIRDPARTYUTIL_CID },
649
  { NS_STRUCTUREDCLONECONTAINER_CONTRACTID, &kNS_STRUCTUREDCLONECONTAINER_CID },
650
  { POWERMANAGERSERVICE_CONTRACTID, &kNS_POWERMANAGERSERVICE_CID, Module::ALLOW_IN_GPU_PROCESS },
651
  { OSFILECONSTANTSSERVICE_CONTRACTID, &kOSFILECONSTANTSSERVICE_CID },
652
  { "@mozilla.org/udp-socket-child;1", &kUDPSOCKETCHILD_CID },
653
  { MEDIAMANAGERSERVICE_CONTRACTID, &kNS_MEDIAMANAGERSERVICE_CID },
654
#ifdef ACCESSIBILITY
655
  { "@mozilla.org/accessibilityService;1", &kNS_ACCESSIBILITY_SERVICE_CID },
656
  { "@mozilla.org/accessibleRetrieval;1", &kNS_ACCESSIBILITY_SERVICE_CID },
657
#endif
658
  { "@mozilla.org/gecko-media-plugin-service;1",  &kGECKO_MEDIA_PLUGIN_SERVICE_CID },
659
  { PRESENTATION_SERVICE_CONTRACTID, &kPRESENTATION_SERVICE_CID },
660
  { PRESENTATION_DEVICE_MANAGER_CONTRACTID, &kPRESENTATION_DEVICE_MANAGER_CID },
661
  { PRESENTATION_TCP_SESSION_TRANSPORT_CONTRACTID, &kPRESENTATION_TCP_SESSION_TRANSPORT_CID },
662
  { "@mozilla.org/text-input-processor;1", &kTEXT_INPUT_PROCESSOR_CID },
663
  { NS_SCRIPTERROR_CONTRACTID, &kNS_SCRIPTERROR_CID },
664
  { nullptr }
665
};
666
667
static const mozilla::Module::CategoryEntry kLayoutCategories[] = {
668
  XPCONNECT_CATEGORIES
669
  { "content-policy", NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID, NS_DATADOCUMENTCONTENTPOLICY_CONTRACTID },
670
  { "content-policy", NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID, NS_NODATAPROTOCOLCONTENTPOLICY_CONTRACTID },
671
  { "content-policy", "CSPService", CSPSERVICE_CONTRACTID },
672
  { "content-policy", NS_MIXEDCONTENTBLOCKER_CONTRACTID, NS_MIXEDCONTENTBLOCKER_CONTRACTID },
673
  { "net-channel-event-sinks", "CSPService", CSPSERVICE_CONTRACTID },
674
  { "net-channel-event-sinks", NS_MIXEDCONTENTBLOCKER_CONTRACTID, NS_MIXEDCONTENTBLOCKER_CONTRACTID },
675
  { "app-startup", "Script Security Manager", "service," NS_SCRIPTSECURITYMANAGER_CONTRACTID },
676
  { "app-startup", "Push Notifier", "service," PUSHNOTIFIER_CONTRACTID },
677
  { "clear-origin-attributes-data", "QuotaManagerService", "service," QUOTAMANAGER_SERVICE_CONTRACTID },
678
  { OBSERVER_TOPIC_IDLE_DAILY, "QuotaManagerService", QUOTAMANAGER_SERVICE_CONTRACTID },
679
  CONTENTDLF_CATEGORIES
680
  { "profile-after-change", "PresentationDeviceManager", PRESENTATION_DEVICE_MANAGER_CONTRACTID },
681
  { "profile-after-change", "PresentationService", PRESENTATION_SERVICE_CONTRACTID },
682
  { "profile-after-change", "Notification Telemetry Service", NOTIFICATIONTELEMETRYSERVICE_CONTRACTID },
683
  { nullptr }
684
};
685
686
static void
687
LayoutModuleDtor()
688
0
{
689
0
  if (XRE_GetProcessType() == GeckoProcessType_GPU) {
690
0
    return;
691
0
  }
692
0
693
0
  Shutdown();
694
0
  nsContentUtils::XPCOMShutdown();
695
0
696
0
  // Layout depends heavily on gfx and imagelib, so we want to make sure that
697
0
  // these modules are shut down after all the layout cleanup runs.
698
0
  mozilla::image::ShutdownModule();
699
0
  gfxPlatform::Shutdown();
700
0
  gfx::gfxVars::Shutdown();
701
0
702
0
  nsScriptSecurityManager::Shutdown();
703
0
  xpcModuleDtor();
704
0
}
705
706
static const mozilla::Module kLayoutModule = {
707
  mozilla::Module::kVersion,
708
  kLayoutCIDs,
709
  kLayoutContracts,
710
  kLayoutCategories,
711
  nullptr,
712
  Initialize,
713
  LayoutModuleDtor,
714
  Module::ALLOW_IN_GPU_PROCESS
715
};
716
717
NSMODULE_DEFN(nsLayoutModule) = &kLayoutModule;