blob: f1702a74c67ed8df8a473c8ff8c67b18eb48d629 [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_TESTS_POINTER_EVENT_UTILITY_H_
#define FLUTTER_SHELL_PLATFORM_FUCHSIA_TESTS_POINTER_EVENT_UTILITY_H_
#include <fuchsia/ui/pointer/cpp/fidl.h>
#include <zircon/types.h>
#include <array>
#include <optional>
#include <vector>
namespace flutter_runner::testing {
// A helper class for crafting a fuchsia.ui.pointer.TouchEvent table.
class TouchEventBuilder {
public:
static TouchEventBuilder New();
TouchEventBuilder& AddTime(zx_time_t time);
TouchEventBuilder& AddSample(fuchsia::ui::pointer::TouchInteractionId id,
fuchsia::ui::pointer::EventPhase phase,
std::array<float, 2> position);
TouchEventBuilder& AddViewParameters(
std::array<std::array<float, 2>, 2> view,
std::array<std::array<float, 2>, 2> viewport,
std::array<float, 9> transform);
TouchEventBuilder& AddResult(
fuchsia::ui::pointer::TouchInteractionResult result);
fuchsia::ui::pointer::TouchEvent Build();
std::vector<fuchsia::ui::pointer::TouchEvent> BuildAsVector();
private:
std::optional<zx_time_t> time_;
std::optional<fuchsia::ui::pointer::ViewParameters> params_;
std::optional<fuchsia::ui::pointer::TouchPointerSample> sample_;
std::optional<fuchsia::ui::pointer::TouchInteractionResult> result_;
};
} // namespace flutter_runner::testing
#endif // FLUTTER_SHELL_PLATFORM_FUCHSIA_TESTS_POINTER_EVENT_UTILITY_H_