# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

XPIDL_SOURCES += [
    'mozIThirdPartyUtil.idl',
    'nsIApplicationCache.idl',
    'nsIApplicationCacheChannel.idl',
    'nsIApplicationCacheContainer.idl',
    'nsIApplicationCacheService.idl',
    'nsIArrayBufferInputStream.idl',
    'nsIAsyncStreamCopier.idl',
    'nsIAsyncStreamCopier2.idl',
    'nsIAsyncVerifyRedirectCallback.idl',
    'nsIAuthInformation.idl',
    'nsIAuthModule.idl',
    'nsIAuthPrompt.idl',
    'nsIAuthPrompt2.idl',
    'nsIAuthPromptAdapterFactory.idl',
    'nsIAuthPromptCallback.idl',
    'nsIAuthPromptProvider.idl',
    'nsIBackgroundFileSaver.idl',
    'nsIBufferedStreams.idl',
    'nsIByteRangeRequest.idl',
    'nsICacheInfoChannel.idl',
    'nsICachingChannel.idl',
    'nsICancelable.idl',
    'nsICaptivePortalService.idl',
    'nsIChannel.idl',
    'nsIChannelEventSink.idl',
    'nsIChannelWithDivertableParentListener.idl',
    'nsIChildChannel.idl',
    'nsIClassOfService.idl',
    'nsIContentSniffer.idl',
    'nsICryptoFIPSInfo.idl',
    'nsICryptoHash.idl',
    'nsICryptoHMAC.idl',
    'nsIDashboard.idl',
    'nsIDashboardEventNotifier.idl',
    'nsIDeprecationWarner.idl',
    'nsIDivertableChannel.idl',
    'nsIDownloader.idl',
    'nsIEncodedChannel.idl',
    'nsIExternalProtocolHandler.idl',
    'nsIFileStreams.idl',
    'nsIFileURL.idl',
    'nsIForcePendingChannel.idl',
    'nsIFormPOSTActionChannel.idl',
    'nsIHttpAuthenticatorCallback.idl',
    'nsIHttpPushListener.idl',
    'nsIIncrementalDownload.idl',
    'nsIIncrementalStreamLoader.idl',
    'nsIInputStreamChannel.idl',
    'nsIInputStreamPump.idl',
    'nsIIOService.idl',
    'nsIIOService2.idl',
    'nsILoadContextInfo.idl',
    'nsILoadGroup.idl',
    'nsILoadGroupChild.idl',
    'nsILoadInfo.idl',
    'nsIMIMEInputStream.idl',
    'nsIMultiPartChannel.idl',
    'nsINestedURI.idl',
    'nsINetAddr.idl',
    'nsINetUtil.idl',
    'nsINetworkInfoService.idl',
    'nsINetworkInterceptController.idl',
    'nsINetworkLinkService.idl',
    'nsINetworkPredictor.idl',
    'nsINetworkPredictorVerifier.idl',
    'nsINetworkProperties.idl',
    'nsINSSErrorsService.idl',
    'nsINullChannel.idl',
    'nsIParentChannel.idl',
    'nsIParentRedirectingChannel.idl',
    'nsIPermission.idl',
    'nsIPermissionManager.idl',
    'nsIPrivateBrowsingChannel.idl',
    'nsIProgressEventSink.idl',
    'nsIPrompt.idl',
    'nsIProtocolHandler.idl',
    'nsIProtocolProxyCallback.idl',
    'nsIProtocolProxyFilter.idl',
    'nsIProtocolProxyService.idl',
    'nsIProtocolProxyService2.idl',
    'nsIProxiedChannel.idl',
    'nsIProxiedProtocolHandler.idl',
    'nsIProxyInfo.idl',
    'nsIRandomGenerator.idl',
    'nsIRedirectChannelRegistrar.idl',
    'nsIRedirectResultListener.idl',
    'nsIRequest.idl',
    'nsIRequestContext.idl',
    'nsIRequestObserver.idl',
    'nsIRequestObserverProxy.idl',
    'nsIResumableChannel.idl',
    'nsISecCheckWrapChannel.idl',
    'nsISecureBrowserUI.idl',
    'nsISecurityEventSink.idl',
    'nsISecurityInfoProvider.idl',
    'nsISensitiveInfoHiddenURI.idl',
    'nsISerializationHelper.idl',
    'nsIServerSocket.idl',
    'nsISimpleStreamListener.idl',
    'nsISocketFilter.idl',
    'nsISocketTransport.idl',
    'nsISocketTransportService.idl',
    'nsISpeculativeConnect.idl',
    'nsIStandardURL.idl',
    'nsIStreamingProtocolController.idl',
    'nsIStreamingProtocolService.idl',
    'nsIStreamListener.idl',
    'nsIStreamListenerTee.idl',
    'nsIStreamLoader.idl',
    'nsIStreamTransportService.idl',
    'nsISyncStreamListener.idl',
    'nsISystemProxySettings.idl',
    'nsIThreadRetargetableRequest.idl',
    'nsIThreadRetargetableStreamListener.idl',
    'nsIThrottledInputChannel.idl',
    'nsITimedChannel.idl',
    'nsITLSServerSocket.idl',
    'nsITraceableChannel.idl',
    'nsITransport.idl',
    'nsIUDPSocket.idl',
    'nsIUnicharStreamLoader.idl',
    'nsIUploadChannel.idl',
    'nsIUploadChannel2.idl',
    'nsIURI.idl',
    'nsIURIClassifier.idl',
    'nsIURIWithBlobImpl.idl',
    'nsIURIWithPrincipal.idl',
    'nsIURL.idl',
    'nsIURLParser.idl',
    'nsPILoadGroupInternal.idl',
    'nsPISocketTransportService.idl',
]

