| 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/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 7 #include "base/shared_memory.h" | 7 #include "base/shared_memory.h" |
| 8 #include "base/timer.h" | 8 #include "base/timer.h" |
| 9 #include "content/browser/browser_thread_impl.h" | 9 #include "content/browser/browser_thread_impl.h" |
| 10 #include "content/browser/renderer_host/backing_store.h" | 10 #include "content/browser/renderer_host/backing_store.h" |
| (...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 718 } | 718 } |
| 719 | 719 |
| 720 // Test that the hang monitor timer expires properly if a new timer is started | 720 // Test that the hang monitor timer expires properly if a new timer is started |
| 721 // while one is in progress (see crbug.com/11007). | 721 // while one is in progress (see crbug.com/11007). |
| 722 TEST_F(RenderWidgetHostTest, DontPostponeHangMonitorTimeout) { | 722 TEST_F(RenderWidgetHostTest, DontPostponeHangMonitorTimeout) { |
| 723 // Start with a short timeout. | 723 // Start with a short timeout. |
| 724 host_->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10)); | 724 host_->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10)); |
| 725 | 725 |
| 726 // Immediately try to add a long 30 second timeout. | 726 // Immediately try to add a long 30 second timeout. |
| 727 EXPECT_FALSE(host_->unresponsive_timer_fired()); | 727 EXPECT_FALSE(host_->unresponsive_timer_fired()); |
| 728 host_->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(30000)); | 728 host_->StartHangMonitorTimeout(TimeDelta::FromSeconds(30)); |
| 729 | 729 |
| 730 // Wait long enough for first timeout and see if it fired. | 730 // Wait long enough for first timeout and see if it fired. |
| 731 MessageLoop::current()->PostDelayedTask(FROM_HERE, | 731 MessageLoop::current()->PostDelayedTask( |
| 732 MessageLoop::QuitClosure(), 10); | 732 FROM_HERE, MessageLoop::QuitClosure(), TimeDelta::FromMilliseconds(10)); |
| 733 MessageLoop::current()->Run(); | 733 MessageLoop::current()->Run(); |
| 734 EXPECT_TRUE(host_->unresponsive_timer_fired()); | 734 EXPECT_TRUE(host_->unresponsive_timer_fired()); |
| 735 } | 735 } |
| 736 | 736 |
| 737 // Test that the hang monitor timer expires properly if it is started, stopped, | 737 // Test that the hang monitor timer expires properly if it is started, stopped, |
| 738 // and then started again. | 738 // and then started again. |
| 739 TEST_F(RenderWidgetHostTest, StopAndStartHangMonitorTimeout) { | 739 TEST_F(RenderWidgetHostTest, StopAndStartHangMonitorTimeout) { |
| 740 // Start with a short timeout, then stop it. | 740 // Start with a short timeout, then stop it. |
| 741 host_->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10)); | 741 host_->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10)); |
| 742 host_->StopHangMonitorTimeout(); | 742 host_->StopHangMonitorTimeout(); |
| 743 | 743 |
| 744 // Start it again to ensure it still works. | 744 // Start it again to ensure it still works. |
| 745 EXPECT_FALSE(host_->unresponsive_timer_fired()); | 745 EXPECT_FALSE(host_->unresponsive_timer_fired()); |
| 746 host_->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10)); | 746 host_->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10)); |
| 747 | 747 |
| 748 // Wait long enough for first timeout and see if it fired. | 748 // Wait long enough for first timeout and see if it fired. |
| 749 MessageLoop::current()->PostDelayedTask(FROM_HERE, | 749 MessageLoop::current()->PostDelayedTask( |
| 750 MessageLoop::QuitClosure(), 40); | 750 FROM_HERE, MessageLoop::QuitClosure(), TimeDelta::FromMilliseconds(40)); |
| 751 MessageLoop::current()->Run(); | 751 MessageLoop::current()->Run(); |
| 752 EXPECT_TRUE(host_->unresponsive_timer_fired()); | 752 EXPECT_TRUE(host_->unresponsive_timer_fired()); |
| 753 } | 753 } |
| 754 | 754 |
| 755 // Test that the hang monitor catches two input events but only one ack. | 755 // Test that the hang monitor catches two input events but only one ack. |
| 756 // This can happen if the second input event causes the renderer to hang. | 756 // This can happen if the second input event causes the renderer to hang. |
| 757 // This test will catch a regression of crbug.com/111185. | 757 // This test will catch a regression of crbug.com/111185. |
| 758 TEST_F(RenderWidgetHostTest, MultipleInputEvents) { | 758 TEST_F(RenderWidgetHostTest, MultipleInputEvents) { |
| 759 // Configure the host to wait 10ms before considering | 759 // Configure the host to wait 10ms before considering |
| 760 // the renderer hung. | 760 // the renderer hung. |
| 761 host_->set_hung_renderer_delay_ms(10); | 761 host_->set_hung_renderer_delay_ms(10); |
| 762 | 762 |
| 763 // Send two events but only one ack. | 763 // Send two events but only one ack. |
| 764 SimulateKeyboardEvent(WebInputEvent::RawKeyDown); | 764 SimulateKeyboardEvent(WebInputEvent::RawKeyDown); |
| 765 SimulateKeyboardEvent(WebInputEvent::RawKeyDown); | 765 SimulateKeyboardEvent(WebInputEvent::RawKeyDown); |
| 766 SendInputEventACK(WebInputEvent::RawKeyDown, true); | 766 SendInputEventACK(WebInputEvent::RawKeyDown, true); |
| 767 | 767 |
| 768 // Wait long enough for first timeout and see if it fired. | 768 // Wait long enough for first timeout and see if it fired. |
| 769 MessageLoop::current()->PostDelayedTask(FROM_HERE, | 769 MessageLoop::current()->PostDelayedTask( |
| 770 MessageLoop::QuitClosure(), 40); | 770 FROM_HERE, MessageLoop::QuitClosure(), TimeDelta::FromMilliseconds(40)); |
| 771 MessageLoop::current()->Run(); | 771 MessageLoop::current()->Run(); |
| 772 EXPECT_TRUE(host_->unresponsive_timer_fired()); | 772 EXPECT_TRUE(host_->unresponsive_timer_fired()); |
| 773 } | 773 } |
| OLD | NEW |