OLD | NEW |
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/devtools_agent_host_registry.h" |
| 16 #include "content/public/browser/devtools/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 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 private: | 91 private: |
86 bool renderer_unresponsive_received_; | 92 bool renderer_unresponsive_received_; |
87 }; | 93 }; |
88 | 94 |
89 class DevToolsManagerTestBrowserClient | 95 class DevToolsManagerTestBrowserClient |
90 : public content::MockContentBrowserClient { | 96 : public content::MockContentBrowserClient { |
91 public: | 97 public: |
92 DevToolsManagerTestBrowserClient() { | 98 DevToolsManagerTestBrowserClient() { |
93 } | 99 } |
94 | 100 |
95 virtual DevToolsManager* GetDevToolsManager() OVERRIDE { | |
96 return &dev_tools_manager_; | |
97 } | |
98 | |
99 virtual bool ShouldSwapProcessesForNavigation( | 101 virtual bool ShouldSwapProcessesForNavigation( |
100 const GURL& current_url, | 102 const GURL& current_url, |
101 const GURL& new_url) OVERRIDE { | 103 const GURL& new_url) OVERRIDE { |
102 return true; | 104 return true; |
103 } | 105 } |
104 | 106 |
105 private: | 107 private: |
106 DevToolsManager dev_tools_manager_; | |
107 | |
108 DISALLOW_COPY_AND_ASSIGN(DevToolsManagerTestBrowserClient); | 108 DISALLOW_COPY_AND_ASSIGN(DevToolsManagerTestBrowserClient); |
109 }; | 109 }; |
110 | 110 |
111 } // namespace | 111 } // namespace |
112 | 112 |
113 class DevToolsManagerTest : public RenderViewHostTestHarness { | 113 class DevToolsManagerTest : public RenderViewHostTestHarness { |
114 public: | 114 public: |
115 DevToolsManagerTest() : RenderViewHostTestHarness() { | 115 DevToolsManagerTest() : RenderViewHostTestHarness() { |
116 } | 116 } |
117 | 117 |
(...skipping 10 matching lines...) Expand all Loading... |
128 RenderViewHostTestHarness::TearDown(); | 128 RenderViewHostTestHarness::TearDown(); |
129 content::GetContentClient()->set_browser(original_browser_client_); | 129 content::GetContentClient()->set_browser(original_browser_client_); |
130 } | 130 } |
131 | 131 |
132 private: | 132 private: |
133 content::ContentBrowserClient* original_browser_client_; | 133 content::ContentBrowserClient* original_browser_client_; |
134 DevToolsManagerTestBrowserClient browser_client_; | 134 DevToolsManagerTestBrowserClient browser_client_; |
135 }; | 135 }; |
136 | 136 |
137 TEST_F(DevToolsManagerTest, OpenAndManuallyCloseDevToolsClientHost) { | 137 TEST_F(DevToolsManagerTest, OpenAndManuallyCloseDevToolsClientHost) { |
138 DevToolsManager manager; | 138 DevToolsManagerImpl manager; |
139 | 139 |
140 DevToolsClientHost* host = manager.GetDevToolsClientHostFor(rvh()); | 140 DevToolsAgentHost* agent = |
| 141 DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh()); |
| 142 DevToolsClientHost* host = manager.GetDevToolsClientHostFor(agent); |
141 EXPECT_TRUE(NULL == host); | 143 EXPECT_TRUE(NULL == host); |
142 | 144 |
143 TestDevToolsClientHost client_host; | 145 TestDevToolsClientHost client_host; |
144 manager.RegisterDevToolsClientHostFor(rvh(), &client_host); | 146 manager.RegisterDevToolsClientHostFor(agent, &client_host); |
145 // Test that just registered devtools host is returned. | 147 // Test that just registered devtools host is returned. |
146 host = manager.GetDevToolsClientHostFor(rvh()); | 148 host = manager.GetDevToolsClientHostFor(agent); |
147 EXPECT_TRUE(&client_host == host); | 149 EXPECT_TRUE(&client_host == host); |
148 EXPECT_EQ(0, TestDevToolsClientHost::close_counter); | 150 EXPECT_EQ(0, TestDevToolsClientHost::close_counter); |
149 | 151 |
150 // Test that the same devtools host is returned. | 152 // Test that the same devtools host is returned. |
151 host = manager.GetDevToolsClientHostFor(rvh()); | 153 host = manager.GetDevToolsClientHostFor(agent); |
152 EXPECT_TRUE(&client_host == host); | 154 EXPECT_TRUE(&client_host == host); |
153 EXPECT_EQ(0, TestDevToolsClientHost::close_counter); | 155 EXPECT_EQ(0, TestDevToolsClientHost::close_counter); |
154 | 156 |
155 client_host.Close(); | 157 client_host.Close(); |
156 EXPECT_EQ(1, TestDevToolsClientHost::close_counter); | 158 EXPECT_EQ(1, TestDevToolsClientHost::close_counter); |
157 host = manager.GetDevToolsClientHostFor(rvh()); | 159 host = manager.GetDevToolsClientHostFor(agent); |
158 EXPECT_TRUE(NULL == host); | 160 EXPECT_TRUE(NULL == host); |
159 } | 161 } |
160 | 162 |
161 TEST_F(DevToolsManagerTest, ForwardMessageToClient) { | 163 TEST_F(DevToolsManagerTest, ForwardMessageToClient) { |
162 DevToolsManager manager; | 164 DevToolsManagerImpl manager; |
163 | 165 |
164 TestDevToolsClientHost client_host; | 166 TestDevToolsClientHost client_host; |
165 manager.RegisterDevToolsClientHostFor(rvh(), &client_host); | 167 DevToolsAgentHost* agent_host = |
| 168 DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh()); |
| 169 manager.RegisterDevToolsClientHostFor(agent_host, &client_host); |
166 EXPECT_EQ(0, TestDevToolsClientHost::close_counter); | 170 EXPECT_EQ(0, TestDevToolsClientHost::close_counter); |
167 | 171 |
168 IPC::Message m; | 172 IPC::Message m; |
169 DevToolsAgentHost* agent_host = RenderViewDevToolsAgentHost::FindFor(rvh()); | 173 agent_host = DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh()); |
170 manager.ForwardToDevToolsClient(agent_host, m); | 174 manager.ForwardToDevToolsClient(agent_host, m); |
171 EXPECT_TRUE(&m == client_host.last_sent_message); | 175 EXPECT_TRUE(&m == client_host.last_sent_message); |
172 | 176 |
173 client_host.Close(); | 177 client_host.Close(); |
174 EXPECT_EQ(1, TestDevToolsClientHost::close_counter); | 178 EXPECT_EQ(1, TestDevToolsClientHost::close_counter); |
175 } | 179 } |
176 | 180 |
177 TEST_F(DevToolsManagerTest, NoUnresponsiveDialogInInspectedTab) { | 181 TEST_F(DevToolsManagerTest, NoUnresponsiveDialogInInspectedTab) { |
178 TestRenderViewHost* inspected_rvh = rvh(); | 182 TestRenderViewHost* inspected_rvh = rvh(); |
179 inspected_rvh->set_render_view_created(true); | 183 inspected_rvh->set_render_view_created(true); |
180 EXPECT_FALSE(contents()->delegate()); | 184 EXPECT_FALSE(contents()->delegate()); |
181 TestTabContentsDelegate delegate; | 185 TestTabContentsDelegate delegate; |
182 contents()->set_delegate(&delegate); | 186 contents()->set_delegate(&delegate); |
183 | 187 |
184 TestDevToolsClientHost client_host; | 188 TestDevToolsClientHost client_host; |
185 content::GetContentClient()->browser()->GetDevToolsManager()-> | 189 DevToolsAgentHost* agent_host = |
186 RegisterDevToolsClientHostFor(inspected_rvh, &client_host); | 190 DevToolsAgentHostRegistry::GetDevToolsAgentHost(inspected_rvh); |
| 191 DevToolsManager::GetInstance()-> |
| 192 RegisterDevToolsClientHostFor(agent_host, &client_host); |
187 | 193 |
188 // Start with a short timeout. | 194 // Start with a short timeout. |
189 inspected_rvh->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10)); | 195 inspected_rvh->StartHangMonitorTimeout(TimeDelta::FromMilliseconds(10)); |
190 // Wait long enough for first timeout and see if it fired. | 196 // Wait long enough for first timeout and see if it fired. |
191 MessageLoop::current()->PostDelayedTask(FROM_HERE, | 197 MessageLoop::current()->PostDelayedTask(FROM_HERE, |
192 new MessageLoop::QuitTask(), 10); | 198 new MessageLoop::QuitTask(), 10); |
193 MessageLoop::current()->Run(); | 199 MessageLoop::current()->Run(); |
194 EXPECT_FALSE(delegate.renderer_unresponsive_received()); | 200 EXPECT_FALSE(delegate.renderer_unresponsive_received()); |
195 | 201 |
196 // Now close devtools and check that the notification is delivered. | 202 // Now close devtools and check that the notification is delivered. |
(...skipping 16 matching lines...) Expand all Loading... |
213 controller().LoadURL( | 219 controller().LoadURL( |
214 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string()); | 220 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string()); |
215 ViewHostMsg_FrameNavigate_Params params1; | 221 ViewHostMsg_FrameNavigate_Params params1; |
216 InitNavigateParams(¶ms1, 1, url, content::PAGE_TRANSITION_TYPED); | 222 InitNavigateParams(¶ms1, 1, url, content::PAGE_TRANSITION_TYPED); |
217 TestRenderViewHost* orig_rvh = rvh(); | 223 TestRenderViewHost* orig_rvh = rvh(); |
218 contents()->TestDidNavigate(orig_rvh, params1); | 224 contents()->TestDidNavigate(orig_rvh, params1); |
219 EXPECT_FALSE(contents()->cross_navigation_pending()); | 225 EXPECT_FALSE(contents()->cross_navigation_pending()); |
220 | 226 |
221 TestDevToolsClientHost client_host; | 227 TestDevToolsClientHost client_host; |
222 DevToolsManager* devtools_manager = DevToolsManager::GetInstance(); | 228 DevToolsManager* devtools_manager = DevToolsManager::GetInstance(); |
223 devtools_manager->RegisterDevToolsClientHostFor(rvh(), &client_host); | 229 devtools_manager->RegisterDevToolsClientHostFor( |
| 230 DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh()), |
| 231 &client_host); |
224 | 232 |
225 // Navigate to new site which should get a new RenderViewHost. | 233 // Navigate to new site which should get a new RenderViewHost. |
226 const GURL url2("http://www.yahoo.com"); | 234 const GURL url2("http://www.yahoo.com"); |
227 controller().LoadURL( | 235 controller().LoadURL( |
228 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string()); | 236 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string()); |
229 EXPECT_TRUE(contents()->cross_navigation_pending()); | 237 EXPECT_TRUE(contents()->cross_navigation_pending()); |
230 EXPECT_EQ(&client_host, | 238 EXPECT_EQ(&client_host, devtools_manager->GetDevToolsClientHostFor( |
231 devtools_manager->GetDevToolsClientHostFor(pending_rvh())); | 239 DevToolsAgentHostRegistry::GetDevToolsAgentHost(pending_rvh()))); |
232 | 240 |
233 // Interrupt pending navigation and navigate back to the original site. | 241 // Interrupt pending navigation and navigate back to the original site. |
234 controller().LoadURL( | 242 controller().LoadURL( |
235 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string()); | 243 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string()); |
236 contents()->TestDidNavigate(orig_rvh, params1); | 244 contents()->TestDidNavigate(orig_rvh, params1); |
237 EXPECT_FALSE(contents()->cross_navigation_pending()); | 245 EXPECT_FALSE(contents()->cross_navigation_pending()); |
238 EXPECT_EQ(&client_host, devtools_manager->GetDevToolsClientHostFor(rvh())); | 246 EXPECT_EQ(&client_host, devtools_manager->GetDevToolsClientHostFor( |
| 247 DevToolsAgentHostRegistry::GetDevToolsAgentHost(rvh()))); |
239 client_host.Close(); | 248 client_host.Close(); |
240 } | 249 } |
OLD | NEW |