netwerk/build/nsNetModule.cpp

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     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/. */
     7 #include "necko-config.h"
     9 #define ALLOW_LATE_HTTPLOG_H_INCLUDE 1
    10 #include "base/basictypes.h"
    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"
    45 #include "nsNetCID.h"
    47 #ifndef XP_MACOSX
    48 #define BUILD_BINHEX_DECODER 1
    49 #endif
    51 typedef nsCategoryCache<nsIContentSniffer> ContentSnifferCache;
    52 NS_HIDDEN_(ContentSnifferCache*) gNetSniffers = nullptr;
    53 NS_HIDDEN_(ContentSnifferCache*) gDataSniffers = nullptr;
    55 ///////////////////////////////////////////////////////////////////////////////
    57 #include "nsIOService.h"
    58 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIOService, nsIOService::GetInstance)
    60 #include "nsDNSService2.h"
    61 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIDNSService,
    62   nsDNSService::GetXPCOMSingleton)
    64 #include "nsProtocolProxyService.h"
    65 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsProtocolProxyService, Init)
    67 #include "nsStreamTransportService.h"
    68 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStreamTransportService, Init)
    70 #include "nsSocketTransportService2.h"
    71 #undef LOG
    72 #undef LOG_ENABLED
    73 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSocketTransportService, Init)
    75 #include "nsServerSocket.h"
    76 NS_GENERIC_FACTORY_CONSTRUCTOR(nsServerSocket)
    78 #include "nsUDPSocket.h"
    79 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUDPSocket)
    81 #include "nsUDPSocketProvider.h"
    82 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUDPSocketProvider)
    84 #include "nsAsyncStreamCopier.h"
    85 NS_GENERIC_FACTORY_CONSTRUCTOR(nsAsyncStreamCopier)
    87 #include "nsInputStreamPump.h"
    88 NS_GENERIC_FACTORY_CONSTRUCTOR(nsInputStreamPump)
    90 #include "nsInputStreamChannel.h"
    91 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsInputStreamChannel, Init)
    93 #include "nsDownloader.h"
    94 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDownloader)
    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
   104 #include "nsSyncStreamListener.h"
   105 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSyncStreamListener, Init)
   107 NS_GENERIC_FACTORY_CONSTRUCTOR(nsAtomicFileOutputStream)
   109 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSafeFileOutputStream)
   111 NS_GENERIC_FACTORY_CONSTRUCTOR(nsFileStream)
   113 NS_GENERIC_AGGREGATED_CONSTRUCTOR_INIT(nsLoadGroup, Init)
   115 #include "ArrayBufferInputStream.h"
   116 NS_GENERIC_FACTORY_CONSTRUCTOR(ArrayBufferInputStream)
   118 #include "nsEffectiveTLDService.h"
   119 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsEffectiveTLDService, Init)
   121 #include "nsSerializationHelper.h"
   122 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSerializationHelper)
   124 #include "RedirectChannelRegistrar.h"
   125 typedef mozilla::net::RedirectChannelRegistrar RedirectChannelRegistrar;
   126 NS_GENERIC_FACTORY_CONSTRUCTOR(RedirectChannelRegistrar)
   128 #include "CacheStorageService.h"
   129 typedef mozilla::net::CacheStorageService CacheStorageService;
   130 NS_GENERIC_FACTORY_CONSTRUCTOR(CacheStorageService)
   132 ///////////////////////////////////////////////////////////////////////////////
   134 extern nsresult
   135 net_NewIncrementalDownload(nsISupports *, const nsIID &, void **);
   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 }
   145 ///////////////////////////////////////////////////////////////////////////////
   147 #include "nsMIMEHeaderParamImpl.h"
   149 NS_GENERIC_FACTORY_CONSTRUCTOR(nsMIMEHeaderParamImpl)
   150 ///////////////////////////////////////////////////////////////////////////////
   152 #include "nsRequestObserverProxy.h"
   153 #include "nsSimpleStreamListener.h"
   154 #include "nsDirIndexParser.h"
   155 #include "nsDirIndex.h"
   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)
   162 ///////////////////////////////////////////////////////////////////////////////
   164 #include "nsStreamListenerTee.h"
   165 NS_GENERIC_FACTORY_CONSTRUCTOR(nsStreamListenerTee)
   167 ///////////////////////////////////////////////////////////////////////////////
   169 #ifdef NECKO_COOKIES
   170 #include "nsCookieService.h"
   171 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsICookieService,
   172   nsCookieService::GetXPCOMSingleton)
   173 #endif
   175 ///////////////////////////////////////////////////////////////////////////////
   176 #ifdef NECKO_WIFI
   178 #include "nsWifiMonitor.h"
   179 #undef LOG
   180 #undef LOG_ENABLED
   181 NS_GENERIC_FACTORY_CONSTRUCTOR(nsWifiMonitor)
   183 #endif
   185 ///////////////////////////////////////////////////////////////////////////////
   186 // protocols
   187 ///////////////////////////////////////////////////////////////////////////////
   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)
   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
   206 NS_GENERIC_FACTORY_CONSTRUCTOR(nsApplicationCacheService)
   207 NS_GENERIC_FACTORY_CONSTRUCTOR(nsApplicationCacheNamespace)
   208 NS_GENERIC_FACTORY_CONSTRUCTOR(nsApplicationCache)
   210 #ifdef NECKO_PROTOCOL_file
   211 // file
   212 #include "nsFileProtocolHandler.h"
   213 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsFileProtocolHandler, Init)
   214 #endif
   216 #ifdef NECKO_PROTOCOL_ftp
   217 // ftp
   218 #include "nsFtpProtocolHandler.h"
   219 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsFtpProtocolHandler, Init)
   220 #endif
   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
   249 #include "mozilla/net/Dashboard.h"
   250 namespace mozilla {
   251 namespace net {
   252   NS_GENERIC_FACTORY_CONSTRUCTOR(Dashboard)
   253 }
   254 }
   255 #include "AppProtocolHandler.h"
   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
   264 #ifdef NECKO_PROTOCOL_device
   265 #include "nsDeviceProtocolHandler.h"
   266 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDeviceProtocolHandler)
   267 #endif
   269 #ifdef NECKO_PROTOCOL_viewsource
   270 #include "nsViewSourceHandler.h"
   271 NS_GENERIC_FACTORY_CONSTRUCTOR(nsViewSourceHandler)
   272 #endif
   274 #ifdef NECKO_PROTOCOL_data
   275 #include "nsDataHandler.h"
   276 #endif
   278 #ifdef NECKO_PROTOCOL_wyciwyg
   279 #include "nsWyciwygProtocolHandler.h"
   280 NS_GENERIC_FACTORY_CONSTRUCTOR(nsWyciwygProtocolHandler)
   281 #endif
   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   }
   295   if (aSecure) {
   296     return new WebSocketSSLChannel;
   297   } else {
   298     return new WebSocketChannel;
   299   }
   300 }
   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 }
   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
   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
   339 ///////////////////////////////////////////////////////////////////////////////
   341 #include "nsURIChecker.h"
   342 NS_GENERIC_FACTORY_CONSTRUCTOR(nsURIChecker)
   344 ///////////////////////////////////////////////////////////////////////////////
   346 #include "nsURLParsers.h"
   347 NS_GENERIC_FACTORY_CONSTRUCTOR(nsNoAuthURLParser)
   348 NS_GENERIC_FACTORY_CONSTRUCTOR(nsAuthURLParser)
   349 NS_GENERIC_FACTORY_CONSTRUCTOR(nsStdURLParser)
   351 #include "nsStandardURL.h"
   352 NS_GENERIC_FACTORY_CONSTRUCTOR(nsStandardURL)
   354 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSimpleURI)
   356 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSimpleNestedURI)
   358 ///////////////////////////////////////////////////////////////////////////////
   360 #include "nsIDNService.h"
   361 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsIDNService, Init)
   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
   378 ///////////////////////////////////////////////////////////////////////////////
   380 #ifdef NECKO_PROTOCOL_ftp
   381 #include "nsFTPDirListingConv.h"
   382 nsresult NS_NewFTPDirListingConv(nsFTPDirListingConv** result);
   383 #endif
   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
   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);
   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"
   415 #ifdef BUILD_BINHEX_DECODER
   416 #define BINHEX_TO_WILD               "?from=application/mac-binhex40&to=*/*"
   417 #endif
   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 };
   439 #ifdef BUILD_BINHEX_DECODER
   440 NS_GENERIC_FACTORY_CONSTRUCTOR(nsBinHexDecoder)
   441 #endif
   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 }
   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
   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 }
   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 }
   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 }
   565 static nsresult
   566 CreateNewUnknownDecoderFactory(nsISupports *aOuter, REFNSIID aIID, void **aResult)
   567 {
   568   nsresult rv;
   570   if (!aResult) {
   571     return NS_ERROR_NULL_POINTER;
   572   }
   573   *aResult = nullptr;
   575   if (aOuter) {
   576     return NS_ERROR_NO_AGGREGATION;
   577   }
   579   nsUnknownDecoder *inst;
   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);
   589   return rv;
   590 }
   592 static nsresult
   593 CreateNewBinaryDetectorFactory(nsISupports *aOuter, REFNSIID aIID, void **aResult)
   594 {
   595   nsresult rv;
   597   if (!aResult) {
   598     return NS_ERROR_NULL_POINTER;
   599   }
   600   *aResult = nullptr;
   602   if (aOuter) {
   603     return NS_ERROR_NO_AGGREGATION;
   604   }
   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);
   614   return rv;
   615 }
   617 static nsresult
   618 CreateNewNSTXTToHTMLConvFactory(nsISupports *aOuter, REFNSIID aIID, void **aResult)
   619 {
   620   nsresult rv;
   622   if (!aResult) {
   623     return NS_ERROR_NULL_POINTER;
   624   }
   625   *aResult = nullptr;
   627   if (aOuter) {
   628     return NS_ERROR_NO_AGGREGATION;
   629   }
   631   nsTXTToHTMLConv *inst;
   633   inst = new nsTXTToHTMLConv();
   634   if (!inst) return NS_ERROR_OUT_OF_MEMORY;
   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);
   645   return rv;
   646 }
   648 ///////////////////////////////////////////////////////////////////////////////
   649 // Module implementation for the net library
   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 }
   659 // Net module shutdown hook
   660 static void nsNetShutdown()
   661 {
   662     // Release the url parser that the stdurl is holding.
   663     nsStandardURL::ShutdownGlobalObjects();
   665     // Release global state used by the URL helper module.
   666     net_ShutdownURLHelper();
   667 #ifdef XP_MACOSX
   668     net_ShutdownURLHelperOSX();
   669 #endif
   671     // Release necko strings
   672     delete gNetStrings;
   673     gNetStrings = nullptr;
   675     // Release DNS service reference.
   676     nsDNSPrefetch::Shutdown();
   678 #ifdef NECKO_PROTOCOL_websocket
   679     // Release the Websocket Admission Manager
   680     mozilla::net::WebSocketChannel::Shutdown();
   681 #endif // NECKO_PROTOCOL_websocket
   683     delete gNetSniffers;
   684     gNetSniffers = nullptr;
   685     delete gDataSniffers;
   686     gDataSniffers = nullptr;
   687 }
   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);
   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 };
   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 };
  1118 static const mozilla::Module kNeckoModule = {
  1119     mozilla::Module::kVersion,
  1120     kNeckoCIDs,
  1121     kNeckoContracts,
  1122     kNeckoCategories,
  1123     nullptr,
  1124     nsNetStartup,
  1125     nsNetShutdown
  1126 };
  1128 NSMODULE_DEFN(necko) = &kNeckoModule;

mercurial