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

Side by Side Diff: content/browser/devtools/embedded_worker_devtools_manager_unittest.cc

Issue 467653002: Revert of [DevTools] Make DevTools clients talk directly to DevToolsAgentHost instead of using DevToolsManage… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/browser/devtools/embedded_worker_devtools_manager.h" 5 #include "content/browser/devtools/embedded_worker_devtools_manager.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "content/browser/browser_thread_impl.h" 10 #include "content/browser/browser_thread_impl.h"
11 #include "content/browser/devtools/devtools_agent_host_impl.h" 11 #include "content/browser/devtools/devtools_manager_impl.h"
12 #include "content/browser/devtools/embedded_worker_devtools_agent_host.h" 12 #include "content/browser/devtools/embedded_worker_devtools_agent_host.h"
13 #include "content/browser/shared_worker/shared_worker_instance.h" 13 #include "content/browser/shared_worker/shared_worker_instance.h"
14 #include "content/browser/shared_worker/worker_storage_partition.h" 14 #include "content/browser/shared_worker/worker_storage_partition.h"
15 #include "content/public/browser/devtools_agent_host.h"
16 #include "content/public/browser/devtools_client_host.h"
15 #include "content/public/test/test_browser_context.h" 17 #include "content/public/test/test_browser_context.h"
16 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
17 19
18 namespace content { 20 namespace content {
19 namespace { 21 namespace {
20 22
21 class TestDevToolsClientHost : public DevToolsAgentHostClient { 23 class TestDevToolsClientHost : public DevToolsClientHost {
22 public: 24 public:
23 TestDevToolsClientHost() {} 25 TestDevToolsClientHost() {}
24 virtual ~TestDevToolsClientHost() {} 26 virtual ~TestDevToolsClientHost() {}
25 virtual void DispatchProtocolMessage( 27 virtual void DispatchOnInspectorFrontend(
26 DevToolsAgentHost* agent_host, const std::string& message) OVERRIDE {} 28 const std::string& message) OVERRIDE {}
27 virtual void AgentHostClosed( 29 virtual void InspectedContentsClosing() OVERRIDE {}
28 DevToolsAgentHost* agent_host, bool replaced) OVERRIDE {} 30 virtual void ReplacedWithAnotherClient() OVERRIDE {}
29 31
30 void InspectAgentHost(DevToolsAgentHost* agent_host) {
31 if (agent_host_)
32 agent_host_->DetachClient();
33 agent_host_ = agent_host;
34 if (agent_host_)
35 agent_host_->AttachClient(this);
36 }
37 private: 32 private:
38 scoped_refptr<DevToolsAgentHost> agent_host_;
39 DISALLOW_COPY_AND_ASSIGN(TestDevToolsClientHost); 33 DISALLOW_COPY_AND_ASSIGN(TestDevToolsClientHost);
40 }; 34 };
41 } 35 }
42 36
43 class EmbeddedWorkerDevToolsManagerTest : public testing::Test { 37 class EmbeddedWorkerDevToolsManagerTest : public testing::Test {
44 public: 38 public:
45 typedef EmbeddedWorkerDevToolsAgentHost::WorkerState WorkerState; 39 typedef EmbeddedWorkerDevToolsAgentHost::WorkerState WorkerState;
46 40
47 EmbeddedWorkerDevToolsManagerTest() 41 EmbeddedWorkerDevToolsManagerTest()
48 : ui_thread_(BrowserThread::UI, &message_loop_), 42 : ui_thread_(BrowserThread::UI, &message_loop_),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 void CheckWorkerNotExist(int worker_process_id, int worker_route_id) { 74 void CheckWorkerNotExist(int worker_process_id, int worker_route_id) {
81 const EmbeddedWorkerDevToolsManager::WorkerId id(worker_process_id, 75 const EmbeddedWorkerDevToolsManager::WorkerId id(worker_process_id,
82 worker_route_id); 76 worker_route_id);
83 EXPECT_TRUE(manager_->workers_.end() == manager_->workers_.find(id)); 77 EXPECT_TRUE(manager_->workers_.end() == manager_->workers_.find(id));
84 } 78 }
85 79
86 void CheckWorkerCount(size_t size) { 80 void CheckWorkerCount(size_t size) {
87 EXPECT_EQ(size, manager_->workers_.size()); 81 EXPECT_EQ(size, manager_->workers_.size());
88 } 82 }
89 83
84 void RegisterDevToolsClientHostFor(DevToolsAgentHost* agent_host,
85 DevToolsClientHost* client_host) {
86 DevToolsManagerImpl::GetInstance()->RegisterDevToolsClientHostFor(
87 agent_host, client_host);
88 }
89
90 void ClientHostClosing(DevToolsClientHost* client_host) {
91 DevToolsManagerImpl::GetInstance()->ClientHostClosing(client_host);
92 }
93
90 base::MessageLoopForIO message_loop_; 94 base::MessageLoopForIO message_loop_;
91 BrowserThreadImpl ui_thread_; 95 BrowserThreadImpl ui_thread_;
92 scoped_ptr<TestBrowserContext> browser_context_; 96 scoped_ptr<TestBrowserContext> browser_context_;
93 scoped_ptr<WorkerStoragePartition> partition_; 97 scoped_ptr<WorkerStoragePartition> partition_;
94 const WorkerStoragePartitionId partition_id_; 98 const WorkerStoragePartitionId partition_id_;
95 EmbeddedWorkerDevToolsManager* manager_; 99 EmbeddedWorkerDevToolsManager* manager_;
96 }; 100 };
97 101
98 TEST_F(EmbeddedWorkerDevToolsManagerTest, BasicTest) { 102 TEST_F(EmbeddedWorkerDevToolsManagerTest, BasicTest) {
99 scoped_refptr<DevToolsAgentHostImpl> agent_host; 103 scoped_refptr<DevToolsAgentHost> agent_host;
100 104
101 SharedWorkerInstance instance1(GURL("http://example.com/w.js"), 105 SharedWorkerInstance instance1(GURL("http://example.com/w.js"),
102 base::string16(), 106 base::string16(),
103 base::string16(), 107 base::string16(),
104 blink::WebContentSecurityPolicyTypeReport, 108 blink::WebContentSecurityPolicyTypeReport,
105 browser_context_->GetResourceContext(), 109 browser_context_->GetResourceContext(),
106 partition_id_); 110 partition_id_);
107 111
108 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 1); 112 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 1);
109 EXPECT_FALSE(agent_host.get()); 113 EXPECT_FALSE(agent_host.get());
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 CheckWorkerState(1, 6, WorkerState::WORKER_UNINSPECTED); 175 CheckWorkerState(1, 6, WorkerState::WORKER_UNINSPECTED);
172 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 6); 176 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 6);
173 EXPECT_TRUE(agent_host.get()); 177 EXPECT_TRUE(agent_host.get());
174 CheckWorkerState(1, 6, WorkerState::WORKER_UNINSPECTED); 178 CheckWorkerState(1, 6, WorkerState::WORKER_UNINSPECTED);
175 agent_host = NULL; 179 agent_host = NULL;
176 manager_->WorkerDestroyed(1, 6); 180 manager_->WorkerDestroyed(1, 6);
177 CheckWorkerNotExist(1, 6); 181 CheckWorkerNotExist(1, 6);
178 } 182 }
179 183
180 TEST_F(EmbeddedWorkerDevToolsManagerTest, AttachTest) { 184 TEST_F(EmbeddedWorkerDevToolsManagerTest, AttachTest) {
181 scoped_refptr<DevToolsAgentHostImpl> agent_host1; 185 scoped_refptr<DevToolsAgentHost> agent_host1;
182 scoped_refptr<DevToolsAgentHostImpl> agent_host2; 186 scoped_refptr<DevToolsAgentHost> agent_host2;
183 187
184 SharedWorkerInstance instance1(GURL("http://example.com/w1.js"), 188 SharedWorkerInstance instance1(GURL("http://example.com/w1.js"),
185 base::string16(), 189 base::string16(),
186 base::string16(), 190 base::string16(),
187 blink::WebContentSecurityPolicyTypeReport, 191 blink::WebContentSecurityPolicyTypeReport,
188 browser_context_->GetResourceContext(), 192 browser_context_->GetResourceContext(),
189 partition_id_); 193 partition_id_);
190 SharedWorkerInstance instance2(GURL("http://example.com/w2.js"), 194 SharedWorkerInstance instance2(GURL("http://example.com/w2.js"),
191 base::string16(), 195 base::string16(),
192 base::string16(), 196 base::string16(),
193 blink::WebContentSecurityPolicyTypeReport, 197 blink::WebContentSecurityPolicyTypeReport,
194 browser_context_->GetResourceContext(), 198 browser_context_->GetResourceContext(),
195 partition_id_); 199 partition_id_);
196 200
197 // Created -> GetDevToolsAgentHost -> Register -> Started -> Destroyed 201 // Created -> GetDevToolsAgentHost -> Register -> Started -> Destroyed
198 scoped_ptr<TestDevToolsClientHost> client_host1(new TestDevToolsClientHost()); 202 scoped_ptr<TestDevToolsClientHost> client_host1(new TestDevToolsClientHost());
199 CheckWorkerNotExist(2, 1); 203 CheckWorkerNotExist(2, 1);
200 manager_->SharedWorkerCreated(2, 1, instance1); 204 manager_->SharedWorkerCreated(2, 1, instance1);
201 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED); 205 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED);
202 agent_host1 = manager_->GetDevToolsAgentHostForWorker(2, 1); 206 agent_host1 = manager_->GetDevToolsAgentHostForWorker(2, 1);
203 EXPECT_TRUE(agent_host1.get()); 207 EXPECT_TRUE(agent_host1.get());
204 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED); 208 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED);
205 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); 209 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1));
206 client_host1->InspectAgentHost(agent_host1.get()); 210 RegisterDevToolsClientHostFor(agent_host1.get(), client_host1.get());
207 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED); 211 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED);
208 manager_->WorkerContextStarted(2, 1); 212 manager_->WorkerContextStarted(2, 1);
209 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED); 213 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED);
210 manager_->WorkerDestroyed(2, 1); 214 manager_->WorkerDestroyed(2, 1);
211 CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED); 215 CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED);
212 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); 216 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1));
213 217
214 // Created -> Started -> GetDevToolsAgentHost -> Register -> Destroyed 218 // Created -> Started -> GetDevToolsAgentHost -> Register -> Destroyed
215 scoped_ptr<TestDevToolsClientHost> client_host2(new TestDevToolsClientHost()); 219 scoped_ptr<TestDevToolsClientHost> client_host2(new TestDevToolsClientHost());
216 manager_->SharedWorkerCreated(2, 2, instance2); 220 manager_->SharedWorkerCreated(2, 2, instance2);
217 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); 221 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED);
218 manager_->WorkerContextStarted(2, 2); 222 manager_->WorkerContextStarted(2, 2);
219 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); 223 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED);
220 agent_host2 = manager_->GetDevToolsAgentHostForWorker(2, 2); 224 agent_host2 = manager_->GetDevToolsAgentHostForWorker(2, 2);
221 EXPECT_TRUE(agent_host2.get()); 225 EXPECT_TRUE(agent_host2.get());
222 EXPECT_NE(agent_host1.get(), agent_host2.get()); 226 EXPECT_NE(agent_host1.get(), agent_host2.get());
223 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2)); 227 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2));
224 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); 228 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED);
225 client_host2->InspectAgentHost(agent_host2); 229 RegisterDevToolsClientHostFor(agent_host2.get(), client_host2.get());
226 CheckWorkerState(2, 2, WorkerState::WORKER_INSPECTED); 230 CheckWorkerState(2, 2, WorkerState::WORKER_INSPECTED);
227 manager_->WorkerDestroyed(2, 2); 231 manager_->WorkerDestroyed(2, 2);
228 CheckWorkerState(2, 2, WorkerState::WORKER_TERMINATED); 232 CheckWorkerState(2, 2, WorkerState::WORKER_TERMINATED);
229 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2)); 233 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2));
230 234
231 // Re-created -> Started -> ClientHostClosing -> Destroyed 235 // Re-created -> Started -> ClientHostClosing -> Destroyed
232 CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED); 236 CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED);
233 manager_->SharedWorkerCreated(2, 3, instance1); 237 manager_->SharedWorkerCreated(2, 3, instance1);
234 CheckWorkerNotExist(2, 1); 238 CheckWorkerNotExist(2, 1);
235 CheckWorkerState(2, 3, WorkerState::WORKER_PAUSED_FOR_REATTACH); 239 CheckWorkerState(2, 3, WorkerState::WORKER_PAUSED_FOR_REATTACH);
236 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 3)); 240 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 3));
237 manager_->WorkerContextStarted(2, 3); 241 manager_->WorkerContextStarted(2, 3);
238 CheckWorkerState(2, 3, WorkerState::WORKER_INSPECTED); 242 CheckWorkerState(2, 3, WorkerState::WORKER_INSPECTED);
239 client_host1->InspectAgentHost(NULL); 243 ClientHostClosing(client_host1.get());
240 manager_->WorkerDestroyed(2, 3); 244 manager_->WorkerDestroyed(2, 3);
241 CheckWorkerState(2, 3, WorkerState::WORKER_TERMINATED); 245 CheckWorkerState(2, 3, WorkerState::WORKER_TERMINATED);
242 agent_host1 = NULL; 246 agent_host1 = NULL;
243 CheckWorkerNotExist(2, 3); 247 CheckWorkerNotExist(2, 3);
244 248
245 // Re-created -> Destroyed 249 // Re-created -> Destroyed
246 CheckWorkerState(2, 2, WorkerState::WORKER_TERMINATED); 250 CheckWorkerState(2, 2, WorkerState::WORKER_TERMINATED);
247 manager_->SharedWorkerCreated(2, 4, instance2); 251 manager_->SharedWorkerCreated(2, 4, instance2);
248 CheckWorkerNotExist(2, 2); 252 CheckWorkerNotExist(2, 2);
249 CheckWorkerState(2, 4, WorkerState::WORKER_PAUSED_FOR_REATTACH); 253 CheckWorkerState(2, 4, WorkerState::WORKER_PAUSED_FOR_REATTACH);
250 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 4)); 254 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 4));
251 manager_->WorkerDestroyed(2, 4); 255 manager_->WorkerDestroyed(2, 4);
252 CheckWorkerNotExist(2, 2); 256 CheckWorkerNotExist(2, 2);
253 CheckWorkerState(2, 4, WorkerState::WORKER_TERMINATED); 257 CheckWorkerState(2, 4, WorkerState::WORKER_TERMINATED);
254 258
255 // Re-created -> ClientHostClosing -> Destroyed 259 // Re-created -> ClientHostClosing -> Destroyed
256 manager_->SharedWorkerCreated(2, 5, instance2); 260 manager_->SharedWorkerCreated(2, 5, instance2);
257 CheckWorkerNotExist(2, 2); 261 CheckWorkerNotExist(2, 2);
258 CheckWorkerState(2, 5, WorkerState::WORKER_PAUSED_FOR_REATTACH); 262 CheckWorkerState(2, 5, WorkerState::WORKER_PAUSED_FOR_REATTACH);
259 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 5)); 263 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 5));
260 client_host2->InspectAgentHost(NULL); 264 ClientHostClosing(client_host2.get());
261 CheckWorkerCount(1); 265 CheckWorkerCount(1);
262 agent_host2 = NULL; 266 agent_host2 = NULL;
263 CheckWorkerCount(1); 267 CheckWorkerCount(1);
264 manager_->WorkerDestroyed(2, 5); 268 manager_->WorkerDestroyed(2, 5);
265 CheckWorkerCount(0); 269 CheckWorkerCount(0);
266 } 270 }
267 271
268 TEST_F(EmbeddedWorkerDevToolsManagerTest, ReattachTest) { 272 TEST_F(EmbeddedWorkerDevToolsManagerTest, ReattachTest) {
269 SharedWorkerInstance instance(GURL("http://example.com/w3.js"), 273 SharedWorkerInstance instance(GURL("http://example.com/w3.js"),
270 base::string16(), 274 base::string16(),
271 base::string16(), 275 base::string16(),
272 blink::WebContentSecurityPolicyTypeReport, 276 blink::WebContentSecurityPolicyTypeReport,
273 browser_context_->GetResourceContext(), 277 browser_context_->GetResourceContext(),
274 partition_id_); 278 partition_id_);
275 scoped_ptr<TestDevToolsClientHost> client_host(new TestDevToolsClientHost()); 279 scoped_ptr<TestDevToolsClientHost> client_host(new TestDevToolsClientHost());
276 // Created -> GetDevToolsAgentHost -> Register -> Destroyed 280 // Created -> GetDevToolsAgentHost -> Register -> Destroyed
277 manager_->SharedWorkerCreated(3, 1, instance); 281 manager_->SharedWorkerCreated(3, 1, instance);
278 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED); 282 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED);
279 scoped_refptr<DevToolsAgentHost> agent_host( 283 scoped_refptr<DevToolsAgentHost> agent_host(
280 manager_->GetDevToolsAgentHostForWorker(3, 1)); 284 manager_->GetDevToolsAgentHostForWorker(3, 1));
281 EXPECT_TRUE(agent_host.get()); 285 EXPECT_TRUE(agent_host.get());
282 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED); 286 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED);
283 client_host->InspectAgentHost(agent_host.get()); 287 RegisterDevToolsClientHostFor(agent_host.get(), client_host.get());
284 CheckWorkerState(3, 1, WorkerState::WORKER_INSPECTED); 288 CheckWorkerState(3, 1, WorkerState::WORKER_INSPECTED);
285 manager_->WorkerDestroyed(3, 1); 289 manager_->WorkerDestroyed(3, 1);
286 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED); 290 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED);
287 // ClientHostClosing -> Re-created -> release agent_host -> Destroyed 291 // ClientHostClosing -> Re-created -> release agent_host -> Destroyed
288 client_host->InspectAgentHost(NULL); 292 ClientHostClosing(client_host.get());
289 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED); 293 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED);
290 manager_->SharedWorkerCreated(3, 2, instance); 294 manager_->SharedWorkerCreated(3, 2, instance);
291 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED); 295 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED);
292 agent_host = NULL; 296 agent_host = NULL;
293 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED); 297 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED);
294 manager_->WorkerDestroyed(3, 2); 298 manager_->WorkerDestroyed(3, 2);
295 CheckWorkerNotExist(3, 2); 299 CheckWorkerNotExist(3, 2);
296 CheckWorkerCount(0); 300 CheckWorkerCount(0);
297 } 301 }
298 302
299 } // namespace content 303 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/devtools/embedded_worker_devtools_manager.cc ('k') | content/browser/devtools/forwarding_agent_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698