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