diff --git a/engine/src/flutter/shell/platform/windows/flutter_windows_view.cc b/engine/src/flutter/shell/platform/windows/flutter_windows_view.cc index ab2f9ff0cba..25379b33f5b 100644 --- a/engine/src/flutter/shell/platform/windows/flutter_windows_view.cc +++ b/engine/src/flutter/shell/platform/windows/flutter_windows_view.cc @@ -369,11 +369,13 @@ void FlutterWindowsView::OnResetImeComposing() { void FlutterWindowsView::SendWindowMetrics(size_t width, size_t height, double pixel_ratio) const { + FlutterEngineDisplayId display_id = binding_handler_->GetDisplayId(); FlutterWindowMetricsEvent event = {}; event.struct_size = sizeof(event); event.width = width; event.height = height; event.pixel_ratio = pixel_ratio; + event.display_id = display_id; event.view_id = view_id_; engine_->SendWindowMetricsEvent(event); } diff --git a/engine/src/flutter/shell/platform/windows/flutter_windows_view_unittests.cc b/engine/src/flutter/shell/platform/windows/flutter_windows_view_unittests.cc index eeb0d2e87ac..3fce9fe1309 100644 --- a/engine/src/flutter/shell/platform/windows/flutter_windows_view_unittests.cc +++ b/engine/src/flutter/shell/platform/windows/flutter_windows_view_unittests.cc @@ -1749,5 +1749,29 @@ TEST(FlutterWindowsViewTest, WindowMetricsEventContainsDisplayId) { FlutterWindowMetricsEvent event = view.CreateWindowMetricsEvent(); EXPECT_EQ(event.display_id, 12); } + +TEST(FlutterWindowsViewTest, SizeChangeTriggersMetricsEventWhichHasDisplayId) { + std::unique_ptr engine = GetTestEngine(); + EngineModifier modifier(engine.get()); + + auto window_binding_handler = + std::make_unique>(); + EXPECT_CALL(*window_binding_handler, GetDisplayId) + .WillOnce(testing::Return(12)); + FlutterWindowsView view{kImplicitViewId, engine.get(), + std::move(window_binding_handler)}; + + bool received_metrics = false; + modifier.embedder_api().SendWindowMetricsEvent = MOCK_ENGINE_PROC( + SendWindowMetricsEvent, + ([&received_metrics](auto engine, + const FlutterWindowMetricsEvent* event) { + received_metrics = true; + EXPECT_EQ(event->display_id, 12); + return kSuccess; + })); + view.OnWindowSizeChanged(100, 100); + EXPECT_TRUE(received_metrics); +} } // namespace testing } // namespace flutter