| Index: Source/core/dom/ScriptExecutionContext.cpp
|
| diff --git a/Source/core/dom/ScriptExecutionContext.cpp b/Source/core/dom/ScriptExecutionContext.cpp
|
| index b292094975aa0776c66a6c9346e75d05ebe31c9b..185b1aa7d376309c34a031741f1cc9002fead17a 100644
|
| --- a/Source/core/dom/ScriptExecutionContext.cpp
|
| +++ b/Source/core/dom/ScriptExecutionContext.cpp
|
| @@ -259,7 +259,7 @@ int ScriptExecutionContext::circularSequentialID()
|
| return m_circularSequentialID;
|
| }
|
|
|
| -int ScriptExecutionContext::installNewTimeout(PassOwnPtr<ScheduledAction> action, int timeout, bool singleShot)
|
| +int ScriptExecutionContext::installNewTimeout(DOMTimer::Type timerType, PassOwnPtr<ScheduledAction> action, int timeout)
|
| {
|
| int timeoutID;
|
| while (true) {
|
| @@ -267,20 +267,25 @@ 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)
|
| +bool ScriptExecutionContext::removeTimeoutByIDIfTypeMatches(DOMTimer::Type timerType, int timeoutID)
|
| {
|
| if (timeoutID <= 0)
|
| - return;
|
| - m_timeouts.remove(timeoutID);
|
| + return false;
|
| + TimeoutMap::iterator iter = m_timeouts.find(timeoutID);
|
| + if (iter != m_timeouts.end() && iter->value->type() == timerType) {
|
| + m_timeouts.remove(iter);
|
| + return true;
|
| + }
|
| + return false;
|
| }
|
|
|
| PublicURLManager& ScriptExecutionContext::publicURLManager()
|
|
|