Index: Source/core/frame/DOMTimer.cpp |
diff --git a/Source/core/frame/DOMTimer.cpp b/Source/core/frame/DOMTimer.cpp |
index 26a2133bf75c9e0179ce192dd206f50cf9dbc406..f6a587ccf0066c100166bbf8d319afa5ec0378ec 100644 |
--- a/Source/core/frame/DOMTimer.cpp |
+++ b/Source/core/frame/DOMTimer.cpp |
@@ -51,7 +51,8 @@ static inline bool shouldForwardUserGesture(int interval, int nestingLevel) |
{ |
return UserGestureIndicator::processingUserGesture() |
&& interval <= maxIntervalForUserGestureForwarding |
- && nestingLevel == 1; // Gestures should not be forwarded to nested timers. |
+ && nestingLevel == 1 |
+ && !UserGestureIndicator::currentToken()->wasForwarded(); |
} |
double DOMTimer::hiddenPageAlignmentInterval() |
@@ -114,6 +115,8 @@ void DOMTimer::fired() |
timerNestingLevel = m_nestingLevel; |
ASSERT(!context->activeDOMObjectsAreSuspended()); |
// Only the first execution of a multi-shot timer should get an affirmative user gesture indicator. |
+ if (m_userGestureToken) |
+ m_userGestureToken->setForwarded(); |
UserGestureIndicator gestureIndicator(m_userGestureToken.release()); |
InspectorInstrumentationCookie cookie = InspectorInstrumentation::willFireTimer(context, m_timeoutID); |