netwerk/build/nsNetModule.cpp

branch
TOR_BUG_9701
changeset 9
a63d609f5ebe
equal deleted inserted replaced
-1:000000000000 0:ff7cb9d9ada1
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 "nsUnicharStreamLoader.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 "nsApplicationCache.h"
32 #include "nsApplicationCacheService.h"
33 #include "nsMimeTypes.h"
34 #include "nsNetStrings.h"
35 #include "nsDNSPrefetch.h"
36 #include "nsAboutProtocolHandler.h"
37 #include "nsXULAppAPI.h"
38 #include "nsCategoryCache.h"
39 #include "nsIContentSniffer.h"
40 #include "Seer.h"
41 #include "nsNetUtil.h"
42 #include "nsIThreadPool.h"
43 #include "mozilla/net/NeckoChild.h"
44
45 #include "nsNetCID.h"
46
47 #ifndef XP_MACOSX
48 #define BUILD_BINHEX_DECODER 1
49 #endif
50
51 typedef nsCategoryCache<nsIContentSniffer> ContentSnifferCache;
52 NS_HIDDEN_(ContentSnifferCache*) gNetSniffers = nullptr;
53 NS_HIDDEN_(ContentSnifferCache*) gDataSniffers = nullptr;
54
55 ///////////////////////////////////////////////////////////////////////////////
56
57 #include "nsIOService.h"
58 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIOService, nsIOService::GetInstance)
59
60 #include "nsDNSService2.h"
61 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIDNSService,
62 nsDNSService::GetXPCOMSingleton)
63
64 #include "nsProtocolProxyService.h"
65 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsProtocolProxyService, Init)
66
67 #include "nsStreamTransportService.h"
68 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStreamTransportService, Init)
69
70 #include "nsSocketTransportService2.h"
71 #undef LOG
72 #undef LOG_ENABLED
73 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSocketTransportService, Init)
74
75 #include "nsServerSocket.h"
76 NS_GENERIC_FACTORY_CONSTRUCTOR(nsServerSocket)
77
78 #include "nsUDPSocket.h"
79 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUDPSocket)
80
81 #include "nsUDPSocketProvider.h"
82 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUDPSocketProvider)
83
84 #include "nsAsyncStreamCopier.h"
85 NS_GENERIC_FACTORY_CONSTRUCTOR(nsAsyncStreamCopier)
86
87 #include "nsInputStreamPump.h"
88 NS_GENERIC_FACTORY_CONSTRUCTOR(nsInputStreamPump)
89
90 #include "nsInputStreamChannel.h"
91 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsInputStreamChannel, Init)
92
93 #include "nsDownloader.h"
94 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDownloader)
95
96 #include "BackgroundFileSaver.h"
97 namespace mozilla {
98 namespace net {
99 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(BackgroundFileSaverOutputStream, Init)
100 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(BackgroundFileSaverStreamListener, Init)
101 } // namespace net
102 } // namespace mozilla
103
104 #include "nsSyncStreamListener.h"
105 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSyncStreamListener, Init)
106
107 NS_GENERIC_FACTORY_CONSTRUCTOR(nsAtomicFileOutputStream)
108
109 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSafeFileOutputStream)
110
111 NS_GENERIC_FACTORY_CONSTRUCTOR(nsFileStream)
112
113 NS_GENERIC_AGGREGATED_CONSTRUCTOR_INIT(nsLoadGroup, Init)
114
115 #include "ArrayBufferInputStream.h"
116 NS_GENERIC_FACTORY_CONSTRUCTOR(ArrayBufferInputStream)
117
118 #include "nsEffectiveTLDService.h"
119 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsEffectiveTLDService, Init)
120
121 #include "nsSerializationHelper.h"
122 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSerializationHelper)
123
124 #include "RedirectChannelRegistrar.h"
125 typedef mozilla::net::RedirectChannelRegistrar RedirectChannelRegistrar;
126 NS_GENERIC_FACTORY_CONSTRUCTOR(RedirectChannelRegistrar)
127
128 #include "CacheStorageService.h"
129 typedef mozilla::net::CacheStorageService CacheStorageService;
130 NS_GENERIC_FACTORY_CONSTRUCTOR(CacheStorageService)
131
132 ///////////////////////////////////////////////////////////////////////////////
133
134 extern nsresult
135 net_NewIncrementalDownload(nsISupports *, const nsIID &, void **);
136
137 #define NS_INCREMENTALDOWNLOAD_CID \
138 { /* a62af1ba-79b3-4896-8aaf-b148bfce4280 */ \
139 0xa62af1ba, \
140 0x79b3, \
141 0x4896, \
142 {0x8a, 0xaf, 0xb1, 0x48, 0xbf, 0xce, 0x42, 0x80} \
143 }
144
145 ///////////////////////////////////////////////////////////////////////////////
146
147 #include "nsMIMEHeaderParamImpl.h"
148
149 NS_GENERIC_FACTORY_CONSTRUCTOR(nsMIMEHeaderParamImpl)
150 ///////////////////////////////////////////////////////////////////////////////
151
152 #include "nsRequestObserverProxy.h"
153 #include "nsSimpleStreamListener.h"
154 #include "nsDirIndexParser.h"
155 #include "nsDirIndex.h"
156
157 NS_GENERIC_FACTORY_CONSTRUCTOR(nsRequestObserverProxy)
158 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSimpleStreamListener)
159 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsDirIndexParser, Init)
160 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDirIndex)
161
162 ///////////////////////////////////////////////////////////////////////////////
163
164 #include "nsStreamListenerTee.h"
165 NS_GENERIC_FACTORY_CONSTRUCTOR(nsStreamListenerTee)
166
167 ///////////////////////////////////////////////////////////////////////////////
168
169 #ifdef NECKO_COOKIES
170 #include "nsCookieService.h"
171 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsICookieService,
172 nsCookieService::GetXPCOMSingleton)
173 #endif
174
175 ///////////////////////////////////////////////////////////////////////////////
176 #ifdef NECKO_WIFI
177
178 #include "nsWifiMonitor.h"
179 #undef LOG
180 #undef LOG_ENABLED
181 NS_GENERIC_FACTORY_CONSTRUCTOR(nsWifiMonitor)
182
183 #endif
184
185 ///////////////////////////////////////////////////////////////////////////////
186 // protocols
187 ///////////////////////////////////////////////////////////////////////////////
188
189 // about:blank is mandatory
190 #include "nsAboutProtocolHandler.h"
191 #include "nsAboutBlank.h"
192 NS_GENERIC_FACTORY_CONSTRUCTOR(nsAboutProtocolHandler)
193 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSafeAboutProtocolHandler)
194 NS_GENERIC_FACTORY_CONSTRUCTOR(nsNestedAboutURI)
195
196 #ifdef NECKO_PROTOCOL_about
197 // about
198 #ifdef NS_BUILD_REFCNT_LOGGING
199 #include "nsAboutBloat.h"
200 #endif
201 #include "nsAboutCache.h"
202 #include "nsAboutCacheEntry.h"
203 NS_GENERIC_FACTORY_CONSTRUCTOR(nsAboutCacheEntry)
204 #endif
205
206 NS_GENERIC_FACTORY_CONSTRUCTOR(nsApplicationCacheService)
207 NS_GENERIC_FACTORY_CONSTRUCTOR(nsApplicationCacheNamespace)
208 NS_GENERIC_FACTORY_CONSTRUCTOR(nsApplicationCache)
209
210 #ifdef NECKO_PROTOCOL_file
211 // file
212 #include "nsFileProtocolHandler.h"
213 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsFileProtocolHandler, Init)
214 #endif
215
216 #ifdef NECKO_PROTOCOL_ftp
217 // ftp
218 #include "nsFtpProtocolHandler.h"
219 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsFtpProtocolHandler, Init)
220 #endif
221
222 #ifdef NECKO_PROTOCOL_http
223 // http/https
224 #include "nsHttpHandler.h"
225 #undef LOG
226 #undef LOG_ENABLED
227 #include "nsHttpAuthManager.h"
228 #include "nsHttpChannelAuthProvider.h"
229 #include "nsHttpBasicAuth.h"
230 #include "nsHttpDigestAuth.h"
231 #include "nsHttpNTLMAuth.h"
232 #include "nsHttpActivityDistributor.h"
233 #undef LOG
234 #undef LOG_ENABLED
235 namespace mozilla {
236 namespace net {
237 NS_GENERIC_FACTORY_CONSTRUCTOR(nsHttpNTLMAuth)
238 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsHttpHandler, Init)
239 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsHttpsHandler, Init)
240 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsHttpAuthManager, Init)
241 NS_GENERIC_FACTORY_CONSTRUCTOR(nsHttpChannelAuthProvider)
242 NS_GENERIC_FACTORY_CONSTRUCTOR(nsHttpActivityDistributor)
243 NS_GENERIC_FACTORY_CONSTRUCTOR(nsHttpBasicAuth)
244 NS_GENERIC_FACTORY_CONSTRUCTOR(nsHttpDigestAuth)
245 }
246 }
247 #endif // !NECKO_PROTOCOL_http
248
249 #include "mozilla/net/Dashboard.h"
250 namespace mozilla {
251 namespace net {
252 NS_GENERIC_FACTORY_CONSTRUCTOR(Dashboard)
253 }
254 }
255 #include "AppProtocolHandler.h"
256
257 #ifdef NECKO_PROTOCOL_res
258 // resource
259 #include "nsResProtocolHandler.h"
260 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsResProtocolHandler, Init)
261 NS_GENERIC_FACTORY_CONSTRUCTOR(nsResURL)
262 #endif
263
264 #ifdef NECKO_PROTOCOL_device
265 #include "nsDeviceProtocolHandler.h"
266 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDeviceProtocolHandler)
267 #endif
268
269 #ifdef NECKO_PROTOCOL_viewsource
270 #include "nsViewSourceHandler.h"
271 NS_GENERIC_FACTORY_CONSTRUCTOR(nsViewSourceHandler)
272 #endif
273
274 #ifdef NECKO_PROTOCOL_data
275 #include "nsDataHandler.h"
276 #endif
277
278 #ifdef NECKO_PROTOCOL_wyciwyg
279 #include "nsWyciwygProtocolHandler.h"
280 NS_GENERIC_FACTORY_CONSTRUCTOR(nsWyciwygProtocolHandler)
281 #endif
282
283 #ifdef NECKO_PROTOCOL_websocket
284 #include "WebSocketChannel.h"
285 #include "WebSocketChannelChild.h"
286 namespace mozilla {
287 namespace net {
288 static BaseWebSocketChannel*
289 WebSocketChannelConstructor(bool aSecure)
290 {
291 if (IsNeckoChild()) {
292 return new WebSocketChannelChild(aSecure);
293 }
294
295 if (aSecure) {
296 return new WebSocketSSLChannel;
297 } else {
298 return new WebSocketChannel;
299 }
300 }
301
302 #define WEB_SOCKET_HANDLER_CONSTRUCTOR(type, secure) \
303 static nsresult \
304 type##Constructor(nsISupports *aOuter, REFNSIID aIID, \
305 void **aResult) \
306 { \
307 nsresult rv; \
308 \
309 BaseWebSocketChannel * inst; \
310 \
311 *aResult = nullptr; \
312 if (nullptr != aOuter) { \
313 rv = NS_ERROR_NO_AGGREGATION; \
314 return rv; \
315 } \
316 inst = WebSocketChannelConstructor(secure); \
317 NS_ADDREF(inst); \
318 rv = inst->QueryInterface(aIID, aResult); \
319 NS_RELEASE(inst); \
320 return rv; \
321 }
322
323 WEB_SOCKET_HANDLER_CONSTRUCTOR(WebSocketChannel, false)
324 WEB_SOCKET_HANDLER_CONSTRUCTOR(WebSocketSSLChannel, true)
325 #undef WEB_SOCKET_HANDLER_CONSTRUCTOR
326 } // namespace mozilla::net
327 } // namespace mozilla
328 #endif
329
330 #ifdef NECKO_PROTOCOL_rtsp
331 #include "RtspHandler.h"
332 namespace mozilla {
333 namespace net {
334 NS_GENERIC_FACTORY_CONSTRUCTOR(RtspHandler)
335 } // namespace mozilla::net
336 } // namespace mozilla
337 #endif
338
339 ///////////////////////////////////////////////////////////////////////////////
340
341 #include "nsURIChecker.h"
342 NS_GENERIC_FACTORY_CONSTRUCTOR(nsURIChecker)
343
344 ///////////////////////////////////////////////////////////////////////////////
345
346 #include "nsURLParsers.h"
347 NS_GENERIC_FACTORY_CONSTRUCTOR(nsNoAuthURLParser)
348 NS_GENERIC_FACTORY_CONSTRUCTOR(nsAuthURLParser)
349 NS_GENERIC_FACTORY_CONSTRUCTOR(nsStdURLParser)
350
351 #include "nsStandardURL.h"
352 NS_GENERIC_FACTORY_CONSTRUCTOR(nsStandardURL)
353
354 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSimpleURI)
355
356 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSimpleNestedURI)
357
358 ///////////////////////////////////////////////////////////////////////////////
359
360 #include "nsIDNService.h"
361 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsIDNService, Init)
362
363 ///////////////////////////////////////////////////////////////////////////////
364 #if defined(XP_WIN)
365 #include "nsNotifyAddrListener.h"
366 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNotifyAddrListener, Init)
367 #elif defined(MOZ_WIDGET_COCOA)
368 #include "nsNetworkLinkService.h"
369 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNetworkLinkService, Init)
370 #elif defined(MOZ_ENABLE_QTNETWORK)
371 #include "nsQtNetworkLinkService.h"
372 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsQtNetworkLinkService, Init)
373 #elif defined(MOZ_WIDGET_ANDROID)
374 #include "nsAndroidNetworkLinkService.h"
375 NS_GENERIC_FACTORY_CONSTRUCTOR(nsAndroidNetworkLinkService)
376 #endif
377
378 ///////////////////////////////////////////////////////////////////////////////
379
380 #ifdef NECKO_PROTOCOL_ftp
381 #include "nsFTPDirListingConv.h"
382 nsresult NS_NewFTPDirListingConv(nsFTPDirListingConv** result);
383 #endif
384
385 #include "nsStreamConverterService.h"
386 #include "nsMultiMixedConv.h"
387 #include "nsHTTPCompressConv.h"
388 #include "mozTXTToHTMLConv.h"
389 #include "nsUnknownDecoder.h"
390 #include "nsTXTToHTMLConv.h"
391 #include "nsIndexedToHTML.h"
392 #ifdef BUILD_BINHEX_DECODER
393 #include "nsBinHexDecoder.h"
394 #endif
395
396 nsresult NS_NewMultiMixedConv (nsMultiMixedConv** result);
397 nsresult MOZ_NewTXTToHTMLConv (mozTXTToHTMLConv** result);
398 nsresult NS_NewHTTPCompressConv (nsHTTPCompressConv ** result);
399 nsresult NS_NewNSTXTToHTMLConv(nsTXTToHTMLConv** result);
400 nsresult NS_NewStreamConv(nsStreamConverterService **aStreamConv);
401
402 #define FTP_TO_INDEX "?from=text/ftp-dir&to=application/http-index-format"
403 #define INDEX_TO_HTML "?from=application/http-index-format&to=text/html"
404 #define MULTI_MIXED_X "?from=multipart/x-mixed-replace&to=*/*"
405 #define MULTI_MIXED "?from=multipart/mixed&to=*/*"
406 #define MULTI_BYTERANGES "?from=multipart/byteranges&to=*/*"
407 #define UNKNOWN_CONTENT "?from=" UNKNOWN_CONTENT_TYPE "&to=*/*"
408 #define GZIP_TO_UNCOMPRESSED "?from=gzip&to=uncompressed"
409 #define XGZIP_TO_UNCOMPRESSED "?from=x-gzip&to=uncompressed"
410 #define COMPRESS_TO_UNCOMPRESSED "?from=compress&to=uncompressed"
411 #define XCOMPRESS_TO_UNCOMPRESSED "?from=x-compress&to=uncompressed"
412 #define DEFLATE_TO_UNCOMPRESSED "?from=deflate&to=uncompressed"
413 #define PLAIN_TO_HTML "?from=text/plain&to=text/html"
414
415 #ifdef BUILD_BINHEX_DECODER
416 #define BINHEX_TO_WILD "?from=application/mac-binhex40&to=*/*"
417 #endif
418
419 static const mozilla::Module::CategoryEntry kNeckoCategories[] = {
420 { NS_ISTREAMCONVERTER_KEY, FTP_TO_INDEX, "" },
421 { NS_ISTREAMCONVERTER_KEY, INDEX_TO_HTML, "" },
422 { NS_ISTREAMCONVERTER_KEY, MULTI_MIXED_X, "" },
423 { NS_ISTREAMCONVERTER_KEY, MULTI_MIXED, "" },
424 { NS_ISTREAMCONVERTER_KEY, MULTI_BYTERANGES, "" },
425 { NS_ISTREAMCONVERTER_KEY, UNKNOWN_CONTENT, "" },
426 { NS_ISTREAMCONVERTER_KEY, GZIP_TO_UNCOMPRESSED, "" },
427 { NS_ISTREAMCONVERTER_KEY, XGZIP_TO_UNCOMPRESSED, "" },
428 { NS_ISTREAMCONVERTER_KEY, COMPRESS_TO_UNCOMPRESSED, "" },
429 { NS_ISTREAMCONVERTER_KEY, XCOMPRESS_TO_UNCOMPRESSED, "" },
430 { NS_ISTREAMCONVERTER_KEY, DEFLATE_TO_UNCOMPRESSED, "" },
431 #ifdef BUILD_BINHEX_DECODER
432 { NS_ISTREAMCONVERTER_KEY, BINHEX_TO_WILD, "" },
433 #endif
434 { NS_ISTREAMCONVERTER_KEY, PLAIN_TO_HTML, "" },
435 NS_BINARYDETECTOR_CATEGORYENTRY,
436 { nullptr }
437 };
438
439 #ifdef BUILD_BINHEX_DECODER
440 NS_GENERIC_FACTORY_CONSTRUCTOR(nsBinHexDecoder)
441 #endif
442
443 static nsresult
444 CreateNewStreamConvServiceFactory(nsISupports* aOuter, REFNSIID aIID, void **aResult)
445 {
446 if (!aResult) {
447 return NS_ERROR_INVALID_POINTER;
448 }
449 if (aOuter) {
450 *aResult = nullptr;
451 return NS_ERROR_NO_AGGREGATION;
452 }
453 nsStreamConverterService* inst = nullptr;
454 nsresult rv = NS_NewStreamConv(&inst);
455 if (NS_FAILED(rv)) {
456 *aResult = nullptr;
457 return rv;
458 }
459 rv = inst->QueryInterface(aIID, aResult);
460 if (NS_FAILED(rv)) {
461 *aResult = nullptr;
462 }
463 NS_RELEASE(inst); /* get rid of extra refcnt */
464 return rv;
465 }
466
467 #ifdef NECKO_PROTOCOL_ftp
468 static nsresult
469 CreateNewFTPDirListingConv(nsISupports* aOuter, REFNSIID aIID, void **aResult)
470 {
471 if (!aResult) {
472 return NS_ERROR_INVALID_POINTER;
473 }
474 if (aOuter) {
475 *aResult = nullptr;
476 return NS_ERROR_NO_AGGREGATION;
477 }
478 nsFTPDirListingConv* inst = nullptr;
479 nsresult rv = NS_NewFTPDirListingConv(&inst);
480 if (NS_FAILED(rv)) {
481 *aResult = nullptr;
482 return rv;
483 }
484 rv = inst->QueryInterface(aIID, aResult);
485 if (NS_FAILED(rv)) {
486 *aResult = nullptr;
487 }
488 NS_RELEASE(inst); /* get rid of extra refcnt */
489 return rv;
490 }
491 #endif
492
493 static nsresult
494 CreateNewMultiMixedConvFactory(nsISupports* aOuter, REFNSIID aIID, void **aResult)
495 {
496 if (!aResult) {
497 return NS_ERROR_INVALID_POINTER;
498 }
499 if (aOuter) {
500 *aResult = nullptr;
501 return NS_ERROR_NO_AGGREGATION;
502 }
503 nsMultiMixedConv* inst = nullptr;
504 nsresult rv = NS_NewMultiMixedConv(&inst);
505 if (NS_FAILED(rv)) {
506 *aResult = nullptr;
507 return rv;
508 }
509 rv = inst->QueryInterface(aIID, aResult);
510 if (NS_FAILED(rv)) {
511 *aResult = nullptr;
512 }
513 NS_RELEASE(inst); /* get rid of extra refcnt */
514 return rv;
515 }
516
517 static nsresult
518 CreateNewTXTToHTMLConvFactory(nsISupports* aOuter, REFNSIID aIID, void **aResult)
519 {
520 if (!aResult) {
521 return NS_ERROR_INVALID_POINTER;
522 }
523 if (aOuter) {
524 *aResult = nullptr;
525 return NS_ERROR_NO_AGGREGATION;
526 }
527 mozTXTToHTMLConv* inst = nullptr;
528 nsresult rv = MOZ_NewTXTToHTMLConv(&inst);
529 if (NS_FAILED(rv)) {
530 *aResult = nullptr;
531 return rv;
532 }
533 rv = inst->QueryInterface(aIID, aResult);
534 if (NS_FAILED(rv)) {
535 *aResult = nullptr;
536 }
537 NS_RELEASE(inst); /* get rid of extra refcnt */
538 return rv;
539 }
540
541 static nsresult
542 CreateNewHTTPCompressConvFactory (nsISupports* aOuter, REFNSIID aIID, void **aResult)
543 {
544 if (!aResult) {
545 return NS_ERROR_INVALID_POINTER;
546 }
547 if (aOuter) {
548 *aResult = nullptr;
549 return NS_ERROR_NO_AGGREGATION;
550 }
551 nsHTTPCompressConv* inst = nullptr;
552 nsresult rv = NS_NewHTTPCompressConv (&inst);
553 if (NS_FAILED(rv)) {
554 *aResult = nullptr;
555 return rv;
556 }
557 rv = inst->QueryInterface(aIID, aResult);
558 if (NS_FAILED(rv)) {
559 *aResult = nullptr;
560 }
561 NS_RELEASE(inst); /* get rid of extra refcnt */
562 return rv;
563 }
564
565 static nsresult
566 CreateNewUnknownDecoderFactory(nsISupports *aOuter, REFNSIID aIID, void **aResult)
567 {
568 nsresult rv;
569
570 if (!aResult) {
571 return NS_ERROR_NULL_POINTER;
572 }
573 *aResult = nullptr;
574
575 if (aOuter) {
576 return NS_ERROR_NO_AGGREGATION;
577 }
578
579 nsUnknownDecoder *inst;
580
581 inst = new nsUnknownDecoder();
582 if (!inst) {
583 return NS_ERROR_OUT_OF_MEMORY;
584 }
585 NS_ADDREF(inst);
586 rv = inst->QueryInterface(aIID, aResult);
587 NS_RELEASE(inst);
588
589 return rv;
590 }
591
592 static nsresult
593 CreateNewBinaryDetectorFactory(nsISupports *aOuter, REFNSIID aIID, void **aResult)
594 {
595 nsresult rv;
596
597 if (!aResult) {
598 return NS_ERROR_NULL_POINTER;
599 }
600 *aResult = nullptr;
601
602 if (aOuter) {
603 return NS_ERROR_NO_AGGREGATION;
604 }
605
606 nsBinaryDetector* inst = new nsBinaryDetector();
607 if (!inst) {
608 return NS_ERROR_OUT_OF_MEMORY;
609 }
610 NS_ADDREF(inst);
611 rv = inst->QueryInterface(aIID, aResult);
612 NS_RELEASE(inst);
613
614 return rv;
615 }
616
617 static nsresult
618 CreateNewNSTXTToHTMLConvFactory(nsISupports *aOuter, REFNSIID aIID, void **aResult)
619 {
620 nsresult rv;
621
622 if (!aResult) {
623 return NS_ERROR_NULL_POINTER;
624 }
625 *aResult = nullptr;
626
627 if (aOuter) {
628 return NS_ERROR_NO_AGGREGATION;
629 }
630
631 nsTXTToHTMLConv *inst;
632
633 inst = new nsTXTToHTMLConv();
634 if (!inst) return NS_ERROR_OUT_OF_MEMORY;
635
636 NS_ADDREF(inst);
637 rv = inst->Init();
638 if (NS_FAILED(rv)) {
639 delete inst;
640 return rv;
641 }
642 rv = inst->QueryInterface(aIID, aResult);
643 NS_RELEASE(inst);
644
645 return rv;
646 }
647
648 ///////////////////////////////////////////////////////////////////////////////
649 // Module implementation for the net library
650
651 // Net module startup hook
652 static nsresult nsNetStartup()
653 {
654 gNetStrings = new nsNetStrings();
655 return gNetStrings ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
656 }
657
658
659 // Net module shutdown hook
660 static void nsNetShutdown()
661 {
662 // Release the url parser that the stdurl is holding.
663 nsStandardURL::ShutdownGlobalObjects();
664
665 // Release global state used by the URL helper module.
666 net_ShutdownURLHelper();
667 #ifdef XP_MACOSX
668 net_ShutdownURLHelperOSX();
669 #endif
670
671 // Release necko strings
672 delete gNetStrings;
673 gNetStrings = nullptr;
674
675 // Release DNS service reference.
676 nsDNSPrefetch::Shutdown();
677
678 #ifdef NECKO_PROTOCOL_websocket
679 // Release the Websocket Admission Manager
680 mozilla::net::WebSocketChannel::Shutdown();
681 #endif // NECKO_PROTOCOL_websocket
682
683 delete gNetSniffers;
684 gNetSniffers = nullptr;
685 delete gDataSniffers;
686 gDataSniffers = nullptr;
687 }
688
689 NS_DEFINE_NAMED_CID(NS_IOSERVICE_CID);
690 NS_DEFINE_NAMED_CID(NS_STREAMTRANSPORTSERVICE_CID);
691 NS_DEFINE_NAMED_CID(NS_SOCKETTRANSPORTSERVICE_CID);
692 NS_DEFINE_NAMED_CID(NS_SERVERSOCKET_CID);
693 NS_DEFINE_NAMED_CID(NS_UDPSOCKET_CID);
694 NS_DEFINE_NAMED_CID(NS_SOCKETPROVIDERSERVICE_CID);
695 NS_DEFINE_NAMED_CID(NS_DNSSERVICE_CID);
696 NS_DEFINE_NAMED_CID(NS_IDNSERVICE_CID);
697 NS_DEFINE_NAMED_CID(NS_EFFECTIVETLDSERVICE_CID);
698 NS_DEFINE_NAMED_CID(NS_SIMPLEURI_CID);
699 NS_DEFINE_NAMED_CID(NS_SIMPLENESTEDURI_CID);
700 NS_DEFINE_NAMED_CID(NS_ASYNCSTREAMCOPIER_CID);
701 NS_DEFINE_NAMED_CID(NS_INPUTSTREAMPUMP_CID);
702 NS_DEFINE_NAMED_CID(NS_INPUTSTREAMCHANNEL_CID);
703 NS_DEFINE_NAMED_CID(NS_STREAMLOADER_CID);
704 NS_DEFINE_NAMED_CID(NS_UNICHARSTREAMLOADER_CID);
705 NS_DEFINE_NAMED_CID(NS_DOWNLOADER_CID);
706 NS_DEFINE_NAMED_CID(NS_BACKGROUNDFILESAVEROUTPUTSTREAM_CID);
707 NS_DEFINE_NAMED_CID(NS_BACKGROUNDFILESAVERSTREAMLISTENER_CID);
708 NS_DEFINE_NAMED_CID(NS_SYNCSTREAMLISTENER_CID);
709 NS_DEFINE_NAMED_CID(NS_REQUESTOBSERVERPROXY_CID);
710 NS_DEFINE_NAMED_CID(NS_SIMPLESTREAMLISTENER_CID);
711 NS_DEFINE_NAMED_CID(NS_STREAMLISTENERTEE_CID);
712 NS_DEFINE_NAMED_CID(NS_LOADGROUP_CID);
713 NS_DEFINE_NAMED_CID(NS_LOCALFILEINPUTSTREAM_CID);
714 NS_DEFINE_NAMED_CID(NS_LOCALFILEOUTPUTSTREAM_CID);
715 NS_DEFINE_NAMED_CID(NS_PARTIALLOCALFILEINPUTSTREAM_CID);
716 NS_DEFINE_NAMED_CID(NS_ATOMICLOCALFILEOUTPUTSTREAM_CID);
717 NS_DEFINE_NAMED_CID(NS_SAFELOCALFILEOUTPUTSTREAM_CID);
718 NS_DEFINE_NAMED_CID(NS_LOCALFILESTREAM_CID);
719 NS_DEFINE_NAMED_CID(NS_URICHECKER_CID);
720 NS_DEFINE_NAMED_CID(NS_INCREMENTALDOWNLOAD_CID);
721 NS_DEFINE_NAMED_CID(NS_STDURLPARSER_CID);
722 NS_DEFINE_NAMED_CID(NS_NOAUTHURLPARSER_CID);
723 NS_DEFINE_NAMED_CID(NS_AUTHURLPARSER_CID);
724 NS_DEFINE_NAMED_CID(NS_STANDARDURL_CID);
725 NS_DEFINE_NAMED_CID(NS_ARRAYBUFFERINPUTSTREAM_CID);
726 NS_DEFINE_NAMED_CID(NS_BUFFEREDINPUTSTREAM_CID);
727 NS_DEFINE_NAMED_CID(NS_BUFFEREDOUTPUTSTREAM_CID);
728 NS_DEFINE_NAMED_CID(NS_MIMEINPUTSTREAM_CID);
729 NS_DEFINE_NAMED_CID(NS_PROTOCOLPROXYSERVICE_CID);
730 NS_DEFINE_NAMED_CID(NS_STREAMCONVERTERSERVICE_CID);
731 NS_DEFINE_NAMED_CID(NS_DASHBOARD_CID);
732 #ifdef NECKO_PROTOCOL_ftp
733 NS_DEFINE_NAMED_CID(NS_FTPDIRLISTINGCONVERTER_CID);
734 #endif
735 NS_DEFINE_NAMED_CID(NS_NSINDEXEDTOHTMLCONVERTER_CID);
736 NS_DEFINE_NAMED_CID(NS_DIRINDEXPARSER_CID);
737 NS_DEFINE_NAMED_CID(NS_MULTIMIXEDCONVERTER_CID);
738 NS_DEFINE_NAMED_CID(NS_UNKNOWNDECODER_CID);
739 NS_DEFINE_NAMED_CID(NS_BINARYDETECTOR_CID);
740 NS_DEFINE_NAMED_CID(NS_HTTPCOMPRESSCONVERTER_CID);
741 NS_DEFINE_NAMED_CID(NS_NSTXTTOHTMLCONVERTER_CID);
742 #ifdef BUILD_BINHEX_DECODER
743 NS_DEFINE_NAMED_CID(NS_BINHEXDECODER_CID);
744 #endif
745 NS_DEFINE_NAMED_CID(MOZITXTTOHTMLCONV_CID);
746 NS_DEFINE_NAMED_CID(NS_DIRINDEX_CID);
747 NS_DEFINE_NAMED_CID(NS_MIMEHEADERPARAM_CID);
748 #ifdef NECKO_PROTOCOL_file
749 NS_DEFINE_NAMED_CID(NS_FILEPROTOCOLHANDLER_CID);
750 #endif
751 #ifdef NECKO_PROTOCOL_http
752 NS_DEFINE_NAMED_CID(NS_HTTPPROTOCOLHANDLER_CID);
753 NS_DEFINE_NAMED_CID(NS_HTTPSPROTOCOLHANDLER_CID);
754 NS_DEFINE_NAMED_CID(NS_HTTPBASICAUTH_CID);
755 NS_DEFINE_NAMED_CID(NS_HTTPDIGESTAUTH_CID);
756 NS_DEFINE_NAMED_CID(NS_HTTPNTLMAUTH_CID);
757 NS_DEFINE_NAMED_CID(NS_HTTPAUTHMANAGER_CID);
758 NS_DEFINE_NAMED_CID(NS_HTTPCHANNELAUTHPROVIDER_CID);
759 NS_DEFINE_NAMED_CID(NS_HTTPACTIVITYDISTRIBUTOR_CID);
760 #endif // !NECKO_PROTOCOL_http
761 #ifdef NECKO_PROTOCOL_ftp
762 NS_DEFINE_NAMED_CID(NS_FTPPROTOCOLHANDLER_CID);
763 #endif
764 #ifdef NECKO_PROTOCOL_res
765 NS_DEFINE_NAMED_CID(NS_RESPROTOCOLHANDLER_CID);
766 NS_DEFINE_NAMED_CID(NS_RESURL_CID);
767 #endif
768 NS_DEFINE_NAMED_CID(NS_ABOUTPROTOCOLHANDLER_CID);
769 NS_DEFINE_NAMED_CID(NS_SAFEABOUTPROTOCOLHANDLER_CID);
770 NS_DEFINE_NAMED_CID(NS_ABOUT_BLANK_MODULE_CID);
771 NS_DEFINE_NAMED_CID(NS_NESTEDABOUTURI_CID);
772 #ifdef NECKO_PROTOCOL_about
773 #ifdef NS_BUILD_REFCNT_LOGGING
774 NS_DEFINE_NAMED_CID(NS_ABOUT_BLOAT_MODULE_CID);
775 #endif
776 NS_DEFINE_NAMED_CID(NS_ABOUT_CACHE_MODULE_CID);
777 NS_DEFINE_NAMED_CID(NS_ABOUT_CACHE_ENTRY_MODULE_CID);
778 #endif
779 NS_DEFINE_NAMED_CID(NS_SOCKSSOCKETPROVIDER_CID);
780 NS_DEFINE_NAMED_CID(NS_SOCKS4SOCKETPROVIDER_CID);
781 NS_DEFINE_NAMED_CID(NS_UDPSOCKETPROVIDER_CID);
782 NS_DEFINE_NAMED_CID(NS_CACHESERVICE_CID);
783 NS_DEFINE_NAMED_CID(NS_APPLICATIONCACHESERVICE_CID);
784 NS_DEFINE_NAMED_CID(NS_APPLICATIONCACHENAMESPACE_CID);
785 NS_DEFINE_NAMED_CID(NS_APPLICATIONCACHE_CID);
786 NS_DEFINE_NAMED_CID(NS_APPPROTOCOLHANDLER_CID);
787 #ifdef NECKO_COOKIES
788 NS_DEFINE_NAMED_CID(NS_COOKIEMANAGER_CID);
789 NS_DEFINE_NAMED_CID(NS_COOKIESERVICE_CID);
790 #endif
791 #ifdef NECKO_WIFI
792 NS_DEFINE_NAMED_CID(NS_WIFI_MONITOR_COMPONENT_CID);
793 #endif
794 #ifdef NECKO_PROTOCOL_data
795 NS_DEFINE_NAMED_CID(NS_DATAPROTOCOLHANDLER_CID);
796 #endif
797 #ifdef NECKO_PROTOCOL_device
798 NS_DEFINE_NAMED_CID(NS_DEVICEPROTOCOLHANDLER_CID);
799 #endif
800 #ifdef NECKO_PROTOCOL_viewsource
801 NS_DEFINE_NAMED_CID(NS_VIEWSOURCEHANDLER_CID);
802 #endif
803 #ifdef NECKO_PROTOCOL_wyciwyg
804 NS_DEFINE_NAMED_CID(NS_WYCIWYGPROTOCOLHANDLER_CID);
805 #endif
806 #ifdef NECKO_PROTOCOL_websocket
807 NS_DEFINE_NAMED_CID(NS_WEBSOCKETPROTOCOLHANDLER_CID);
808 NS_DEFINE_NAMED_CID(NS_WEBSOCKETSSLPROTOCOLHANDLER_CID);
809 #endif
810 #ifdef NECKO_PROTOCOL_rtsp
811 NS_DEFINE_NAMED_CID(NS_RTSPPROTOCOLHANDLER_CID);
812 #endif
813 #if defined(XP_WIN)
814 NS_DEFINE_NAMED_CID(NS_NETWORK_LINK_SERVICE_CID);
815 #elif defined(MOZ_WIDGET_COCOA)
816 NS_DEFINE_NAMED_CID(NS_NETWORK_LINK_SERVICE_CID);
817 #elif defined(MOZ_ENABLE_QTNETWORK)
818 NS_DEFINE_NAMED_CID(NS_NETWORK_LINK_SERVICE_CID);
819 #elif defined(MOZ_WIDGET_ANDROID)
820 NS_DEFINE_NAMED_CID(NS_NETWORK_LINK_SERVICE_CID);
821 #endif
822 NS_DEFINE_NAMED_CID(NS_SERIALIZATION_HELPER_CID);
823 NS_DEFINE_NAMED_CID(NS_REDIRECTCHANNELREGISTRAR_CID);
824 NS_DEFINE_NAMED_CID(NS_CACHE_STORAGE_SERVICE_CID);
825 NS_DEFINE_NAMED_CID(NS_NETWORKSEER_CID);
826
827 static const mozilla::Module::CIDEntry kNeckoCIDs[] = {
828 { &kNS_IOSERVICE_CID, false, nullptr, nsIOServiceConstructor },
829 { &kNS_STREAMTRANSPORTSERVICE_CID, false, nullptr, nsStreamTransportServiceConstructor },
830 { &kNS_SOCKETTRANSPORTSERVICE_CID, false, nullptr, nsSocketTransportServiceConstructor },
831 { &kNS_SERVERSOCKET_CID, false, nullptr, nsServerSocketConstructor },
832 { &kNS_UDPSOCKET_CID, false, nullptr, nsUDPSocketConstructor },
833 { &kNS_SOCKETPROVIDERSERVICE_CID, false, nullptr, nsSocketProviderService::Create },
834 { &kNS_DNSSERVICE_CID, false, nullptr, nsIDNSServiceConstructor },
835 { &kNS_IDNSERVICE_CID, false, nullptr, nsIDNServiceConstructor },
836 { &kNS_EFFECTIVETLDSERVICE_CID, false, nullptr, nsEffectiveTLDServiceConstructor },
837 { &kNS_SIMPLEURI_CID, false, nullptr, nsSimpleURIConstructor },
838 { &kNS_SIMPLENESTEDURI_CID, false, nullptr, nsSimpleNestedURIConstructor },
839 { &kNS_ASYNCSTREAMCOPIER_CID, false, nullptr, nsAsyncStreamCopierConstructor },
840 { &kNS_INPUTSTREAMPUMP_CID, false, nullptr, nsInputStreamPumpConstructor },
841 { &kNS_INPUTSTREAMCHANNEL_CID, false, nullptr, nsInputStreamChannelConstructor },
842 { &kNS_STREAMLOADER_CID, false, nullptr, nsStreamLoader::Create },
843 { &kNS_UNICHARSTREAMLOADER_CID, false, nullptr, nsUnicharStreamLoader::Create },
844 { &kNS_DOWNLOADER_CID, false, nullptr, nsDownloaderConstructor },
845 { &kNS_BACKGROUNDFILESAVEROUTPUTSTREAM_CID, false, nullptr,
846 mozilla::net::BackgroundFileSaverOutputStreamConstructor },
847 { &kNS_BACKGROUNDFILESAVERSTREAMLISTENER_CID, false, nullptr,
848 mozilla::net::BackgroundFileSaverStreamListenerConstructor },
849 { &kNS_SYNCSTREAMLISTENER_CID, false, nullptr, nsSyncStreamListenerConstructor },
850 { &kNS_REQUESTOBSERVERPROXY_CID, false, nullptr, nsRequestObserverProxyConstructor },
851 { &kNS_SIMPLESTREAMLISTENER_CID, false, nullptr, nsSimpleStreamListenerConstructor },
852 { &kNS_STREAMLISTENERTEE_CID, false, nullptr, nsStreamListenerTeeConstructor },
853 { &kNS_LOADGROUP_CID, false, nullptr, nsLoadGroupConstructor },
854 { &kNS_LOCALFILEINPUTSTREAM_CID, false, nullptr, nsFileInputStream::Create },
855 { &kNS_LOCALFILEOUTPUTSTREAM_CID, false, nullptr, nsFileOutputStream::Create },
856 { &kNS_PARTIALLOCALFILEINPUTSTREAM_CID, false, nullptr, nsPartialFileInputStream::Create },
857 { &kNS_ATOMICLOCALFILEOUTPUTSTREAM_CID, false, nullptr, nsAtomicFileOutputStreamConstructor },
858 { &kNS_SAFELOCALFILEOUTPUTSTREAM_CID, false, nullptr, nsSafeFileOutputStreamConstructor },
859 { &kNS_LOCALFILESTREAM_CID, false, nullptr, nsFileStreamConstructor },
860 { &kNS_URICHECKER_CID, false, nullptr, nsURICheckerConstructor },
861 { &kNS_INCREMENTALDOWNLOAD_CID, false, nullptr, net_NewIncrementalDownload },
862 { &kNS_STDURLPARSER_CID, false, nullptr, nsStdURLParserConstructor },
863 { &kNS_NOAUTHURLPARSER_CID, false, nullptr, nsNoAuthURLParserConstructor },
864 { &kNS_AUTHURLPARSER_CID, false, nullptr, nsAuthURLParserConstructor },
865 { &kNS_STANDARDURL_CID, false, nullptr, nsStandardURLConstructor },
866 { &kNS_ARRAYBUFFERINPUTSTREAM_CID, false, nullptr, ArrayBufferInputStreamConstructor },
867 { &kNS_BUFFEREDINPUTSTREAM_CID, false, nullptr, nsBufferedInputStream::Create },
868 { &kNS_BUFFEREDOUTPUTSTREAM_CID, false, nullptr, nsBufferedOutputStream::Create },
869 { &kNS_MIMEINPUTSTREAM_CID, false, nullptr, nsMIMEInputStreamConstructor },
870 { &kNS_PROTOCOLPROXYSERVICE_CID, true, nullptr, nsProtocolProxyServiceConstructor },
871 { &kNS_STREAMCONVERTERSERVICE_CID, false, nullptr, CreateNewStreamConvServiceFactory },
872 { &kNS_DASHBOARD_CID, false, nullptr, mozilla::net::DashboardConstructor },
873 #ifdef NECKO_PROTOCOL_ftp
874 { &kNS_FTPDIRLISTINGCONVERTER_CID, false, nullptr, CreateNewFTPDirListingConv },
875 #endif
876 { &kNS_NSINDEXEDTOHTMLCONVERTER_CID, false, nullptr, nsIndexedToHTML::Create },
877 { &kNS_DIRINDEXPARSER_CID, false, nullptr, nsDirIndexParserConstructor },
878 { &kNS_MULTIMIXEDCONVERTER_CID, false, nullptr, CreateNewMultiMixedConvFactory },
879 { &kNS_UNKNOWNDECODER_CID, false, nullptr, CreateNewUnknownDecoderFactory },
880 { &kNS_BINARYDETECTOR_CID, false, nullptr, CreateNewBinaryDetectorFactory },
881 { &kNS_HTTPCOMPRESSCONVERTER_CID, false, nullptr, CreateNewHTTPCompressConvFactory },
882 { &kNS_NSTXTTOHTMLCONVERTER_CID, false, nullptr, CreateNewNSTXTToHTMLConvFactory },
883 #ifdef BUILD_BINHEX_DECODER
884 { &kNS_BINHEXDECODER_CID, false, nullptr, nsBinHexDecoderConstructor },
885 #endif
886 { &kMOZITXTTOHTMLCONV_CID, false, nullptr, CreateNewTXTToHTMLConvFactory },
887 { &kNS_DIRINDEX_CID, false, nullptr, nsDirIndexConstructor },
888 { &kNS_MIMEHEADERPARAM_CID, false, nullptr, nsMIMEHeaderParamImplConstructor },
889 #ifdef NECKO_PROTOCOL_file
890 { &kNS_FILEPROTOCOLHANDLER_CID, false, nullptr, nsFileProtocolHandlerConstructor },
891 #endif
892 #ifdef NECKO_PROTOCOL_http
893 { &kNS_HTTPPROTOCOLHANDLER_CID, false, nullptr, mozilla::net::nsHttpHandlerConstructor },
894 { &kNS_HTTPSPROTOCOLHANDLER_CID, false, nullptr, mozilla::net::nsHttpsHandlerConstructor },
895 { &kNS_HTTPBASICAUTH_CID, false, nullptr, mozilla::net::nsHttpBasicAuthConstructor },
896 { &kNS_HTTPDIGESTAUTH_CID, false, nullptr, mozilla::net::nsHttpDigestAuthConstructor },
897 { &kNS_HTTPNTLMAUTH_CID, false, nullptr, mozilla::net::nsHttpNTLMAuthConstructor },
898 { &kNS_HTTPAUTHMANAGER_CID, false, nullptr, mozilla::net::nsHttpAuthManagerConstructor },
899 { &kNS_HTTPCHANNELAUTHPROVIDER_CID, false, nullptr, mozilla::net::nsHttpChannelAuthProviderConstructor },
900 { &kNS_HTTPACTIVITYDISTRIBUTOR_CID, false, nullptr, mozilla::net::nsHttpActivityDistributorConstructor },
901 #endif // !NECKO_PROTOCOL_http
902 #ifdef NECKO_PROTOCOL_ftp
903 { &kNS_FTPPROTOCOLHANDLER_CID, false, nullptr, nsFtpProtocolHandlerConstructor },
904 #endif
905 #ifdef NECKO_PROTOCOL_res
906 { &kNS_RESPROTOCOLHANDLER_CID, false, nullptr, nsResProtocolHandlerConstructor },
907 { &kNS_RESURL_CID, false, nullptr, nsResURLConstructor },
908 #endif
909 { &kNS_ABOUTPROTOCOLHANDLER_CID, false, nullptr, nsAboutProtocolHandlerConstructor },
910 { &kNS_SAFEABOUTPROTOCOLHANDLER_CID, false, nullptr, nsSafeAboutProtocolHandlerConstructor },
911 { &kNS_ABOUT_BLANK_MODULE_CID, false, nullptr, nsAboutBlank::Create },
912 { &kNS_NESTEDABOUTURI_CID, false, nullptr, nsNestedAboutURIConstructor },
913 #ifdef NECKO_PROTOCOL_about
914 #ifdef NS_BUILD_REFCNT_LOGGING
915 { &kNS_ABOUT_BLOAT_MODULE_CID, false, nullptr, nsAboutBloat::Create },
916 #endif
917 { &kNS_ABOUT_CACHE_MODULE_CID, false, nullptr, nsAboutCache::Create },
918 { &kNS_ABOUT_CACHE_ENTRY_MODULE_CID, false, nullptr, nsAboutCacheEntryConstructor },
919 #endif
920 { &kNS_SOCKSSOCKETPROVIDER_CID, false, nullptr, nsSOCKSSocketProvider::CreateV5 },
921 { &kNS_SOCKS4SOCKETPROVIDER_CID, false, nullptr, nsSOCKSSocketProvider::CreateV4 },
922 { &kNS_UDPSOCKETPROVIDER_CID, false, nullptr, nsUDPSocketProviderConstructor },
923 { &kNS_CACHESERVICE_CID, false, nullptr, nsCacheService::Create },
924 { &kNS_APPLICATIONCACHESERVICE_CID, false, nullptr, nsApplicationCacheServiceConstructor },
925 { &kNS_APPLICATIONCACHENAMESPACE_CID, false, nullptr, nsApplicationCacheNamespaceConstructor },
926 { &kNS_APPLICATIONCACHE_CID, false, nullptr, nsApplicationCacheConstructor },
927 { &kNS_APPPROTOCOLHANDLER_CID, false, nullptr, AppProtocolHandler::Create },
928 #ifdef NECKO_COOKIES
929 { &kNS_COOKIEMANAGER_CID, false, nullptr, nsICookieServiceConstructor },
930 { &kNS_COOKIESERVICE_CID, false, nullptr, nsICookieServiceConstructor },
931 #endif
932 #ifdef NECKO_WIFI
933 { &kNS_WIFI_MONITOR_COMPONENT_CID, false, nullptr, nsWifiMonitorConstructor },
934 #endif
935 #ifdef NECKO_PROTOCOL_data
936 { &kNS_DATAPROTOCOLHANDLER_CID, false, nullptr, nsDataHandler::Create },
937 #endif
938 #ifdef NECKO_PROTOCOL_device
939 { &kNS_DEVICEPROTOCOLHANDLER_CID, false, nullptr, nsDeviceProtocolHandlerConstructor},
940 #endif
941 #ifdef NECKO_PROTOCOL_viewsource
942 { &kNS_VIEWSOURCEHANDLER_CID, false, nullptr, nsViewSourceHandlerConstructor },
943 #endif
944 #ifdef NECKO_PROTOCOL_wyciwyg
945 { &kNS_WYCIWYGPROTOCOLHANDLER_CID, false, nullptr, nsWyciwygProtocolHandlerConstructor },
946 #endif
947 #ifdef NECKO_PROTOCOL_websocket
948 { &kNS_WEBSOCKETPROTOCOLHANDLER_CID, false, nullptr,
949 mozilla::net::WebSocketChannelConstructor },
950 { &kNS_WEBSOCKETSSLPROTOCOLHANDLER_CID, false, nullptr,
951 mozilla::net::WebSocketSSLChannelConstructor },
952 #endif
953 #ifdef NECKO_PROTOCOL_rtsp
954 { &kNS_RTSPPROTOCOLHANDLER_CID, false, nullptr, mozilla::net::RtspHandlerConstructor },
955 #endif
956 #if defined(XP_WIN)
957 { &kNS_NETWORK_LINK_SERVICE_CID, false, nullptr, nsNotifyAddrListenerConstructor },
958 #elif defined(MOZ_WIDGET_COCOA)
959 { &kNS_NETWORK_LINK_SERVICE_CID, false, nullptr, nsNetworkLinkServiceConstructor },
960 #elif defined(MOZ_ENABLE_QTNETWORK)
961 { &kNS_NETWORK_LINK_SERVICE_CID, false, nullptr, nsQtNetworkLinkServiceConstructor },
962 #elif defined(MOZ_WIDGET_ANDROID)
963 { &kNS_NETWORK_LINK_SERVICE_CID, false, nullptr, nsAndroidNetworkLinkServiceConstructor },
964 #endif
965 { &kNS_SERIALIZATION_HELPER_CID, false, nullptr, nsSerializationHelperConstructor },
966 { &kNS_REDIRECTCHANNELREGISTRAR_CID, false, nullptr, RedirectChannelRegistrarConstructor },
967 { &kNS_CACHE_STORAGE_SERVICE_CID, false, nullptr, CacheStorageServiceConstructor },
968 { &kNS_NETWORKSEER_CID, false, nullptr, mozilla::net::Seer::Create },
969 { nullptr }
970 };
971
972 static const mozilla::Module::ContractIDEntry kNeckoContracts[] = {
973 { NS_IOSERVICE_CONTRACTID, &kNS_IOSERVICE_CID },
974 { NS_NETUTIL_CONTRACTID, &kNS_IOSERVICE_CID },
975 { NS_STREAMTRANSPORTSERVICE_CONTRACTID, &kNS_STREAMTRANSPORTSERVICE_CID },
976 { NS_SOCKETTRANSPORTSERVICE_CONTRACTID, &kNS_SOCKETTRANSPORTSERVICE_CID },
977 { NS_SERVERSOCKET_CONTRACTID, &kNS_SERVERSOCKET_CID },
978 { NS_UDPSOCKET_CONTRACTID, &kNS_UDPSOCKET_CID },
979 { NS_SOCKETPROVIDERSERVICE_CONTRACTID, &kNS_SOCKETPROVIDERSERVICE_CID },
980 { NS_DNSSERVICE_CONTRACTID, &kNS_DNSSERVICE_CID },
981 { NS_IDNSERVICE_CONTRACTID, &kNS_IDNSERVICE_CID },
982 { NS_EFFECTIVETLDSERVICE_CONTRACTID, &kNS_EFFECTIVETLDSERVICE_CID },
983 { NS_SIMPLEURI_CONTRACTID, &kNS_SIMPLEURI_CID },
984 { NS_ASYNCSTREAMCOPIER_CONTRACTID, &kNS_ASYNCSTREAMCOPIER_CID },
985 { NS_INPUTSTREAMPUMP_CONTRACTID, &kNS_INPUTSTREAMPUMP_CID },
986 { NS_INPUTSTREAMCHANNEL_CONTRACTID, &kNS_INPUTSTREAMCHANNEL_CID },
987 { NS_STREAMLOADER_CONTRACTID, &kNS_STREAMLOADER_CID },
988 { NS_UNICHARSTREAMLOADER_CONTRACTID, &kNS_UNICHARSTREAMLOADER_CID },
989 { NS_DOWNLOADER_CONTRACTID, &kNS_DOWNLOADER_CID },
990 { NS_BACKGROUNDFILESAVEROUTPUTSTREAM_CONTRACTID, &kNS_BACKGROUNDFILESAVEROUTPUTSTREAM_CID },
991 { NS_BACKGROUNDFILESAVERSTREAMLISTENER_CONTRACTID, &kNS_BACKGROUNDFILESAVERSTREAMLISTENER_CID },
992 { NS_SYNCSTREAMLISTENER_CONTRACTID, &kNS_SYNCSTREAMLISTENER_CID },
993 { NS_REQUESTOBSERVERPROXY_CONTRACTID, &kNS_REQUESTOBSERVERPROXY_CID },
994 { NS_SIMPLESTREAMLISTENER_CONTRACTID, &kNS_SIMPLESTREAMLISTENER_CID },
995 { NS_STREAMLISTENERTEE_CONTRACTID, &kNS_STREAMLISTENERTEE_CID },
996 { NS_LOADGROUP_CONTRACTID, &kNS_LOADGROUP_CID },
997 { NS_LOCALFILEINPUTSTREAM_CONTRACTID, &kNS_LOCALFILEINPUTSTREAM_CID },
998 { NS_LOCALFILEOUTPUTSTREAM_CONTRACTID, &kNS_LOCALFILEOUTPUTSTREAM_CID },
999 { NS_PARTIALLOCALFILEINPUTSTREAM_CONTRACTID, &kNS_PARTIALLOCALFILEINPUTSTREAM_CID },
1000 { NS_ATOMICLOCALFILEOUTPUTSTREAM_CONTRACTID, &kNS_ATOMICLOCALFILEOUTPUTSTREAM_CID },
1001 { NS_SAFELOCALFILEOUTPUTSTREAM_CONTRACTID, &kNS_SAFELOCALFILEOUTPUTSTREAM_CID },
1002 { NS_LOCALFILESTREAM_CONTRACTID, &kNS_LOCALFILESTREAM_CID },
1003 { NS_URICHECKER_CONTRACT_ID, &kNS_URICHECKER_CID },
1004 { NS_INCREMENTALDOWNLOAD_CONTRACTID, &kNS_INCREMENTALDOWNLOAD_CID },
1005 { NS_STDURLPARSER_CONTRACTID, &kNS_STDURLPARSER_CID },
1006 { NS_NOAUTHURLPARSER_CONTRACTID, &kNS_NOAUTHURLPARSER_CID },
1007 { NS_AUTHURLPARSER_CONTRACTID, &kNS_AUTHURLPARSER_CID },
1008 { NS_STANDARDURL_CONTRACTID, &kNS_STANDARDURL_CID },
1009 { NS_ARRAYBUFFERINPUTSTREAM_CONTRACTID, &kNS_ARRAYBUFFERINPUTSTREAM_CID },
1010 { NS_BUFFEREDINPUTSTREAM_CONTRACTID, &kNS_BUFFEREDINPUTSTREAM_CID },
1011 { NS_BUFFEREDOUTPUTSTREAM_CONTRACTID, &kNS_BUFFEREDOUTPUTSTREAM_CID },
1012 { NS_MIMEINPUTSTREAM_CONTRACTID, &kNS_MIMEINPUTSTREAM_CID },
1013 { NS_PROTOCOLPROXYSERVICE_CONTRACTID, &kNS_PROTOCOLPROXYSERVICE_CID },
1014 { NS_STREAMCONVERTERSERVICE_CONTRACTID, &kNS_STREAMCONVERTERSERVICE_CID },
1015 { NS_DASHBOARD_CONTRACTID, &kNS_DASHBOARD_CID },
1016 #ifdef NECKO_PROTOCOL_ftp
1017 { NS_ISTREAMCONVERTER_KEY FTP_TO_INDEX, &kNS_FTPDIRLISTINGCONVERTER_CID },
1018 #endif
1019 { NS_ISTREAMCONVERTER_KEY INDEX_TO_HTML, &kNS_NSINDEXEDTOHTMLCONVERTER_CID },
1020 { NS_DIRINDEXPARSER_CONTRACTID, &kNS_DIRINDEXPARSER_CID },
1021 { NS_ISTREAMCONVERTER_KEY MULTI_MIXED_X, &kNS_MULTIMIXEDCONVERTER_CID },
1022 { NS_ISTREAMCONVERTER_KEY MULTI_BYTERANGES, &kNS_MULTIMIXEDCONVERTER_CID },
1023 { NS_ISTREAMCONVERTER_KEY MULTI_MIXED, &kNS_MULTIMIXEDCONVERTER_CID },
1024 { NS_ISTREAMCONVERTER_KEY UNKNOWN_CONTENT, &kNS_UNKNOWNDECODER_CID },
1025 { NS_GENERIC_CONTENT_SNIFFER, &kNS_UNKNOWNDECODER_CID },
1026 { NS_BINARYDETECTOR_CONTRACTID, &kNS_BINARYDETECTOR_CID },
1027 { NS_ISTREAMCONVERTER_KEY GZIP_TO_UNCOMPRESSED, &kNS_HTTPCOMPRESSCONVERTER_CID },
1028 { NS_ISTREAMCONVERTER_KEY XGZIP_TO_UNCOMPRESSED, &kNS_HTTPCOMPRESSCONVERTER_CID },
1029 { NS_ISTREAMCONVERTER_KEY COMPRESS_TO_UNCOMPRESSED, &kNS_HTTPCOMPRESSCONVERTER_CID },
1030 { NS_ISTREAMCONVERTER_KEY XCOMPRESS_TO_UNCOMPRESSED, &kNS_HTTPCOMPRESSCONVERTER_CID },
1031 { NS_ISTREAMCONVERTER_KEY DEFLATE_TO_UNCOMPRESSED, &kNS_HTTPCOMPRESSCONVERTER_CID },
1032 { NS_ISTREAMCONVERTER_KEY PLAIN_TO_HTML, &kNS_NSTXTTOHTMLCONVERTER_CID },
1033 #ifdef BUILD_BINHEX_DECODER
1034 { NS_ISTREAMCONVERTER_KEY BINHEX_TO_WILD, &kNS_BINHEXDECODER_CID },
1035 #endif
1036 { MOZ_TXTTOHTMLCONV_CONTRACTID, &kMOZITXTTOHTMLCONV_CID },
1037 { "@mozilla.org/dirIndex;1", &kNS_DIRINDEX_CID },
1038 { NS_MIMEHEADERPARAM_CONTRACTID, &kNS_MIMEHEADERPARAM_CID },
1039 #ifdef NECKO_PROTOCOL_file
1040 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "file", &kNS_FILEPROTOCOLHANDLER_CID },
1041 #endif
1042 #ifdef NECKO_PROTOCOL_http
1043 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "http", &kNS_HTTPPROTOCOLHANDLER_CID },
1044 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "https", &kNS_HTTPSPROTOCOLHANDLER_CID },
1045 { NS_HTTP_AUTHENTICATOR_CONTRACTID_PREFIX "basic", &kNS_HTTPBASICAUTH_CID },
1046 { NS_HTTP_AUTHENTICATOR_CONTRACTID_PREFIX "digest", &kNS_HTTPDIGESTAUTH_CID },
1047 { NS_HTTP_AUTHENTICATOR_CONTRACTID_PREFIX "ntlm", &kNS_HTTPNTLMAUTH_CID },
1048 { NS_HTTPAUTHMANAGER_CONTRACTID, &kNS_HTTPAUTHMANAGER_CID },
1049 { NS_HTTPCHANNELAUTHPROVIDER_CONTRACTID, &kNS_HTTPCHANNELAUTHPROVIDER_CID },
1050 { NS_HTTPACTIVITYDISTRIBUTOR_CONTRACTID, &kNS_HTTPACTIVITYDISTRIBUTOR_CID },
1051 #endif // !NECKO_PROTOCOL_http
1052 #ifdef NECKO_PROTOCOL_ftp
1053 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "ftp", &kNS_FTPPROTOCOLHANDLER_CID },
1054 #endif
1055 #ifdef NECKO_PROTOCOL_res
1056 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "resource", &kNS_RESPROTOCOLHANDLER_CID },
1057 #endif
1058 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "about", &kNS_ABOUTPROTOCOLHANDLER_CID },
1059 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "moz-safe-about", &kNS_SAFEABOUTPROTOCOLHANDLER_CID },
1060 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "blank", &kNS_ABOUT_BLANK_MODULE_CID },
1061 #ifdef NECKO_PROTOCOL_about
1062 #ifdef NS_BUILD_REFCNT_LOGGING
1063 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "bloat", &kNS_ABOUT_BLOAT_MODULE_CID },
1064 #endif
1065 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "cache", &kNS_ABOUT_CACHE_MODULE_CID },
1066 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "cache-entry", &kNS_ABOUT_CACHE_ENTRY_MODULE_CID },
1067 #endif
1068 { NS_NETWORK_SOCKET_CONTRACTID_PREFIX "socks", &kNS_SOCKSSOCKETPROVIDER_CID },
1069 { NS_NETWORK_SOCKET_CONTRACTID_PREFIX "socks4", &kNS_SOCKS4SOCKETPROVIDER_CID },
1070 { NS_NETWORK_SOCKET_CONTRACTID_PREFIX "udp", &kNS_UDPSOCKETPROVIDER_CID },
1071 { NS_CACHESERVICE_CONTRACTID, &kNS_CACHESERVICE_CID },
1072 { NS_APPLICATIONCACHESERVICE_CONTRACTID, &kNS_APPLICATIONCACHESERVICE_CID },
1073 { NS_APPLICATIONCACHENAMESPACE_CONTRACTID, &kNS_APPLICATIONCACHENAMESPACE_CID },
1074 { NS_APPLICATIONCACHE_CONTRACTID, &kNS_APPLICATIONCACHE_CID },
1075 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "app", &kNS_APPPROTOCOLHANDLER_CID },
1076 #ifdef NECKO_COOKIES
1077 { NS_COOKIEMANAGER_CONTRACTID, &kNS_COOKIEMANAGER_CID },
1078 { NS_COOKIESERVICE_CONTRACTID, &kNS_COOKIESERVICE_CID },
1079 #endif
1080 #ifdef NECKO_WIFI
1081 { NS_WIFI_MONITOR_CONTRACTID, &kNS_WIFI_MONITOR_COMPONENT_CID },
1082 #endif
1083 #ifdef NECKO_PROTOCOL_data
1084 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "data", &kNS_DATAPROTOCOLHANDLER_CID },
1085 #endif
1086 #ifdef NECKO_PROTOCOL_device
1087 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "moz-device", &kNS_DEVICEPROTOCOLHANDLER_CID },
1088 #endif
1089 #ifdef NECKO_PROTOCOL_viewsource
1090 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "view-source", &kNS_VIEWSOURCEHANDLER_CID },
1091 #endif
1092 #ifdef NECKO_PROTOCOL_wyciwyg
1093 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "wyciwyg", &kNS_WYCIWYGPROTOCOLHANDLER_CID },
1094 #endif
1095 #ifdef NECKO_PROTOCOL_websocket
1096 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "ws", &kNS_WEBSOCKETPROTOCOLHANDLER_CID },
1097 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "wss", &kNS_WEBSOCKETSSLPROTOCOLHANDLER_CID },
1098 #endif
1099 #ifdef NECKO_PROTOCOL_rtsp
1100 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "rtsp", &kNS_RTSPPROTOCOLHANDLER_CID },
1101 #endif
1102 #if defined(XP_WIN)
1103 { NS_NETWORK_LINK_SERVICE_CONTRACTID, &kNS_NETWORK_LINK_SERVICE_CID },
1104 #elif defined(MOZ_WIDGET_COCOA)
1105 { NS_NETWORK_LINK_SERVICE_CONTRACTID, &kNS_NETWORK_LINK_SERVICE_CID },
1106 #elif defined(MOZ_ENABLE_QTNETWORK)
1107 { NS_NETWORK_LINK_SERVICE_CONTRACTID, &kNS_NETWORK_LINK_SERVICE_CID },
1108 #elif defined(MOZ_WIDGET_ANDROID)
1109 { NS_NETWORK_LINK_SERVICE_CONTRACTID, &kNS_NETWORK_LINK_SERVICE_CID },
1110 #endif
1111 { NS_SERIALIZATION_HELPER_CONTRACTID, &kNS_SERIALIZATION_HELPER_CID },
1112 { NS_REDIRECTCHANNELREGISTRAR_CONTRACTID, &kNS_REDIRECTCHANNELREGISTRAR_CID },
1113 { NS_CACHE_STORAGE_SERVICE_CONTRACTID, &kNS_CACHE_STORAGE_SERVICE_CID },
1114 { NS_NETWORKSEER_CONTRACTID, &kNS_NETWORKSEER_CID },
1115 { nullptr }
1116 };
1117
1118 static const mozilla::Module kNeckoModule = {
1119 mozilla::Module::kVersion,
1120 kNeckoCIDs,
1121 kNeckoContracts,
1122 kNeckoCategories,
1123 nullptr,
1124 nsNetStartup,
1125 nsNetShutdown
1126 };
1127
1128 NSMODULE_DEFN(necko) = &kNeckoModule;

mercurial