// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_EVENTS_EVENT_PROCESSOR_H_
#define UI_EVENTS_EVENT_PROCESSOR_H_

#include "ui/events/event_dispatcher.h"
#include "ui/events/event_sink.h"
#include "ui/events/event_source.h"

namespace ui {

class EventTargeter;

// EventProcessor inherits EventSink to receive an event from an EventSource
// and dispatches it to a tree of EventTargets.
class EVENTS_EXPORT EventProcessor : public EventDispatcherDelegate,
                                     public EventSink {
 public:
  ~EventProcessor() override {}

  // EventSink overrides:
  EventDispatchDetails OnEventFromSource(Event* event) override;

  // Returns the EventTarget with the right EventTargeter that we should use for
  // dispatching this |event|.
  virtual EventTarget* GetRootForEvent(Event* event) = 0;

  // If the root target returned by GetRootForEvent() does not have a
  // targeter set, then the default targeter is used to find the target.
  virtual EventTargeter* GetDefaultEventTargeter() = 0;

 protected:
  // Invoked at the start of processing, before an EventTargeter is used to
  // find the target of the event. If processing should not take place, marks
  // |event| as handled. Otherwise updates |event| so that the targeter can
  // operate correctly (e.g., it can be used to update the location of the
  // event when dispatching from an EventSource in high-DPI) and updates any
  // members in the event processor as necessary.
  virtual void OnEventProcessingStarted(Event* event);

  // Invoked when the processing of |event| has finished (i.e., when no further
  // dispatching of |event| will be performed by this EventProcessor). Note
  // that the last target to which |event| was dispatched may have been
  // destroyed.
  virtual void OnEventProcessingFinished(Event* event);
};

}  // namespace ui

#endif  // UI_EVENTS_EVENT_PROCESSOR_H_
