blob: 484de6bdf12ff4e467a4f022428585528f552578 [file] [log] [blame]
// Copyright 2013 The Flutter 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 FLUTTER_SHELL_PLATFORM_FUCHSIA_TEST_UTIL_MOUSE_EVENT_BUILDER_H_
#define FLUTTER_SHELL_PLATFORM_FUCHSIA_TEST_UTIL_MOUSE_EVENT_BUILDER_H_
#include <fuchsia/ui/pointer/cpp/fidl.h>
#include <zircon/types.h>
#include <array>
#include <optional>
#include <vector>
namespace embedder_testing {
// A helper class for crafting a fuchsia.ui.pointer.MouseEventBuilder table.
class MouseEventBuilder {
public:
static MouseEventBuilder New();
MouseEventBuilder& AddTime(zx_time_t time);
MouseEventBuilder& AddSample(uint32_t id, std::array<float, 2> position,
std::vector<uint8_t> pressed_buttons, std::array<int64_t, 2> scroll,
std::array<int64_t, 2> scroll_in_physical_pixel,
bool is_precision_scroll);
MouseEventBuilder& AddViewParameters(std::array<std::array<float, 2>, 2> view,
std::array<std::array<float, 2>, 2> viewport,
std::array<float, 9> transform);
MouseEventBuilder& AddMouseDeviceInfo(uint32_t id, std::vector<uint8_t> buttons);
fuchsia::ui::pointer::MouseEvent Build();
std::vector<fuchsia::ui::pointer::MouseEvent> BuildAsVector();
private:
std::optional<zx_time_t> time_;
std::optional<fuchsia::ui::pointer::MousePointerSample> sample_;
std::optional<fuchsia::ui::pointer::ViewParameters> params_;
std::optional<fuchsia::ui::pointer::MouseDeviceInfo> device_info_;
};
} // namespace embedder_testing
#endif // FLUTTER_SHELL_PLATFORM_FUCHSIA_TEST_UTIL_MOUSE_EVENT_BUILDER_H_