9 #include "flutter/fml/macros.h"
14 #include "flutter/shell/platform/windows/testing/flutter_windows_engine_builder.h"
15 #include "flutter/shell/platform/windows/testing/mock_window_binding_handler.h"
16 #include "flutter/shell/platform/windows/testing/test_binary_messenger.h"
17 #include "flutter/shell/platform/windows/testing/windows_test.h"
18 #include "gmock/gmock.h"
19 #include "gtest/gtest.h"
26 using ::testing::NotNull;
27 using ::testing::Return;
29 static constexpr
char kChannelName[] =
"flutter/mousecursor";
33 "createCustomCursor/windows";
36 "deleteCustomCursor/windows";
38 void SimulateCursorMessage(TestBinaryMessenger* messenger,
39 const std::string& method_name,
40 std::unique_ptr<EncodableValue> arguments,
41 MethodResult<EncodableValue>* result_handler) {
42 MethodCall<> call(method_name, std::move(arguments));
46 EXPECT_TRUE(messenger->SimulateEngineMessage(
48 [&result_handler](
const uint8_t* reply,
size_t reply_size) {
49 StandardMethodCodec::GetInstance().DecodeAndProcessResponseEnvelope(
50 reply, reply_size, result_handler);
64 MockWindowBindingHandler*
window() {
return window_; }
67 FlutterWindowsEngineBuilder builder{GetContext()};
69 engine_ = builder.Build();
73 FlutterWindowsEngineBuilder builder{GetContext()};
75 auto window = std::make_unique<MockWindowBindingHandler>();
78 EXPECT_CALL(*window_, SetView).Times(1);
80 engine_ = builder.Build();
81 view_ = std::make_unique<FlutterWindowsView>(std::move(
window));
83 engine_->SetView(view_.get());
87 std::unique_ptr<FlutterWindowsEngine> engine_;
88 std::unique_ptr<FlutterWindowsView> view_;
89 MockWindowBindingHandler* window_;
97 TestBinaryMessenger messenger;
100 EXPECT_CALL(*window(), UpdateFlutterCursor(
"click")).Times(1);
102 bool success =
false;
106 EXPECT_EQ(result,
nullptr);
117 EXPECT_TRUE(success);
123 TestBinaryMessenger messenger;
129 [&error](
const std::string& error_code,
const std::string& error_message,
132 EXPECT_EQ(error_message,
133 "Cursor is not available in Windows headless mode");
150 TestBinaryMessenger messenger;
154 std::vector<uint8_t> buffer(4 * 4 * 4, 0);
156 bool success =
false;
160 EXPECT_EQ(std::get<std::string>(*result),
"hello");
175 EXPECT_TRUE(success);
181 TestBinaryMessenger messenger;
185 std::vector<uint8_t> buffer(4 * 4 * 4, 0);
187 bool success =
false;
192 EXPECT_EQ(result,
nullptr);
196 EXPECT_CALL(*window(), SetFlutterCursor(NotNull())).Times(1);
207 &create_result_handler);
213 &set_result_handler);
215 EXPECT_TRUE(success);
221 TestBinaryMessenger messenger;
225 std::vector<uint8_t> buffer(4 * 4 * 4, 0);
231 [&error](
const std::string& error_code,
const std::string& error_message,
234 EXPECT_EQ(error_message,
235 "Cursor is not available in Windows headless mode");
248 &create_result_handler);
254 &set_result_handler);
262 TestBinaryMessenger messenger;
268 [&error](
const std::string& error_code,
const std::string& error_message,
273 "The custom cursor identified by the argument key cannot be found");
277 EXPECT_CALL(*window(), SetFlutterCursor).Times(0);
291 TestBinaryMessenger messenger;
295 std::vector<uint8_t> buffer(4 * 4 * 4, 0);
297 bool success =
false;
302 EXPECT_EQ(result,
nullptr);
315 &create_result_handler);
321 &delete_result_handler);
323 EXPECT_TRUE(success);
329 TestBinaryMessenger messenger;
332 bool success =
false;
336 EXPECT_EQ(result,
nullptr);
346 EXPECT_TRUE(success);