Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(408)

Side by Side Diff: content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc

Issue 2910023002: Ensure RemoteViewportIntersection rect persists across frame navigations (Closed)
Patch Set: ncarter comments addressed Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/frame_host/render_widget_host_view_child_frame.h" 5 #include "content/browser/frame_host/render_widget_host_view_child_frame.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 public: 46 public:
47 MockRenderWidgetHostDelegate() {} 47 MockRenderWidgetHostDelegate() {}
48 ~MockRenderWidgetHostDelegate() override {} 48 ~MockRenderWidgetHostDelegate() override {}
49 private: 49 private:
50 void Cut() override {} 50 void Cut() override {}
51 void Copy() override {} 51 void Copy() override {}
52 void Paste() override {} 52 void Paste() override {}
53 void SelectAll() override {} 53 void SelectAll() override {}
54 }; 54 };
55 55
56 } // namespace
57
56 class MockCrossProcessFrameConnector : public CrossProcessFrameConnector { 58 class MockCrossProcessFrameConnector : public CrossProcessFrameConnector {
57 public: 59 public:
58 MockCrossProcessFrameConnector() : CrossProcessFrameConnector(nullptr) {} 60 MockCrossProcessFrameConnector() : CrossProcessFrameConnector(nullptr) {}
59 ~MockCrossProcessFrameConnector() override {} 61 ~MockCrossProcessFrameConnector() override {}
60 62
61 void SetChildFrameSurface(const cc::SurfaceInfo& surface_info, 63 void SetChildFrameSurface(const cc::SurfaceInfo& surface_info,
62 const cc::SurfaceSequence& sequence) override { 64 const cc::SurfaceSequence& sequence) override {
63 last_surface_info_ = surface_info; 65 last_surface_info_ = surface_info;
64 } 66 }
65 67
68 void SetViewportIntersection(gfx::Rect intersection) {
dcheng 2017/05/30 19:54:11 Ditto: const ref
kenrb 2017/05/30 21:19:20 Done.
69 viewport_intersection_rect_ = intersection;
70 }
71
66 RenderWidgetHostViewBase* GetParentRenderWidgetHostView() override { 72 RenderWidgetHostViewBase* GetParentRenderWidgetHostView() override {
67 return nullptr; 73 return nullptr;
68 } 74 }
69 75
70 cc::SurfaceInfo last_surface_info_; 76 cc::SurfaceInfo last_surface_info_;
71 }; 77 };
72 78
73 } // namespace
74
75 class RenderWidgetHostViewChildFrameTest : public testing::Test { 79 class RenderWidgetHostViewChildFrameTest : public testing::Test {
76 public: 80 public:
77 RenderWidgetHostViewChildFrameTest() 81 RenderWidgetHostViewChildFrameTest()
78 : scoped_task_environment_( 82 : scoped_task_environment_(
79 base::test::ScopedTaskEnvironment::MainThreadType::UI) {} 83 base::test::ScopedTaskEnvironment::MainThreadType::UI) {}
80 84
81 void SetUp() override { 85 void SetUp() override {
82 browser_context_.reset(new TestBrowserContext); 86 browser_context_.reset(new TestBrowserContext);
83 87
84 // ImageTransportFactory doesn't exist on Android. 88 // ImageTransportFactory doesn't exist on Android.
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 241
238 // Submit another frame with the same local surface id. The same id should be 242 // Submit another frame with the same local surface id. The same id should be
239 // usable. 243 // usable.
240 view_->SubmitCompositorFrame( 244 view_->SubmitCompositorFrame(
241 kArbitraryLocalSurfaceId, 245 kArbitraryLocalSurfaceId,
242 CreateDelegatedFrame(scale_factor, view_size, view_rect)); 246 CreateDelegatedFrame(scale_factor, view_size, view_rect));
243 EXPECT_EQ(kArbitraryLocalSurfaceId, GetLocalSurfaceId()); 247 EXPECT_EQ(kArbitraryLocalSurfaceId, GetLocalSurfaceId());
244 EXPECT_TRUE(view_->has_frame()); 248 EXPECT_TRUE(view_->has_frame());
245 } 249 }
246 250
251 // Tests that the viewport intersection rect is dispatched to the RenderWidget
252 // whenever screen rects are updated.
253 TEST_F(RenderWidgetHostViewChildFrameTest, ViewportIntersectionUpdated) {
254 gfx::Rect intersection_rect(5, 5, 100, 80);
255 test_frame_connector_->SetViewportIntersection(intersection_rect);
256
257 MockRenderProcessHost* process =
258 static_cast<MockRenderProcessHost*>(widget_host_->GetProcess());
259 process->Init();
260
261 widget_host_->Init();
262
263 const IPC::Message* intersection_update =
264 process->sink().GetUniqueMessageMatching(
265 ViewMsg_SetViewportIntersection::ID);
266 ASSERT_TRUE(intersection_update);
267 std::tuple<gfx::Rect> sent_rect;
268 ViewMsg_SetViewportIntersection::Read(intersection_update, &sent_rect);
269 EXPECT_EQ(intersection_rect, std::get<0>(sent_rect));
270 }
271
247 } // namespace content 272 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698