// Copyright 2014 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 MOJO_SERVICES_WINDOW_MANAGER_VIEW_EVENT_DISPATCHER_H_
#define MOJO_SERVICES_WINDOW_MANAGER_VIEW_EVENT_DISPATCHER_H_

#include "base/memory/scoped_ptr.h"
#include "ui/events/event_processor.h"
#include "ui/events/event_target.h"

namespace mojo {

class ViewTarget;

class ViewEventDispatcher : public ui::EventProcessor {
 public:
  ViewEventDispatcher();
  ~ViewEventDispatcher() override;

  void SetRootViewTarget(ViewTarget* root_view_target);

 private:
  // Overridden from ui::EventProcessor:
  ui::EventTarget* GetRootTarget() override;
  void OnEventProcessingStarted(ui::Event* event) override;

  // Overridden from ui::EventDispatcherDelegate.
  bool CanDispatchToTarget(ui::EventTarget* target) override;
  ui::EventDispatchDetails PreDispatchEvent(ui::EventTarget* target,
                                            ui::Event* event) override;
  ui::EventDispatchDetails PostDispatchEvent(
      ui::EventTarget* target, const ui::Event& event) override;

  // We keep a weak reference to ViewTarget*, which corresponds to the root of
  // the mojo::View tree.
  ViewTarget* root_view_target_;

  ViewTarget* event_dispatch_target_;
  ViewTarget* old_dispatch_target_;

  DISALLOW_COPY_AND_ASSIGN(ViewEventDispatcher);
};

}  // namespace mojo

#endif  // MOJO_SERVICES_WINDOW_MANAGER_VIEW_EVENT_DISPATCHER_H_
