OLD | NEW |
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/shared_worker_devtools_manager.h" | 5 #include "content/browser/devtools/shared_worker_devtools_manager.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
| 9 #include <memory> |
| 10 |
9 #include "base/macros.h" | 11 #include "base/macros.h" |
10 #include "base/memory/scoped_ptr.h" | |
11 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" |
12 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
13 #include "content/browser/browser_thread_impl.h" | 14 #include "content/browser/browser_thread_impl.h" |
14 #include "content/browser/devtools/devtools_agent_host_impl.h" | 15 #include "content/browser/devtools/devtools_agent_host_impl.h" |
15 #include "content/browser/devtools/shared_worker_devtools_agent_host.h" | 16 #include "content/browser/devtools/shared_worker_devtools_agent_host.h" |
16 #include "content/browser/shared_worker/shared_worker_instance.h" | 17 #include "content/browser/shared_worker/shared_worker_instance.h" |
17 #include "content/browser/shared_worker/worker_storage_partition.h" | 18 #include "content/browser/shared_worker/worker_storage_partition.h" |
18 #include "content/public/test/test_browser_context.h" | 19 #include "content/public/test/test_browser_context.h" |
19 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
20 | 21 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 worker_route_id); | 85 worker_route_id); |
85 EXPECT_TRUE(manager_->workers_.end() == manager_->workers_.find(id)); | 86 EXPECT_TRUE(manager_->workers_.end() == manager_->workers_.find(id)); |
86 } | 87 } |
87 | 88 |
88 void CheckWorkerCount(size_t size) { | 89 void CheckWorkerCount(size_t size) { |
89 EXPECT_EQ(size, manager_->workers_.size()); | 90 EXPECT_EQ(size, manager_->workers_.size()); |
90 } | 91 } |
91 | 92 |
92 base::MessageLoopForIO message_loop_; | 93 base::MessageLoopForIO message_loop_; |
93 BrowserThreadImpl ui_thread_; | 94 BrowserThreadImpl ui_thread_; |
94 scoped_ptr<TestBrowserContext> browser_context_; | 95 std::unique_ptr<TestBrowserContext> browser_context_; |
95 scoped_ptr<WorkerStoragePartition> partition_; | 96 std::unique_ptr<WorkerStoragePartition> partition_; |
96 const WorkerStoragePartitionId partition_id_; | 97 const WorkerStoragePartitionId partition_id_; |
97 SharedWorkerDevToolsManager* manager_; | 98 SharedWorkerDevToolsManager* manager_; |
98 }; | 99 }; |
99 | 100 |
100 TEST_F(SharedWorkerDevToolsManagerTest, BasicTest) { | 101 TEST_F(SharedWorkerDevToolsManagerTest, BasicTest) { |
101 scoped_refptr<DevToolsAgentHostImpl> agent_host; | 102 scoped_refptr<DevToolsAgentHostImpl> agent_host; |
102 | 103 |
103 SharedWorkerInstance instance1( | 104 SharedWorkerInstance instance1( |
104 GURL("http://example.com/w.js"), base::string16(), base::string16(), | 105 GURL("http://example.com/w.js"), base::string16(), base::string16(), |
105 blink::WebContentSecurityPolicyTypeReport, blink::WebAddressSpacePublic, | 106 blink::WebContentSecurityPolicyTypeReport, blink::WebAddressSpacePublic, |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 blink::WebContentSecurityPolicyTypeReport, blink::WebAddressSpacePublic, | 188 blink::WebContentSecurityPolicyTypeReport, blink::WebAddressSpacePublic, |
188 browser_context_->GetResourceContext(), partition_id_, | 189 browser_context_->GetResourceContext(), partition_id_, |
189 blink::WebSharedWorkerCreationContextTypeNonsecure); | 190 blink::WebSharedWorkerCreationContextTypeNonsecure); |
190 SharedWorkerInstance instance2( | 191 SharedWorkerInstance instance2( |
191 GURL("http://example.com/w2.js"), base::string16(), base::string16(), | 192 GURL("http://example.com/w2.js"), base::string16(), base::string16(), |
192 blink::WebContentSecurityPolicyTypeReport, blink::WebAddressSpacePublic, | 193 blink::WebContentSecurityPolicyTypeReport, blink::WebAddressSpacePublic, |
193 browser_context_->GetResourceContext(), partition_id_, | 194 browser_context_->GetResourceContext(), partition_id_, |
194 blink::WebSharedWorkerCreationContextTypeNonsecure); | 195 blink::WebSharedWorkerCreationContextTypeNonsecure); |
195 | 196 |
196 // Created -> GetDevToolsAgentHost -> Register -> Started -> Destroyed | 197 // Created -> GetDevToolsAgentHost -> Register -> Started -> Destroyed |
197 scoped_ptr<TestDevToolsClientHost> client_host1(new TestDevToolsClientHost()); | 198 std::unique_ptr<TestDevToolsClientHost> client_host1( |
| 199 new TestDevToolsClientHost()); |
198 CheckWorkerNotExist(2, 1); | 200 CheckWorkerNotExist(2, 1); |
199 manager_->WorkerCreated(2, 1, instance1); | 201 manager_->WorkerCreated(2, 1, instance1); |
200 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED); | 202 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED); |
201 agent_host1 = manager_->GetDevToolsAgentHostForWorker(2, 1); | 203 agent_host1 = manager_->GetDevToolsAgentHostForWorker(2, 1); |
202 EXPECT_TRUE(agent_host1.get()); | 204 EXPECT_TRUE(agent_host1.get()); |
203 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED); | 205 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED); |
204 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); | 206 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); |
205 client_host1->InspectAgentHost(agent_host1.get()); | 207 client_host1->InspectAgentHost(agent_host1.get()); |
206 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED); | 208 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED); |
207 manager_->WorkerReadyForInspection(2, 1); | 209 manager_->WorkerReadyForInspection(2, 1); |
208 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED); | 210 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED); |
209 manager_->WorkerDestroyed(2, 1); | 211 manager_->WorkerDestroyed(2, 1); |
210 CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED); | 212 CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED); |
211 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); | 213 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); |
212 | 214 |
213 // Created -> Started -> GetDevToolsAgentHost -> Register -> Destroyed | 215 // Created -> Started -> GetDevToolsAgentHost -> Register -> Destroyed |
214 scoped_ptr<TestDevToolsClientHost> client_host2(new TestDevToolsClientHost()); | 216 std::unique_ptr<TestDevToolsClientHost> client_host2( |
| 217 new TestDevToolsClientHost()); |
215 manager_->WorkerCreated(2, 2, instance2); | 218 manager_->WorkerCreated(2, 2, instance2); |
216 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); | 219 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); |
217 manager_->WorkerReadyForInspection(2, 2); | 220 manager_->WorkerReadyForInspection(2, 2); |
218 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); | 221 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); |
219 agent_host2 = manager_->GetDevToolsAgentHostForWorker(2, 2); | 222 agent_host2 = manager_->GetDevToolsAgentHostForWorker(2, 2); |
220 EXPECT_TRUE(agent_host2.get()); | 223 EXPECT_TRUE(agent_host2.get()); |
221 EXPECT_NE(agent_host1.get(), agent_host2.get()); | 224 EXPECT_NE(agent_host1.get(), agent_host2.get()); |
222 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2)); | 225 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2)); |
223 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); | 226 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); |
224 client_host2->InspectAgentHost(agent_host2.get()); | 227 client_host2->InspectAgentHost(agent_host2.get()); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 manager_->WorkerDestroyed(2, 5); | 266 manager_->WorkerDestroyed(2, 5); |
264 CheckWorkerCount(0); | 267 CheckWorkerCount(0); |
265 } | 268 } |
266 | 269 |
267 TEST_F(SharedWorkerDevToolsManagerTest, ReattachTest) { | 270 TEST_F(SharedWorkerDevToolsManagerTest, ReattachTest) { |
268 SharedWorkerInstance instance( | 271 SharedWorkerInstance instance( |
269 GURL("http://example.com/w3.js"), base::string16(), base::string16(), | 272 GURL("http://example.com/w3.js"), base::string16(), base::string16(), |
270 blink::WebContentSecurityPolicyTypeReport, blink::WebAddressSpacePublic, | 273 blink::WebContentSecurityPolicyTypeReport, blink::WebAddressSpacePublic, |
271 browser_context_->GetResourceContext(), partition_id_, | 274 browser_context_->GetResourceContext(), partition_id_, |
272 blink::WebSharedWorkerCreationContextTypeNonsecure); | 275 blink::WebSharedWorkerCreationContextTypeNonsecure); |
273 scoped_ptr<TestDevToolsClientHost> client_host(new TestDevToolsClientHost()); | 276 std::unique_ptr<TestDevToolsClientHost> client_host( |
| 277 new TestDevToolsClientHost()); |
274 // Created -> GetDevToolsAgentHost -> Register -> Destroyed | 278 // Created -> GetDevToolsAgentHost -> Register -> Destroyed |
275 manager_->WorkerCreated(3, 1, instance); | 279 manager_->WorkerCreated(3, 1, instance); |
276 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED); | 280 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED); |
277 scoped_refptr<DevToolsAgentHost> agent_host( | 281 scoped_refptr<DevToolsAgentHost> agent_host( |
278 manager_->GetDevToolsAgentHostForWorker(3, 1)); | 282 manager_->GetDevToolsAgentHostForWorker(3, 1)); |
279 EXPECT_TRUE(agent_host.get()); | 283 EXPECT_TRUE(agent_host.get()); |
280 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED); | 284 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED); |
281 client_host->InspectAgentHost(agent_host.get()); | 285 client_host->InspectAgentHost(agent_host.get()); |
282 CheckWorkerState(3, 1, WorkerState::WORKER_INSPECTED); | 286 CheckWorkerState(3, 1, WorkerState::WORKER_INSPECTED); |
283 manager_->WorkerDestroyed(3, 1); | 287 manager_->WorkerDestroyed(3, 1); |
284 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED); | 288 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED); |
285 // ClientHostClosing -> Re-created -> release agent_host -> Destroyed | 289 // ClientHostClosing -> Re-created -> release agent_host -> Destroyed |
286 client_host->InspectAgentHost(NULL); | 290 client_host->InspectAgentHost(NULL); |
287 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED); | 291 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED); |
288 manager_->WorkerCreated(3, 2, instance); | 292 manager_->WorkerCreated(3, 2, instance); |
289 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED); | 293 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED); |
290 agent_host = NULL; | 294 agent_host = NULL; |
291 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED); | 295 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED); |
292 manager_->WorkerDestroyed(3, 2); | 296 manager_->WorkerDestroyed(3, 2); |
293 CheckWorkerNotExist(3, 2); | 297 CheckWorkerNotExist(3, 2); |
294 CheckWorkerCount(0); | 298 CheckWorkerCount(0); |
295 } | 299 } |
296 | 300 |
297 } // namespace content | 301 } // namespace content |
OLD | NEW |