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