| 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/bind.h" | 6 #include "base/bind.h" |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/memory/shared_memory.h" | 9 #include "base/memory/shared_memory.h" |
| 10 #include "base/timer/timer.h" | 10 #include "base/timer/timer.h" |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 : RenderWidgetHostImpl(delegate, process, routing_id, false), | 134 : RenderWidgetHostImpl(delegate, process, routing_id, false), |
| 135 unresponsive_timer_fired_(false) { | 135 unresponsive_timer_fired_(false) { |
| 136 acked_touch_event_type_ = blink::WebInputEvent::Undefined; | 136 acked_touch_event_type_ = blink::WebInputEvent::Undefined; |
| 137 } | 137 } |
| 138 | 138 |
| 139 // Allow poking at a few private members. | 139 // Allow poking at a few private members. |
| 140 using RenderWidgetHostImpl::GetResizeParams; | 140 using RenderWidgetHostImpl::GetResizeParams; |
| 141 using RenderWidgetHostImpl::OnUpdateRect; | 141 using RenderWidgetHostImpl::OnUpdateRect; |
| 142 using RenderWidgetHostImpl::RendererExited; | 142 using RenderWidgetHostImpl::RendererExited; |
| 143 using RenderWidgetHostImpl::SetInitialRenderSizeParams; | 143 using RenderWidgetHostImpl::SetInitialRenderSizeParams; |
| 144 using RenderWidgetHostImpl::UpdateScreenInfo; |
| 144 using RenderWidgetHostImpl::old_resize_params_; | 145 using RenderWidgetHostImpl::old_resize_params_; |
| 145 using RenderWidgetHostImpl::is_hidden_; | 146 using RenderWidgetHostImpl::is_hidden_; |
| 146 using RenderWidgetHostImpl::resize_ack_pending_; | 147 using RenderWidgetHostImpl::resize_ack_pending_; |
| 147 using RenderWidgetHostImpl::input_router_; | 148 using RenderWidgetHostImpl::input_router_; |
| 148 | 149 |
| 149 void OnTouchEventAck(const TouchEventWithLatencyInfo& event, | 150 void OnTouchEventAck(const TouchEventWithLatencyInfo& event, |
| 150 InputEventAckState ack_result) override { | 151 InputEventAckState ack_result) override { |
| 151 // Sniff touch acks. | 152 // Sniff touch acks. |
| 152 acked_touch_event_type_ = event.event.type; | 153 acked_touch_event_type_ = event.event.type; |
| 153 RenderWidgetHostImpl::OnTouchEventAck(event, ack_result); | 154 RenderWidgetHostImpl::OnTouchEventAck(event, ack_result); |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 if (IsDelegatedRendererEnabled()) | 440 if (IsDelegatedRendererEnabled()) |
| 440 ImageTransportFactory::Terminate(); | 441 ImageTransportFactory::Terminate(); |
| 441 #endif | 442 #endif |
| 442 | 443 |
| 443 // Process all pending tasks to avoid leaks. | 444 // Process all pending tasks to avoid leaks. |
| 444 base::MessageLoop::current()->RunUntilIdle(); | 445 base::MessageLoop::current()->RunUntilIdle(); |
| 445 } | 446 } |
| 446 | 447 |
| 447 void SetInitialRenderSizeParams() { | 448 void SetInitialRenderSizeParams() { |
| 448 ViewMsg_Resize_Params render_size_params; | 449 ViewMsg_Resize_Params render_size_params; |
| 450 host_->UpdateScreenInfo(); |
| 449 host_->GetResizeParams(&render_size_params); | 451 host_->GetResizeParams(&render_size_params); |
| 450 host_->SetInitialRenderSizeParams(render_size_params); | 452 host_->SetInitialRenderSizeParams(render_size_params); |
| 451 } | 453 } |
| 452 | 454 |
| 453 virtual void ConfigureView(TestView* view) { | 455 virtual void ConfigureView(TestView* view) { |
| 454 } | 456 } |
| 455 | 457 |
| 456 int64 GetLatencyComponentId() { | 458 int64 GetLatencyComponentId() { |
| 457 return host_->GetLatencyComponentId(); | 459 return host_->GetLatencyComponentId(); |
| 458 } | 460 } |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 class RenderWidgetHostWithSourceTest | 599 class RenderWidgetHostWithSourceTest |
| 598 : public RenderWidgetHostTest, | 600 : public RenderWidgetHostTest, |
| 599 public testing::WithParamInterface<WebGestureDevice> {}; | 601 public testing::WithParamInterface<WebGestureDevice> {}; |
| 600 #endif // GTEST_HAS_PARAM_TEST | 602 #endif // GTEST_HAS_PARAM_TEST |
| 601 | 603 |
| 602 } // namespace | 604 } // namespace |
| 603 | 605 |
| 604 // ----------------------------------------------------------------------------- | 606 // ----------------------------------------------------------------------------- |
| 605 | 607 |
| 606 TEST_F(RenderWidgetHostTest, Resize) { | 608 TEST_F(RenderWidgetHostTest, Resize) { |
| 607 // The initial bounds is the empty rect, and the screen info hasn't been sent | 609 // The initial bounds is the empty rect, so setting it to the same thing |
| 608 // yet, so setting it to the same thing shouldn't send the resize message. | 610 // shouldn't send the resize message. |
| 609 view_->set_bounds(gfx::Rect()); | 611 view_->set_bounds(gfx::Rect()); |
| 610 host_->WasResized(); | 612 host_->WasResized(); |
| 611 EXPECT_FALSE(host_->resize_ack_pending_); | 613 EXPECT_FALSE(host_->resize_ack_pending_); |
| 612 EXPECT_FALSE(process_->sink().GetUniqueMessageMatching(ViewMsg_Resize::ID)); | 614 EXPECT_FALSE(process_->sink().GetUniqueMessageMatching(ViewMsg_Resize::ID)); |
| 613 | 615 |
| 614 // No resize ack if the physical backing gets set, but the view bounds are | 616 // No resize ack if the physical backing gets set, but the view bounds are |
| 615 // zero. | 617 // zero. |
| 616 view_->SetMockPhysicalBackingSize(gfx::Size(200, 200)); | 618 view_->SetMockPhysicalBackingSize(gfx::Size(200, 200)); |
| 617 host_->WasResized(); | 619 host_->WasResized(); |
| 618 EXPECT_FALSE(host_->resize_ack_pending_); | 620 EXPECT_FALSE(host_->resize_ack_pending_); |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 EXPECT_FALSE(process_->sink().GetFirstMessageMatching(ViewMsg_Resize::ID)); | 714 EXPECT_FALSE(process_->sink().GetFirstMessageMatching(ViewMsg_Resize::ID)); |
| 713 | 715 |
| 714 // A different size should be sent again, however. | 716 // A different size should be sent again, however. |
| 715 view_->set_bounds(gfx::Rect(0, 0, 0, 31)); | 717 view_->set_bounds(gfx::Rect(0, 0, 0, 31)); |
| 716 host_->WasResized(); | 718 host_->WasResized(); |
| 717 EXPECT_FALSE(host_->resize_ack_pending_); | 719 EXPECT_FALSE(host_->resize_ack_pending_); |
| 718 EXPECT_EQ(gfx::Size(0, 31), host_->old_resize_params_->new_size); | 720 EXPECT_EQ(gfx::Size(0, 31), host_->old_resize_params_->new_size); |
| 719 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching(ViewMsg_Resize::ID)); | 721 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching(ViewMsg_Resize::ID)); |
| 720 } | 722 } |
| 721 | 723 |
| 724 // Test that a resize event is sent if InvalidateScreenInfo() was called. |
| 725 TEST_F(RenderWidgetHostTest, ResizeScreenInfo) { |
| 726 host_->InvalidateScreenInfo(); |
| 727 host_->WasResized(); |
| 728 EXPECT_FALSE(host_->resize_ack_pending_); |
| 729 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching(ViewMsg_Resize::ID)); |
| 730 } |
| 731 |
| 722 // Test for crbug.com/25097. If a renderer crashes between a resize and the | 732 // Test for crbug.com/25097. If a renderer crashes between a resize and the |
| 723 // corresponding update message, we must be sure to clear the resize ack logic. | 733 // corresponding update message, we must be sure to clear the resize ack logic. |
| 724 TEST_F(RenderWidgetHostTest, ResizeThenCrash) { | 734 TEST_F(RenderWidgetHostTest, ResizeThenCrash) { |
| 725 // Clear the first Resize message that carried screen info. | 735 // Clear the first Resize message that carried screen info. |
| 726 process_->sink().ClearMessages(); | 736 process_->sink().ClearMessages(); |
| 727 | 737 |
| 728 // Setting the bounds to a "real" rect should send out the notification. | 738 // Setting the bounds to a "real" rect should send out the notification. |
| 729 gfx::Rect original_size(0, 0, 100, 100); | 739 gfx::Rect original_size(0, 0, 100, 100); |
| 730 view_->set_bounds(original_size); | 740 view_->set_bounds(original_size); |
| 731 host_->WasResized(); | 741 host_->WasResized(); |
| (...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1493 // Having an initial size set means that the size information had been sent | 1503 // Having an initial size set means that the size information had been sent |
| 1494 // with the reqiest to new up the RenderView and so subsequent WasResized | 1504 // with the reqiest to new up the RenderView and so subsequent WasResized |
| 1495 // calls should not result in new IPC (unless the size has actually changed). | 1505 // calls should not result in new IPC (unless the size has actually changed). |
| 1496 host_->WasResized(); | 1506 host_->WasResized(); |
| 1497 EXPECT_FALSE(process_->sink().GetUniqueMessageMatching(ViewMsg_Resize::ID)); | 1507 EXPECT_FALSE(process_->sink().GetUniqueMessageMatching(ViewMsg_Resize::ID)); |
| 1498 EXPECT_EQ(initial_size_, host_->old_resize_params_->new_size); | 1508 EXPECT_EQ(initial_size_, host_->old_resize_params_->new_size); |
| 1499 EXPECT_TRUE(host_->resize_ack_pending_); | 1509 EXPECT_TRUE(host_->resize_ack_pending_); |
| 1500 } | 1510 } |
| 1501 | 1511 |
| 1502 } // namespace content | 1512 } // namespace content |
| OLD | NEW |