| 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)
|
|
|