summaryrefslogtreecommitdiffstats
path: root/netwerk/standalone
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/standalone')
-rw-r--r--netwerk/standalone/moz.build54
-rw-r--r--netwerk/standalone/nsNetModuleStandalone.cpp119
-rw-r--r--netwerk/standalone/nsNetModuleStandalone.h13
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_