event_source.h revision effb81e5f8246d0db0270817048dc992db66e9fb
1839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna// Copyright 2013 The Chromium Authors. All rights reserved. 2839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna// Use of this source code is governed by a BSD-style license that can be 3839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna// found in the LICENSE file. 4839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna 5839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna#ifndef UI_EVENTS_EVENT_SOURCE_H_ 6839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna#define UI_EVENTS_EVENT_SOURCE_H_ 7839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna 8839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna#include <vector> 9839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna 10839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna#include "ui/events/event_dispatcher.h" 11839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna#include "ui/events/events_export.h" 12839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna 13839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinnanamespace ui { 14839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna 15839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinnaclass Event; 16839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinnaclass EventProcessor; 17839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinnaclass EventRewriter; 18839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna 19839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna// EventSource receives events from the native platform (e.g. X11, win32 etc.) 20839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna// and sends the events to an EventProcessor. 21839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinnaclass EVENTS_EXPORT EventSource { 22839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna public: 23839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna EventSource(); 24839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna virtual ~EventSource(); 25839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna 26839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna virtual EventProcessor* GetEventProcessor() = 0; 27839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna 28839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna // Adds a rewriter to modify events before they are sent to the 29839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna // EventProcessor. The rewriter must be explicitly removed from the 30839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna // EventSource before the rewriter is destroyed. The EventSource 31839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna // does not take ownership of the rewriter. 32839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna void AddEventRewriter(EventRewriter* rewriter); 33839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna void RemoveEventRewriter(EventRewriter* rewriter); 34839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna 35839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna protected: 36839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna EventDispatchDetails SendEventToProcessor(Event* event); 37839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna 38839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna private: 39839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna typedef std::vector<EventRewriter*> EventRewriterList; 40839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna EventDispatchDetails DeliverEventToProcessor(Event* event); 41839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna EventRewriterList rewriter_list_; 42839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna DISALLOW_COPY_AND_ASSIGN(EventSource); 43839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna}; 44839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna 45839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna} // namespace ui 46839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna 47839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna#endif // UI_EVENTS_EVENT_SOURCE_H_ 48839c8456fbe08fc2497857673805b84dffb45507Jussi Kivilinna