Chromium Code Reviews| Index: content/browser/debugger/devtools_manager_unittest.cc |
| diff --git a/content/browser/debugger/devtools_manager_unittest.cc b/content/browser/debugger/devtools_manager_unittest.cc |
| index 62accb22ac9182d025a72fd029224519d602f373..68698fc0392fad04cb41d701fee460300cdab998 100644 |
| --- a/content/browser/debugger/devtools_manager_unittest.cc |
| +++ b/content/browser/debugger/devtools_manager_unittest.cc |
| @@ -3,11 +3,16 @@ |
| // found in the LICENSE file. |
| #include "base/basictypes.h" |
| +#include "base/time.h" |
| #include "content/browser/debugger/devtools_client_host.h" |
| #include "content/browser/debugger/devtools_manager.h" |
| #include "content/browser/renderer_host/test_render_view_host.h" |
| +#include "content/browser/tab_contents/tab_contents_delegate.h" |
| +#include "content/browser/tab_contents/test_tab_contents.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +using base::TimeDelta; |
| + |
| namespace { |
| class TestDevToolsClientHost : public DevToolsClientHost { |
| @@ -59,6 +64,24 @@ class TestDevToolsClientHost : public DevToolsClientHost { |
| int TestDevToolsClientHost::close_counter = 0; |
| + |
| +class TestTabContentsDelegate : public TabContentsDelegate { |
| + public: |
| + TestTabContentsDelegate() : renderer_unresponsive_received_(false) {} |
| + |
| + // Notification that the tab is hung. |
| + virtual void RendererUnresponsive(TabContents* source) { |
| + renderer_unresponsive_received_ = true; |
| + } |
| + |
| + bool renderer_unresponsive_received() const { |
| + return renderer_unresponsive_received_; |
| + } |
| + |
| + private: |
| + bool renderer_unresponsive_received_; |
| +}; |
| + |
| } // namespace |
| class DevToolsManagerTest : public RenderViewHostTestHarness { |
| @@ -111,3 +134,39 @@ TEST_F(DevToolsManagerTest, ForwardMessageToClient) { |
| client_host.Close(); |
| EXPECT_EQ(1, TestDevToolsClientHost::close_counter); |
| } |
| + |
| +TEST_F(DevToolsManagerTest, NoUnresponsiveDialogInInspectedTab) { |
| + TestRenderViewHost* inspected_rvh = rvh(); |
| + inspected_rvh->set_render_view_created(true); |
| + EXPECT_FALSE(contents()->delegate()); |
| + TestTabContentsDelegate delegate; |
| + contents()->set_delegate(&delegate); |
| + |
| + testing_browser_process_.get()->SetDevToolsManager(new DevToolsManager()); |
| + DevToolsManager* manager = DevToolsManager::GetInstance(); |
| + ASSERT_TRUE(manager); |
| + |
| + TestDevToolsClientHost client_host; |
| + manager->RegisterDevToolsClientHostFor(inspected_rvh, &client_host); |
| + |
| + // Start with a short timeout. |
| + inspected_rvh->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10)); |
| + // Wait long enough for first timeout and see if it fired. |
| + MessageLoop::current()->PostDelayedTask(FROM_HERE, |
| + new MessageLoop::QuitTask(), 10); |
| + MessageLoop::current()->Run(); |
| + EXPECT_FALSE(delegate.renderer_unresponsive_received()); |
| + |
| + // Now close devtools and check that the notification is delivered. |
| + client_host.Close(); |
| + // Start with a short timeout. |
| + inspected_rvh->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10)); |
| + // Wait long enough for first timeout and see if it fired. |
| + MessageLoop::current()->PostDelayedTask(FROM_HERE, |
| + new MessageLoop::QuitTask(), 10); |
| + MessageLoop::current()->Run(); |
| + EXPECT_TRUE(delegate.renderer_unresponsive_received()); |
| + |
| + testing_browser_process_.get()->SetDevToolsManager(NULL); |
|
pfeldman1
2011/08/04 10:11:32
You should not need this now.
yurys
2011/08/04 11:39:20
Done.
|
| + contents()->set_delegate(NULL); |
| +} |