NetworkInfoController.cpp [plain text]
#include "config.h"
#include "NetworkInfoController.h"
#if ENABLE(NETWORK_INFO)
#include "Event.h"
#include "NetworkInfo.h"
#include "NetworkInfoClient.h"
namespace WebCore {
NetworkInfoController::NetworkInfoController(Page* page, NetworkInfoClient* client)
: m_page(page)
, m_client(client)
{
}
NetworkInfoController::~NetworkInfoController()
{
}
PassOwnPtr<NetworkInfoController> NetworkInfoController::create(Page* page, NetworkInfoClient* client)
{
return adoptPtr(new NetworkInfoController(page, client));
}
void NetworkInfoController::addListener(NetworkInfoConnection* networkInfoConnection)
{
m_listeners.append(networkInfoConnection);
m_client->startUpdating();
}
void NetworkInfoController::removeListener(NetworkInfoConnection* networkInfoConnection)
{
size_t position = m_listeners.find(networkInfoConnection);
if (position == WTF::notFound)
return;
m_listeners.remove(position);
if (m_listeners.isEmpty())
m_client->stopUpdating();
}
void NetworkInfoController::didChangeNetworkInformation(const AtomicString& eventType, PassRefPtr<NetworkInfo> networkInfo)
{
RefPtr<Event> event = Event::create(eventType, false, false);
RefPtr<NetworkInfo> networkInformation = networkInfo;
for (NetworkInfoListenerList::iterator it = m_listeners.begin(); it != m_listeners.end(); ++it)
(*it)->didChangeNetworkInformation(event, networkInformation);
}
const AtomicString& NetworkInfoController::supplementName()
{
DEFINE_STATIC_LOCAL(AtomicString, name, ("NetworkInfoController"));
return name;
}
void provideNetworkInfoTo(Page* page, NetworkInfoClient* client)
{
NetworkInfoController::provideTo(page, NetworkInfoController::supplementName(), NetworkInfoController::create(page, client));
}
}
#endif