void XMLHttpRequestProgressEventThrottle::fired() { ASSERT(isActive()); if (!hasEventToDispatch()) { // No progress event was queued since the previous dispatch, we can safely stop the timer. stop(); return; } dispatchEvent(XMLHttpRequestProgressEvent::create(eventNames().progressEvent, m_lengthComputable, m_loaded, m_total)); m_hasThrottledProgressEvent = false; }
void XMLHttpRequestProgressEventThrottle::flushProgressEvent() { if (!hasEventToDispatch()) return; PassRefPtr<Event> event = XMLHttpRequestProgressEvent::create(eventNames().progressEvent, m_lengthComputable, m_loaded, m_total); m_loaded = 0; m_total = 0; // We stop the timer as this is called when no more events are supposed to occur. stop(); m_target->dispatchEvent(event); }
void XMLHttpRequestProgressEventThrottle::suspend() { ASSERT(!m_pausedEvent); m_suspended = true; // If we have a progress event waiting to be dispatched, // just queue it. if (hasEventToDispatch()) { m_pausedEvent = XMLHttpRequestProgressEvent::create(eventNames().progressEvent, m_lengthComputable, m_loaded, m_total); m_total = 0; m_loaded = 0; } stop(); }
void XMLHttpRequestProgressEventThrottle::fired() { ASSERT(isActive()); ASSERT(!suspended()); ASSERT(!m_pausedEvent); if (!hasEventToDispatch()) { // No progress event was queued since the previous dispatch, we can safely stop the timer. stop(); return; } m_target->dispatchEvent(XMLHttpRequestProgressEvent::create(eventNames().progressEvent, m_lengthComputable, m_loaded, m_total)); m_total = 0; m_loaded = 0; }
void XMLHttpRequestProgressEventThrottle::flushProgressEvent() { if (m_deferEvents && m_deferredProgressEvent) { // Move the progress event to the queue, to get it in the right order on resume. m_deferredEvents.append(m_deferredProgressEvent); m_deferredProgressEvent = 0; return; } if (!hasEventToDispatch()) return; PassRefPtr<Event> event = XMLHttpRequestProgressEvent::create(eventNames().progressEvent, m_lengthComputable, m_loaded, m_total); m_hasThrottledProgressEvent = false; // We stop the timer as this is called when no more events are supposed to occur. stop(); dispatchEvent(event); }
void XMLHttpRequestProgressEventThrottle::suspend() { // If re-suspended before deferred events have been dispatched, just stop the dispatch // and continue the last suspend. if (m_dispatchDeferredEventsTimer.isActive()) { ASSERT(m_deferEvents); m_dispatchDeferredEventsTimer.stop(); return; } ASSERT(!m_deferredProgressEvent); ASSERT(m_deferredEvents.isEmpty()); ASSERT(!m_deferEvents); m_deferEvents = true; // If we have a progress event waiting to be dispatched, // just defer it. if (hasEventToDispatch()) { m_deferredProgressEvent = XMLHttpRequestProgressEvent::create(eventNames().progressEvent, m_lengthComputable, m_loaded, m_total); m_hasThrottledProgressEvent = false; } stop(); }