1c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// found in the LICENSE file. 4c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#ifndef UI_EVENTS_TEST_PLATFORM_EVENT_WAITER_H_ 6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#define UI_EVENTS_TEST_PLATFORM_EVENT_WAITER_H_ 7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 8c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "base/callback.h" 9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "ui/events/platform/platform_event_observer.h" 10c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace ui { 12c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass PlatformEventWaiter : public PlatformEventObserver { 14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch public: 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch typedef base::Callback<bool(const PlatformEvent&)> PlatformEventMatcher; 16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch static PlatformEventWaiter* Create(const base::Closure& success_callback, 18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const PlatformEventMatcher& event_matcher); 19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch private: 21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch PlatformEventWaiter(const base::Closure& success_callback, 22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const PlatformEventMatcher& event_matcher); 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual ~PlatformEventWaiter(); 24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // PlatformEventObserver: 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void WillProcessEvent(const PlatformEvent& event) OVERRIDE; 27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void DidProcessEvent(const PlatformEvent& event) OVERRIDE; 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch base::Closure success_callback_; 30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch PlatformEventMatcher event_matcher_; 31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch DISALLOW_COPY_AND_ASSIGN(PlatformEventWaiter); 33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}; 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} // namespace ui 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif // UI_EVENTS_TEST_PLATFORM_EVENT_WAITER_H_ 38