diff -r 000000000000 -r 6474c204b198 netwerk/wifi/nsWifiScannerMac.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netwerk/wifi/nsWifiScannerMac.cpp Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,55 @@ +/* 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 +#include +#include + +#include "osx_wifi.h" + +#include "nsAutoPtr.h" +#include "nsCOMArray.h" +#include "nsWifiMonitor.h" +#include "nsWifiAccessPoint.h" + +#include "nsServiceManagerUtils.h" +#include "nsComponentManagerUtils.h" +#include "nsIMutableArray.h" + +using namespace mozilla; + +// defined in osx_corewlan.mm +// basically replaces accesspoints in the passed reference +// it lives in a separate file so that we can use objective c. +extern nsresult GetAccessPointsFromWLAN(nsCOMArray &accessPoints); + +nsresult +nsWifiMonitor::DoScan() +{ + // Regularly get the access point data. + + nsCOMArray lastAccessPoints; + nsCOMArray accessPoints; + + do { + nsresult rv = GetAccessPointsFromWLAN(accessPoints); + if (NS_FAILED(rv)) + return rv; + + bool accessPointsChanged = !AccessPointsEqual(accessPoints, lastAccessPoints); + ReplaceArray(lastAccessPoints, accessPoints); + + rv = CallWifiListeners(lastAccessPoints, accessPointsChanged); + NS_ENSURE_SUCCESS(rv, rv); + + // wait for some reasonable amount of time. pref? + LOG(("waiting on monitor\n")); + + ReentrantMonitorAutoEnter mon(mReentrantMonitor); + mon.Wait(PR_SecondsToInterval(60)); + } + while (mKeepGoing); + + return NS_OK; +}