Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/netwerk/build/nsNetModule.cpp
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/* vim: set sw=4 ts=8 et 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 "necko-config.h"
8
9
#define ALLOW_LATE_HTTPLOG_H_INCLUDE 1
10
#include "base/basictypes.h"
11
12
#include "nsCOMPtr.h"
13
#include "nsIClassInfoImpl.h"
14
#include "mozilla/ModuleUtils.h"
15
#include "nsIComponentManager.h"
16
#include "nsIServiceManager.h"
17
#include "nsICategoryManager.h"
18
#include "nsSocketProviderService.h"
19
#include "nscore.h"
20
#include "nsSimpleURI.h"
21
#include "nsSimpleNestedURI.h"
22
#include "nsLoadGroup.h"
23
#include "nsStreamLoader.h"
24
#include "nsIncrementalStreamLoader.h"
25
#include "nsFileStreams.h"
26
#include "nsBufferedStreams.h"
27
#include "nsMIMEInputStream.h"
28
#include "nsSOCKSSocketProvider.h"
29
#include "nsCacheService.h"
30
#include "nsDiskCacheDeviceSQL.h"
31
#include "nsApplicationCacheService.h"
32
#include "nsMimeTypes.h"
33
#include "nsDNSPrefetch.h"
34
#include "nsAboutProtocolHandler.h"
35
#include "nsXULAppAPI.h"
36
#include "nsCategoryCache.h"
37
#include "nsIContentSniffer.h"
38
#include "Predictor.h"
39
#include "nsIThreadPool.h"
40
#include "mozilla/net/NeckoChild.h"
41
#include "RedirectChannelRegistrar.h"
42
43
#include "nsNetCID.h"
44
45
#if defined(XP_MACOSX) || defined(XP_WIN) || defined(XP_LINUX)
46
#define BUILD_NETWORK_INFO_SERVICE 1
47
#endif
48
49
typedef nsCategoryCache<nsIContentSniffer> ContentSnifferCache;
50
ContentSnifferCache* gNetSniffers = nullptr;
51
ContentSnifferCache* gDataSniffers = nullptr;
52
53
///////////////////////////////////////////////////////////////////////////////
54
55
#include "nsIOService.h"
56
typedef mozilla::net::nsIOService nsIOService;
57
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIOService, nsIOService::GetInstance)
58
59
#include "nsDNSService2.h"
60
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIDNSService,
61
  nsDNSService::GetXPCOMSingleton)
62
63
#include "nsProtocolProxyService.h"
64
typedef mozilla::net::nsProtocolProxyService nsProtocolProxyService;
65
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsProtocolProxyService, Init)
66
67
#include "nsStreamTransportService.h"
68
typedef mozilla::net::nsStreamTransportService nsStreamTransportService;
69
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStreamTransportService, Init)
70
71
#include "nsSocketTransportService2.h"
72
typedef mozilla::net::nsSocketTransportService nsSocketTransportService;
73
#undef LOG
74
#undef LOG_ENABLED
75
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSocketTransportService, Init)
76
77
#include "nsServerSocket.h"
78
typedef mozilla::net::nsServerSocket nsServerSocket;
79
NS_GENERIC_FACTORY_CONSTRUCTOR(nsServerSocket)
80
81
#include "TLSServerSocket.h"
82
typedef mozilla::net::TLSServerSocket TLSServerSocket;
83
NS_GENERIC_FACTORY_CONSTRUCTOR(TLSServerSocket)
84
85
#include "nsUDPSocket.h"
86
typedef mozilla::net::nsUDPSocket nsUDPSocket;
87
NS_GENERIC_FACTORY_CONSTRUCTOR(nsUDPSocket)
88
89
#include "nsUDPSocketProvider.h"
90
NS_GENERIC_FACTORY_CONSTRUCTOR(nsUDPSocketProvider)
91
92
#include "nsAsyncStreamCopier.h"
93
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAsyncStreamCopier)
94
95
#include "nsInputStreamPump.h"
96
NS_GENERIC_FACTORY_CONSTRUCTOR(nsInputStreamPump)
97
98
#include "nsInputStreamChannel.h"
99
typedef mozilla::net::nsInputStreamChannel nsInputStreamChannel;
100
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsInputStreamChannel, Init)
101
102
#include "nsDownloader.h"
103
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDownloader)
104
105
#include "BackgroundFileSaver.h"
106
namespace mozilla {
107
namespace net {
108
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(BackgroundFileSaverOutputStream, Init)
109
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(BackgroundFileSaverStreamListener, Init)
110
} // namespace net
111
} // namespace mozilla
112
113
#include "nsSyncStreamListener.h"
114
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSyncStreamListener, Init)
115
116
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAtomicFileOutputStream)
117
118
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSafeFileOutputStream)
119
120
typedef mozilla::net::nsLoadGroup nsLoadGroup;
121
NS_GENERIC_AGGREGATED_CONSTRUCTOR_INIT(nsLoadGroup, Init)
122
123
#include "ArrayBufferInputStream.h"
124
NS_GENERIC_FACTORY_CONSTRUCTOR(ArrayBufferInputStream)
125
126
#include "nsEffectiveTLDService.h"
127
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsEffectiveTLDService, Init)
128
129
#include "nsSerializationHelper.h"
130
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSerializationHelper)
131
132
#include "CacheStorageService.h"
133
typedef mozilla::net::CacheStorageService CacheStorageService;
134
NS_GENERIC_FACTORY_CONSTRUCTOR(CacheStorageService)
135
136
#include "LoadContextInfo.h"
137
typedef mozilla::net::LoadContextInfoFactory LoadContextInfoFactory;
138
NS_GENERIC_FACTORY_CONSTRUCTOR(LoadContextInfoFactory)
139
140
///////////////////////////////////////////////////////////////////////////////
141
142
#include "mozilla/net/CaptivePortalService.h"
143
namespace mozilla {
144
namespace net {
145
  NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsICaptivePortalService,
146
    CaptivePortalService::GetSingleton)
147
} // namespace net
148
} // namespace mozilla
149
150
#include "RequestContextService.h"
151
typedef mozilla::net::RequestContextService RequestContextService;
152
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(RequestContextService, Init)
153
154
///////////////////////////////////////////////////////////////////////////////
155
156
extern nsresult
157
net_NewIncrementalDownload(nsISupports *, const nsIID &, void **);
158
159
#define NS_INCREMENTALDOWNLOAD_CID \
160
{ /* a62af1ba-79b3-4896-8aaf-b148bfce4280 */         \
161
    0xa62af1ba,                                      \
162
    0x79b3,                                          \
163
    0x4896,                                          \
164
    {0x8a, 0xaf, 0xb1, 0x48, 0xbf, 0xce, 0x42, 0x80} \
165
}
166
167
///////////////////////////////////////////////////////////////////////////////
168
169
#include "nsMIMEHeaderParamImpl.h"
170
171
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMIMEHeaderParamImpl)
172
///////////////////////////////////////////////////////////////////////////////
173
174
#include "nsRequestObserverProxy.h"
175
#include "nsSimpleStreamListener.h"
176
177
typedef mozilla::net::nsRequestObserverProxy nsRequestObserverProxy;
178
NS_GENERIC_FACTORY_CONSTRUCTOR(nsRequestObserverProxy)
179
typedef mozilla::net::nsSimpleStreamListener nsSimpleStreamListener;
180
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSimpleStreamListener)
181
182
///////////////////////////////////////////////////////////////////////////////
183
184
#include "nsStreamListenerTee.h"
185
typedef mozilla::net::nsStreamListenerTee nsStreamListenerTee;
186
NS_GENERIC_FACTORY_CONSTRUCTOR(nsStreamListenerTee)
187
188
///////////////////////////////////////////////////////////////////////////////
189
190
#ifdef NECKO_COOKIES
191
#include "nsCookieService.h"
192
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsICookieService,
193
  nsCookieService::GetXPCOMSingleton)
