| Index: Source/core/page/DOMTimer.cpp
|
| diff --git a/Source/core/page/DOMTimer.cpp b/Source/core/page/DOMTimer.cpp
|
| index 08a9ba99912a79b687581192168a7210dba4b0fd..908dade80a61f4909cff299329835e2ce2b918e6 100644
|
| --- a/Source/core/page/DOMTimer.cpp
|
| +++ b/Source/core/page/DOMTimer.cpp
|
| @@ -69,21 +69,22 @@ double DOMTimer::visiblePageAlignmentInterval()
|
| return 0;
|
| }
|
|
|
| -int DOMTimer::install(ScriptExecutionContext* context, PassOwnPtr<ScheduledAction> action, int timeout, bool singleShot)
|
| +int DOMTimer::install(ScriptExecutionContext* context, TimerType timerType, PassOwnPtr<ScheduledAction> action, int timeout)
|
| {
|
| - int timeoutID = context->installNewTimeout(action, timeout, singleShot);
|
| - InspectorInstrumentation::didInstallTimer(context, timeoutID, timeout, singleShot);
|
| + int timeoutID = context->installNewTimeout(timerType, action, timeout);
|
| + InspectorInstrumentation::didInstallTimer(context, timeoutID, timeout, timerType == TimerTypeTimeout); // FIXME: Fix inspector so it can accept a TimerType value.
|
| return timeoutID;
|
| }
|
|
|
| -void DOMTimer::removeByID(ScriptExecutionContext* context, int timeoutID)
|
| +void DOMTimer::removeByIDIfTypeMatches(ScriptExecutionContext* context, TimerType timerType, int timeoutID)
|
| {
|
| - context->removeTimeoutByID(timeoutID);
|
| - InspectorInstrumentation::didRemoveTimer(context, timeoutID);
|
| + context->removeTimeoutByIDIfTypeMatches(timerType, timeoutID);
|
| + InspectorInstrumentation::didRemoveTimer(context, timeoutID == TimerTypeTimeout); // FIXME: Ditto.
|
| }
|
|
|
| -DOMTimer::DOMTimer(ScriptExecutionContext* context, PassOwnPtr<ScheduledAction> action, int interval, bool singleShot, int timeoutID)
|
| +DOMTimer::DOMTimer(ScriptExecutionContext* context, TimerType timerType, PassOwnPtr<ScheduledAction> action, int interval, int timeoutID)
|
| : SuspendableTimer(context)
|
| + , m_timerType(timerType)
|
| , m_timeoutID(timeoutID)
|
| , m_nestingLevel(timerNestingLevel + 1)
|
| , m_action(action)
|
| @@ -95,10 +96,14 @@ DOMTimer::DOMTimer(ScriptExecutionContext* context, PassOwnPtr<ScheduledAction>
|
| double intervalMilliseconds = max(oneMillisecond, interval * oneMillisecond);
|
| if (intervalMilliseconds < minimumInterval && m_nestingLevel >= maxTimerNestingLevel)
|
| intervalMilliseconds = minimumInterval;
|
| - if (singleShot)
|
| + switch (timerType) {
|
| + case TimerTypeTimeout:
|
| startOneShot(intervalMilliseconds);
|
| - else
|
| + break;
|
| + case TimerTypeInterval:
|
| startRepeating(intervalMilliseconds);
|
| + break;
|
| + }
|
| }
|
|
|
| DOMTimer::~DOMTimer()
|
| @@ -110,6 +115,11 @@ int DOMTimer::timeoutID() const
|
| return m_timeoutID;
|
| }
|
|
|
| +DOMTimer::TimerType DOMTimer::timerType() const
|
| +{
|
| + return m_timerType;
|
| +}
|
| +
|
| void DOMTimer::fired()
|
| {
|
| ScriptExecutionContext* context = scriptExecutionContext();
|
| @@ -140,7 +150,7 @@ void DOMTimer::fired()
|
| OwnPtr<ScheduledAction> action = m_action.release();
|
|
|
| // This timer is being deleted; no access to member variables allowed after this point.
|
| - context->removeTimeoutByID(m_timeoutID);
|
| + context->removeTimeoutByIDIfTypeMatches(m_timerType, m_timeoutID);
|
|
|
| action->execute(context);
|
|
|
|
|