15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file.
45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef UI_EVENTS_OZONE_EVDEV_EVENT_CONVERTER_EVDEV_H_
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define UI_EVENTS_OZONE_EVDEV_EVENT_CONVERTER_EVDEV_H_
75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/callback.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_path.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/message_loop/message_loop.h"
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/events/ozone/evdev/events_ozone_evdev_export.h"
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace ui {
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class Event;
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochtypedef base::Callback<void(Event*)> EventDispatchCallback;
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass EVENTS_OZONE_EVDEV_EXPORT EventConverterEvdev
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    : public base::MessagePumpLibevent::Watcher {
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public:
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EventConverterEvdev(int fd, const base::FilePath& path);
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual ~EventConverterEvdev();
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Start reading events.
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void Start();
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Stop reading events.
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void Stop();
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) protected:
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // base::MessagePumpLibevent::Watcher:
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE;
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // File descriptor to read.
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  int fd_;
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Path to input device.
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  base::FilePath path_;
40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Controller for watching the input fd.
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  base::MessagePumpLibevent::FileDescriptorWatcher controller_;
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private:
455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(EventConverterEvdev);
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)};
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}  // namespace ui
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif  // UI_EVENTS_OZONE_EVDEV_EVENT_CONVERTER_EVDEV_H_
51