194
#endif
195
196
///////////////////////////////////////////////////////////////////////////////
197
#ifdef NECKO_WIFI
198
199
#include "nsWifiMonitor.h"
200
#undef LOG
201
#undef LOG_ENABLED
202
NS_GENERIC_FACTORY_CONSTRUCTOR(nsWifiMonitor)
203
204
#endif
205
206
///////////////////////////////////////////////////////////////////////////////
207
// protocols
208
///////////////////////////////////////////////////////////////////////////////
209
210
// about:blank is mandatory
211
#include "nsAboutProtocolHandler.h"
212
#include "nsAboutBlank.h"
213
typedef mozilla::net::nsAboutProtocolHandler nsAboutProtocolHandler;
214
typedef mozilla::net::nsSafeAboutProtocolHandler nsSafeAboutProtocolHandler;
215
typedef mozilla::net::nsNestedAboutURI::Mutator nsNestedAboutURIMutator;
216
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAboutProtocolHandler)
217
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSafeAboutProtocolHandler)
218
NS_GENERIC_FACTORY_CONSTRUCTOR(nsNestedAboutURIMutator)
219
220
// about
221
#include "nsAboutCache.h"
222
#include "nsAboutCacheEntry.h"
223
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAboutCacheEntry)
224
225
NS_GENERIC_FACTORY_CONSTRUCTOR(nsApplicationCacheService)
226
227
// file
228
#include "nsFileProtocolHandler.h"
229
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsFileProtocolHandler, Init)
230
231
// ftp
232
#include "nsFtpProtocolHandler.h"
233
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsFtpProtocolHandler, Init)
234
235
// http/https
236
#include "nsHttpHandler.h"
237
#include "Http2Compression.h"
238
#undef LOG
239
#undef LOG_ENABLED
240
#include "nsHttpAuthManager.h"
241
#include "nsHttpBasicAuth.h"
242
#include "nsHttpDigestAuth.h"
243
#include "nsHttpNTLMAuth.h"
244
#include "nsHttpActivityDistributor.h"
245
#include "ThrottleQueue.h"
246
#include "BackgroundChannelRegistrar.h"
247
#undef LOG
248
#undef LOG_ENABLED
249
namespace mozilla {
250
namespace net {
251
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHttpNTLMAuth)
252
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsHttpHandler, nsHttpHandler::GetInstance)
253
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsHttpsHandler, Init)
254
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsHttpAuthManager, Init)
255
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHttpActivityDistributor)
256
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHttpBasicAuth)
257
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHttpDigestAuth)
258
NS_GENERIC_FACTORY_CONSTRUCTOR(ThrottleQueue)
259
NS_GENERIC_FACTORY_CONSTRUCTOR(BackgroundChannelRegistrar)
260
} // namespace net
261
} // namespace mozilla
262
263
#include "mozilla/net/Dashboard.h"
264
namespace mozilla {
265
namespace net {
266
  NS_GENERIC_FACTORY_CONSTRUCTOR(Dashboard)
267
} // namespace net
268
} // namespace mozilla
269
270
#ifdef XP_WIN
271
#include "../socket/nsNamedPipeService.h"
272
namespace mozilla {
273
namespace net {
274
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(NamedPipeService, Init)
275
} // namespace net
276
} // namespace mozilla
277
#endif
278
279
// resource
280
#include "nsResProtocolHandler.h"
281
#include "ExtensionProtocolHandler.h"
282
#include "SubstitutingProtocolHandler.h"
283
typedef mozilla::net::ExtensionProtocolHandler ExtensionProtocolHandler;
284
typedef mozilla::net::SubstitutingURL::Mutator SubstitutingURLMutator;
285
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsResProtocolHandler, Init)
286
287
namespace mozilla {
288
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(ExtensionProtocolHandler,
289
    ExtensionProtocolHandler::GetSingleton)
290
NS_GENERIC_FACTORY_CONSTRUCTOR(SubstitutingURLMutator)
291
} // namespace mozilla
292
293
#include "nsViewSourceHandler.h"
294
typedef mozilla::net::nsViewSourceHandler nsViewSourceHandler;
295
NS_GENERIC_FACTORY_CONSTRUCTOR(nsViewSourceHandler)
296
297
#include "nsDataHandler.h"
298
299
#include "nsWyciwygProtocolHandler.h"
300
NS_GENERIC_FACTORY_CONSTRUCTOR(nsWyciwygProtocolHandler)
301
302
#include "WebSocketChannel.h"
303
#include "WebSocketChannelChild.h"
304
namespace mozilla {
305
namespace net {
306
static BaseWebSocketChannel*
307
WebSocketChannelConstructor(bool aSecure)
308
2
{
309
2
  if (IsNeckoChild()) {
310
0
    return new WebSocketChannelChild(aSecure);
311
0
  }
312
2
313
2
  if (aSecure) {
314
1
    return new WebSocketSSLChannel;
315
1
  }
316
1
  return new WebSocketChannel;
317
1
}
318
319
#define WEB_SOCKET_HANDLER_CONSTRUCTOR(type, secure)  \
320
static nsresult                                       \
321
type##Constructor(nsISupports *aOuter, REFNSIID aIID, \
322
2
                  void **aResult)                     \
323
2
{                                                     \
324
2
  nsresult rv;                                        \
325
2
                                                      \
326
2
  BaseWebSocketChannel * inst;                        \
327
2
                                                      \
328
2
  *aResult = nullptr;                                 \
329
2
  if (nullptr != aOuter) {                            \
330
0
    rv = NS_ERROR_NO_AGGREGATION;                     \
331
0
    return rv;                                        \
332
0
  }                                                   \
333
2
  inst = WebSocketChannelConstructor(secure);         \
334
2
  NS_ADDREF(inst);                                    \
335
2
  rv = inst->QueryInterface(aIID, aResult);           \
336
2
  NS_RELEASE(inst);                                   \
337
2
  return rv;                                          \
338
2
}
nsNetModule.cpp:mozilla::net::WebSocketChannelConstructor(nsISupports*, nsID const&, void**)
Line
Count
Source
322
1
                  void **aResult)                     \
323
1
{                                                     \
324
1
  nsresult rv;                                        \
325
1
                                                      \
326
1
  BaseWebSocketChannel * inst;                        \
327
1
                                                      \
328
1
  *aResult = nullptr;                                 \
329
1
  if (nullptr != aOuter) {                            \
330
0
    rv = NS_ERROR_NO_AGGREGATION;                     \
331
0
    return rv;                                        \
332
0
  }                                                   \
333
1
  inst = WebSocketChannelConstructor(secure);         \
334
1
  NS_ADDREF(inst);                                    \
335
1
  rv = inst->QueryInterface(aIID, aResult);           \
336
1
  NS_RELEASE(inst);                                   \
337
1
  return rv;                                          \
338
1
}
nsNetModule.cpp:mozilla::net::WebSocketSSLChannelConstructor(nsISupports*, nsID const&, void**)
Line
Count
Source
322
1
                  void **aResult)                     \
