diff options
Diffstat (limited to 'netwerk/standalone')
-rw-r--r-- | netwerk/standalone/moz.build | 54 | ||||
-rw-r--r-- | netwerk/standalone/nsNetModuleStandalone.cpp | 119 | ||||
-rw-r--r-- | netwerk/standalone/nsNetModuleStandalone.h | 13 |
3 files changed, 186 insertions, 0 deletions
diff --git a/netwerk/standalone/moz.build b/netwerk/standalone/moz.build new file mode 100644 index 000000000..4c7366e3b --- /dev/null +++ b/netwerk/standalone/moz.build @@ -0,0 +1,54 @@ +# -*- 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/. + +if CONFIG['OS_TARGET'] != 'WINNT' and CONFIG['MOZ_WIDGET_TOOLKIT'] != 'gonk': + Library('necko_standalone') + +src_list = [ + 'nsNetModuleStandalone.cpp', +] + +netwerk_base_src = [ + 'PollableEvent.cpp', + 'nsDNSPrefetch.cpp', + 'nsNetAddr.cpp', + 'nsSocketTransportService2.cpp', + 'nsURLHelper.cpp', +] +src_list += [ + '/netwerk/base/%s' % s for s in netwerk_base_src +] + +netwerk_dns_src = [ + 'nsHostResolver.cpp', + 'DNS.cpp', + 'DNSListenerProxy.cpp', + 'GetAddrInfo.cpp', + 'nameprep.c', + 'nsDNSService2.cpp', + 'nsIDNService.cpp', + 'punycode.c', +] +src_list += [ + '/netwerk/dns/%s' % s for s in netwerk_dns_src +] + +SOURCES += sorted(src_list) + +LOCAL_INCLUDES = [ + '../base', + '../build', + '../dns', +] + +DEFINES['IDNA2008'] = False +DEFINES['MOZILLA_INTERNAL_API'] = True +DEFINES['MOZILLA_EXTERNAL_LINKAGE'] = True + +include('/ipc/chromium/chromium-config.mozbuild') + +if CONFIG['GNU_CXX']: + CXXFLAGS += ['-Wno-error=shadow'] diff --git a/netwerk/standalone/nsNetModuleStandalone.cpp b/netwerk/standalone/nsNetModuleStandalone.cpp new file mode 100644 index 000000000..04e43d0cd --- /dev/null +++ b/netwerk/standalone/nsNetModuleStandalone.cpp @@ -0,0 +1,119 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set sw=4 ts=8 et tw=80 : */ +/* 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/. */ + +#include "necko-config.h" + +#include "mozilla/ModuleUtils.h" +#include "mozilla/DebugOnly.h" +#include "nsCOMPtr.h" +#include "nsICategoryManager.h" +#include "nsIClassInfoImpl.h" +#include "nsIComponentManager.h" +#include "nsIServiceManager.h" +#include "nsNetCID.h" +#include "nsPIDNSService.h" +#include "nsPISocketTransportService.h" +#include "nscore.h" + +extern const mozilla::Module kNeckoStandaloneModule; + +namespace mozilla { + +nsresult +InitNetModuleStandalone() +{ + nsresult rv; + + nsCOMPtr<nsPIDNSService> dns = do_GetService(NS_DNSSERVICE_CONTRACTID, &rv); + if (NS_SUCCEEDED(rv)) { + mozilla::DebugOnly<nsresult> rv = dns->Init(); + NS_ASSERTION(NS_SUCCEEDED(rv), "DNS service init failed"); + } else { + NS_WARNING("failed to get dns service"); + } + + nsCOMPtr<nsPISocketTransportService> sts = do_GetService(NS_SOCKETTRANSPORTSERVICE_CONTRACTID, &rv); + if (NS_SUCCEEDED(rv)) { + mozilla::DebugOnly<nsresult> rv = sts->Init(); + NS_ASSERTION(NS_SUCCEEDED(rv), "Socket transport service init failed"); + } else { + NS_WARNING("failed to get socket transport service"); + } + + return NS_OK; +} + +nsresult +ShutdownNetModuleStandalone() +{ + nsresult rv; + + nsCOMPtr<nsPIDNSService> dns = do_GetService(NS_DNSSERVICE_CONTRACTID, &rv); + if (NS_SUCCEEDED(rv)) { + mozilla::DebugOnly<nsresult> rv = dns->Shutdown(); + NS_ASSERTION(NS_SUCCEEDED(rv), "DNS service shutdown failed"); + } else { + NS_WARNING("failed to get dns service"); + } + + nsCOMPtr<nsPISocketTransportService> sts = do_GetService(NS_SOCKETTRANSPORTSERVICE_CONTRACTID, &rv); + if (NS_SUCCEEDED(rv)) { + mozilla::DebugOnly<nsresult> rv = sts->Shutdown(true); + NS_ASSERTION(NS_SUCCEEDED(rv), "Socket transport service shutdown failed"); + } else { + NS_WARNING("failed to get socket transport service"); + } + + return NS_OK; +} + +} // namespace mozilla + +#include "nsDNSService2.h" +NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIDNSService, + nsDNSService::GetXPCOMSingleton) + +#include "nsSocketTransportService2.h" +typedef mozilla::net::nsSocketTransportService nsSocketTransportService; +#undef LOG +#undef LOG_ENABLED +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSocketTransportService, Init) + +// Net module startup hook +static nsresult nsNetStartup() +{ + return NS_OK; +} + +// Net module shutdown hook +static void nsNetShutdown() +{ +} + +NS_DEFINE_NAMED_CID(NS_SOCKETTRANSPORTSERVICE_CID); +NS_DEFINE_NAMED_CID(NS_DNSSERVICE_CID); + +static const mozilla::Module::CIDEntry kNeckoCIDs[] = { + { &kNS_SOCKETTRANSPORTSERVICE_CID, false, nullptr, nsSocketTransportServiceConstructor }, + { &kNS_DNSSERVICE_CID, false, nullptr, nsIDNSServiceConstructor }, + { nullptr } +}; + +static const mozilla::Module::ContractIDEntry kNeckoContracts[] = { + { NS_SOCKETTRANSPORTSERVICE_CONTRACTID, &kNS_SOCKETTRANSPORTSERVICE_CID }, + { NS_DNSSERVICE_CONTRACTID, &kNS_DNSSERVICE_CID }, + { nullptr } +}; + +const mozilla::Module kNeckoStandaloneModule = { + mozilla::Module::kVersion, + kNeckoCIDs, + kNeckoContracts, + nullptr, + nullptr, + nsNetStartup, + nsNetShutdown +}; diff --git a/netwerk/standalone/nsNetModuleStandalone.h b/netwerk/standalone/nsNetModuleStandalone.h new file mode 100644 index 000000000..a9fe92277 --- /dev/null +++ b/netwerk/standalone/nsNetModuleStandalone.h @@ -0,0 +1,13 @@ +#ifndef ns_net_module_standalone_h_ +#define ns_net_module_standalone_h_ + +#include <nsError.h> + +namespace mozilla { + +nsresult InitNetModuleStandalone(); +nsresult ShutdownNetModuleStandalone(); + +} // namespace mozilla + +#endif // ns_net_module_standalone_h_ |