if CONFIG['MOZ_TOOLKIT_SEARCH']:
    XPIDL_SOURCES += [
        'nsIBrowserSearchService.idl',
    ]

XPIDL_MODULE = 'necko'

EXPORTS += [
    'netCore.h',
    'nsASocketHandler.h',
    'nsAsyncRedirectVerifyHelper.h',
    'nsFileStreams.h',
    'nsInputStreamPump.h',
    'nsMIMEInputStream.h',
    'nsNetUtil.h',
    'nsNetUtilInlines.h',
    'nsReadLine.h',
    'nsSerializationHelper.h',
    'nsSimpleNestedURI.h',
    'nsSimpleURI.h',
    'nsStreamListenerWrapper.h',
    'nsTemporaryFileInputStream.h',
    'nsURIHashKey.h',
    'nsURLHelper.h',
    'nsURLParsers.h',
]

EXPORTS.mozilla += [
    'LoadContextInfo.h',
    'LoadInfo.h',
    'LoadTainting.h',
]

EXPORTS.mozilla.net += [
    'CaptivePortalService.h',
    'ChannelDiverterChild.h',
    'ChannelDiverterParent.h',
    'Dashboard.h',
    'DashboardTypes.h',
    'MemoryDownloader.h',
    'Predictor.h',
    'ReferrerPolicy.h',
]

UNIFIED_SOURCES += [
    'ArrayBufferInputStream.cpp',
    'BackgroundFileSaver.cpp',
    'CaptivePortalService.cpp',
    'ChannelDiverterChild.cpp',
    'ChannelDiverterParent.cpp',
    'Dashboard.cpp',
    'EventTokenBucket.cpp',
    'LoadContextInfo.cpp',
    'LoadInfo.cpp',
    'MemoryDownloader.cpp',
    'NetworkActivityMonitor.cpp',
    'nsAsyncRedirectVerifyHelper.cpp',
    'nsAsyncStreamCopier.cpp',
    'nsAuthInformationHolder.cpp',
    'nsBase64Encoder.cpp',
    'nsBaseChannel.cpp',
    'nsBaseContentStream.cpp',
    'nsBufferedStreams.cpp',
    'nsChannelClassifier.cpp',
    'nsDirectoryIndexStream.cpp',
    'nsDNSPrefetch.cpp',
    'nsDownloader.cpp',
    'nsFileStreams.cpp',
    'nsIncrementalDownload.cpp',
    'nsIncrementalStreamLoader.cpp',
    'nsInputStreamChannel.cpp',
    'nsInputStreamPump.cpp',
    'nsIOService.cpp',
    'nsLoadGroup.cpp',
    'nsMediaFragmentURIParser.cpp',
    'nsMIMEInputStream.cpp',
    'nsNetAddr.cpp',
    'nsNetUtil.cpp',
    'nsPACMan.cpp',
    'nsPreloadedStream.cpp',
    'nsProtocolProxyService.cpp',
    'nsProxyInfo.cpp',
    'nsRequestObserverProxy.cpp',
    'nsSecCheckWrapChannel.cpp',
    'nsSerializationHelper.cpp',
    'nsServerSocket.cpp',
    'nsSimpleNestedURI.cpp',
    'nsSimpleStreamListener.cpp',
    'nsSimpleURI.cpp',
    'nsSocketTransport2.cpp',
    'nsSocketTransportService2.cpp',
    'nsStandardURL.cpp',
    'nsStreamListenerTee.cpp',
    'nsStreamListenerWrapper.cpp',
    'nsStreamLoader.cpp',
    'nsStreamTransportService.cpp',
    'nsSyncStreamListener.cpp',
    'nsTemporaryFileInputStream.cpp',
    'nsTransportUtils.cpp',
    'nsUDPSocket.cpp',
    'nsUnicharStreamLoader.cpp',
    'nsURLHelper.cpp',
    'nsURLParsers.cpp',
    'PollableEvent.cpp',
    'Predictor.cpp',
    'ProxyAutoConfig.cpp',
    'RedirectChannelRegistrar.cpp',
    'RequestContextService.cpp',
    'SimpleBuffer.cpp',
    'StreamingProtocolService.cpp',
    'ThrottleQueue.cpp',
    'Tickler.cpp',
    'TLSServerSocket.cpp',
]

if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
    SOURCES += [
        'nsURLHelperWin.cpp',
        'ShutdownLayer.cpp',
    ]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    SOURCES += [
        'nsURLHelperOSX.cpp',
    ]
else:
    SOURCES += [
        'nsURLHelperUnix.cpp',
    ]

# nsINetworkInfoService support.
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
    SOURCES += [
        'NetworkInfoServiceWindows.cpp',
        'nsNetworkInfoService.cpp',
    ]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
    SOURCES += [
        'NetworkInfoServiceCocoa.cpp',
        'nsNetworkInfoService.cpp',
    ]
elif CONFIG['OS_ARCH'] == 'Linux':
    SOURCES += [
        'NetworkInfoServiceLinux.cpp',
        'nsNetworkInfoService.cpp',
    ]

EXTRA_JS_MODULES += [
    'NetUtil.jsm',
]

include('/ipc/chromium/chromium-config.mozbuild')

FINAL_LIBRARY = 'xul'

LOCAL_INCLUDES += [
    '/docshell/base',
    '/dom/base',
    '/netwerk/protocol/http',
    '/netwerk/socket',
    '/security/pkix/include'
]

if 'rtsp' in CONFIG['NECKO_PROTOCOLS']:
    LOCAL_INCLUDES += [
        '/netwerk/protocol/rtsp/controller',
        '/netwerk/protocol/rtsp/rtsp',
    ]

if CONFIG['GNU_CXX']:
    CXXFLAGS += ['-Wno-error=shadow']