323
1
{                                                     \
324
1
  nsresult rv;                                        \
325
1
                                                      \
326
1
  BaseWebSocketChannel * inst;                        \
327
1
                                                      \
328
1
  *aResult = nullptr;                                 \
329
1
  if (nullptr != aOuter) {                            \
330
0
    rv = NS_ERROR_NO_AGGREGATION;                     \
331
0
    return rv;                                        \
332
0
  }                                                   \
333
1
  inst = WebSocketChannelConstructor(secure);         \
334
1
  NS_ADDREF(inst);                                    \
335
1
  rv = inst->QueryInterface(aIID, aResult);           \
336
1
  NS_RELEASE(inst);                                   \
337
1
  return rv;                                          \
338
1
}
339
340
WEB_SOCKET_HANDLER_CONSTRUCTOR(WebSocketChannel, false)
341
WEB_SOCKET_HANDLER_CONSTRUCTOR(WebSocketSSLChannel, true)
342
#undef WEB_SOCKET_HANDLER_CONSTRUCTOR
343
} // namespace net
344
} // namespace mozilla
345
346
///////////////////////////////////////////////////////////////////////////////
347
348
#include "nsURLParsers.h"
349
NS_GENERIC_FACTORY_CONSTRUCTOR(nsNoAuthURLParser)
350
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAuthURLParser)
351
NS_GENERIC_FACTORY_CONSTRUCTOR(nsStdURLParser)
352
353
#include "nsStandardURL.h"
354
typedef mozilla::net::nsStandardURL::Mutator nsStandardURLMutator;
355
NS_GENERIC_FACTORY_CONSTRUCTOR(nsStandardURLMutator)
356
typedef mozilla::net::nsSimpleURI::Mutator nsSimpleURIMutator;
357
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSimpleURIMutator)
358
359
typedef mozilla::net::nsSimpleNestedURI::Mutator nsSimpleNestedURIMutator;
360
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSimpleNestedURIMutator)
361
362
///////////////////////////////////////////////////////////////////////////////
363
364
#include "nsIDNService.h"
365
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsIDNService, Init)
366
367
///////////////////////////////////////////////////////////////////////////////
368
#if defined(XP_WIN)
369
#include "nsNotifyAddrListener.h"
370
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNotifyAddrListener, Init)
371
#elif defined(MOZ_WIDGET_COCOA)
372
#include "nsNetworkLinkService.h"
373
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNetworkLinkService, Init)
374
#elif defined(MOZ_WIDGET_ANDROID)
375
#include "nsAndroidNetworkLinkService.h"
376
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAndroidNetworkLinkService)
377
#elif defined(XP_LINUX)
378
#include "nsNotifyAddrListener_Linux.h"
379
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNotifyAddrListener, Init)
380
#endif
381
382
///////////////////////////////////////////////////////////////////////////////
383
384
#include "nsFTPDirListingConv.h"
385
nsresult NS_NewFTPDirListingConv(nsFTPDirListingConv** result);
386
387
#include "nsStreamConverterService.h"
388
#include "nsMultiMixedConv.h"
389
#include "nsHTTPCompressConv.h"
390
#include "mozTXTToHTMLConv.h"
391
#include "nsUnknownDecoder.h"
392
393
///////////////////////////////////////////////////////////////////////////////
394
395
#ifdef BUILD_NETWORK_INFO_SERVICE
396
#include "nsNetworkInfoService.h"
397
typedef mozilla::net::nsNetworkInfoService nsNetworkInfoService;
398
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNetworkInfoService, Init)
399
#endif // BUILD_NETWORK_INFO_SERVICE
400
401
402
#include "nsIndexedToHTML.h"
403
404
nsresult NS_NewMultiMixedConv (nsMultiMixedConv** result);
405
nsresult MOZ_NewTXTToHTMLConv (mozTXTToHTMLConv** result);
406
nsresult NS_NewHTTPCompressConv  (mozilla::net::nsHTTPCompressConv ** result);
407
nsresult NS_NewStreamConv(nsStreamConverterService **aStreamConv);
408
409
#define FTP_TO_INDEX                 "?from=text/ftp-dir&to=application/http-index-format"
410
#define INDEX_TO_HTML                "?from=application/http-index-format&to=text/html"
411
#define MULTI_MIXED_X                "?from=multipart/x-mixed-replace&to=*/*"
412
#define MULTI_MIXED                  "?from=multipart/mixed&to=*/*"
413
#define MULTI_BYTERANGES             "?from=multipart/byteranges&to=*/*"
414
#define UNKNOWN_CONTENT              "?from=" UNKNOWN_CONTENT_TYPE "&to=*/*"
415
#define GZIP_TO_UNCOMPRESSED         "?from=gzip&to=uncompressed"
416
#define XGZIP_TO_UNCOMPRESSED        "?from=x-gzip&to=uncompressed"
417
#define BROTLI_TO_UNCOMPRESSED       "?from=br&to=uncompressed"
418
#define COMPRESS_TO_UNCOMPRESSED     "?from=compress&to=uncompressed"
419
#define XCOMPRESS_TO_UNCOMPRESSED    "?from=x-compress&to=uncompressed"
420
#define DEFLATE_TO_UNCOMPRESSED      "?from=deflate&to=uncompressed"
421
422
static const mozilla::Module::CategoryEntry kNeckoCategories[] = {
423
    { NS_ISTREAMCONVERTER_KEY, FTP_TO_INDEX, "" },
424
    { NS_ISTREAMCONVERTER_KEY, INDEX_TO_HTML, "" },
425
    { NS_ISTREAMCONVERTER_KEY, MULTI_MIXED_X, "" },
426
    { NS_ISTREAMCONVERTER_KEY, MULTI_MIXED, "" },
427
    { NS_ISTREAMCONVERTER_KEY, MULTI_BYTERANGES, "" },
428
    { NS_ISTREAMCONVERTER_KEY, UNKNOWN_CONTENT, "" },
429
    { NS_ISTREAMCONVERTER_KEY, GZIP_TO_UNCOMPRESSED, "" },
430
    { NS_ISTREAMCONVERTER_KEY, XGZIP_TO_UNCOMPRESSED, "" },
431
    { NS_ISTREAMCONVERTER_KEY, BROTLI_TO_UNCOMPRESSED, "" },
432
    { NS_ISTREAMCONVERTER_KEY, COMPRESS_TO_UNCOMPRESSED, "" },
433
    { NS_ISTREAMCONVERTER_KEY, XCOMPRESS_TO_UNCOMPRESSED, "" },
434
    { NS_ISTREAMCONVERTER_KEY, DEFLATE_TO_UNCOMPRESSED, "" },
435
    NS_BINARYDETECTOR_CATEGORYENTRY,
436
    { nullptr }
437
};
438
439
static nsresult
440
CreateNewStreamConvServiceFactory(nsISupports* aOuter, REFNSIID aIID, void **aResult)
441
0
{
442
0
    if (!aResult) {
443
0
        return NS_ERROR_INVALID_POINTER;
444
0
    }
445
0
    if (aOuter) {
446
0
        *aResult = nullptr;
447
0
        return NS_ERROR_NO_AGGREGATION;
448
0
    }
449
0
    nsStreamConverterService* inst = nullptr;
450
0
    nsresult rv = NS_NewStreamConv(&inst);
451
0
    if (NS_FAILED(rv)) {
452
0
        *aResult = nullptr;
453
0
        return rv;
454
0
    }
455
0
    rv = inst->QueryInterface(aIID, aResult);
456
0
    if (NS_FAILED(rv)) {
457
0
        *aResult = nullptr;
458
0
    }
459
0
    NS_RELEASE(inst);             /* get rid of extra refcnt */
460
0
    return rv;
461
0
}
462
463
static nsresult
464
CreateNewFTPDirListingConv(nsISupports* aOuter, REFNSIID aIID, void **aResult)
465
0
{
466
0
    if (!aResult) {
467
0
        return NS_ERROR_INVALID_POINTER;
468
0
    }
469
0
    if (aOuter) {
470
0
        *aResult = nullptr;
471
0
        return NS_ERROR_NO_AGGREGATION;
472
0
    }
473
0
    nsFTPDirListingConv* inst = nullptr;
474
0
    nsresult rv = NS_NewFTPDirListingConv(&inst);
475
0
    if (NS_FAILED(rv)) {
476
0
        *aResult = nullptr;
477
0
        return rv;
478
0
    }
479
0
    rv = inst->QueryInterface(aIID, aResult);
480
0
    if (NS_FAILED(rv)) {
481
0
        *aResult = nullptr;
482
0
    }
483
0
    NS_RELEASE(inst);             /* get rid of extra refcnt */
484
0
    return rv;
485
0
}
486
487
static nsresult
488
CreateNewMultiMixedConvFactory(nsISupports* aOuter, REFNSIID aIID, void **aResult)
489
0
{
490
0
    if (!aResult) {
491
0
        return NS_ERROR_INVALID_POINTER;
492
0
    }
493
0
    if (aOuter) {
494
0
        *aResult = nullptr;
495
0
        return NS_ERROR_NO_AGGREGATION;
496
0
    }
497
0
    nsMultiMixedConv* inst = nullptr;
498
0
    nsresult rv = NS_NewMultiMixedConv(&inst);
499
0
    if (NS_FAILED(rv)) {
500
0
        *aResult = nullptr;
501
0
        return rv;
502
0
    }
503
0
    rv = inst->QueryInterface(aIID, aResult);
504
0
    if (NS_FAILED(rv)) {
505
0
        *aResult = nullptr;
506
0
    }
507
0
    NS_RELEASE(inst);             /* get rid of extra refcnt */
508
0
    return rv;
509
0
}
510
511
static nsresult
512
CreateNewTXTToHTMLConvFactory(nsISupports* aOuter, REFNSIID aIID, void **aResult)
513
0
{
514
0
    if (!aResult) {
515
0
        return NS_ERROR_INVALID_POINTER;
516
0
    }
517
0
    if (aOuter) {
518
0
        *aResult = nullptr;
519
0
        return NS_ERROR_NO_AGGREGATION;
520
0
    }
521
0
    mozTXTToHTMLConv* inst = nullptr;
522
0
    nsresult rv = MOZ_NewTXTToHTMLConv(&inst);
523
0
    if (NS_FAILED(rv)) {
524
0
        *aResult = nullptr;
525
0
        return rv;
526
0
    }
527
0
    rv = inst->QueryInterface(aIID, aResult);
528
0
    if (NS_FAILED(rv)) {
529
0
        *aResult = nullptr;
530
0
    }
531
0
    NS_RELEASE(inst);             /* get rid of extra refcnt */
532
0
    return rv;
533
0
}
534
535
static nsresult
536
CreateNewHTTPCompressConvFactory (nsISupports* aOuter, REFNSIID aIID, void **aResult)
537
0
{
538
0
    if (!aResult) {
539
0
        return NS_ERROR_INVALID_POINTER;
540
0
    }
541
0
    if (aOuter) {
542
0
        *aResult = nullptr;
543
0
        return NS_ERROR_NO_AGGREGATION;
544
0
    }
545
0
    mozilla::net::nsHTTPCompressConv* inst = nullptr;
546
0
    nsresult rv = NS_NewHTTPCompressConv (&inst);
547
0
    if (NS_FAILED(rv)) {
548
0
        *aResult = nullptr;
549
0
        return rv;
550
0
    }
551
0
    rv = inst->QueryInterface(aIID, aResult);
552
0
    if (NS_FAILED(rv)) {
553
0
        *aResult = nullptr;
554
0
    }
555
0
    NS_RELEASE(inst);             /* get rid of extra refcnt */
556
0
    return rv;
557
0
}
558
559
static nsresult
560
CreateNewUnknownDecoderFactory(nsISupports *aOuter, REFNSIID aIID, void **aResult)
561
0
{
562
0
  nsresult rv;
563
0
564
0
  if (!aResult) {
565
0
    return NS_ERROR_NULL_POINTER;
566
0
  }
567
0
  *aResult = nullptr;
568
0
569
0
  if (aOuter) {
570
0
    return NS_ERROR_NO_AGGREGATION;
571
0
  }
572
0
573
0
  nsUnknownDecoder *inst;
574
0
575
0
  inst = new nsUnknownDecoder();
576
0
  if (!inst) {
577
0
    return NS_ERROR_OUT_OF_MEMORY;
578
0
  }
579
0
  NS_ADDREF(inst);
580
0
  rv = inst->QueryInterface(aIID, aResult);
581
0
  NS_RELEASE(inst);
582
0
583
0
  return rv;
584
0
}
585
586
static nsresult
587
CreateNewBinaryDetectorFactory(nsISupports *aOuter, REFNSIID aIID, void **aResult)
588
0
{
589
0
  nsresult rv;
590
0
591
0
  if (!aResult) {
592
0
    return NS_ERROR_NULL_POINTER;
593
0
  }
594
0
  *aResult = nullptr;
595
0
596
0
  if (aOuter) {
597
0
    return NS_ERROR_NO_AGGREGATION;
598
0
  }
599
0
600
0
  auto* inst = new nsBinaryDetector();
601
0
  if (!inst) {
602
0
    return NS_ERROR_OUT_OF_MEMORY;
603
0
  }
604
0
  NS_ADDREF(inst);
605
0
  rv = inst->QueryInterface(aIID, aResult);
606
0
  NS_RELEASE(inst);
607
0
608
0
  return rv;
609
0
}
610
611
///////////////////////////////////////////////////////////////////////////////
612
// Module implementation for the net library
613
614
// Net module startup hook
615
static nsresult nsNetStartup()
616
6
{
617
6
    mozilla::net::nsStandardURL::InitGlobalObjects();
618
6
    return NS_OK;
619
6
}
620
621
// Net module shutdown hook
622
static void nsNetShutdown()
623
0
{
624
0
    // Release the url parser that the stdurl is holding.
625
0
    mozilla::net::nsStandardURL::ShutdownGlobalObjects();
626
0
627
0
    // Release global state used by the URL helper module.
628
0
    net_ShutdownURLHelper();
629
#ifdef XP_MACOSX
630
    net_ShutdownURLHelperOSX();
631
#endif
632
633
0
    // Release DNS service reference.
634
0
    nsDNSPrefetch::Shutdown();
635
0
636
0
    // Release the Websocket Admission Manager
637
0
    mozilla::net::WebSocketChannel::Shutdown();
638
0
639
0
    mozilla::net::Http2CompressionCleanup();
640
0
641
0
    mozilla::net::RedirectChannelRegistrar::Shutdown();
642
0
643
0
    delete gNetSniffers;
644
0
    gNetSniffers = nullptr;
645
0
    delete gDataSniffers;
646
0
    gDataSniffers = nullptr;
647
0
}
648
649
NS_DEFINE_NAMED_CID(NS_IOSERVICE_CID);
650
NS_DEFINE_NAMED_CID(NS_STREAMTRANSPORTSERVICE_CID);
651
NS_DEFINE_NAMED_CID(NS_SOCKETTRANSPORTSERVICE_CID);
652
NS_DEFINE_NAMED_CID(NS_SERVERSOCKET_CID);
653
NS_DEFINE_NAMED_CID(NS_TLSSERVERSOCKET_CID);
654
NS_DEFINE_NAMED_CID(NS_UDPSOCKET_CID);
655
NS_DEFINE_NAMED_CID(NS_SOCKETPROVIDERSERVICE_CID);
656
NS_DEFINE_NAMED_CID(NS_DNSSERVICE_CID);
657
NS_DEFINE_NAMED_CID(NS_IDNSERVICE_CID);
658
NS_DEFINE_NAMED_CID(NS_EFFECTIVETLDSERVICE_CID);
659
NS_DEFINE_NAMED_CID(NS_SIMPLEURI_CID);
660
NS_DEFINE_NAMED_CID(NS_SIMPLEURIMUTATOR_CID);
661
NS_DEFINE_NAMED_CID(NS_SIMPLENESTEDURI_CID);
662
NS_DEFINE_NAMED_CID(NS_SIMPLENESTEDURIMUTATOR_CID);
663
NS_DEFINE_NAMED_CID(NS_ASYNCSTREAMCOPIER_CID);
664
NS_DEFINE_NAMED_CID(NS_INPUTSTREAMPUMP_CID);
665
NS_DEFINE_NAMED_CID(NS_INPUTSTREAMCHANNEL_CID);
666
NS_DEFINE_NAMED_CID(NS_STREAMLOADER_CID);
667
NS_DEFINE_NAMED_CID(NS_INCREMENTALSTREAMLOADER_CID);
668
NS_DEFINE_NAMED_CID(NS_DOWNLOADER_CID);
669
NS_DEFINE_NAMED_CID(NS_BACKGROUNDFILESAVEROUTPUTSTREAM_CID);
670
NS_DEFINE_NAMED_CID(NS_BACKGROUNDFILESAVERSTREAMLISTENER_CID);
671
NS_DEFINE_NAMED_CID(NS_SYNCSTREAMLISTENER_CID);
672
NS_DEFINE_NAMED_CID(NS_REQUESTOBSERVERPROXY_CID);
673
NS_DEFINE_NAMED_CID(NS_SIMPLESTREAMLISTENER_CID);
674
NS_DEFINE_NAMED_CID(NS_STREAMLISTENERTEE_CID);
675
NS_DEFINE_NAMED_CID(NS_LOADGROUP_CID);
676
NS_DEFINE_NAMED_CID(NS_LOCALFILEINPUTSTREAM_CID);
677
NS_DEFINE_NAMED_CID(NS_LOCALFILEOUTPUTSTREAM_CID);
678
NS_DEFINE_NAMED_CID(NS_ATOMICLOCALFILEOUTPUTSTREAM_CID);
679
NS_DEFINE_NAMED_CID(NS_SAFELOCALFILEOUTPUTSTREAM_CID);
680
NS_DEFINE_NAMED_CID(NS_INCREMENTALDOWNLOAD_CID);
681
NS_DEFINE_NAMED_CID(NS_STDURLPARSER_CID);
682
NS_DEFINE_NAMED_CID(NS_NOAUTHURLPARSER_CID);
683
NS_DEFINE_NAMED_CID(NS_AUTHURLPARSER_CID);
684
NS_DEFINE_NAMED_CID(NS_STANDARDURL_CID);
685
NS_DEFINE_NAMED_CID(NS_STANDARDURLMUTATOR_CID);
686
NS_DEFINE_NAMED_CID(NS_ARRAYBUFFERINPUTSTREAM_CID);
687
NS_DEFINE_NAMED_CID(NS_BUFFEREDINPUTSTREAM_CID);
688
NS_DEFINE_NAMED_CID(NS_BUFFEREDOUTPUTSTREAM_CID);
689
NS_DEFINE_NAMED_CID(NS_MIMEINPUTSTREAM_CID);
690
NS_DEFINE_NAMED_CID(NS_PROTOCOLPROXYSERVICE_CID);
691
NS_DEFINE_NAMED_CID(NS_STREAMCONVERTERSERVICE_CID);
692
#if defined(XP_WIN)
693
NS_DEFINE_NAMED_CID(NS_NAMEDPIPESERVICE_CID);
694
#endif
695
NS_DEFINE_NAMED_CID(NS_DASHBOARD_CID);
696
NS_DEFINE_NAMED_CID(NS_FTPDIRLISTINGCONVERTER_CID);
697
NS_DEFINE_NAMED_CID(NS_NSINDEXEDTOHTMLCONVERTER_CID);
698
NS_DEFINE_NAMED_CID(NS_MULTIMIXEDCONVERTER_CID);
699
NS_DEFINE_NAMED_CID(NS_UNKNOWNDECODER_CID);
700
NS_DEFINE_NAMED_CID(NS_BINARYDETECTOR_CID);
701
NS_DEFINE_NAMED_CID(NS_HTTPCOMPRESSCONVERTER_CID);
702
NS_DEFINE_NAMED_CID(MOZITXTTOHTMLCONV_CID);
703
NS_DEFINE_NAMED_CID(NS_MIMEHEADERPARAM_CID);
704
NS_DEFINE_NAMED_CID(NS_FILEPROTOCOLHANDLER_CID);
705
NS_DEFINE_NAMED_CID(NS_HTTPPROTOCOLHANDLER_CID);
706
NS_DEFINE_NAMED_CID(NS_HTTPSPROTOCOLHANDLER_CID);
707
NS_DEFINE_NAMED_CID(NS_HTTPBASICAUTH_CID);
708
NS_DEFINE_NAMED_CID(NS_HTTPDIGESTAUTH_CID);
709
NS_DEFINE_NAMED_CID(NS_HTTPNTLMAUTH_CID);
710
NS_DEFINE_NAMED_CID(NS_HTTPAUTHMANAGER_CID);
711
NS_DEFINE_NAMED_CID(NS_HTTPACTIVITYDISTRIBUTOR_CID);
712
NS_DEFINE_NAMED_CID(NS_THROTTLEQUEUE_CID);
713
NS_DEFINE_NAMED_CID(NS_BACKGROUNDCHANNELREGISTRAR_CID);
714
NS_DEFINE_NAMED_CID(NS_FTPPROTOCOLHANDLER_CID);
715
NS_DEFINE_NAMED_CID(NS_RESPROTOCOLHANDLER_CID);
716
NS_DEFINE_NAMED_CID(NS_EXTENSIONPROTOCOLHANDLER_CID);
717
NS_DEFINE_NAMED_CID(NS_SUBSTITUTINGURL_CID);
718
NS_DEFINE_NAMED_CID(NS_SUBSTITUTINGURLMUTATOR_CID);
719
NS_DEFINE_NAMED_CID(NS_ABOUTPROTOCOLHANDLER_CID);
720
NS_DEFINE_NAMED_CID(NS_SAFEABOUTPROTOCOLHANDLER_CID);
721
NS_DEFINE_NAMED_CID(NS_ABOUT_BLANK_MODULE_CID);
722
NS_DEFINE_NAMED_CID(NS_NESTEDABOUTURI_CID);
723
NS_DEFINE_NAMED_CID(NS_NESTEDABOUTURIMUTATOR_CID);
724
NS_DEFINE_NAMED_CID(NS_ABOUT_CACHE_MODULE_CID);
725
NS_DEFINE_NAMED_CID(NS_ABOUT_CACHE_ENTRY_MODULE_CID);
726
NS_DEFINE_NAMED_CID(NS_SOCKSSOCKETPROVIDER_CID);
727
NS_DEFINE_NAMED_CID(NS_SOCKS4SOCKETPROVIDER_CID);
728
NS_DEFINE_NAMED_CID(NS_UDPSOCKETPROVIDER_CID);
729
NS_DEFINE_NAMED_CID(NS_CACHESERVICE_CID);
730
NS_DEFINE_NAMED_CID(NS_APPLICATIONCACHESERVICE_CID);
731
#ifdef NECKO_COOKIES
732
NS_DEFINE_NAMED_CID(NS_COOKIEMANAGER_CID);
733
NS_DEFINE_NAMED_CID(NS_COOKIESERVICE_CID);
734
#endif
735
#ifdef NECKO_WIFI
736
NS_DEFINE_NAMED_CID(NS_WIFI_MONITOR_COMPONENT_CID);
737
#endif
738
NS_DEFINE_NAMED_CID(NS_DATAPROTOCOLHANDLER_CID);
739
NS_DEFINE_NAMED_CID(NS_VIEWSOURCEHANDLER_CID);
740
NS_DEFINE_NAMED_CID(NS_WYCIWYGPROTOCOLHANDLER_CID);
741
NS_DEFINE_NAMED_CID(NS_WEBSOCKETPROTOCOLHANDLER_CID);
742
NS_DEFINE_NAMED_CID(NS_WEBSOCKETSSLPROTOCOLHANDLER_CID);
743
#if defined(XP_WIN)
744
NS_DEFINE_NAMED_CID(NS_NETWORK_LINK_SERVICE_CID);
745
#elif defined(MOZ_WIDGET_COCOA)
746
NS_DEFINE_NAMED_CID(NS_NETWORK_LINK_SERVICE_CID);
747
#elif defined(MOZ_WIDGET_ANDROID)
748
NS_DEFINE_NAMED_CID(NS_NETWORK_LINK_SERVICE_CID);
749
#elif defined(XP_LINUX)
750
NS_DEFINE_NAMED_CID(NS_NETWORK_LINK_SERVICE_CID);
751
#endif
752
NS_DEFINE_NAMED_CID(NS_SERIALIZATION_HELPER_CID);
753
NS_DEFINE_NAMED_CID(NS_CACHE_STORAGE_SERVICE_CID);
754
NS_DEFINE_NAMED_CID(NS_NSILOADCONTEXTINFOFACTORY_CID);
755
NS_DEFINE_NAMED_CID(NS_NETWORKPREDICTOR_CID);
756
NS_DEFINE_NAMED_CID(NS_CAPTIVEPORTAL_CID);
757
NS_DEFINE_NAMED_CID(NS_REQUESTCONTEXTSERVICE_CID);
758
#ifdef BUILD_NETWORK_INFO_SERVICE
759
NS_DEFINE_NAMED_CID(NETWORKINFOSERVICE_CID);
760
#endif // BUILD_NETWORK_INFO_SERVICE
761
762
static const mozilla::Module::CIDEntry kNeckoCIDs[] = {
763
    { &kNS_IOSERVICE_CID, false, nullptr, nsIOServiceConstructor },
764
    { &kNS_STREAMTRANSPORTSERVICE_CID, false, nullptr, nsStreamTransportServiceConstructor },
765
    { &kNS_SOCKETTRANSPORTSERVICE_CID, false, nullptr, nsSocketTransportServiceConstructor },
766
    { &kNS_SERVERSOCKET_CID, false, nullptr, nsServerSocketConstructor },
767
    { &kNS_TLSSERVERSOCKET_CID, false, nullptr, TLSServerSocketConstructor },
768
    { &kNS_UDPSOCKET_CID, false, nullptr, nsUDPSocketConstructor },
769
    { &kNS_SOCKETPROVIDERSERVICE_CID, false, nullptr, nsSocketProviderService::Create },
770
    { &kNS_DNSSERVICE_CID, false, nullptr, nsIDNSServiceConstructor },
771
    { &kNS_IDNSERVICE_CID, false, nullptr, nsIDNServiceConstructor },
772
    { &kNS_EFFECTIVETLDSERVICE_CID, false, nullptr, nsEffectiveTLDServiceConstructor },
773
    { &kNS_SIMPLEURI_CID, false, nullptr, nsSimpleURIMutatorConstructor }, // do_CreateInstance returns mutator
774
    { &kNS_SIMPLEURIMUTATOR_CID, false, nullptr, nsSimpleURIMutatorConstructor },
775
    { &kNS_SIMPLENESTEDURI_CID, false, nullptr, nsSimpleNestedURIMutatorConstructor }, // do_CreateInstance returns mutator
776
    { &kNS_SIMPLENESTEDURIMUTATOR_CID, false, nullptr, nsSimpleNestedURIMutatorConstructor },
777
    { &kNS_ASYNCSTREAMCOPIER_CID, false, nullptr, nsAsyncStreamCopierConstructor },
778
    { &kNS_INPUTSTREAMPUMP_CID, false, nullptr, nsInputStreamPumpConstructor },
779
    { &kNS_INPUTSTREAMCHANNEL_CID, false, nullptr, nsInputStreamChannelConstructor },
780
    { &kNS_STREAMLOADER_CID, false, nullptr, mozilla::net::nsStreamLoader::Create },
781
    { &kNS_INCREMENTALSTREAMLOADER_CID, false, nullptr, nsIncrementalStreamLoader::Create },
782
    { &kNS_DOWNLOADER_CID, false, nullptr, nsDownloaderConstructor },
783
    { &kNS_BACKGROUNDFILESAVEROUTPUTSTREAM_CID, false, nullptr,
784
      mozilla::net::BackgroundFileSaverOutputStreamConstructor },
785
    { &kNS_BACKGROUNDFILESAVERSTREAMLISTENER_CID, false, nullptr,
786
      mozilla::net::BackgroundFileSaverStreamListenerConstructor },
787
    { &kNS_SYNCSTREAMLISTENER_CID, false, nullptr, nsSyncStreamListenerConstructor },
788
    { &kNS_REQUESTOBSERVERPROXY_CID, false, nullptr, nsRequestObserverProxyConstructor },
789
    { &kNS_SIMPLESTREAMLISTENER_CID, false, nullptr, nsSimpleStreamListenerConstructor },
790
    { &kNS_STREAMLISTENERTEE_CID, false, nullptr, nsStreamListenerTeeConstructor },
791
    { &kNS_LOADGROUP_CID, false, nullptr, nsLoadGroupConstructor },
792
    { &kNS_LOCALFILEINPUTSTREAM_CID, false, nullptr, nsFileInputStream::Create },
793
    { &kNS_LOCALFILEOUTPUTSTREAM_CID, false, nullptr, nsFileOutputStream::Create },
794
    { &kNS_ATOMICLOCALFILEOUTPUTSTREAM_CID, false, nullptr, nsAtomicFileOutputStreamConstructor },
795
    { &kNS_SAFELOCALFILEOUTPUTSTREAM_CID, false, nullptr, nsSafeFileOutputStreamConstructor },
796
    { &kNS_INCREMENTALDOWNLOAD_CID, false, nullptr, net_NewIncrementalDownload },
797
    { &kNS_STDURLPARSER_CID, false, nullptr, nsStdURLParserConstructor },
798
    { &kNS_NOAUTHURLPARSER_CID, false, nullptr, nsNoAuthURLParserConstructor },
799
    { &kNS_AUTHURLPARSER_CID, false, nullptr, nsAuthURLParserConstructor },
800
    { &kNS_STANDARDURL_CID, false, nullptr, nsStandardURLMutatorConstructor }, // do_CreateInstance returns mutator
801
    { &kNS_STANDARDURLMUTATOR_CID, false, nullptr, nsStandardURLMutatorConstructor },
802
    { &kNS_ARRAYBUFFERINPUTSTREAM_CID, false, nullptr, ArrayBufferInputStreamConstructor },
803
    { &kNS_BUFFEREDINPUTSTREAM_CID, false, nullptr, nsBufferedInputStream::Create },
804
    { &kNS_BUFFEREDOUTPUTSTREAM_CID, false, nullptr, nsBufferedOutputStream::Create },
805
    { &kNS_MIMEINPUTSTREAM_CID, false, nullptr, nsMIMEInputStreamConstructor },
806
    { &kNS_PROTOCOLPROXYSERVICE_CID, true, nullptr, nsProtocolProxyServiceConstructor },
807
    { &kNS_STREAMCONVERTERSERVICE_CID, false, nullptr, CreateNewStreamConvServiceFactory },
808
#if defined (XP_WIN)
809
    { &kNS_NAMEDPIPESERVICE_CID, false, NULL, mozilla::net::NamedPipeServiceConstructor },
810
#endif
811
    { &kNS_DASHBOARD_CID, false, nullptr, mozilla::net::DashboardConstructor },
812
    { &kNS_FTPDIRLISTINGCONVERTER_CID, false, nullptr, CreateNewFTPDirListingConv },
813
    { &kNS_NSINDEXEDTOHTMLCONVERTER_CID, false, nullptr, nsIndexedToHTML::Create },
814
    { &kNS_MULTIMIXEDCONVERTER_CID, false, nullptr, CreateNewMultiMixedConvFactory },
815
    { &kNS_UNKNOWNDECODER_CID, false, nullptr, CreateNewUnknownDecoderFactory },
816
    { &kNS_BINARYDETECTOR_CID, false, nullptr, CreateNewBinaryDetectorFactory },
817
    { &kNS_HTTPCOMPRESSCONVERTER_CID, false, nullptr, CreateNewHTTPCompressConvFactory },
818
    { &kMOZITXTTOHTMLCONV_CID, false, nullptr, CreateNewTXTToHTMLConvFactory },
819
    { &kNS_MIMEHEADERPARAM_CID, false, nullptr, nsMIMEHeaderParamImplConstructor },
820
    { &kNS_FILEPROTOCOLHANDLER_CID, false, nullptr, nsFileProtocolHandlerConstructor },
821
    { &kNS_HTTPPROTOCOLHANDLER_CID, false, nullptr, mozilla::net::nsHttpHandlerConstructor },
822
    { &kNS_HTTPSPROTOCOLHANDLER_CID, false, nullptr, mozilla::net::nsHttpsHandlerConstructor },
823
    { &kNS_HTTPBASICAUTH_CID, false, nullptr, mozilla::net::nsHttpBasicAuthConstructor },
824
    { &kNS_HTTPDIGESTAUTH_CID, false, nullptr, mozilla::net::nsHttpDigestAuthConstructor },
825
    { &kNS_HTTPNTLMAUTH_CID, false, nullptr, mozilla::net::nsHttpNTLMAuthConstructor },
826
    { &kNS_HTTPAUTHMANAGER_CID, false, nullptr, mozilla::net::nsHttpAuthManagerConstructor },
827
    { &kNS_HTTPACTIVITYDISTRIBUTOR_CID, false, nullptr, mozilla::net::nsHttpActivityDistributorConstructor },
828
    { &kNS_THROTTLEQUEUE_CID, false, nullptr, mozilla::net::ThrottleQueueConstructor },
829
    { &kNS_BACKGROUNDCHANNELREGISTRAR_CID, false, nullptr, mozilla::net::BackgroundChannelRegistrarConstructor },
830
    { &kNS_FTPPROTOCOLHANDLER_CID, false, nullptr, nsFtpProtocolHandlerConstructor },
831
    { &kNS_RESPROTOCOLHANDLER_CID, false, nullptr, nsResProtocolHandlerConstructor },
832
    { &kNS_EXTENSIONPROTOCOLHANDLER_CID, false, nullptr, mozilla::ExtensionProtocolHandlerConstructor },
833
    { &kNS_SUBSTITUTINGURL_CID, false, nullptr, mozilla::SubstitutingURLMutatorConstructor }, // do_CreateInstance returns mutator
834
    { &kNS_SUBSTITUTINGURLMUTATOR_CID, false, nullptr, mozilla::SubstitutingURLMutatorConstructor },
835
    { &kNS_ABOUTPROTOCOLHANDLER_CID, false, nullptr, nsAboutProtocolHandlerConstructor },
836
    { &kNS_SAFEABOUTPROTOCOLHANDLER_CID, false, nullptr, nsSafeAboutProtocolHandlerConstructor },
837
    { &kNS_ABOUT_BLANK_MODULE_CID, false, nullptr, nsAboutBlank::Create },
838
    { &kNS_NESTEDABOUTURI_CID, false, nullptr, nsNestedAboutURIMutatorConstructor }, // do_CreateInstance returns mutator
839
    { &kNS_NESTEDABOUTURIMUTATOR_CID, false, nullptr, nsNestedAboutURIMutatorConstructor },
840
    { &kNS_ABOUT_CACHE_MODULE_CID, false, nullptr, nsAboutCache::Create },
841
    { &kNS_ABOUT_CACHE_ENTRY_MODULE_CID, false, nullptr, nsAboutCacheEntryConstructor },
842
    { &kNS_SOCKSSOCKETPROVIDER_CID, false, nullptr, nsSOCKSSocketProvider::CreateV5 },
843
    { &kNS_SOCKS4SOCKETPROVIDER_CID, false, nullptr, nsSOCKSSocketProvider::CreateV4 },
844
    { &kNS_UDPSOCKETPROVIDER_CID, false, nullptr, nsUDPSocketProviderConstructor },
845
    { &kNS_CACHESERVICE_CID, false, nullptr, nsCacheService::Create },
846
    { &kNS_APPLICATIONCACHESERVICE_CID, false, nullptr, nsApplicationCacheServiceConstructor },
847
#ifdef NECKO_COOKIES
848
    { &kNS_COOKIEMANAGER_CID, false, nullptr, nsICookieServiceConstructor },
849
    { &kNS_COOKIESERVICE_CID, false, nullptr, nsICookieServiceConstructor },
850
#endif
851
#ifdef NECKO_WIFI
852
    { &kNS_WIFI_MONITOR_COMPONENT_CID, false, nullptr, nsWifiMonitorConstructor },
853
#endif
854
    { &kNS_DATAPROTOCOLHANDLER_CID, false, nullptr, nsDataHandler::Create },
855
    { &kNS_VIEWSOURCEHANDLER_CID, false, nullptr, nsViewSourceHandlerConstructor },
856
    { &kNS_WYCIWYGPROTOCOLHANDLER_CID, false, nullptr, nsWyciwygProtocolHandlerConstructor },
857
    { &kNS_WEBSOCKETPROTOCOLHANDLER_CID, false, nullptr,
858
      mozilla::net::WebSocketChannelConstructor },
859
    { &kNS_WEBSOCKETSSLPROTOCOLHANDLER_CID, false, nullptr,
860
      mozilla::net::WebSocketSSLChannelConstructor },
861
#if defined(XP_WIN)
862
    { &kNS_NETWORK_LINK_SERVICE_CID, false, nullptr, nsNotifyAddrListenerConstructor },
863
#elif defined(MOZ_WIDGET_COCOA)
864
    { &kNS_NETWORK_LINK_SERVICE_CID, false, nullptr, nsNetworkLinkServiceConstructor },
865
#elif defined(MOZ_WIDGET_ANDROID)
866
    { &kNS_NETWORK_LINK_SERVICE_CID, false, nullptr, nsAndroidNetworkLinkServiceConstructor },
867
#elif defined(XP_LINUX)
868
    { &kNS_NETWORK_LINK_SERVICE_CID, false, nullptr, nsNotifyAddrListenerConstructor },
869
#endif
870
    { &kNS_SERIALIZATION_HELPER_CID, false, nullptr, nsSerializationHelperConstructor },
871
    { &kNS_CACHE_STORAGE_SERVICE_CID, false, nullptr, CacheStorageServiceConstructor },
872
    { &kNS_NSILOADCONTEXTINFOFACTORY_CID, false, nullptr, LoadContextInfoFactoryConstructor },
873
    { &kNS_NETWORKPREDICTOR_CID, false, nullptr, mozilla::net::Predictor::Create },
874
    { &kNS_CAPTIVEPORTAL_CID, false, nullptr, mozilla::net::nsICaptivePortalServiceConstructor },
875
    { &kNS_REQUESTCONTEXTSERVICE_CID, false, nullptr, RequestContextServiceConstructor },
876
#ifdef BUILD_NETWORK_INFO_SERVICE
877
    { &kNETWORKINFOSERVICE_CID, false, nullptr, nsNetworkInfoServiceConstructor },
878
#endif
879
    { nullptr }
880
};
881
882
static const mozilla::Module::ContractIDEntry kNeckoContracts[] = {
883
    { NS_IOSERVICE_CONTRACTID, &kNS_IOSERVICE_CID },
884
    { NS_NETUTIL_CONTRACTID, &kNS_IOSERVICE_CID },
885
    { NS_STREAMTRANSPORTSERVICE_CONTRACTID, &kNS_STREAMTRANSPORTSERVICE_CID },
886
    { NS_SOCKETTRANSPORTSERVICE_CONTRACTID, &kNS_SOCKETTRANSPORTSERVICE_CID },
887
    { NS_SERVERSOCKET_CONTRACTID, &kNS_SERVERSOCKET_CID },
888
    { NS_TLSSERVERSOCKET_CONTRACTID, &kNS_TLSSERVERSOCKET_CID },
889
    { NS_UDPSOCKET_CONTRACTID, &kNS_UDPSOCKET_CID },
890
    { NS_SOCKETPROVIDERSERVICE_CONTRACTID, &kNS_SOCKETPROVIDERSERVICE_CID },
891
    { NS_DNSSERVICE_CONTRACTID, &kNS_DNSSERVICE_CID },
892
    { NS_IDNSERVICE_CONTRACTID, &kNS_IDNSERVICE_CID },
893
    { NS_EFFECTIVETLDSERVICE_CONTRACTID, &kNS_EFFECTIVETLDSERVICE_CID },
894
    { NS_SIMPLEURIMUTATOR_CONTRACTID, &kNS_SIMPLEURIMUTATOR_CID },
895
    { NS_ASYNCSTREAMCOPIER_CONTRACTID, &kNS_ASYNCSTREAMCOPIER_CID },
896
    { NS_INPUTSTREAMPUMP_CONTRACTID, &kNS_INPUTSTREAMPUMP_CID },
897
    { NS_INPUTSTREAMCHANNEL_CONTRACTID, &kNS_INPUTSTREAMCHANNEL_CID },
898
    { NS_STREAMLOADER_CONTRACTID, &kNS_STREAMLOADER_CID },
899
    { NS_INCREMENTALSTREAMLOADER_CONTRACTID, &kNS_INCREMENTALSTREAMLOADER_CID },
900
    { NS_DOWNLOADER_CONTRACTID, &kNS_DOWNLOADER_CID },
901
    { NS_BACKGROUNDFILESAVEROUTPUTSTREAM_CONTRACTID, &kNS_BACKGROUNDFILESAVEROUTPUTSTREAM_CID },
902
    { NS_BACKGROUNDFILESAVERSTREAMLISTENER_CONTRACTID, &kNS_BACKGROUNDFILESAVERSTREAMLISTENER_CID },
903
    { NS_SYNCSTREAMLISTENER_CONTRACTID, &kNS_SYNCSTREAMLISTENER_CID },
904
    { NS_REQUESTOBSERVERPROXY_CONTRACTID, &kNS_REQUESTOBSERVERPROXY_CID },
905
    { NS_SIMPLESTREAMLISTENER_CONTRACTID, &kNS_SIMPLESTREAMLISTENER_CID },
906
    { NS_STREAMLISTENERTEE_CONTRACTID, &kNS_STREAMLISTENERTEE_CID },
907
    { NS_LOADGROUP_CONTRACTID, &kNS_LOADGROUP_CID },
908
    { NS_LOCALFILEINPUTSTREAM_CONTRACTID, &kNS_LOCALFILEINPUTSTREAM_CID },
909
    { NS_LOCALFILEOUTPUTSTREAM_CONTRACTID, &kNS_LOCALFILEOUTPUTSTREAM_CID },
910
    { NS_ATOMICLOCALFILEOUTPUTSTREAM_CONTRACTID, &kNS_ATOMICLOCALFILEOUTPUTSTREAM_CID },
911
    { NS_SAFELOCALFILEOUTPUTSTREAM_CONTRACTID, &kNS_SAFELOCALFILEOUTPUTSTREAM_CID },
912
    { NS_INCREMENTALDOWNLOAD_CONTRACTID, &kNS_INCREMENTALDOWNLOAD_CID },
913
    { NS_STDURLPARSER_CONTRACTID, &kNS_STDURLPARSER_CID },
914
    { NS_NOAUTHURLPARSER_CONTRACTID, &kNS_NOAUTHURLPARSER_CID },
915
    { NS_AUTHURLPARSER_CONTRACTID, &kNS_AUTHURLPARSER_CID },
916
    { NS_STANDARDURLMUTATOR_CONTRACTID, &kNS_STANDARDURLMUTATOR_CID },
917
    { NS_ARRAYBUFFERINPUTSTREAM_CONTRACTID, &kNS_ARRAYBUFFERINPUTSTREAM_CID },
918
    { NS_BUFFEREDINPUTSTREAM_CONTRACTID, &kNS_BUFFEREDINPUTSTREAM_CID },
919
    { NS_BUFFEREDOUTPUTSTREAM_CONTRACTID, &kNS_BUFFEREDOUTPUTSTREAM_CID },
920
    { NS_MIMEINPUTSTREAM_CONTRACTID, &kNS_MIMEINPUTSTREAM_CID },
921
    { NS_PROTOCOLPROXYSERVICE_CONTRACTID, &kNS_PROTOCOLPROXYSERVICE_CID },
922
    { NS_STREAMCONVERTERSERVICE_CONTRACTID, &kNS_STREAMCONVERTERSERVICE_CID },
923
#if defined(XP_WIN)
924
    { NS_NAMEDPIPESERVICE_CONTRACTID, &kNS_NAMEDPIPESERVICE_CID },
925
#endif
926
    { NS_DASHBOARD_CONTRACTID, &kNS_DASHBOARD_CID },
927
    { NS_ISTREAMCONVERTER_KEY FTP_TO_INDEX, &kNS_FTPDIRLISTINGCONVERTER_CID },
928
    { NS_ISTREAMCONVERTER_KEY INDEX_TO_HTML, &kNS_NSINDEXEDTOHTMLCONVERTER_CID },
929
    { NS_ISTREAMCONVERTER_KEY MULTI_MIXED_X, &kNS_MULTIMIXEDCONVERTER_CID },
930
    { NS_ISTREAMCONVERTER_KEY MULTI_BYTERANGES, &kNS_MULTIMIXEDCONVERTER_CID },
931
    { NS_ISTREAMCONVERTER_KEY MULTI_MIXED, &kNS_MULTIMIXEDCONVERTER_CID },
932
    { NS_ISTREAMCONVERTER_KEY UNKNOWN_CONTENT, &kNS_UNKNOWNDECODER_CID },
933
    { NS_BINARYDETECTOR_CONTRACTID, &kNS_BINARYDETECTOR_CID },
934
    { NS_ISTREAMCONVERTER_KEY GZIP_TO_UNCOMPRESSED, &kNS_HTTPCOMPRESSCONVERTER_CID },
935
    { NS_ISTREAMCONVERTER_KEY XGZIP_TO_UNCOMPRESSED, &kNS_HTTPCOMPRESSCONVERTER_CID },
936
    { NS_ISTREAMCONVERTER_KEY BROTLI_TO_UNCOMPRESSED, &kNS_HTTPCOMPRESSCONVERTER_CID },
937
    { NS_ISTREAMCONVERTER_KEY COMPRESS_TO_UNCOMPRESSED, &kNS_HTTPCOMPRESSCONVERTER_CID },
938
    { NS_ISTREAMCONVERTER_KEY XCOMPRESS_TO_UNCOMPRESSED, &kNS_HTTPCOMPRESSCONVERTER_CID },
939
    { NS_ISTREAMCONVERTER_KEY DEFLATE_TO_UNCOMPRESSED, &kNS_HTTPCOMPRESSCONVERTER_CID },
940
    { MOZ_TXTTOHTMLCONV_CONTRACTID, &kMOZITXTTOHTMLCONV_CID },
941
    { NS_MIMEHEADERPARAM_CONTRACTID, &kNS_MIMEHEADERPARAM_CID },
942
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "file", &kNS_FILEPROTOCOLHANDLER_CID },
943
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "http", &kNS_HTTPPROTOCOLHANDLER_CID },
944
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "https", &kNS_HTTPSPROTOCOLHANDLER_CID },
945
    { NS_HTTP_AUTHENTICATOR_CONTRACTID_PREFIX "basic", &kNS_HTTPBASICAUTH_CID },
