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

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

Issue 8549022: Define DevTools content API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: jam's comments addressed Created 9 years 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 "base/time.h"
7 #include "content/browser/debugger/devtools_client_host.h" 7 #include "content/browser/debugger/devtools_manager_impl.h"
8 #include "content/browser/debugger/devtools_manager.h"
9 #include "content/browser/debugger/render_view_devtools_agent_host.h" 8 #include "content/browser/debugger/render_view_devtools_agent_host.h"
10 #include "content/browser/mock_content_browser_client.h" 9 #include "content/browser/mock_content_browser_client.h"
11 #include "content/browser/renderer_host/test_render_view_host.h" 10 #include "content/browser/renderer_host/test_render_view_host.h"
12 #include "content/browser/tab_contents/tab_contents_delegate.h" 11 #include "content/browser/tab_contents/tab_contents_delegate.h"
13 #include "content/browser/tab_contents/test_tab_contents.h" 12 #include "content/browser/tab_contents/test_tab_contents.h"
14 #include "content/common/view_messages.h" 13 #include "content/common/view_messages.h"
15 #include "content/public/browser/content_browser_client.h" 14 #include "content/public/browser/content_browser_client.h"
15 #include "content/public/browser/devtools_agent_host_registry.h"
16 #include "content/public/browser/devtools_client_host.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 18
18 using base::TimeDelta; 19 using base::TimeDelta;
20 using content::DevToolsAgentHost;
21 using content::DevToolsAgentHostRegistry;
22 using content::DevToolsClientHost;
23 using content::DevToolsManager;
24 using content::DevToolsManagerImpl;
19 25
20 namespace { 26 namespace {
21 27
22 class TestDevToolsClientHost : public DevToolsClientHost { 28 class TestDevToolsClientHost : public DevToolsClientHost {
23 public: 29 public:
24 TestDevToolsClientHost() 30 TestDevToolsClientHost()
25 : last_sent_message(NULL), 31 : last_sent_message(NULL),
26 closed_(false) { 32 closed_(false) {
27 } 33 }
28 34
29 virtual ~TestDevToolsClientHost() { 35 virtual ~TestDevToolsClientHost() {
30 EXPECT_TRUE(closed_); 36 EXPECT_TRUE(closed_);
31 } 37 }
32 38
33 virtual void Close() { 39 virtual void Close(DevToolsManager* manager) {
34 EXPECT_FALSE(closed_); 40 EXPECT_FALSE(closed_);
35 close_counter++; 41 close_counter++;
36 NotifyCloseListener(); 42 manager->ClientHostClosing(this);
37 closed_ = true; 43 closed_ = true;
38 } 44 }
39 virtual void InspectedTabClosing() { 45 virtual void InspectedTabClosing() {
40 Close(); 46 FAIL();
41 } 47 }
42 48
43 virtual void SetInspectedTabUrl(const std::string& url) { 49 virtual void SetInspectedTabUrl(const std::string& url) {
44 } 50 }
45 51
46 virtual void SendMessageToClient(const IPC::Message& message) { 52 virtual void DispatchOnInspectorFrontend(const std::string& message) {
47 last_sent_message = &message; 53 last_sent_message = &message;
48 } 54 }
49 55
50 virtual void TabReplaced(TabContents* new_tab) { 56 virtual void TabReplaced(TabContents* new_tab) {
51 } 57 }
52 58
53 static void ResetCounters() { 59 static void ResetCounters() {
54 close_counter = 0; 60 close_counter = 0;
55 } 61 }
56 62
57 static int close_counter; 63 static int close_counter;
58 64
59 const IPC::Message* last_sent_message; 65 const std::string* last_sent_message;
60 66
61 private: 67 private:
62 bool closed_; 68 bool closed_;
63 69
64 virtual void FrameNavigating(const std::string& url) {} 70 virtual void FrameNavigating(const std::string& url) {}
65 71
66 DISALLOW_COPY_AND_ASSIGN(TestDevToolsClientHost); 72 DISALLOW_COPY_AND_ASSIGN(TestDevToolsClientHost);
67 }; 73 };
68 74
69 int TestDevToolsClientHost::close_counter = 0; 75 int TestDevToolsClientHost::close_counter = 0;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 RenderViewHostTestHarness::TearDown(); 128 RenderViewHostTestHarness::TearDown();
123 content::GetContentClient()->set_browser(original_browser_client_); 129 content::GetContentClient()->set_browser(original_browser_client_);
124 } 130 }
125 131
126 private: 132 private:
127 content::ContentBrowserClient* original_browser_client_; 133 content::ContentBrowserClient* original_browser_client_;
128 DevToolsManagerTestBrowserClient browser_client_; 134 DevToolsManagerTestBrowserClient browser_client_;
129 }; 135 };
130 136
131 TEST_F(DevToolsManagerTest, OpenAndManuallyCloseDevToolsClientHost) { 137 TEST_F(DevToolsManagerTest, OpenAndManuallyCloseDevToolsClientHost) {
132 DevToolsManager manager; 138 DevToolsManagerImpl manager;
133 139
134 DevToolsClientHost* host = manager.GetDevToolsClientHostFor(rvh()); 140 DevToolsAgentHost* agent =
141 DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh());
142 DevToolsClientHost* host = manager.GetDevToolsClientHostFor(agent);
135 EXPECT_TRUE(NULL == host); 143 EXPECT_TRUE(NULL == host);
136 144
137 TestDevToolsClientHost client_host; 145 TestDevToolsClientHost client_host;
138 manager.RegisterDevToolsClientHostFor(rvh(), &client_host); 146 manager.RegisterDevToolsClientHostFor(agent, &client_host);
139 // Test that just registered devtools host is returned. 147 // Test that just registered devtools host is returned.
140 host = manager.GetDevToolsClientHostFor(rvh()); 148 host = manager.GetDevToolsClientHostFor(agent);
141 EXPECT_TRUE(&client_host == host); 149 EXPECT_TRUE(&client_host == host);
142 EXPECT_EQ(0, TestDevToolsClientHost::close_counter); 150 EXPECT_EQ(0, TestDevToolsClientHost::close_counter);
143 151
144 // Test that the same devtools host is returned. 152 // Test that the same devtools host is returned.
145 host = manager.GetDevToolsClientHostFor(rvh()); 153 host = manager.GetDevToolsClientHostFor(agent);
146 EXPECT_TRUE(&client_host == host); 154 EXPECT_TRUE(&client_host == host);
147 EXPECT_EQ(0, TestDevToolsClientHost::close_counter); 155 EXPECT_EQ(0, TestDevToolsClientHost::close_counter);
148 156
149 client_host.Close(); 157 client_host.Close(&manager);
150 EXPECT_EQ(1, TestDevToolsClientHost::close_counter); 158 EXPECT_EQ(1, TestDevToolsClientHost::close_counter);
151 host = manager.GetDevToolsClientHostFor(rvh()); 159 host = manager.GetDevToolsClientHostFor(agent);
152 EXPECT_TRUE(NULL == host); 160 EXPECT_TRUE(NULL == host);
153 } 161 }
154 162
155 TEST_F(DevToolsManagerTest, ForwardMessageToClient) { 163 TEST_F(DevToolsManagerTest, ForwardMessageToClient) {
156 DevToolsManager manager; 164 DevToolsManagerImpl manager;
157 165
158 TestDevToolsClientHost client_host; 166 TestDevToolsClientHost client_host;
159 manager.RegisterDevToolsClientHostFor(rvh(), &client_host); 167 DevToolsAgentHost* agent_host =
168 DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh());
169 manager.RegisterDevToolsClientHostFor(agent_host, &client_host);
160 EXPECT_EQ(0, TestDevToolsClientHost::close_counter); 170 EXPECT_EQ(0, TestDevToolsClientHost::close_counter);
161 171
162 IPC::Message m; 172 std::string m = "test message";
163 DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor(rvh()); 173 agent_host = DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh());
164 manager.ForwardToDevToolsClient(agent_host, m); 174 manager.DispatchOnInspectorFrontend(agent_host, m);
165 EXPECT_TRUE(&m == client_host.last_sent_message); 175 EXPECT_TRUE(&m == client_host.last_sent_message);
166 176
167 client_host.Close(); 177 client_host.Close(&manager);
168 EXPECT_EQ(1, TestDevToolsClientHost::close_counter); 178 EXPECT_EQ(1, TestDevToolsClientHost::close_counter);
169 } 179 }
170 180
171 TEST_F(DevToolsManagerTest, NoUnresponsiveDialogInInspectedTab) { 181 TEST_F(DevToolsManagerTest, NoUnresponsiveDialogInInspectedTab) {
172 TestRenderViewHost* inspected_rvh = rvh(); 182 TestRenderViewHost* inspected_rvh = rvh();
173 inspected_rvh->set_render_view_created(true); 183 inspected_rvh->set_render_view_created(true);
174 EXPECT_FALSE(contents()->delegate()); 184 EXPECT_FALSE(contents()->delegate());
175 TestTabContentsDelegate delegate; 185 TestTabContentsDelegate delegate;
176 contents()->set_delegate(&delegate); 186 contents()->set_delegate(&delegate);
177 187
178 TestDevToolsClientHost client_host; 188 TestDevToolsClientHost client_host;
189 DevToolsAgentHost* agent_host =
190 DevToolsAgentHostRegistry::GetDevToolsAgentHost(inspected_rvh);
179 DevToolsManager::GetInstance()-> 191 DevToolsManager::GetInstance()->
180 RegisterDevToolsClientHostFor(inspected_rvh, &client_host); 192 RegisterDevToolsClientHostFor(agent_host, &client_host);
181 193
182 // Start with a short timeout. 194 // Start with a short timeout.
183 inspected_rvh->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10)); 195 inspected_rvh->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10));
184 // Wait long enough for first timeout and see if it fired. 196 // Wait long enough for first timeout and see if it fired.
185 MessageLoop::current()->PostDelayedTask(FROM_HERE, 197 MessageLoop::current()->PostDelayedTask(FROM_HERE,
186 new MessageLoop::QuitTask(), 10); 198 new MessageLoop::QuitTask(), 10);
187 MessageLoop::current()->Run(); 199 MessageLoop::current()->Run();
188 EXPECT_FALSE(delegate.renderer_unresponsive_received()); 200 EXPECT_FALSE(delegate.renderer_unresponsive_received());
189 201
190 // Now close devtools and check that the notification is delivered. 202 // Now close devtools and check that the notification is delivered.
191 client_host.Close(); 203 client_host.Close(DevToolsManager::GetInstance());
192 // Start with a short timeout. 204 // Start with a short timeout.
193 inspected_rvh->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10)); 205 inspected_rvh->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10));
194 // Wait long enough for first timeout and see if it fired. 206 // Wait long enough for first timeout and see if it fired.
195 MessageLoop::current()->PostDelayedTask(FROM_HERE, 207 MessageLoop::current()->PostDelayedTask(FROM_HERE,
196 new MessageLoop::QuitTask(), 10); 208 new MessageLoop::QuitTask(), 10);
197 MessageLoop::current()->Run(); 209 MessageLoop::current()->Run();
198 EXPECT_TRUE(delegate.renderer_unresponsive_received()); 210 EXPECT_TRUE(delegate.renderer_unresponsive_received());
199 211
200 contents()->set_delegate(NULL); 212 contents()->set_delegate(NULL);
201 } 213 }
202 214
203 TEST_F(DevToolsManagerTest, ReattachOnCancelPendingNavigation) { 215 TEST_F(DevToolsManagerTest, ReattachOnCancelPendingNavigation) {
204 contents()->transition_cross_site = true; 216 contents()->transition_cross_site = true;
205 // Navigate to URL. First URL should use first RenderViewHost. 217 // Navigate to URL. First URL should use first RenderViewHost.
206 const GURL url("http://www.google.com"); 218 const GURL url("http://www.google.com");
207 controller().LoadURL( 219 controller().LoadURL(
208 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string()); 220 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
209 ViewHostMsg_FrameNavigate_Params params1; 221 ViewHostMsg_FrameNavigate_Params params1;
210 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED); 222 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
211 TestRenderViewHost* orig_rvh = rvh(); 223 TestRenderViewHost* orig_rvh = rvh();
212 contents()->TestDidNavigate(orig_rvh, params1); 224 contents()->TestDidNavigate(orig_rvh, params1);
213 EXPECT_FALSE(contents()->cross_navigation_pending()); 225 EXPECT_FALSE(contents()->cross_navigation_pending());
214 226
215 TestDevToolsClientHost client_host; 227 TestDevToolsClientHost client_host;
216 DevToolsManager* devtools_manager = DevToolsManager::GetInstance(); 228 DevToolsManager* devtools_manager = DevToolsManager::GetInstance();
217 devtools_manager->RegisterDevToolsClientHostFor(rvh(), &client_host); 229 devtools_manager->RegisterDevToolsClientHostFor(
230 DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh()),
231 &client_host);
218 232
219 // Navigate to new site which should get a new RenderViewHost. 233 // Navigate to new site which should get a new RenderViewHost.
220 const GURL url2("http://www.yahoo.com"); 234 const GURL url2("http://www.yahoo.com");
221 controller().LoadURL( 235 controller().LoadURL(
222 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string()); 236 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
223 EXPECT_TRUE(contents()->cross_navigation_pending()); 237 EXPECT_TRUE(contents()->cross_navigation_pending());
224 EXPECT_EQ(&client_host, 238 EXPECT_EQ(&client_host, devtools_manager->GetDevToolsClientHostFor(
225 devtools_manager->GetDevToolsClientHostFor(pending_rvh())); 239 DevToolsAgentHostRegistry::GetDevToolsAgentHost(pending_rvh())));
226 240
227 // Interrupt pending navigation and navigate back to the original site. 241 // Interrupt pending navigation and navigate back to the original site.
228 controller().LoadURL( 242 controller().LoadURL(
229 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string()); 243 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
230 contents()->TestDidNavigate(orig_rvh, params1); 244 contents()->TestDidNavigate(orig_rvh, params1);
231 EXPECT_FALSE(contents()->cross_navigation_pending()); 245 EXPECT_FALSE(contents()->cross_navigation_pending());
232 EXPECT_EQ(&client_host, devtools_manager->GetDevToolsClientHostFor(rvh())); 246 EXPECT_EQ(&client_host, devtools_manager->GetDevToolsClientHostFor(
233 client_host.Close(); 247 DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh())));
248 client_host.Close(DevToolsManager::GetInstance());
234 } 249 }
OLDNEW
« no previous file with comments | « content/browser/debugger/devtools_manager_impl.cc ('k') | content/browser/debugger/render_view_devtools_agent_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698