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/embedded_worker_devtools_manager.h" | 5 #include "content/browser/devtools/shared_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_agent_host_impl.h" |
12 #include "content/browser/devtools/embedded_worker_devtools_agent_host.h" | 12 #include "content/browser/devtools/shared_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/test/test_browser_context.h" | 15 #include "content/public/test/test_browser_context.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
17 | 17 |
18 namespace content { | 18 namespace content { |
19 namespace { | 19 namespace { |
20 | 20 |
21 class TestDevToolsClientHost : public DevToolsAgentHostClient { | 21 class TestDevToolsClientHost : public DevToolsAgentHostClient { |
22 public: | 22 public: |
23 TestDevToolsClientHost() {} | 23 TestDevToolsClientHost() {} |
24 ~TestDevToolsClientHost() override {} | 24 ~TestDevToolsClientHost() override {} |
25 void DispatchProtocolMessage(DevToolsAgentHost* agent_host, | 25 void DispatchProtocolMessage(DevToolsAgentHost* agent_host, |
26 const std::string& message) override {} | 26 const std::string& message) override {} |
27 void AgentHostClosed(DevToolsAgentHost* agent_host, bool replaced) override {} | 27 void AgentHostClosed(DevToolsAgentHost* agent_host, bool replaced) override {} |
28 | 28 |
29 void InspectAgentHost(DevToolsAgentHost* agent_host) { | 29 void InspectAgentHost(DevToolsAgentHost* agent_host) { |
30 if (agent_host_.get()) | 30 if (agent_host_.get()) |
31 agent_host_->DetachClient(); | 31 agent_host_->DetachClient(); |
32 agent_host_ = agent_host; | 32 agent_host_ = agent_host; |
33 if (agent_host_.get()) | 33 if (agent_host_.get()) |
34 agent_host_->AttachClient(this); | 34 agent_host_->AttachClient(this); |
35 } | 35 } |
36 private: | 36 private: |
37 scoped_refptr<DevToolsAgentHost> agent_host_; | 37 scoped_refptr<DevToolsAgentHost> agent_host_; |
38 DISALLOW_COPY_AND_ASSIGN(TestDevToolsClientHost); | 38 DISALLOW_COPY_AND_ASSIGN(TestDevToolsClientHost); |
39 }; | 39 }; |
40 } | 40 } // namespace |
41 | 41 |
42 class EmbeddedWorkerDevToolsManagerTest : public testing::Test { | 42 class SharedWorkerDevToolsManagerTest : public testing::Test { |
43 public: | 43 public: |
44 typedef EmbeddedWorkerDevToolsAgentHost::WorkerState WorkerState; | 44 typedef SharedWorkerDevToolsAgentHost::WorkerState WorkerState; |
45 | 45 |
46 EmbeddedWorkerDevToolsManagerTest() | 46 SharedWorkerDevToolsManagerTest() |
47 : ui_thread_(BrowserThread::UI, &message_loop_), | 47 : ui_thread_(BrowserThread::UI, &message_loop_), |
48 browser_context_(new TestBrowserContext()), | 48 browser_context_(new TestBrowserContext()), |
49 partition_( | 49 partition_( |
50 new WorkerStoragePartition(browser_context_->GetRequestContext(), | 50 new WorkerStoragePartition(browser_context_->GetRequestContext(), |
51 NULL, | 51 NULL, |
52 NULL, | 52 NULL, |
53 NULL, | 53 NULL, |
54 NULL, | 54 NULL, |
55 NULL, | 55 NULL, |
56 NULL, | 56 NULL, |
57 NULL)), | 57 NULL)), |
58 partition_id_(*partition_.get()) {} | 58 partition_id_(*partition_.get()) {} |
59 | 59 |
60 protected: | 60 protected: |
61 void SetUp() override { | 61 void SetUp() override { |
62 manager_ = EmbeddedWorkerDevToolsManager::GetInstance(); | 62 manager_ = SharedWorkerDevToolsManager::GetInstance(); |
63 } | 63 } |
64 void TearDown() override { | 64 void TearDown() override { |
65 EmbeddedWorkerDevToolsManager::GetInstance()->ResetForTesting(); | 65 SharedWorkerDevToolsManager::GetInstance()->ResetForTesting(); |
66 } | 66 } |
67 | 67 |
68 void CheckWorkerState(int worker_process_id, | 68 void CheckWorkerState(int worker_process_id, |
69 int worker_route_id, | 69 int worker_route_id, |
70 WorkerState state) { | 70 WorkerState state) { |
71 const EmbeddedWorkerDevToolsManager::WorkerId id(worker_process_id, | 71 const SharedWorkerDevToolsManager::WorkerId id(worker_process_id, |
72 worker_route_id); | 72 worker_route_id); |
73 EmbeddedWorkerDevToolsManager::AgentHostMap::iterator it = | 73 SharedWorkerDevToolsManager::AgentHostMap::iterator it = |
74 manager_->workers_.find(id); | 74 manager_->workers().find(id); |
75 EXPECT_TRUE(manager_->workers_.end() != it); | 75 EXPECT_TRUE(manager_->workers_.end() != it); |
76 EXPECT_EQ(state, it->second->state_); | 76 EXPECT_EQ(state, it->second->state_); |
77 } | 77 } |
78 | 78 |
79 void CheckWorkerNotExist(int worker_process_id, int worker_route_id) { | 79 void CheckWorkerNotExist(int worker_process_id, int worker_route_id) { |
80 const EmbeddedWorkerDevToolsManager::WorkerId id(worker_process_id, | 80 const SharedWorkerDevToolsManager::WorkerId id(worker_process_id, |
81 worker_route_id); | 81 worker_route_id); |
82 EXPECT_TRUE(manager_->workers_.end() == manager_->workers_.find(id)); | 82 EXPECT_TRUE(manager_->workers_.end() == manager_->workers_.find(id)); |
83 } | 83 } |
84 | 84 |
85 void CheckWorkerCount(size_t size) { | 85 void CheckWorkerCount(size_t size) { |
86 EXPECT_EQ(size, manager_->workers_.size()); | 86 EXPECT_EQ(size, manager_->workers_.size()); |
87 } | 87 } |
88 | 88 |
89 base::MessageLoopForIO message_loop_; | 89 base::MessageLoopForIO message_loop_; |
90 BrowserThreadImpl ui_thread_; | 90 BrowserThreadImpl ui_thread_; |
91 scoped_ptr<TestBrowserContext> browser_context_; | 91 scoped_ptr<TestBrowserContext> browser_context_; |
92 scoped_ptr<WorkerStoragePartition> partition_; | 92 scoped_ptr<WorkerStoragePartition> partition_; |
93 const WorkerStoragePartitionId partition_id_; | 93 const WorkerStoragePartitionId partition_id_; |
94 EmbeddedWorkerDevToolsManager* manager_; | 94 SharedWorkerDevToolsManager* manager_; |
95 }; | 95 }; |
96 | 96 |
97 TEST_F(EmbeddedWorkerDevToolsManagerTest, BasicTest) { | 97 TEST_F(SharedWorkerDevToolsManagerTest, BasicTest) { |
98 scoped_refptr<DevToolsAgentHostImpl> agent_host; | 98 scoped_refptr<DevToolsAgentHostImpl> agent_host; |
99 | 99 |
100 SharedWorkerInstance instance1(GURL("http://example.com/w.js"), | 100 SharedWorkerInstance instance1(GURL("http://example.com/w.js"), |
101 base::string16(), | 101 base::string16(), |
102 base::string16(), | 102 base::string16(), |
103 blink::WebContentSecurityPolicyTypeReport, | 103 blink::WebContentSecurityPolicyTypeReport, |
104 browser_context_->GetResourceContext(), | 104 browser_context_->GetResourceContext(), |
105 partition_id_); | 105 partition_id_); |
106 | 106 |
107 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 1); | 107 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 1); |
108 EXPECT_FALSE(agent_host.get()); | 108 EXPECT_FALSE(agent_host.get()); |
109 | 109 |
110 // Created -> Started -> Destroyed | 110 // Created -> Started -> Destroyed |
111 CheckWorkerNotExist(1, 1); | 111 CheckWorkerNotExist(1, 1); |
112 manager_->SharedWorkerCreated(1, 1, instance1); | 112 manager_->WorkerCreated(1, 1, instance1); |
113 CheckWorkerState(1, 1, WorkerState::WORKER_UNINSPECTED); | 113 CheckWorkerState(1, 1, WorkerState::WORKER_UNINSPECTED); |
114 manager_->WorkerReadyForInspection(1, 1); | 114 manager_->WorkerReadyForInspection(1, 1); |
115 CheckWorkerState(1, 1, WorkerState::WORKER_UNINSPECTED); | 115 CheckWorkerState(1, 1, WorkerState::WORKER_UNINSPECTED); |
116 manager_->WorkerDestroyed(1, 1); | 116 manager_->WorkerDestroyed(1, 1); |
117 CheckWorkerNotExist(1, 1); | 117 CheckWorkerNotExist(1, 1); |
118 | 118 |
119 // Created -> GetDevToolsAgentHost -> Started -> Destroyed | 119 // Created -> GetDevToolsAgentHost -> Started -> Destroyed |
120 CheckWorkerNotExist(1, 2); | 120 CheckWorkerNotExist(1, 2); |
121 manager_->SharedWorkerCreated(1, 2, instance1); | 121 manager_->WorkerCreated(1, 2, instance1); |
122 CheckWorkerState(1, 2, WorkerState::WORKER_UNINSPECTED); | 122 CheckWorkerState(1, 2, WorkerState::WORKER_UNINSPECTED); |
123 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 2); | 123 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 2); |
124 EXPECT_TRUE(agent_host.get()); | 124 EXPECT_TRUE(agent_host.get()); |
125 CheckWorkerState(1, 2, WorkerState::WORKER_UNINSPECTED); | 125 CheckWorkerState(1, 2, WorkerState::WORKER_UNINSPECTED); |
126 EXPECT_EQ(agent_host.get(), manager_->GetDevToolsAgentHostForWorker(1, 2)); | 126 EXPECT_EQ(agent_host.get(), manager_->GetDevToolsAgentHostForWorker(1, 2)); |
127 manager_->WorkerReadyForInspection(1, 2); | 127 manager_->WorkerReadyForInspection(1, 2); |
128 CheckWorkerState(1, 2, WorkerState::WORKER_UNINSPECTED); | 128 CheckWorkerState(1, 2, WorkerState::WORKER_UNINSPECTED); |
129 manager_->WorkerDestroyed(1, 2); | 129 manager_->WorkerDestroyed(1, 2); |
130 CheckWorkerState(1, 2, WorkerState::WORKER_TERMINATED); | 130 CheckWorkerState(1, 2, WorkerState::WORKER_TERMINATED); |
131 agent_host = NULL; | 131 agent_host = NULL; |
132 CheckWorkerNotExist(1, 2); | 132 CheckWorkerNotExist(1, 2); |
133 | 133 |
134 // Created -> Started -> GetDevToolsAgentHost -> Destroyed | 134 // Created -> Started -> GetDevToolsAgentHost -> Destroyed |
135 CheckWorkerNotExist(1, 3); | 135 CheckWorkerNotExist(1, 3); |
136 manager_->SharedWorkerCreated(1, 3, instance1); | 136 manager_->WorkerCreated(1, 3, instance1); |
137 CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED); | 137 CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED); |
138 manager_->WorkerReadyForInspection(1, 3); | 138 manager_->WorkerReadyForInspection(1, 3); |
139 CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED); | 139 CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED); |
140 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 3); | 140 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 3); |
141 EXPECT_TRUE(agent_host.get()); | 141 EXPECT_TRUE(agent_host.get()); |
142 CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED); | 142 CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED); |
143 manager_->WorkerDestroyed(1, 3); | 143 manager_->WorkerDestroyed(1, 3); |
144 CheckWorkerState(1, 3, WorkerState::WORKER_TERMINATED); | 144 CheckWorkerState(1, 3, WorkerState::WORKER_TERMINATED); |
145 agent_host = NULL; | 145 agent_host = NULL; |
146 CheckWorkerNotExist(1, 3); | 146 CheckWorkerNotExist(1, 3); |
147 | 147 |
148 // Created -> Destroyed | 148 // Created -> Destroyed |
149 CheckWorkerNotExist(1, 4); | 149 CheckWorkerNotExist(1, 4); |
150 manager_->SharedWorkerCreated(1, 4, instance1); | 150 manager_->WorkerCreated(1, 4, instance1); |
151 CheckWorkerState(1, 4, WorkerState::WORKER_UNINSPECTED); | 151 CheckWorkerState(1, 4, WorkerState::WORKER_UNINSPECTED); |
152 manager_->WorkerDestroyed(1, 4); | 152 manager_->WorkerDestroyed(1, 4); |
153 CheckWorkerNotExist(1, 4); | 153 CheckWorkerNotExist(1, 4); |
154 | 154 |
155 // Created -> GetDevToolsAgentHost -> Destroyed | 155 // Created -> GetDevToolsAgentHost -> Destroyed |
156 CheckWorkerNotExist(1, 5); | 156 CheckWorkerNotExist(1, 5); |
157 manager_->SharedWorkerCreated(1, 5, instance1); | 157 manager_->WorkerCreated(1, 5, instance1); |
158 CheckWorkerState(1, 5, WorkerState::WORKER_UNINSPECTED); | 158 CheckWorkerState(1, 5, WorkerState::WORKER_UNINSPECTED); |
159 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 5); | 159 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 5); |
160 EXPECT_TRUE(agent_host.get()); | 160 EXPECT_TRUE(agent_host.get()); |
161 CheckWorkerState(1, 5, WorkerState::WORKER_UNINSPECTED); | 161 CheckWorkerState(1, 5, WorkerState::WORKER_UNINSPECTED); |
162 manager_->WorkerDestroyed(1, 5); | 162 manager_->WorkerDestroyed(1, 5); |
163 CheckWorkerState(1, 5, WorkerState::WORKER_TERMINATED); | 163 CheckWorkerState(1, 5, WorkerState::WORKER_TERMINATED); |
164 agent_host = NULL; | 164 agent_host = NULL; |
165 CheckWorkerNotExist(1, 5); | 165 CheckWorkerNotExist(1, 5); |
166 | 166 |
167 // Created -> GetDevToolsAgentHost -> Free agent_host -> Destroyed | 167 // Created -> GetDevToolsAgentHost -> Free agent_host -> Destroyed |
168 CheckWorkerNotExist(1, 6); | 168 CheckWorkerNotExist(1, 6); |
169 manager_->SharedWorkerCreated(1, 6, instance1); | 169 manager_->WorkerCreated(1, 6, instance1); |
170 CheckWorkerState(1, 6, WorkerState::WORKER_UNINSPECTED); | 170 CheckWorkerState(1, 6, WorkerState::WORKER_UNINSPECTED); |
171 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 6); | 171 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 6); |
172 EXPECT_TRUE(agent_host.get()); | 172 EXPECT_TRUE(agent_host.get()); |
173 CheckWorkerState(1, 6, WorkerState::WORKER_UNINSPECTED); | 173 CheckWorkerState(1, 6, WorkerState::WORKER_UNINSPECTED); |
174 agent_host = NULL; | 174 agent_host = NULL; |
175 manager_->WorkerDestroyed(1, 6); | 175 manager_->WorkerDestroyed(1, 6); |
176 CheckWorkerNotExist(1, 6); | 176 CheckWorkerNotExist(1, 6); |
177 } | 177 } |
178 | 178 |
179 TEST_F(EmbeddedWorkerDevToolsManagerTest, AttachTest) { | 179 TEST_F(SharedWorkerDevToolsManagerTest, AttachTest) { |
180 scoped_refptr<DevToolsAgentHostImpl> agent_host1; | 180 scoped_refptr<DevToolsAgentHostImpl> agent_host1; |
181 scoped_refptr<DevToolsAgentHostImpl> agent_host2; | 181 scoped_refptr<DevToolsAgentHostImpl> agent_host2; |
182 | 182 |
183 SharedWorkerInstance instance1(GURL("http://example.com/w1.js"), | 183 SharedWorkerInstance instance1(GURL("http://example.com/w1.js"), |
184 base::string16(), | 184 base::string16(), |
185 base::string16(), | 185 base::string16(), |
186 blink::WebContentSecurityPolicyTypeReport, | 186 blink::WebContentSecurityPolicyTypeReport, |
187 browser_context_->GetResourceContext(), | 187 browser_context_->GetResourceContext(), |
188 partition_id_); | 188 partition_id_); |
189 SharedWorkerInstance instance2(GURL("http://example.com/w2.js"), | 189 SharedWorkerInstance instance2(GURL("http://example.com/w2.js"), |
190 base::string16(), | 190 base::string16(), |
191 base::string16(), | 191 base::string16(), |
192 blink::WebContentSecurityPolicyTypeReport, | 192 blink::WebContentSecurityPolicyTypeReport, |
193 browser_context_->GetResourceContext(), | 193 browser_context_->GetResourceContext(), |
194 partition_id_); | 194 partition_id_); |
195 | 195 |
196 // Created -> GetDevToolsAgentHost -> Register -> Started -> Destroyed | 196 // Created -> GetDevToolsAgentHost -> Register -> Started -> Destroyed |
197 scoped_ptr<TestDevToolsClientHost> client_host1(new TestDevToolsClientHost()); | 197 scoped_ptr<TestDevToolsClientHost> client_host1(new TestDevToolsClientHost()); |
198 CheckWorkerNotExist(2, 1); | 198 CheckWorkerNotExist(2, 1); |
199 manager_->SharedWorkerCreated(2, 1, instance1); | 199 manager_->WorkerCreated(2, 1, instance1); |
200 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED); | 200 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED); |
201 agent_host1 = manager_->GetDevToolsAgentHostForWorker(2, 1); | 201 agent_host1 = manager_->GetDevToolsAgentHostForWorker(2, 1); |
202 EXPECT_TRUE(agent_host1.get()); | 202 EXPECT_TRUE(agent_host1.get()); |
203 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED); | 203 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED); |
204 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); | 204 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); |
205 client_host1->InspectAgentHost(agent_host1.get()); | 205 client_host1->InspectAgentHost(agent_host1.get()); |
206 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED); | 206 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED); |
207 manager_->WorkerReadyForInspection(2, 1); | 207 manager_->WorkerReadyForInspection(2, 1); |
208 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED); | 208 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED); |
209 manager_->WorkerDestroyed(2, 1); | 209 manager_->WorkerDestroyed(2, 1); |
210 CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED); | 210 CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED); |
211 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); | 211 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); |
212 | 212 |
213 // Created -> Started -> GetDevToolsAgentHost -> Register -> Destroyed | 213 // Created -> Started -> GetDevToolsAgentHost -> Register -> Destroyed |
214 scoped_ptr<TestDevToolsClientHost> client_host2(new TestDevToolsClientHost()); | 214 scoped_ptr<TestDevToolsClientHost> client_host2(new TestDevToolsClientHost()); |
215 manager_->SharedWorkerCreated(2, 2, instance2); | 215 manager_->WorkerCreated(2, 2, instance2); |
216 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); | 216 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); |
217 manager_->WorkerReadyForInspection(2, 2); | 217 manager_->WorkerReadyForInspection(2, 2); |
218 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); | 218 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); |
219 agent_host2 = manager_->GetDevToolsAgentHostForWorker(2, 2); | 219 agent_host2 = manager_->GetDevToolsAgentHostForWorker(2, 2); |
220 EXPECT_TRUE(agent_host2.get()); | 220 EXPECT_TRUE(agent_host2.get()); |
221 EXPECT_NE(agent_host1.get(), agent_host2.get()); | 221 EXPECT_NE(agent_host1.get(), agent_host2.get()); |
222 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2)); | 222 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2)); |
223 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); | 223 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); |
224 client_host2->InspectAgentHost(agent_host2.get()); | 224 client_host2->InspectAgentHost(agent_host2.get()); |
225 CheckWorkerState(2, 2, WorkerState::WORKER_INSPECTED); | 225 CheckWorkerState(2, 2, WorkerState::WORKER_INSPECTED); |
226 manager_->WorkerDestroyed(2, 2); | 226 manager_->WorkerDestroyed(2, 2); |
227 CheckWorkerState(2, 2, WorkerState::WORKER_TERMINATED); | 227 CheckWorkerState(2, 2, WorkerState::WORKER_TERMINATED); |
228 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2)); | 228 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2)); |
229 | 229 |
230 // Re-created -> Started -> ClientHostClosing -> Destroyed | 230 // Re-created -> Started -> ClientHostClosing -> Destroyed |
231 CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED); | 231 CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED); |
232 manager_->SharedWorkerCreated(2, 3, instance1); | 232 manager_->WorkerCreated(2, 3, instance1); |
233 CheckWorkerNotExist(2, 1); | 233 CheckWorkerNotExist(2, 1); |
234 CheckWorkerState(2, 3, WorkerState::WORKER_PAUSED_FOR_REATTACH); | 234 CheckWorkerState(2, 3, WorkerState::WORKER_PAUSED_FOR_REATTACH); |
235 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 3)); | 235 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 3)); |
236 manager_->WorkerReadyForInspection(2, 3); | 236 manager_->WorkerReadyForInspection(2, 3); |
237 CheckWorkerState(2, 3, WorkerState::WORKER_INSPECTED); | 237 CheckWorkerState(2, 3, WorkerState::WORKER_INSPECTED); |
238 client_host1->InspectAgentHost(NULL); | 238 client_host1->InspectAgentHost(NULL); |
239 manager_->WorkerDestroyed(2, 3); | 239 manager_->WorkerDestroyed(2, 3); |
240 CheckWorkerState(2, 3, WorkerState::WORKER_TERMINATED); | 240 CheckWorkerState(2, 3, WorkerState::WORKER_TERMINATED); |
241 agent_host1 = NULL; | 241 agent_host1 = NULL; |
242 CheckWorkerNotExist(2, 3); | 242 CheckWorkerNotExist(2, 3); |
243 | 243 |
244 // Re-created -> Destroyed | 244 // Re-created -> Destroyed |
245 CheckWorkerState(2, 2, WorkerState::WORKER_TERMINATED); | 245 CheckWorkerState(2, 2, WorkerState::WORKER_TERMINATED); |
246 manager_->SharedWorkerCreated(2, 4, instance2); | 246 manager_->WorkerCreated(2, 4, instance2); |
247 CheckWorkerNotExist(2, 2); | 247 CheckWorkerNotExist(2, 2); |
248 CheckWorkerState(2, 4, WorkerState::WORKER_PAUSED_FOR_REATTACH); | 248 CheckWorkerState(2, 4, WorkerState::WORKER_PAUSED_FOR_REATTACH); |
249 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 4)); | 249 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 4)); |
250 manager_->WorkerDestroyed(2, 4); | 250 manager_->WorkerDestroyed(2, 4); |
251 CheckWorkerNotExist(2, 2); | 251 CheckWorkerNotExist(2, 2); |
252 CheckWorkerState(2, 4, WorkerState::WORKER_TERMINATED); | 252 CheckWorkerState(2, 4, WorkerState::WORKER_TERMINATED); |
253 | 253 |
254 // Re-created -> ClientHostClosing -> Destroyed | 254 // Re-created -> ClientHostClosing -> Destroyed |
255 manager_->SharedWorkerCreated(2, 5, instance2); | 255 manager_->WorkerCreated(2, 5, instance2); |
256 CheckWorkerNotExist(2, 2); | 256 CheckWorkerNotExist(2, 2); |
257 CheckWorkerState(2, 5, WorkerState::WORKER_PAUSED_FOR_REATTACH); | 257 CheckWorkerState(2, 5, WorkerState::WORKER_PAUSED_FOR_REATTACH); |
258 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 5)); | 258 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 5)); |
259 client_host2->InspectAgentHost(NULL); | 259 client_host2->InspectAgentHost(NULL); |
260 CheckWorkerCount(1); | 260 CheckWorkerCount(1); |
261 agent_host2 = NULL; | 261 agent_host2 = NULL; |
262 CheckWorkerCount(1); | 262 CheckWorkerCount(1); |
263 manager_->WorkerDestroyed(2, 5); | 263 manager_->WorkerDestroyed(2, 5); |
264 CheckWorkerCount(0); | 264 CheckWorkerCount(0); |
265 } | 265 } |
266 | 266 |
267 TEST_F(EmbeddedWorkerDevToolsManagerTest, ReattachTest) { | 267 TEST_F(SharedWorkerDevToolsManagerTest, ReattachTest) { |
268 SharedWorkerInstance instance(GURL("http://example.com/w3.js"), | 268 SharedWorkerInstance instance(GURL("http://example.com/w3.js"), |
269 base::string16(), | 269 base::string16(), |
270 base::string16(), | 270 base::string16(), |
271 blink::WebContentSecurityPolicyTypeReport, | 271 blink::WebContentSecurityPolicyTypeReport, |
272 browser_context_->GetResourceContext(), | 272 browser_context_->GetResourceContext(), |
273 partition_id_); | 273 partition_id_); |
274 scoped_ptr<TestDevToolsClientHost> client_host(new TestDevToolsClientHost()); | 274 scoped_ptr<TestDevToolsClientHost> client_host(new TestDevToolsClientHost()); |
275 // Created -> GetDevToolsAgentHost -> Register -> Destroyed | 275 // Created -> GetDevToolsAgentHost -> Register -> Destroyed |
276 manager_->SharedWorkerCreated(3, 1, instance); | 276 manager_->WorkerCreated(3, 1, instance); |
277 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED); | 277 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED); |
278 scoped_refptr<DevToolsAgentHost> agent_host( | 278 scoped_refptr<DevToolsAgentHost> agent_host( |
279 manager_->GetDevToolsAgentHostForWorker(3, 1)); | 279 manager_->GetDevToolsAgentHostForWorker(3, 1)); |
280 EXPECT_TRUE(agent_host.get()); | 280 EXPECT_TRUE(agent_host.get()); |
281 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED); | 281 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED); |
282 client_host->InspectAgentHost(agent_host.get()); | 282 client_host->InspectAgentHost(agent_host.get()); |
283 CheckWorkerState(3, 1, WorkerState::WORKER_INSPECTED); | 283 CheckWorkerState(3, 1, WorkerState::WORKER_INSPECTED); |
284 manager_->WorkerDestroyed(3, 1); | 284 manager_->WorkerDestroyed(3, 1); |
285 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED); | 285 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED); |
286 // ClientHostClosing -> Re-created -> release agent_host -> Destroyed | 286 // ClientHostClosing -> Re-created -> release agent_host -> Destroyed |
287 client_host->InspectAgentHost(NULL); | 287 client_host->InspectAgentHost(NULL); |
288 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED); | 288 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED); |
289 manager_->SharedWorkerCreated(3, 2, instance); | 289 manager_->WorkerCreated(3, 2, instance); |
290 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED); | 290 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED); |
291 agent_host = NULL; | 291 agent_host = NULL; |
292 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED); | 292 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED); |
293 manager_->WorkerDestroyed(3, 2); | 293 manager_->WorkerDestroyed(3, 2); |
294 CheckWorkerNotExist(3, 2); | 294 CheckWorkerNotExist(3, 2); |
295 CheckWorkerCount(0); | 295 CheckWorkerCount(0); |
296 } | 296 } |
297 | 297 |
298 } // namespace content | 298 } // namespace content |
OLD | NEW |