| 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 |