946
    { NS_HTTP_AUTHENTICATOR_CONTRACTID_PREFIX "digest", &kNS_HTTPDIGESTAUTH_CID },
947
    { NS_HTTP_AUTHENTICATOR_CONTRACTID_PREFIX "ntlm", &kNS_HTTPNTLMAUTH_CID },
948
    { NS_HTTPAUTHMANAGER_CONTRACTID, &kNS_HTTPAUTHMANAGER_CID },
949
    { NS_HTTPACTIVITYDISTRIBUTOR_CONTRACTID, &kNS_HTTPACTIVITYDISTRIBUTOR_CID },
950
    { NS_THROTTLEQUEUE_CONTRACTID, &kNS_THROTTLEQUEUE_CID },
951
    { NS_BACKGROUNDCHANNELREGISTRAR_CONTRACTID, &kNS_BACKGROUNDCHANNELREGISTRAR_CID },
952
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "ftp", &kNS_FTPPROTOCOLHANDLER_CID },
953
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "resource", &kNS_RESPROTOCOLHANDLER_CID },
954
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "moz-extension", &kNS_EXTENSIONPROTOCOLHANDLER_CID },
955
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "about", &kNS_ABOUTPROTOCOLHANDLER_CID },
956
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "moz-safe-about", &kNS_SAFEABOUTPROTOCOLHANDLER_CID },
957
    { NS_ABOUT_MODULE_CONTRACTID_PREFIX "blank", &kNS_ABOUT_BLANK_MODULE_CID },
