1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// found in the LICENSE file.
4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef UI_EVENTS_PLATFORM_PLATFORM_EVENT_OBSERVER_H_
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define UI_EVENTS_PLATFORM_PLATFORM_EVENT_OBSERVER_H_
7effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ui/events/events_export.h"
9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ui/events/platform/platform_event_types.h"
10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace ui {
12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// PlatformEventObserver can be installed on a PlatformEventSource, and it
14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// receives all events that are dispatched to the dispatchers.
15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass EVENTS_EXPORT PlatformEventObserver {
16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch public:
17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // This is called before the dispatcher receives the event.
18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual void WillProcessEvent(const PlatformEvent& event) = 0;
19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
20effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // This is called after the event has been dispatched to the dispatcher(s).
21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void DidProcessEvent(const PlatformEvent& event) = 0;
22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
23effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch protected:
24effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual ~PlatformEventObserver() {}
25effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch};
26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}  // namespace ui
28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif  // UI_EVENTS_PLATFORM_PLATFORM_EVENT_OBSERVER_H_
30