Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit e7632f2

Browse files
committed
[Windows] Clean up mock expectations
1 parent 315495e commit e7632f2

File tree

5 files changed

+73
-66
lines changed

5 files changed

+73
-66
lines changed

shell/platform/windows/angle_surface_manager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ class AngleSurfaceManager {
6565

6666
// Binds |egl_context_| to the current rendering thread and to the draw and
6767
// read surfaces returning a boolean result reflecting success.
68-
bool MakeCurrent();
68+
virtual bool MakeCurrent();
6969

7070
// Unbinds the current EGL context from the current thread.
7171
bool ClearCurrent();

shell/platform/windows/flutter_window_unittests.cc

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "gtest/gtest.h"
1313

1414
using testing::_;
15+
using testing::AnyNumber;
1516
using testing::Invoke;
1617
using testing::Return;
1718

@@ -133,8 +134,7 @@ TEST(FlutterWindowTest, OnBitmapSurfaceUpdated) {
133134
// when the DPI scale is 100% (96 DPI).
134135
TEST(FlutterWindowTest, OnCursorRectUpdatedRegularDPI) {
135136
MockFlutterWindow win32window;
136-
ON_CALL(win32window, GetDpiScale()).WillByDefault(Return(1.0));
137-
EXPECT_CALL(win32window, GetDpiScale()).Times(1);
137+
EXPECT_CALL(win32window, GetDpiScale()).WillOnce(Return(1.0));
138138

139139
Rect cursor_rect(Point(10, 20), Size(30, 40));
140140
EXPECT_CALL(win32window, UpdateCursorRect(cursor_rect)).Times(1);
@@ -147,8 +147,7 @@ TEST(FlutterWindowTest, OnCursorRectUpdatedRegularDPI) {
147147
// when the DPI scale is 150% (144 DPI).
148148
TEST(FlutterWindowTest, OnCursorRectUpdatedHighDPI) {
149149
MockFlutterWindow win32window;
150-
ON_CALL(win32window, GetDpiScale()).WillByDefault(Return(1.5));
151-
EXPECT_CALL(win32window, GetDpiScale()).Times(1);
150+
EXPECT_CALL(win32window, GetDpiScale()).WillOnce(Return(1.5));
152151

153152
Rect expected_cursor_rect(Point(15, 30), Size(45, 60));
154153
EXPECT_CALL(win32window, UpdateCursorRect(expected_cursor_rect)).Times(1);
@@ -160,7 +159,9 @@ TEST(FlutterWindowTest, OnCursorRectUpdatedHighDPI) {
160159
TEST(FlutterWindowTest, OnPointerStarSendsDeviceType) {
161160
FlutterWindow win32window(100, 100);
162161
MockWindowBindingHandlerDelegate delegate;
162+
EXPECT_CALL(delegate, OnWindowStateEvent).Times(AnyNumber());
163163
win32window.SetView(&delegate);
164+
164165
// Move
165166
EXPECT_CALL(delegate,
166167
OnPointerMove(10.0, 10.0, kFlutterPointerDeviceKindMouse,
@@ -259,6 +260,7 @@ TEST(FlutterWindowTest, OnPointerStarSendsDeviceType) {
259260
TEST(FlutterWindowTest, OnScrollCallsGetScrollOffsetMultiplier) {
260261
MockFlutterWindow win32window;
261262
MockWindowBindingHandlerDelegate delegate;
263+
EXPECT_CALL(win32window, OnWindowStateEvent).Times(AnyNumber());
262264
win32window.SetView(&delegate);
263265

264266
ON_CALL(win32window, GetScrollOffsetMultiplier())
@@ -277,6 +279,7 @@ TEST(FlutterWindowTest, OnScrollCallsGetScrollOffsetMultiplier) {
277279
TEST(FlutterWindowTest, OnWindowRepaint) {
278280
MockFlutterWindow win32window;
279281
MockWindowBindingHandlerDelegate delegate;
282+
EXPECT_CALL(win32window, OnWindowStateEvent).Times(AnyNumber());
280283
win32window.SetView(&delegate);
281284

282285
EXPECT_CALL(delegate, OnWindowRepaint()).Times(1);
@@ -287,6 +290,7 @@ TEST(FlutterWindowTest, OnWindowRepaint) {
287290
TEST(FlutterWindowTest, OnThemeChange) {
288291
MockFlutterWindow win32window;
289292
MockWindowBindingHandlerDelegate delegate;
293+
EXPECT_CALL(win32window, OnWindowStateEvent).Times(AnyNumber());
290294
win32window.SetView(&delegate);
291295

292296
EXPECT_CALL(delegate, OnHighContrastChanged).Times(1);
@@ -308,9 +312,9 @@ TEST(FlutterWindowTest, AccessibilityNodeWithoutView) {
308312
TEST(FlutterWindowTest, AlertNode) {
309313
std::unique_ptr<MockFlutterWindow> win32window =
310314
std::make_unique<MockFlutterWindow>();
311-
ON_CALL(*win32window, GetPlatformWindow()).WillByDefault(Return(nullptr));
312-
ON_CALL(*win32window, GetAxFragmentRootDelegate())
313-
.WillByDefault(Return(nullptr));
315+
EXPECT_CALL(*win32window.get(), GetAxFragmentRootDelegate())
316+
.WillOnce(Return(nullptr));
317+
EXPECT_CALL(*win32window.get(), OnWindowStateEvent).Times(AnyNumber());
314318
MockFlutterWindowsView view(std::move(win32window));
315319
std::wstring message = L"Test alert";
316320
EXPECT_CALL(view, NotifyWinEventWrapper(_, ax::mojom::Event::kAlert))
@@ -337,21 +341,22 @@ TEST(FlutterWindowTest, AlertNode) {
337341

338342
TEST(FlutterWindowTest, LifecycleFocusMessages) {
339343
MockFlutterWindow win32window;
340-
ON_CALL(win32window, GetPlatformWindow).WillByDefault([]() {
341-
return reinterpret_cast<HWND>(1);
342-
});
344+
EXPECT_CALL(win32window, GetPlatformWindow)
345+
.WillRepeatedly(Return(reinterpret_cast<HWND>(1)));
343346
MockWindowBindingHandlerDelegate delegate;
344-
win32window.SetView(&delegate);
345347

346348
WindowStateEvent last_event;
347-
ON_CALL(delegate, OnWindowStateEvent)
348-
.WillByDefault([&last_event](HWND hwnd, WindowStateEvent event) {
349+
EXPECT_CALL(delegate, OnWindowStateEvent)
350+
.WillRepeatedly([&last_event](HWND hwnd, WindowStateEvent event) {
349351
last_event = event;
350352
});
351-
ON_CALL(win32window, OnWindowStateEvent)
352-
.WillByDefault([&](WindowStateEvent event) {
353+
EXPECT_CALL(win32window, OnWindowStateEvent)
354+
.WillRepeatedly([&](WindowStateEvent event) {
353355
win32window.FlutterWindow::OnWindowStateEvent(event);
354356
});
357+
EXPECT_CALL(win32window, OnResize).Times(AnyNumber());
358+
359+
win32window.SetView(&delegate);
355360

356361
win32window.InjectWindowMessage(WM_SIZE, 0, 0);
357362
EXPECT_EQ(last_event, WindowStateEvent::kHide);
@@ -368,13 +373,13 @@ TEST(FlutterWindowTest, LifecycleFocusMessages) {
368373

369374
TEST(FlutterWindowTest, CachedLifecycleMessage) {
370375
MockFlutterWindow win32window;
371-
ON_CALL(win32window, GetPlatformWindow).WillByDefault([]() {
372-
return reinterpret_cast<HWND>(1);
373-
});
374-
ON_CALL(win32window, OnWindowStateEvent)
375-
.WillByDefault([&](WindowStateEvent event) {
376+
EXPECT_CALL(win32window, GetPlatformWindow)
377+
.WillRepeatedly(Return(reinterpret_cast<HWND>(1)));
378+
EXPECT_CALL(win32window, OnWindowStateEvent)
379+
.WillRepeatedly([&](WindowStateEvent event) {
376380
win32window.FlutterWindow::OnWindowStateEvent(event);
377381
});
382+
EXPECT_CALL(win32window, OnResize).Times(1);
378383

379384
// Restore
380385
win32window.InjectWindowMessage(WM_SIZE, 0, MAKEWORD(1, 1));
@@ -385,8 +390,8 @@ TEST(FlutterWindowTest, CachedLifecycleMessage) {
385390
MockWindowBindingHandlerDelegate delegate;
386391
bool focused = false;
387392
bool restored = false;
388-
ON_CALL(delegate, OnWindowStateEvent)
389-
.WillByDefault([&](HWND hwnd, WindowStateEvent event) {
393+
EXPECT_CALL(delegate, OnWindowStateEvent)
394+
.WillRepeatedly([&](HWND hwnd, WindowStateEvent event) {
390395
if (event == WindowStateEvent::kFocus) {
391396
focused = true;
392397
} else if (event == WindowStateEvent::kShow) {
@@ -403,18 +408,19 @@ TEST(FlutterWindowTest, PosthumousWindowMessage) {
403408
MockWindowBindingHandlerDelegate delegate;
404409
int msg_count = 0;
405410
HWND hwnd;
406-
ON_CALL(delegate, OnWindowStateEvent)
407-
.WillByDefault([&](HWND hwnd, WindowStateEvent event) { msg_count++; });
411+
EXPECT_CALL(delegate, OnWindowStateEvent)
412+
.WillRepeatedly([&](HWND hwnd, WindowStateEvent event) { msg_count++; });
408413

409414
{
410415
MockFlutterWindow win32window(false);
411-
ON_CALL(win32window, GetPlatformWindow).WillByDefault([&]() {
416+
EXPECT_CALL(win32window, GetPlatformWindow).WillRepeatedly([&]() {
412417
return win32window.FlutterWindow::GetPlatformWindow();
413418
});
414-
ON_CALL(win32window, OnWindowStateEvent)
415-
.WillByDefault([&](WindowStateEvent event) {
419+
EXPECT_CALL(win32window, OnWindowStateEvent)
420+
.WillRepeatedly([&](WindowStateEvent event) {
416421
win32window.FlutterWindow::OnWindowStateEvent(event);
417422
});
423+
EXPECT_CALL(win32window, OnResize).Times(AnyNumber());
418424
win32window.SetView(&delegate);
419425
win32window.InitializeChild("Title", 1, 1);
420426
hwnd = win32window.GetPlatformWindow();

shell/platform/windows/flutter_windows_engine_unittests.cc

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,7 @@ TEST_F(FlutterWindowsEngineTest, AlertPlatformMessage) {
640640
std::make_unique<::testing::NiceMock<MockWindowBindingHandler>>();
641641
ui::AXPlatformNodeDelegateBase parent_delegate;
642642
AlertPlatformNodeDelegate delegate(parent_delegate);
643-
ON_CALL(*window_binding_handler, GetAlertDelegate).WillByDefault([&delegate] {
643+
EXPECT_CALL(*window_binding_handler, GetAlertDelegate).WillOnce([&delegate] {
644644
return &delegate;
645645
});
646646
MockFlutterWindowsView view(std::move(window_binding_handler));
@@ -660,9 +660,9 @@ TEST_F(FlutterWindowsEngineTest, AlertPlatformMessage) {
660660
});
661661

662662
bool did_call = false;
663-
ON_CALL(view, NotifyWinEventWrapper)
664-
.WillByDefault([&did_call](ui::AXPlatformNodeWin* node,
665-
ax::mojom::Event event) { did_call = true; });
663+
EXPECT_CALL(view, NotifyWinEventWrapper)
664+
.WillOnce([&did_call](ui::AXPlatformNodeWin* node,
665+
ax::mojom::Event event) { did_call = true; });
666666

667667
engine->UpdateSemanticsEnabled(true);
668668
engine->Run();
@@ -712,13 +712,13 @@ TEST_F(FlutterWindowsEngineTest, TestExit) {
712712
EngineModifier modifier(engine.get());
713713
modifier.embedder_api().RunsAOTCompiledDartCode = []() { return false; };
714714
auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get());
715-
ON_CALL(*handler, Quit)
716-
.WillByDefault(
717-
[&finished](std::optional<HWND> hwnd, std::optional<WPARAM> wparam,
718-
std::optional<LPARAM> lparam,
719-
UINT exit_code) { finished = exit_code == 0; });
720-
ON_CALL(*handler, IsLastWindowOfProcess).WillByDefault([]() { return true; });
721-
EXPECT_CALL(*handler, Quit).Times(1);
715+
EXPECT_CALL(*handler, SetLifecycleState(AppLifecycleState::kResumed));
716+
EXPECT_CALL(*handler, Quit)
717+
.WillOnce([&finished](std::optional<HWND> hwnd,
718+
std::optional<WPARAM> wparam,
719+
std::optional<LPARAM> lparam,
720+
UINT exit_code) { finished = exit_code == 0; });
721+
EXPECT_CALL(*handler, IsLastWindowOfProcess).WillOnce(Return(true));
722722
modifier.SetLifecycleManager(std::move(handler));
723723

724724
engine->lifecycle_manager()->BeginProcessingExit();
@@ -738,7 +738,6 @@ TEST_F(FlutterWindowsEngineTest, TestExit) {
738738
TEST_F(FlutterWindowsEngineTest, TestExitCancel) {
739739
FlutterWindowsEngineBuilder builder{GetContext()};
740740
builder.SetDartEntrypoint("exitTestCancel");
741-
bool finished = false;
742741
bool did_call = false;
743742

744743
auto engine = builder.Build();
@@ -750,12 +749,8 @@ TEST_F(FlutterWindowsEngineTest, TestExitCancel) {
750749
EngineModifier modifier(engine.get());
751750
modifier.embedder_api().RunsAOTCompiledDartCode = []() { return false; };
752751
auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get());
753-
ON_CALL(*handler, Quit)
754-
.WillByDefault([&finished](std::optional<HWND> hwnd,
755-
std::optional<WPARAM> wparam,
756-
std::optional<LPARAM> lparam,
757-
UINT exit_code) { finished = true; });
758-
ON_CALL(*handler, IsLastWindowOfProcess).WillByDefault([]() { return true; });
752+
EXPECT_CALL(*handler, SetLifecycleState(AppLifecycleState::kResumed));
753+
EXPECT_CALL(*handler, IsLastWindowOfProcess).WillOnce(Return(true));
759754
EXPECT_CALL(*handler, Quit).Times(0);
760755
modifier.SetLifecycleManager(std::move(handler));
761756
engine->lifecycle_manager()->BeginProcessingExit();
@@ -783,10 +778,11 @@ TEST_F(FlutterWindowsEngineTest, TestExitCancel) {
783778
while (!did_call) {
784779
engine->task_runner()->ProcessTasks();
785780
}
786-
787-
EXPECT_FALSE(finished);
788781
}
789782

783+
// TODO(loicsharma): This test is passing incorrectly on the first
784+
// WM_CLOSE message when instead it should pass on the second WM_CLOSE message.
785+
// https://github.com/flutter/flutter/issues/137963
790786
TEST_F(FlutterWindowsEngineTest, TestExitSecondCloseMessage) {
791787
FlutterWindowsEngineBuilder builder{GetContext()};
792788
builder.SetDartEntrypoint("exitTestExit");
@@ -801,18 +797,18 @@ TEST_F(FlutterWindowsEngineTest, TestExitSecondCloseMessage) {
801797
EngineModifier modifier(engine.get());
802798
modifier.embedder_api().RunsAOTCompiledDartCode = []() { return false; };
803799
auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get());
804-
auto& handler_obj = *handler;
805-
ON_CALL(handler_obj, IsLastWindowOfProcess).WillByDefault([]() {
806-
return true;
807-
});
808-
ON_CALL(handler_obj, Quit)
809-
.WillByDefault(
810-
[&handler_obj](std::optional<HWND> hwnd, std::optional<WPARAM> wparam,
800+
EXPECT_CALL(*handler, SetLifecycleState(AppLifecycleState::kResumed));
801+
// TODO(loicsharma): These should be `EXPECT_CALL`s
802+
// https://github.com/flutter/flutter/issues/137963
803+
ON_CALL(*handler, IsLastWindowOfProcess).WillByDefault(Return(true));
804+
ON_CALL(*handler, Quit)
805+
.WillByDefault([handler_ptr = handler.get()](
806+
std::optional<HWND> hwnd, std::optional<WPARAM> wparam,
811807
std::optional<LPARAM> lparam, UINT exit_code) {
812-
handler_obj.WindowsLifecycleManager::Quit(hwnd, wparam, lparam,
813-
exit_code);
814-
});
815-
ON_CALL(handler_obj, DispatchMessage)
808+
handler_ptr->WindowsLifecycleManager::Quit(hwnd, wparam, lparam,
809+
exit_code);
810+
});
811+
ON_CALL(*handler, DispatchMessage)
816812
.WillByDefault(
817813
[&engine](HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) {
818814
engine->window_proc_delegate_manager()->OnTopLevelWindowProc(
@@ -863,7 +859,8 @@ TEST_F(FlutterWindowsEngineTest, TestExitCloseMultiWindow) {
863859
EngineModifier modifier(engine.get());
864860
modifier.embedder_api().RunsAOTCompiledDartCode = []() { return false; };
865861
auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get());
866-
ON_CALL(*handler, IsLastWindowOfProcess).WillByDefault([&finished]() {
862+
EXPECT_CALL(*handler, SetLifecycleState(AppLifecycleState::kResumed));
863+
EXPECT_CALL(*handler, IsLastWindowOfProcess).WillOnce([&finished]() {
867864
finished = true;
868865
return false;
869866
});
@@ -1065,8 +1062,8 @@ TEST_F(FlutterWindowsEngineTest, EnableLifecycleState) {
10651062
EngineModifier modifier(engine.get());
10661063
modifier.embedder_api().RunsAOTCompiledDartCode = []() { return false; };
10671064
auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get());
1068-
ON_CALL(*handler, SetLifecycleState)
1069-
.WillByDefault([handler_ptr = handler.get()](AppLifecycleState state) {
1065+
EXPECT_CALL(*handler, SetLifecycleState)
1066+
.WillRepeatedly([handler_ptr = handler.get()](AppLifecycleState state) {
10701067
handler_ptr->WindowsLifecycleManager::SetLifecycleState(state);
10711068
});
10721069
modifier.SetLifecycleManager(std::move(handler));
@@ -1118,8 +1115,8 @@ TEST_F(FlutterWindowsEngineTest, LifecycleStateToFrom) {
11181115
EngineModifier modifier(engine.get());
11191116
modifier.embedder_api().RunsAOTCompiledDartCode = []() { return false; };
11201117
auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get());
1121-
ON_CALL(*handler, SetLifecycleState)
1122-
.WillByDefault([handler_ptr = handler.get()](AppLifecycleState state) {
1118+
EXPECT_CALL(*handler, SetLifecycleState)
1119+
.WillRepeatedly([handler_ptr = handler.get()](AppLifecycleState state) {
11231120
handler_ptr->WindowsLifecycleManager::SetLifecycleState(state);
11241121
});
11251122
handler->begin_processing_callback = [&]() { enabled_lifecycle = true; };
@@ -1167,6 +1164,7 @@ TEST_F(FlutterWindowsEngineTest, ChannelListenedTo) {
11671164

11681165
bool lifecycle_began = false;
11691166
auto handler = std::make_unique<MockWindowsLifecycleManager>(engine.get());
1167+
EXPECT_CALL(*handler, SetLifecycleState).Times(1);
11701168
handler->begin_processing_callback = [&]() { lifecycle_began = true; };
11711169
modifier.SetLifecycleManager(std::move(handler));
11721170

shell/platform/windows/flutter_windows_view_unittests.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ class MockAngleSurfaceManager : public AngleSurfaceManager {
131131
(override));
132132
MOCK_METHOD(void, DestroySurface, (), (override));
133133

134+
MOCK_METHOD(bool, MakeCurrent, (), (override));
134135
MOCK_METHOD(void, SetVSyncEnabled, (bool), (override));
135136

136137
private:
@@ -1302,7 +1303,9 @@ TEST(FlutterWindowsViewTest, UpdatesVSyncOnDwmUpdates) {
13021303
FlutterWindowsView view(std::move(window_binding_handler));
13031304

13041305
InSequence s;
1306+
EXPECT_CALL(*surface_manager.get(), MakeCurrent).WillOnce(Return(true));
13051307
EXPECT_CALL(*surface_manager.get(), SetVSyncEnabled(true)).Times(1);
1308+
EXPECT_CALL(*surface_manager.get(), MakeCurrent).WillOnce(Return(true));
13061309
EXPECT_CALL(*surface_manager.get(), SetVSyncEnabled(false)).Times(1);
13071310

13081311
EXPECT_CALL(*engine.get(), Stop).Times(1);

shell/platform/windows/system_utils_unittests.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ TEST(SystemUtils, GetPreferredLanguageInfo) {
2525

2626
TEST(SystemUtils, GetPreferredLanguages) {
2727
MockWindowsProcTable proc_table;
28-
ON_CALL(proc_table, GetThreadPreferredUILanguages)
29-
.WillByDefault(
28+
EXPECT_CALL(proc_table, GetThreadPreferredUILanguages)
29+
.WillRepeatedly(
3030
[](DWORD flags, PULONG count, PZZWSTR languages, PULONG size) {
3131
// Languages string ends in a double-null.
3232
static const wchar_t lang[] = L"en-US\0";

0 commit comments

Comments
 (0)