/* 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 "ConnectionMainThread.h"
#include "mozilla/Hal.h"
namespace mozilla::dom::network {
ConnectionMainThread::ConnectionMainThread(nsPIDOMWindowInner* aWindow,
bool aShouldResistFingerprinting)
: Connection(aWindow, aShouldResistFingerprinting) {
hal::RegisterNetworkObserver(
this);
hal::NetworkInformation networkInfo;
hal::GetCurrentNetworkInformation(&networkInfo);
UpdateFromNetworkInfo(networkInfo, false);
}
ConnectionMainThread::~ConnectionMainThread() { Shutdown(); }
void ConnectionMainThread::ShutdownInternal() {
hal::UnregisterNetworkObserver(
this);
}
void ConnectionMainThread::UpdateFromNetworkInfo(
const hal::NetworkInformation& aNetworkInfo,
bool aNotify) {
Update(
static_cast<ConnectionType>(aNetworkInfo.type()),
aNetworkInfo.isWifi(), aNetworkInfo.dhcpGateway(), aNotify);
}
void ConnectionMainThread::Notify(
const hal::NetworkInformation& aNetworkInfo) {
UpdateFromNetworkInfo(aNetworkInfo,
true);
}
}
// namespace mozilla::dom::network