blob: 33b4f97887da652fd6883444042c06210feb64a6 [file] [log] [blame]
// Copyright 2015 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_UI_INPUT_HANDLER_H_
#define MOJO_UI_INPUT_HANDLER_H_
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/system/macros.h"
#include "mojo/public/interfaces/application/service_provider.mojom.h"
#include "mojo/services/ui/input/interfaces/input_connection.mojom.h"
namespace mojo {
namespace ui {
// Holds an |InputConnection| and sets its |InputListener|.
//
// This class is intended to be included as a member of a View that wants to
// receive input using the following pattern.
//
// class MyView : public mojo::ui::BaseView, public mojo::ui::InputListener {
// public:
// MyView(mojo::ApplicationImpl* app_impl,
// const mojo::ui::ViewProvider::CreateViewCallback&
// create_view_callback)
// : BaseView(app_impl, "MyView", create_view_callback),
// input_handler_(GetViewServiceProvider(), this) {}
// ~MyView() override {}
//
// private:
// // |InputListener|:
// void OnEvent(mojo::EventPtr event,
// const OnEventCallback& callback) override;
//
// mojo::ui::InputHandler input_handler_;
//
// MOJO_DISALLOW_COPY_AND_ASSIGN(MyView);
// };
class InputHandler {
public:
// Creates an input connection for the view with the associated
// service provider.
InputHandler(mojo::ServiceProvider* service_provider,
mojo::ui::InputListener* listener);
~InputHandler();
// Gets the input connection.
mojo::ui::InputConnection* connection() { return connection_.get(); }
private:
mojo::Binding<mojo::ui::InputListener> listener_binding_;
mojo::ui::InputConnectionPtr connection_;
MOJO_DISALLOW_COPY_AND_ASSIGN(InputHandler);
};
} // namespace ui
} // namespace mojo
#endif // MOJO_UI_INPUT_HANDLER_H_