OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |