| 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..304bcd97bd220dac86199202f906211d9474f8b0 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,38 @@ 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());
|
| +
|
| + contents()->set_delegate(NULL);
|
| +}
|
|
|