958
    { NS_ABOUT_MODULE_CONTRACTID_PREFIX "cache", &kNS_ABOUT_CACHE_MODULE_CID },
959
    { NS_ABOUT_MODULE_CONTRACTID_PREFIX "cache-entry", &kNS_ABOUT_CACHE_ENTRY_MODULE_CID },
960
    { NS_NETWORK_SOCKET_CONTRACTID_PREFIX "socks", &kNS_SOCKSSOCKETPROVIDER_CID },
961
    { NS_NETWORK_SOCKET_CONTRACTID_PREFIX "socks4", &kNS_SOCKS4SOCKETPROVIDER_CID },
962
    { NS_NETWORK_SOCKET_CONTRACTID_PREFIX "udp", &kNS_UDPSOCKETPROVIDER_CID },
963
    { NS_CACHESERVICE_CONTRACTID, &kNS_CACHESERVICE_CID },
964
    { NS_APPLICATIONCACHESERVICE_CONTRACTID, &kNS_APPLICATIONCACHESERVICE_CID },
965
#ifdef NECKO_COOKIES
966
    { NS_COOKIEMANAGER_CONTRACTID, &kNS_COOKIEMANAGER_CID },
967
    { NS_COOKIESERVICE_CONTRACTID, &kNS_COOKIESERVICE_CID },
