DOMTimer::DOMTimer(ScriptExecutionContext* context, PassOwnPtr<ScheduledAction> action, int interval, bool singleShot) : SuspendableTimer(context) , m_timeoutId(timeoutId()) , m_nestingLevel(timerNestingLevel + 1) , m_action(action) , m_originalInterval(interval) , m_shouldForwardUserGesture(shouldForwardUserGesture(interval, m_nestingLevel)) { scriptExecutionContext()->addTimeout(m_timeoutId, this); double intervalMilliseconds = intervalClampedToMinimum(interval, context->minimumTimerInterval()); if (singleShot) startOneShot(intervalMilliseconds); else startRepeating(intervalMilliseconds); }
DOMTimer::DOMTimer(ScriptExecutionContext* context, PassOwnPtr<ScheduledAction> action, int interval, bool singleShot) : SuspendableTimer(context) , m_nestingLevel(timerNestingLevel + 1) , m_action(action) , m_originalInterval(interval) , m_shouldForwardUserGesture(shouldForwardUserGesture(interval, m_nestingLevel)) { // Keep asking for the next id until we're given one that we don't already have. do { m_timeoutId = context->circularSequentialID(); } while (!context->addTimeout(m_timeoutId, this)); double intervalMilliseconds = intervalClampedToMinimum(interval, context->minimumTimerInterval()); if (singleShot) startOneShot(intervalMilliseconds); else startRepeating(intervalMilliseconds); }
DOMTimer::DOMTimer(ExecutionContext* context, PassOwnPtr<ScheduledAction> action, int interval, bool singleShot, int timeoutID) : SuspendableTimer(context) , m_timeoutID(timeoutID) , m_nestingLevel(timerNestingLevel + 1) , m_action(action) { ASSERT(timeoutID > 0); if (shouldForwardUserGesture(interval, m_nestingLevel)) m_userGestureToken = UserGestureIndicator::currentToken(); double intervalMilliseconds = std::max(oneMillisecond, interval * oneMillisecond); if (intervalMilliseconds < minimumInterval && m_nestingLevel >= maxTimerNestingLevel) intervalMilliseconds = minimumInterval; if (singleShot) startOneShot(intervalMilliseconds, FROM_HERE); else startRepeating(intervalMilliseconds, FROM_HERE); }
DOMTimer::DOMTimer(ExecutionContext* context, ScheduledAction* action, int interval, bool singleShot, int timeoutID) : SuspendableTimer(context) , m_timeoutID(timeoutID) , m_nestingLevel(context->timers()->timerNestingLevel() + 1) , m_action(action) { ASSERT(timeoutID > 0); if (shouldForwardUserGesture(interval, m_nestingLevel)) m_userGestureToken = UserGestureIndicator::currentToken(); InspectorInstrumentation::asyncTaskScheduled(context, singleShot ? "setTimeout" : "setInterval", this, !singleShot); double intervalMilliseconds = std::max(oneMillisecond, interval * oneMillisecond); if (intervalMilliseconds < minimumInterval && m_nestingLevel >= maxTimerNestingLevel) intervalMilliseconds = minimumInterval; if (singleShot) startOneShot(intervalMilliseconds, BLINK_FROM_HERE); else startRepeating(intervalMilliseconds, BLINK_FROM_HERE); }
DOMTimer::DOMTimer(ScriptExecutionContext* context, std::unique_ptr<ScheduledAction> action, int interval, bool singleShot) : SuspendableTimer(context) , m_nestingLevel(context->timerNestingLevel()) , m_action(WTF::move(action)) , m_originalInterval(interval) , m_currentTimerInterval(intervalClampedToMinimum()) , m_shouldForwardUserGesture(shouldForwardUserGesture(interval, m_nestingLevel)) { RefPtr<DOMTimer> reference = adoptRef(this); // Keep asking for the next id until we're given one that we don't already have. do { m_timeoutId = context->circularSequentialID(); } while (!context->addTimeout(m_timeoutId, reference)); if (singleShot) startOneShot(m_currentTimerInterval); else startRepeating(m_currentTimerInterval); }