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