void BatteryManager::didUpdateData() { ASSERT(RuntimeEnabledFeatures::batteryStatusEnabled()); ASSERT(m_state != NotStarted); RefPtrWillBeRawPtr<BatteryStatus> oldStatus = m_batteryStatus; m_batteryStatus = BatteryDispatcher::instance().latestData(); #if !ENABLE(OILPAN) // BatteryDispatcher also holds a reference to m_batteryStatus. ASSERT(m_batteryStatus->refCount() > 1); #endif if (m_state == Pending) { ASSERT(m_resolver); m_state = Resolved; m_resolver->resolve(this); return; } Document* document = toDocument(executionContext()); if (document->activeDOMObjectsAreSuspended() || document->activeDOMObjectsAreStopped()) return; ASSERT(oldStatus); if (m_batteryStatus->charging() != oldStatus->charging()) dispatchEvent(Event::create(EventTypeNames::chargingchange)); if (m_batteryStatus->chargingTime() != oldStatus->chargingTime()) dispatchEvent(Event::create(EventTypeNames::chargingtimechange)); if (m_batteryStatus->dischargingTime() != oldStatus->dischargingTime()) dispatchEvent(Event::create(EventTypeNames::dischargingtimechange)); if (m_batteryStatus->level() != oldStatus->level()) dispatchEvent(Event::create(EventTypeNames::levelchange)); }