5 #include "flutter/shell/platform/windows/testing/flutter_windows_engine_builder.h"
6 #include "flutter/shell/platform/windows/testing/windows_test.h"
8 #include "gtest/gtest.h"
15 class WindowManagerTest :
public WindowsTest {
17 WindowManagerTest() =
default;
18 virtual ~WindowManagerTest() =
default;
21 void SetUp()
override {
22 auto& context = GetContext();
23 FlutterWindowsEngineBuilder builder(context);
25 engine_ = builder.Build();
28 engine_->SetRootIsolateCreateCallback(context.GetRootIsolateCallback());
29 ASSERT_TRUE(engine_->Run(
"testWindowController"));
31 bool signalled =
false;
32 context.AddNativeFunction(
33 "Signal", CREATE_NATIVE_ENTRY([&](Dart_NativeArguments args) {
38 engine_->task_runner()->ProcessTasks();
42 void TearDown()
override { engine_->Stop(); }
44 int64_t engine_id() {
return reinterpret_cast<int64_t
>(engine_.get()); }
46 WindowCreationRequest* creation_request() {
return &creation_request_; }
49 std::unique_ptr<FlutterWindowsEngine> engine_;
50 std::optional<flutter::Isolate> isolate_;
51 WindowCreationRequest creation_request_{
54 .has_preferred_view_size =
true,
55 .preferred_view_width = 800,
56 .preferred_view_height = 600,
60 FML_DISALLOW_COPY_AND_ASSIGN(WindowManagerTest);
65 TEST_F(WindowManagerTest, WindowingInitialize) {
68 static bool received_message =
false;
73 const int64_t view_id =
75 engine_id(), creation_request());
77 engine_id(), view_id));
79 EXPECT_TRUE(received_message);
82 TEST_F(WindowManagerTest, HasTopLevelWindows) {
85 bool has_top_level_windows =
87 EXPECT_FALSE(has_top_level_windows);
91 has_top_level_windows =
93 EXPECT_TRUE(has_top_level_windows);
96 TEST_F(WindowManagerTest, CreateRegularWindow) {
99 const int64_t view_id =
101 engine_id(), creation_request());
102 EXPECT_EQ(view_id, 0);
105 TEST_F(WindowManagerTest, GetWindowHandle) {
108 const int64_t view_id =
110 engine_id(), creation_request());
111 const HWND window_handle =
114 EXPECT_NE(window_handle,
nullptr);
117 TEST_F(WindowManagerTest, GetWindowSize) {
120 const int64_t view_id =
122 engine_id(), creation_request());
123 const HWND window_handle =
130 EXPECT_EQ(size.
width, creation_request()->content_size.preferred_view_width);
132 creation_request()->content_size.preferred_view_height);
135 TEST_F(WindowManagerTest, SetWindowSize) {
138 const int64_t view_id =
140 engine_id(), creation_request());
141 const HWND window_handle =
147 .preferred_view_width = 640,
148 .preferred_view_height = 480,
155 EXPECT_EQ(actual_size.
width, 640);
156 EXPECT_EQ(actual_size.
height, 480);
TEST_F(CompositorOpenGLTest, CreateBackingStore)
bool has_preferred_view_size
void(* on_message)(WindowsMessage *)
void InternalFlutterWindows_WindowManager_Initialize(int64_t engine_id, const flutter::WindowingInitRequest *request)
bool InternalFlutterWindows_WindowManager_HasTopLevelWindows(int64_t engine_id)
FlutterViewId InternalFlutterWindows_WindowManager_CreateRegularWindow(int64_t engine_id, const flutter::WindowCreationRequest *request)
FlutterWindowSize InternalFlutterWindows_WindowManager_GetWindowContentSize(HWND hwnd)
HWND InternalFlutterWindows_WindowManager_GetTopLevelWindowHandle(int64_t engine_id, FlutterViewId view_id)
void InternalFlutterWindows_WindowManager_SetWindowContentSize(HWND hwnd, const flutter::WindowSizing *size)