Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(645)

Side by Side Diff: content/browser/debugger/devtools_manager_unittest.cc

Issue 7565008: DevTools: don't show the unresponsive dialog for inspected tabs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Renamed the test Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/time.h"
6 #include "content/browser/debugger/devtools_client_host.h" 7 #include "content/browser/debugger/devtools_client_host.h"
7 #include "content/browser/debugger/devtools_manager.h" 8 #include "content/browser/debugger/devtools_manager.h"
8 #include "content/browser/renderer_host/test_render_view_host.h" 9 #include "content/browser/renderer_host/test_render_view_host.h"
10 #include "content/browser/tab_contents/tab_contents_delegate.h"
11 #include "content/browser/tab_contents/test_tab_contents.h"
9 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
10 13
14 using base::TimeDelta;
15
11 namespace { 16 namespace {
12 17
13 class TestDevToolsClientHost : public DevToolsClientHost { 18 class TestDevToolsClientHost : public DevToolsClientHost {
14 public: 19 public:
15 TestDevToolsClientHost() 20 TestDevToolsClientHost()
16 : last_sent_message(NULL), 21 : last_sent_message(NULL),
17 closed_(false) { 22 closed_(false) {
18 } 23 }
19 24
20 virtual ~TestDevToolsClientHost() { 25 virtual ~TestDevToolsClientHost() {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 private: 57 private:
53 bool closed_; 58 bool closed_;
54 59
55 virtual void FrameNavigating(const std::string& url) {} 60 virtual void FrameNavigating(const std::string& url) {}
56 61
57 DISALLOW_COPY_AND_ASSIGN(TestDevToolsClientHost); 62 DISALLOW_COPY_AND_ASSIGN(TestDevToolsClientHost);
58 }; 63 };
59 64
60 int TestDevToolsClientHost::close_counter = 0; 65 int TestDevToolsClientHost::close_counter = 0;
61 66
67
68 class TestTabContentsDelegate : public TabContentsDelegate {
69 public:
70 TestTabContentsDelegate() : renderer_unresponsive_received_(false) {}
71
72 // Notification that the tab is hung.
73 virtual void RendererUnresponsive(TabContents* source) {
74 renderer_unresponsive_received_ = true;
75 }
76
77 bool renderer_unresponsive_received() const {
78 return renderer_unresponsive_received_;
79 }
80
81 private:
82 bool renderer_unresponsive_received_;
83 };
84
62 } // namespace 85 } // namespace
63 86
64 class DevToolsManagerTest : public RenderViewHostTestHarness { 87 class DevToolsManagerTest : public RenderViewHostTestHarness {
65 public: 88 public:
66 DevToolsManagerTest() : RenderViewHostTestHarness() { 89 DevToolsManagerTest() : RenderViewHostTestHarness() {
67 } 90 }
68 91
69 protected: 92 protected:
70 virtual void SetUp() { 93 virtual void SetUp() {
71 RenderViewHostTestHarness::SetUp(); 94 RenderViewHostTestHarness::SetUp();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 manager->RegisterDevToolsClientHostFor(rvh(), &client_host); 127 manager->RegisterDevToolsClientHostFor(rvh(), &client_host);
105 EXPECT_EQ(0, TestDevToolsClientHost::close_counter); 128 EXPECT_EQ(0, TestDevToolsClientHost::close_counter);
106 129
107 IPC::Message m; 130 IPC::Message m;
108 manager->ForwardToDevToolsClient(rvh(), m); 131 manager->ForwardToDevToolsClient(rvh(), m);
109 EXPECT_TRUE(&m == client_host.last_sent_message); 132 EXPECT_TRUE(&m == client_host.last_sent_message);
110 133
111 client_host.Close(); 134 client_host.Close();
112 EXPECT_EQ(1, TestDevToolsClientHost::close_counter); 135 EXPECT_EQ(1, TestDevToolsClientHost::close_counter);
113 } 136 }
137
138 TEST_F(DevToolsManagerTest, NoUnresponsiveDialogInInspectedTab) {
139 TestRenderViewHost* inspected_rvh = rvh();
140 inspected_rvh->set_render_view_created(true);
141 EXPECT_FALSE(contents()->delegate());
142 TestTabContentsDelegate delegate;
143 contents()->set_delegate(&delegate);
144
145 scoped_refptr<DevToolsManager> manager(new DevToolsManager());
146 testing_browser_process_.get()->SetDevToolsManager(manager.get());
Paweł Hajdan Jr. 2011/08/03 16:50:30 How about making TestingBrowserProcess own DevTool
yurys 2011/08/04 08:59:15 Done.
147 ASSERT_EQ(manager.get(), DevToolsManager::GetInstance());
148
149 TestDevToolsClientHost client_host;
150 manager->RegisterDevToolsClientHostFor(inspected_rvh, &client_host);
151
152 // Start with a short timeout.
153 inspected_rvh->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10));
154 // Wait long enough for first timeout and see if it fired.
155 MessageLoop::current()->PostDelayedTask(FROM_HERE,
156 new MessageLoop::QuitTask(), 10);
pfeldman1 2011/08/03 16:28:50 I suspect it'll flake due to timer resolution/erro
Paweł Hajdan Jr. 2011/08/03 16:50:30 Yeah, this is a bit suspicious. I'd suggest removi
yurys 2011/08/04 08:59:15 The whole point of this test is to check that the
yurys 2011/08/04 08:59:15 This is how StopAndStartHangMonitorTimeout test(ht
157 MessageLoop::current()->Run();
158 EXPECT_FALSE(delegate.renderer_unresponsive_received());
159
160 // Now close devtools and check that the notification is delivered.
161 client_host.Close();
162 // Start with a short timeout.
163 inspected_rvh->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10));
164 // Wait long enough for first timeout and see if it fired.
165 MessageLoop::current()->PostDelayedTask(FROM_HERE,
Paweł Hajdan Jr. 2011/08/03 16:50:30 How about just waiting for the hang monitor to kic
yurys 2011/08/04 08:59:15 It would work if we were testing the watchdog time
166 new MessageLoop::QuitTask(), 10);
167 MessageLoop::current()->Run();
168 EXPECT_TRUE(delegate.renderer_unresponsive_received());
169
170 testing_browser_process_.get()->SetDevToolsManager(NULL);
171 contents()->set_delegate(NULL);
172 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698