blob: 26b5801f44ba3bbbba3f27faeea89015f4aa7113 [file] [log] [blame]
// Copyright 2021 The Fuchsia 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 SRC_UI_BIN_ROOT_PRESENTER_VIRTUAL_KEYBOARD_CONTROLLER_CREATOR_H_
#define SRC_UI_BIN_ROOT_PRESENTER_VIRTUAL_KEYBOARD_CONTROLLER_CREATOR_H_
#include <fuchsia/input/virtualkeyboard/cpp/fidl.h>
#include <fuchsia/ui/views/cpp/fidl.h>
#include <lib/fidl/cpp/binding_set.h>
#include <lib/fidl/cpp/interface_request.h>
#include <lib/sys/cpp/component_context.h>
#include <memory>
namespace root_presenter {
// Enables the binding of one or more `fuchsia.input.virtualkeyboard.Controller`s with
// a virtual keyboard. A `VirtualKeyboardControllerCreator` and its `VirtualKeyboardController`s
// are associated with a single virtual keyboard.
class VirtualKeyboardControllerCreator : public fuchsia::input::virtualkeyboard::ControllerCreator {
public:
// Constructs an object which can serve the `fuchsia.input.virtualkeyboard.ControllerCreator`
// FIDL protocol, and publishes the protocol using `component_context`.
//
// Callers _should_ construct this object before entering the event loop.
explicit VirtualKeyboardControllerCreator(sys::ComponentContext* component_context);
private:
using ControllerBinding =
fidl::Binding<fuchsia::input::virtualkeyboard::Controller,
std::unique_ptr<fuchsia::input::virtualkeyboard::Controller>>;
// |fuchsia.input.virtualkeyboard.ControllerCreator|
void Create(fuchsia::ui::views::ViewRef view_ref,
fuchsia::input::virtualkeyboard::TextType text_type,
fidl::InterfaceRequest<fuchsia::input::virtualkeyboard::Controller>
controller_request) override;
fidl::BindingSet<fuchsia::input::virtualkeyboard::ControllerCreator> creator_bindings_;
std::unique_ptr<ControllerBinding> controller_binding_;
};
} // namespace root_presenter
#endif // SRC_UI_BIN_ROOT_PRESENTER_VIRTUAL_KEYBOARD_CONTROLLER_CREATOR_H_