968
#endif
969
#ifdef NECKO_WIFI
970
    { NS_WIFI_MONITOR_CONTRACTID, &kNS_WIFI_MONITOR_COMPONENT_CID },
971
#endif
972
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "data", &kNS_DATAPROTOCOLHANDLER_CID },
973
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "view-source", &kNS_VIEWSOURCEHANDLER_CID },
974
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "wyciwyg", &kNS_WYCIWYGPROTOCOLHANDLER_CID },
975
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "ws", &kNS_WEBSOCKETPROTOCOLHANDLER_CID },
976
    { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "wss", &kNS_WEBSOCKETSSLPROTOCOLHANDLER_CID },
977
#if defined(XP_WIN)
978
    { NS_NETWORK_LINK_SERVICE_CONTRACTID, &kNS_NETWORK_LINK_SERVICE_CID },
979
#elif defined(MOZ_WIDGET_COCOA)
980
    { NS_NETWORK_LINK_SERVICE_CONTRACTID, &kNS_NETWORK_LINK_SERVICE_CID },
981
#elif defined(MOZ_WIDGET_ANDROID)
982
    { NS_NETWORK_LINK_SERVICE_CONTRACTID, &kNS_NETWORK_LINK_SERVICE_CID },
983
#elif defined(XP_LINUX)
984
    { NS_NETWORK_LINK_SERVICE_CONTRACTID, &kNS_NETWORK_LINK_SERVICE_CID },
