12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#ifndef UI_EVENTS_TEST_TEST_EVENT_HANDLER_H_
623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#define UI_EVENTS_TEST_TEST_EVENT_HANDLER_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include <string>
9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include <vector>
10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h"
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/compiler_specific.h"
13d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/events/event_handler.h"
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochtypedef std::vector<std::string> HandlerSequenceRecorder;
16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace ui {
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace test {
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// A simple EventHandler that keeps track of the number of key events that it's
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// seen.
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class TestEventHandler : public EventHandler {
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestEventHandler();
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~TestEventHandler();
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int num_key_events() const { return num_key_events_; }
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int num_mouse_events() const { return num_mouse_events_; }
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int num_scroll_events() const { return num_scroll_events_; }
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int num_touch_events() const { return num_touch_events_; }
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int num_gesture_events() const { return num_gesture_events_; }
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void Reset();
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_recorder(HandlerSequenceRecorder* recorder) {
36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    recorder_ = recorder;
37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_handler_name(const std::string& handler_name) {
39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    handler_name_ = handler_name;
40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // EventHandler overrides:
4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual void OnKeyEvent(KeyEvent* event) OVERRIDE;
4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual void OnMouseEvent(MouseEvent* event) OVERRIDE;
4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual void OnScrollEvent(ScrollEvent* event) OVERRIDE;
4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual void OnTouchEvent(TouchEvent* event) OVERRIDE;
4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual void OnGestureEvent(GestureEvent* event) OVERRIDE;
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // How many events have been received of each type?
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int num_key_events_;
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int num_mouse_events_;
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int num_scroll_events_;
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int num_touch_events_;
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int num_gesture_events_;
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
57effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  HandlerSequenceRecorder* recorder_;
58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  std::string handler_name_;
59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(TestEventHandler);
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace test
6423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}  // namespace ui
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif // UI_EVENTS_TEST_TEST_EVENT_HANDLER_H_
67