diff -r 000000000000 -r 6474c204b198 netwerk/system/qt/nsQtNetworkLinkService.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netwerk/system/qt/nsQtNetworkLinkService.cpp Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,98 @@ +/* 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 "nsQtNetworkManager.h" +#include "nsQtNetworkLinkService.h" +#include "nsCOMPtr.h" +#include "nsIObserverService.h" +#include "nsServiceManagerUtils.h" +#include "nsString.h" +#include "mozilla/Services.h" +#include "nsCRT.h" + +NS_IMPL_ISUPPORTS(nsQtNetworkLinkService, + nsINetworkLinkService, + nsIObserver) + +nsQtNetworkLinkService::nsQtNetworkLinkService() +{ +} + +nsQtNetworkLinkService::~nsQtNetworkLinkService() +{ +} + +NS_IMETHODIMP +nsQtNetworkLinkService::GetIsLinkUp(bool* aIsUp) +{ + *aIsUp = nsQtNetworkManager::get()->isOnline(); + return NS_OK; +} + +NS_IMETHODIMP +nsQtNetworkLinkService::GetLinkStatusKnown(bool* aIsKnown) +{ + *aIsKnown = nsQtNetworkManager::get()->isOnline(); + return NS_OK; +} + +NS_IMETHODIMP +nsQtNetworkLinkService::GetLinkType(uint32_t *aLinkType) +{ + NS_ENSURE_ARG_POINTER(aLinkType); + + // XXX This function has not yet been implemented for this platform + *aLinkType = nsINetworkLinkService::LINK_TYPE_UNKNOWN; + return NS_OK; +} + +NS_IMETHODIMP +nsQtNetworkLinkService::Observe(nsISupports* aSubject, + const char* aTopic, + const char16_t* aData) +{ + if (!strcmp(aTopic, "xpcom-shutdown")) { + Shutdown(); + nsQtNetworkManager::get()->destroy(); + } + + if (!strcmp(aTopic, "browser-lastwindow-close-granted")) { + Shutdown(); + } + + return NS_OK; +} + +nsresult +nsQtNetworkLinkService::Init(void) +{ + nsCOMPtr observerService = + mozilla::services::GetObserverService(); + if (!observerService) { + return NS_ERROR_FAILURE; + } + + nsQtNetworkManager::create(); + nsresult rv; + + rv = observerService->AddObserver(this, "xpcom-shutdown", false); + if (NS_FAILED(rv)) { + return NS_ERROR_FAILURE; + } + + rv = observerService->AddObserver(this, "browser-lastwindow-close-granted", false); + if (NS_FAILED(rv)) { + return NS_ERROR_FAILURE; + } + + + return NS_OK; +} + +nsresult +nsQtNetworkLinkService::Shutdown() +{ + nsQtNetworkManager::get()->closeSession(); + return NS_OK; +}