blob: 492fb87cfe786177b8a5854ffe3d2eca05b1c553 [file] [log] [blame]
// Copyright 2016 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 SERVICES_UI_INPUT_MANAGER_INPUT_CONNECTION_IMPL_H_
#define SERVICES_UI_INPUT_MANAGER_INPUT_CONNECTION_IMPL_H_
#include "base/macros.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/services/ui/input/interfaces/input_connection.mojom.h"
#include "mojo/services/ui/views/interfaces/views.mojom.h"
namespace input_manager {
class InputAssociate;
// InputConnection implementation.
// Binds incoming requests to the relevant view token.
class InputConnectionImpl : public mojo::ui::InputConnection {
public:
InputConnectionImpl(
InputAssociate* associate,
mojo::ui::ViewTokenPtr view_token,
mojo::InterfaceRequest<mojo::ui::InputConnection> request);
~InputConnectionImpl() override;
const mojo::ui::ViewToken* view_token() const { return view_token_.get(); }
// Delivers an event to a view.
void DeliverEvent(mojo::EventPtr event);
// |mojo::ui::InputConnection|
void SetListener(
mojo::InterfaceHandle<mojo::ui::InputListener> listener) override;
private:
void OnEventFinished(bool handled);
InputAssociate* const associate_;
mojo::ui::ViewTokenPtr view_token_;
mojo::ui::InputListenerPtr listener_;
mojo::Binding<mojo::ui::InputConnection> binding_;
DISALLOW_COPY_AND_ASSIGN(InputConnectionImpl);
};
} // namespace input_manager
#endif // SERVICES_UI_INPUT_MANAGER_INPUT_CONNECTION_IMPL_H_