Index: content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc |
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc b/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc |
index 3c04ce9d3ecccaa1d6ac5577194c939ab7e79e4d..d589fd24a098eb977a834671bf9527a60c53c084 100644 |
--- a/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc |
+++ b/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc |
@@ -53,6 +53,8 @@ class MockRenderWidgetHostDelegate : public RenderWidgetHostDelegate { |
void SelectAll() override {} |
}; |
+} // namespace |
+ |
class MockCrossProcessFrameConnector : public CrossProcessFrameConnector { |
public: |
MockCrossProcessFrameConnector() : CrossProcessFrameConnector(nullptr) {} |
@@ -63,6 +65,10 @@ class MockCrossProcessFrameConnector : public CrossProcessFrameConnector { |
last_surface_info_ = surface_info; |
} |
+ void SetViewportIntersection(const gfx::Rect& intersection) { |
+ viewport_intersection_rect_ = intersection; |
+ } |
+ |
RenderWidgetHostViewBase* GetParentRenderWidgetHostView() override { |
return nullptr; |
} |
@@ -70,8 +76,6 @@ class MockCrossProcessFrameConnector : public CrossProcessFrameConnector { |
cc::SurfaceInfo last_surface_info_; |
}; |
-} // namespace |
- |
class RenderWidgetHostViewChildFrameTest : public testing::Test { |
public: |
RenderWidgetHostViewChildFrameTest() |
@@ -244,4 +248,25 @@ TEST_F(RenderWidgetHostViewChildFrameTest, FrameEviction) { |
EXPECT_TRUE(view_->has_frame()); |
} |
+// Tests that the viewport intersection rect is dispatched to the RenderWidget |
+// whenever screen rects are updated. |
+TEST_F(RenderWidgetHostViewChildFrameTest, ViewportIntersectionUpdated) { |
+ gfx::Rect intersection_rect(5, 5, 100, 80); |
+ test_frame_connector_->SetViewportIntersection(intersection_rect); |
+ |
+ MockRenderProcessHost* process = |
+ static_cast<MockRenderProcessHost*>(widget_host_->GetProcess()); |
+ process->Init(); |
+ |
+ widget_host_->Init(); |
+ |
+ const IPC::Message* intersection_update = |
+ process->sink().GetUniqueMessageMatching( |
+ ViewMsg_SetViewportIntersection::ID); |
+ ASSERT_TRUE(intersection_update); |
+ std::tuple<gfx::Rect> sent_rect; |
+ ViewMsg_SetViewportIntersection::Read(intersection_update, &sent_rect); |
+ EXPECT_EQ(intersection_rect, std::get<0>(sent_rect)); |
+} |
+ |
} // namespace content |