// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef EventDispatchForbiddenScope_h #define EventDispatchForbiddenScope_h #include "wtf/MainThread.h" #include "wtf/TemporaryChange.h" namespace blink { #if ENABLE(ASSERT) class EventDispatchForbiddenScope { public: EventDispatchForbiddenScope() { if (!isMainThread()) return; ++s_count; } ~EventDispatchForbiddenScope() { if (!isMainThread()) return; ASSERT(s_count); --s_count; } static bool isEventDispatchForbidden() { if (!isMainThread()) return false; return s_count; } class AllowUserAgentEvents { public: AllowUserAgentEvents() : m_change(s_count, 0) { } ~AllowUserAgentEvents() { ASSERT(!s_count); } TemporaryChange m_change; }; private: static unsigned s_count; }; #else class EventDispatchForbiddenScope { public: EventDispatchForbiddenScope() { } class AllowUserAgentEvents { public: AllowUserAgentEvents() { } }; }; #endif // ENABLE(ASSERT) } // namespace blink #endif // EventDispatchForbiddenScope_h