| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <tuple> | 9 #include <tuple> |
| 10 | 10 |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 | 216 |
| 217 bool new_content_rendering_timeout_fired_; | 217 bool new_content_rendering_timeout_fired_; |
| 218 WebInputEvent::Type acked_touch_event_type_; | 218 WebInputEvent::Type acked_touch_event_type_; |
| 219 | 219 |
| 220 private: | 220 private: |
| 221 DISALLOW_COPY_AND_ASSIGN(MockRenderWidgetHost); | 221 DISALLOW_COPY_AND_ASSIGN(MockRenderWidgetHost); |
| 222 }; | 222 }; |
| 223 | 223 |
| 224 namespace { | 224 namespace { |
| 225 | 225 |
| 226 cc::CompositorFrame MakeCompositorFrame(float scale_factor, gfx::Size size) { |
| 227 cc::CompositorFrame frame; |
| 228 frame.metadata.device_scale_factor = scale_factor; |
| 229 frame.metadata.begin_frame_ack = cc::BeginFrameAck(0, 1, 1, 0, true); |
| 230 |
| 231 std::unique_ptr<cc::RenderPass> pass = cc::RenderPass::Create(); |
| 232 pass->SetNew(1, gfx::Rect(size), gfx::Rect(), gfx::Transform()); |
| 233 frame.render_pass_list.push_back(std::move(pass)); |
| 234 if (!size.IsEmpty()) { |
| 235 cc::TransferableResource resource; |
| 236 resource.id = 1; |
| 237 frame.resource_list.push_back(std::move(resource)); |
| 238 } |
| 239 return frame; |
| 240 } |
| 241 |
| 226 // RenderWidgetHostProcess ----------------------------------------------------- | 242 // RenderWidgetHostProcess ----------------------------------------------------- |
| 227 | 243 |
| 228 class RenderWidgetHostProcess : public MockRenderProcessHost { | 244 class RenderWidgetHostProcess : public MockRenderProcessHost { |
| 229 public: | 245 public: |
| 230 explicit RenderWidgetHostProcess(BrowserContext* browser_context) | 246 explicit RenderWidgetHostProcess(BrowserContext* browser_context) |
| 231 : MockRenderProcessHost(browser_context) { | 247 : MockRenderProcessHost(browser_context) { |
| 232 } | 248 } |
| 233 ~RenderWidgetHostProcess() override {} | 249 ~RenderWidgetHostProcess() override {} |
| 234 | 250 |
| 235 bool HasConnection() const override { return true; } | 251 bool HasConnection() const override { return true; } |
| (...skipping 1029 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1265 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1281 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 1266 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(), | 1282 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(), |
| 1267 TimeDelta::FromMicroseconds(20)); | 1283 TimeDelta::FromMicroseconds(20)); |
| 1268 base::RunLoop().Run(); | 1284 base::RunLoop().Run(); |
| 1269 EXPECT_TRUE(host_->new_content_rendering_timeout_fired()); | 1285 EXPECT_TRUE(host_->new_content_rendering_timeout_fired()); |
| 1270 } | 1286 } |
| 1271 | 1287 |
| 1272 // This tests that a compositor frame received with a stale content source ID | 1288 // This tests that a compositor frame received with a stale content source ID |
| 1273 // in its metadata is properly discarded. | 1289 // in its metadata is properly discarded. |
| 1274 TEST_F(RenderWidgetHostTest, SwapCompositorFrameWithBadSourceId) { | 1290 TEST_F(RenderWidgetHostTest, SwapCompositorFrameWithBadSourceId) { |
| 1291 const gfx::Size frame_size(50, 50); |
| 1292 const cc::LocalSurfaceId local_surface_id(1, |
| 1293 base::UnguessableToken::Create()); |
| 1294 |
| 1275 host_->StartNewContentRenderingTimeout(100); | 1295 host_->StartNewContentRenderingTimeout(100); |
| 1276 host_->OnFirstPaintAfterLoad(); | 1296 host_->OnFirstPaintAfterLoad(); |
| 1277 | 1297 |
| 1278 // First swap a frame with an invalid ID. | 1298 { |
| 1279 cc::CompositorFrame frame; | 1299 // First swap a frame with an invalid ID. |
| 1280 frame.metadata.begin_frame_ack = cc::BeginFrameAck(0, 1, 1, 0, true); | 1300 cc::CompositorFrame frame = MakeCompositorFrame(1.f, frame_size); |
| 1281 frame.metadata.content_source_id = 99; | 1301 frame.metadata.begin_frame_ack = cc::BeginFrameAck(0, 1, 1, 0, true); |
| 1282 host_->OnMessageReceived(ViewHostMsg_SwapCompositorFrame( | 1302 frame.metadata.content_source_id = 99; |
| 1283 0, 0, frame, std::vector<IPC::Message>())); | 1303 host_->OnMessageReceived(ViewHostMsg_SwapCompositorFrame( |
| 1284 EXPECT_FALSE( | 1304 0, 0, local_surface_id, frame, std::vector<IPC::Message>())); |
| 1285 static_cast<TestView*>(host_->GetView())->did_swap_compositor_frame()); | 1305 EXPECT_FALSE( |
| 1286 static_cast<TestView*>(host_->GetView())->reset_did_swap_compositor_frame(); | 1306 static_cast<TestView*>(host_->GetView())->did_swap_compositor_frame()); |
| 1307 static_cast<TestView*>(host_->GetView())->reset_did_swap_compositor_frame(); |
| 1308 } |
| 1287 | 1309 |
| 1288 // Test with a valid content ID as a control. | 1310 { |
| 1289 frame.metadata.content_source_id = 100; | 1311 // Test with a valid content ID as a control. |
| 1290 host_->OnMessageReceived(ViewHostMsg_SwapCompositorFrame( | 1312 cc::CompositorFrame frame = MakeCompositorFrame(1.f, frame_size); |
| 1291 0, 0, frame, std::vector<IPC::Message>())); | 1313 frame.metadata.content_source_id = 100; |
| 1292 EXPECT_TRUE( | 1314 host_->OnMessageReceived(ViewHostMsg_SwapCompositorFrame( |
| 1293 static_cast<TestView*>(host_->GetView())->did_swap_compositor_frame()); | 1315 0, 0, local_surface_id, frame, std::vector<IPC::Message>())); |
| 1294 static_cast<TestView*>(host_->GetView())->reset_did_swap_compositor_frame(); | 1316 EXPECT_TRUE( |
| 1317 static_cast<TestView*>(host_->GetView())->did_swap_compositor_frame()); |
| 1318 static_cast<TestView*>(host_->GetView())->reset_did_swap_compositor_frame(); |
| 1319 } |
| 1295 | 1320 |
| 1296 // We also accept frames with higher content IDs, to cover the case where | 1321 { |
| 1297 // the browser process receives a compositor frame for a new page before | 1322 // We also accept frames with higher content IDs, to cover the case where |
| 1298 // the corresponding DidCommitProvisionalLoad (it's a race). | 1323 // the browser process receives a compositor frame for a new page before |
| 1299 frame.metadata.content_source_id = 101; | 1324 // the corresponding DidCommitProvisionalLoad (it's a race). |
| 1300 host_->OnMessageReceived(ViewHostMsg_SwapCompositorFrame( | 1325 cc::CompositorFrame frame = MakeCompositorFrame(1.f, frame_size); |
| 1301 0, 0, frame, std::vector<IPC::Message>())); | 1326 frame.metadata.content_source_id = 101; |
| 1302 EXPECT_TRUE( | 1327 host_->OnMessageReceived(ViewHostMsg_SwapCompositorFrame( |
| 1303 static_cast<TestView*>(host_->GetView())->did_swap_compositor_frame()); | 1328 0, 0, local_surface_id, frame, std::vector<IPC::Message>())); |
| 1329 EXPECT_TRUE( |
| 1330 static_cast<TestView*>(host_->GetView())->did_swap_compositor_frame()); |
| 1331 } |
| 1304 } | 1332 } |
| 1305 | 1333 |
| 1306 TEST_F(RenderWidgetHostTest, TouchEmulator) { | 1334 TEST_F(RenderWidgetHostTest, TouchEmulator) { |
| 1307 simulated_event_time_delta_seconds_ = 0.1; | 1335 simulated_event_time_delta_seconds_ = 0.1; |
| 1308 // Immediately ack all touches instead of sending them to the renderer. | 1336 // Immediately ack all touches instead of sending them to the renderer. |
| 1309 host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, false)); | 1337 host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, false)); |
| 1310 host_->SetTouchEventEmulationEnabled( | 1338 host_->SetTouchEventEmulationEnabled( |
| 1311 true, ui::GestureProviderConfigType::GENERIC_MOBILE); | 1339 true, ui::GestureProviderConfigType::GENERIC_MOBILE); |
| 1312 process_->sink().ClearMessages(); | 1340 process_->sink().ClearMessages(); |
| 1313 view_->set_bounds(gfx::Rect(0, 0, 400, 200)); | 1341 view_->set_bounds(gfx::Rect(0, 0, 400, 200)); |
| (...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1795 ui::LatencyInfo()); | 1823 ui::LatencyInfo()); |
| 1796 | 1824 |
| 1797 | 1825 |
| 1798 // Tests RWHI::ForwardWheelEventWithLatencyInfo(). | 1826 // Tests RWHI::ForwardWheelEventWithLatencyInfo(). |
| 1799 SimulateWheelEventWithLatencyInfo(-5, 0, 0, true, ui::LatencyInfo()); | 1827 SimulateWheelEventWithLatencyInfo(-5, 0, 0, true, ui::LatencyInfo()); |
| 1800 | 1828 |
| 1801 ASSERT_FALSE(host_->input_router()->HasPendingEvents()); | 1829 ASSERT_FALSE(host_->input_router()->HasPendingEvents()); |
| 1802 } | 1830 } |
| 1803 | 1831 |
| 1804 } // namespace content | 1832 } // namespace content |
| OLD | NEW |