Index: Source/core/dom/ScriptExecutionContext.cpp |
diff --git a/Source/core/dom/ScriptExecutionContext.cpp b/Source/core/dom/ScriptExecutionContext.cpp |
index 63180d9efa647be2711cd4c41c70e30ed69864e4..5ede6e72c1ace47b4e9c2cbb755eb0fe85ce0330 100644 |
--- a/Source/core/dom/ScriptExecutionContext.cpp |
+++ b/Source/core/dom/ScriptExecutionContext.cpp |
@@ -280,7 +280,7 @@ int ScriptExecutionContext::circularSequentialID() |
return m_circularSequentialID; |
} |
-int ScriptExecutionContext::installNewTimeout(PassOwnPtr<ScheduledAction> action, int timeout, bool singleShot) |
+int ScriptExecutionContext::installNewTimeout(DOMTimer::TimerType timerType, PassOwnPtr<ScheduledAction> action, int timeout) |
{ |
int timeoutID; |
while (true) { |
@@ -288,20 +288,22 @@ int ScriptExecutionContext::installNewTimeout(PassOwnPtr<ScheduledAction> action |
if (!m_timeouts.contains(timeoutID)) |
break; |
} |
- TimeoutMap::AddResult result = m_timeouts.add(timeoutID, DOMTimer::create(this, action, timeout, singleShot, timeoutID)); |
+ TimeoutMap::AddResult result = m_timeouts.add(timeoutID, DOMTimer::create(this, timerType, action, timeout, timeoutID)); |
ASSERT(result.isNewEntry); |
DOMTimer* timer = result.iterator->value.get(); |
timer->suspendIfNeeded(); |
- return timer->timeoutID(); |
+ return timeoutID; |
} |
-void ScriptExecutionContext::removeTimeoutByID(int timeoutID) |
+void ScriptExecutionContext::removeTimeoutByIDIfTypeMatches(DOMTimer::TimerType timerType, int timeoutID) |
{ |
if (timeoutID <= 0) |
return; |
- m_timeouts.remove(timeoutID); |
+ TimeoutMap::iterator iter = m_timeouts.find(timeoutID); |
+ if (iter != m_timeouts.end() && iter->value->timerType() == timerType) |
+ m_timeouts.remove(iter); |
} |
PublicURLManager& ScriptExecutionContext::publicURLManager() |