NetworkInfoConnection.cpp [plain text]
#include "config.h"
#include "NetworkInfoConnection.h"
#if ENABLE(NETWORK_INFO)
#include "Event.h"
#include "Frame.h"
#include "NetworkInfoClient.h"
namespace WebCore {
PassRefPtr<NetworkInfoConnection> NetworkInfoConnection::create(Navigator* navigator)
{
RefPtr<NetworkInfoConnection> networkInfoConnection(adoptRef(new NetworkInfoConnection(navigator)));
networkInfoConnection->suspendIfNeeded();
return networkInfoConnection.release();
}
NetworkInfoConnection::NetworkInfoConnection(Navigator* navigator)
: ActiveDOMObject(navigator->frame()->document(), this)
, m_controller(NetworkInfoController::from(navigator->frame()->page()))
, m_networkInfo(0)
{
m_controller->addListener(this);
}
NetworkInfoConnection::~NetworkInfoConnection()
{
}
unsigned int NetworkInfoConnection::bandwidth() const
{
if (m_networkInfo)
return m_networkInfo->bandwidth();
return m_controller->client()->bandwidth();
}
bool NetworkInfoConnection::metered() const
{
if (m_networkInfo)
return m_networkInfo->metered();
return m_controller->client()->metered();
}
void NetworkInfoConnection::didChangeNetworkInformation(PassRefPtr<Event> event, PassRefPtr<NetworkInfo> networkInfo)
{
m_networkInfo = networkInfo;
dispatchEvent(event);
}
EventTargetData* NetworkInfoConnection::eventTargetData()
{
return &m_eventTargetData;
}
EventTargetData* NetworkInfoConnection::ensureEventTargetData()
{
return &m_eventTargetData;
}
const AtomicString& NetworkInfoConnection::interfaceName() const
{
return eventNames().interfaceForNetworkInfoConnection;
}
void NetworkInfoConnection::suspend(ReasonForSuspension)
{
if (m_controller)
m_controller->removeListener(this);
}
void NetworkInfoConnection::resume()
{
if (m_controller)
m_controller->addListener(this);
}
void NetworkInfoConnection::stop()
{
if (m_controller)
m_controller->removeListener(this);
}
} #endif