Index: Source/platform/UserGestureIndicator.cpp |
diff --git a/Source/platform/UserGestureIndicator.cpp b/Source/platform/UserGestureIndicator.cpp |
index 03d219537a755790da17f7bf8602c9a560633c6b..94b24fe2de90ba8c00751404a9f84ad61a1ead90 100644 |
--- a/Source/platform/UserGestureIndicator.cpp |
+++ b/Source/platform/UserGestureIndicator.cpp |
@@ -29,11 +29,19 @@ |
#include "wtf/Assertions.h" |
#include "wtf/CurrentTime.h" |
#include "wtf/MainThread.h" |
+#include "wtf/Vector.h" |
namespace WebCore { |
namespace { |
+static Vector<RefPtr<UserGestureHandler> >& handlers() |
+{ |
+ ASSERT(isMainThread()); |
+ DEFINE_STATIC_LOCAL(Vector<RefPtr<UserGestureHandler> >, userGestureHandlers, ()); |
+ return userGestureHandlers; |
+} |
+ |
// User gestures timeout in 1 second. |
const double userGestureTimeout = 1.0; |
@@ -158,6 +166,11 @@ UserGestureIndicator::UserGestureIndicator(PassRefPtr<UserGestureToken> token) |
} |
} |
s_state = DefinitelyProcessingUserGesture; |
+ |
+ while (handlers().size() > 0) { |
+ handlers().last()->onGesture(); |
+ handlers().removeLast(); |
+ } |
} |
ASSERT(isDefinite(s_state)); |
@@ -194,6 +207,11 @@ UserGestureToken* UserGestureIndicator::currentToken() |
return s_topmostIndicator->m_token.get(); |
} |
+void UserGestureIndicator::addHandler(PassRefPtr<UserGestureHandler> handler) |
+{ |
+ handlers().append(handler); |
+} |
+ |
UserGestureIndicatorDisabler::UserGestureIndicatorDisabler() |
: m_savedState(UserGestureIndicator::s_state) |
, m_savedIndicator(UserGestureIndicator::s_topmostIndicator) |