diff options
Diffstat (limited to 'netwerk/system/android')
-rw-r--r-- | netwerk/system/android/moz.build | 14 | ||||
-rw-r--r-- | netwerk/system/android/nsAndroidNetworkLinkService.cpp | 63 | ||||
-rw-r--r-- | netwerk/system/android/nsAndroidNetworkLinkService.h | 24 |
3 files changed, 101 insertions, 0 deletions
diff --git a/netwerk/system/android/moz.build b/netwerk/system/android/moz.build new file mode 100644 index 000000000..68288ad10 --- /dev/null +++ b/netwerk/system/android/moz.build @@ -0,0 +1,14 @@ +# -*- 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/. + +SOURCES += [ + 'nsAndroidNetworkLinkService.cpp', +] + +FINAL_LIBRARY = 'xul' +LOCAL_INCLUDES += [ + '/netwerk/base', +] diff --git a/netwerk/system/android/nsAndroidNetworkLinkService.cpp b/netwerk/system/android/nsAndroidNetworkLinkService.cpp new file mode 100644 index 000000000..692b69a7e --- /dev/null +++ b/netwerk/system/android/nsAndroidNetworkLinkService.cpp @@ -0,0 +1,63 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 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 "nsAndroidNetworkLinkService.h" +#include "nsServiceManagerUtils.h" +#include "mozilla/Services.h" + +#include "AndroidBridge.h" + +namespace java = mozilla::java; + +NS_IMPL_ISUPPORTS(nsAndroidNetworkLinkService, + nsINetworkLinkService) + +nsAndroidNetworkLinkService::nsAndroidNetworkLinkService() +{ +} + +nsAndroidNetworkLinkService::~nsAndroidNetworkLinkService() +{ +} + +NS_IMETHODIMP +nsAndroidNetworkLinkService::GetIsLinkUp(bool *aIsUp) +{ + if (!mozilla::AndroidBridge::Bridge()) { + // Fail soft here and assume a connection exists + NS_WARNING("GetIsLinkUp is not supported without a bridge connection"); + *aIsUp = true; + return NS_OK; + } + + *aIsUp = java::GeckoAppShell::IsNetworkLinkUp(); + return NS_OK; +} + +NS_IMETHODIMP +nsAndroidNetworkLinkService::GetLinkStatusKnown(bool *aIsKnown) +{ + NS_ENSURE_TRUE(mozilla::AndroidBridge::Bridge(), NS_ERROR_NOT_IMPLEMENTED); + + *aIsKnown = java::GeckoAppShell::IsNetworkLinkKnown(); + return NS_OK; +} + +NS_IMETHODIMP +nsAndroidNetworkLinkService::GetLinkType(uint32_t *aLinkType) +{ + NS_ENSURE_ARG_POINTER(aLinkType); + + if (!mozilla::AndroidBridge::Bridge()) { + // Fail soft here and assume a connection exists + NS_WARNING("GetLinkType is not supported without a bridge connection"); + *aLinkType = nsINetworkLinkService::LINK_TYPE_UNKNOWN; + return NS_OK; + } + + *aLinkType = java::GeckoAppShell::GetNetworkLinkType(); + return NS_OK; +} diff --git a/netwerk/system/android/nsAndroidNetworkLinkService.h b/netwerk/system/android/nsAndroidNetworkLinkService.h new file mode 100644 index 000000000..9fdda7cae --- /dev/null +++ b/netwerk/system/android/nsAndroidNetworkLinkService.h @@ -0,0 +1,24 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 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/. */ + +#ifndef NSANDROIDNETWORKLINKSERVICE_H_ +#define NSANDROIDNETWORKLINKSERVICE_H_ + +#include "nsINetworkLinkService.h" + +class nsAndroidNetworkLinkService: public nsINetworkLinkService +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_NSINETWORKLINKSERVICE + + nsAndroidNetworkLinkService(); + +private: + virtual ~nsAndroidNetworkLinkService(); +}; + +#endif /* NSANDROIDNETWORKLINKSERVICE_H_ */ |