985
#endif
986
    { NS_SERIALIZATION_HELPER_CONTRACTID, &kNS_SERIALIZATION_HELPER_CID },
987
    { NS_CACHE_STORAGE_SERVICE_CONTRACTID, &kNS_CACHE_STORAGE_SERVICE_CID },
988
    { NS_CACHE_STORAGE_SERVICE_CONTRACTID2, &kNS_CACHE_STORAGE_SERVICE_CID },
989
    { NS_NSILOADCONTEXTINFOFACTORY_CONTRACTID, &kNS_NSILOADCONTEXTINFOFACTORY_CID },
990
    { NS_NETWORKPREDICTOR_CONTRACTID, &kNS_NETWORKPREDICTOR_CID },
991
    { NS_CAPTIVEPORTAL_CONTRACTID, &kNS_CAPTIVEPORTAL_CID },
992
    { NS_REQUESTCONTEXTSERVICE_CONTRACTID, &kNS_REQUESTCONTEXTSERVICE_CID },
993
#ifdef BUILD_NETWORK_INFO_SERVICE
994
    { NETWORKINFOSERVICE_CONTRACT_ID, &kNETWORKINFOSERVICE_CID },
995
#endif
996
    { nullptr }
997
};
998
999
static const mozilla::Module kNeckoModule = {
1000
    mozilla::Module::kVersion,
1001
    kNeckoCIDs,
1002
    kNeckoContracts,
1003
    kNeckoCategories,
1004
    nullptr,
1005
    nsNetStartup,
1006
    nsNetShutdown
1007
};
1008
1009
NSMODULE_DEFN(necko) = &kNeckoModule;