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

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

Issue 405603002: DevTools: Merge WorkerInfo into EmbeddedWorkerDevToolsAgentHost (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed state transitions during client reattach + test 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
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_manager_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/shared_worker/shared_worker_instance.h" 13 #include "content/browser/shared_worker/shared_worker_instance.h"
13 #include "content/browser/shared_worker/worker_storage_partition.h" 14 #include "content/browser/shared_worker/worker_storage_partition.h"
14 #include "content/public/browser/devtools_agent_host.h" 15 #include "content/public/browser/devtools_agent_host.h"
15 #include "content/public/browser/devtools_client_host.h" 16 #include "content/public/browser/devtools_client_host.h"
16 #include "content/public/test/test_browser_context.h" 17 #include "content/public/test/test_browser_context.h"
17 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
18 19
19 namespace content { 20 namespace content {
20 namespace { 21 namespace {
21 22
22 class TestDevToolsClientHost : public DevToolsClientHost { 23 class TestDevToolsClientHost : public DevToolsClientHost {
23 public: 24 public:
24 TestDevToolsClientHost() {} 25 TestDevToolsClientHost() {}
25 virtual ~TestDevToolsClientHost() {} 26 virtual ~TestDevToolsClientHost() {}
26 virtual void DispatchOnInspectorFrontend( 27 virtual void DispatchOnInspectorFrontend(
27 const std::string& message) OVERRIDE {} 28 const std::string& message) OVERRIDE {}
28 virtual void InspectedContentsClosing() OVERRIDE {} 29 virtual void InspectedContentsClosing() OVERRIDE {}
29 virtual void ReplacedWithAnotherClient() OVERRIDE {} 30 virtual void ReplacedWithAnotherClient() OVERRIDE {}
30 31
31 private: 32 private:
32 DISALLOW_COPY_AND_ASSIGN(TestDevToolsClientHost); 33 DISALLOW_COPY_AND_ASSIGN(TestDevToolsClientHost);
33 }; 34 };
34 } 35 }
35 36
36 class EmbeddedWorkerDevToolsManagerTest : public testing::Test { 37 class EmbeddedWorkerDevToolsManagerTest : public testing::Test {
37 public: 38 public:
39 typedef EmbeddedWorkerDevToolsAgentHost::WorkerState WorkerState;
40
38 EmbeddedWorkerDevToolsManagerTest() 41 EmbeddedWorkerDevToolsManagerTest()
39 : ui_thread_(BrowserThread::UI, &message_loop_), 42 : ui_thread_(BrowserThread::UI, &message_loop_),
40 browser_context_(new TestBrowserContext()), 43 browser_context_(new TestBrowserContext()),
41 partition_( 44 partition_(
42 new WorkerStoragePartition(browser_context_->GetRequestContext(), 45 new WorkerStoragePartition(browser_context_->GetRequestContext(),
43 NULL, 46 NULL,
44 NULL, 47 NULL,
45 NULL, 48 NULL,
46 NULL, 49 NULL,
47 NULL, 50 NULL,
48 NULL, 51 NULL,
49 NULL)), 52 NULL)),
50 partition_id_(*partition_.get()) {} 53 partition_id_(*partition_.get()) {}
51 54
52 protected: 55 protected:
53 virtual void SetUp() OVERRIDE { 56 virtual void SetUp() OVERRIDE {
54 manager_ = EmbeddedWorkerDevToolsManager::GetInstance(); 57 manager_ = EmbeddedWorkerDevToolsManager::GetInstance();
55 } 58 }
56 virtual void TearDown() OVERRIDE { 59 virtual void TearDown() OVERRIDE {
57 EmbeddedWorkerDevToolsManager::GetInstance()->ResetForTesting(); 60 EmbeddedWorkerDevToolsManager::GetInstance()->ResetForTesting();
58 } 61 }
59 62
60 void CheckWorkerState(int worker_process_id, 63 void CheckWorkerState(int worker_process_id,
61 int worker_route_id, 64 int worker_route_id,
62 EmbeddedWorkerDevToolsManager::WorkerState state) { 65 WorkerState state) {
63 const EmbeddedWorkerDevToolsManager::WorkerId id(worker_process_id, 66 const EmbeddedWorkerDevToolsManager::WorkerId id(worker_process_id,
64 worker_route_id); 67 worker_route_id);
65 EmbeddedWorkerDevToolsManager::WorkerInfoMap::iterator it = 68 EmbeddedWorkerDevToolsManager::AgentHostMap::iterator it =
66 manager_->workers_.find(id); 69 manager_->workers_.find(id);
67 EXPECT_TRUE(manager_->workers_.end() != it); 70 EXPECT_TRUE(manager_->workers_.end() != it);
68 EXPECT_EQ(state, it->second->state()); 71 EXPECT_EQ(state, it->second->state_);
69 } 72 }
70 73
71 void CheckWorkerNotExist(int worker_process_id, int worker_route_id) { 74 void CheckWorkerNotExist(int worker_process_id, int worker_route_id) {
72 const EmbeddedWorkerDevToolsManager::WorkerId id(worker_process_id, 75 const EmbeddedWorkerDevToolsManager::WorkerId id(worker_process_id,
73 worker_route_id); 76 worker_route_id);
74 EXPECT_TRUE(manager_->workers_.end() == manager_->workers_.find(id)); 77 EXPECT_TRUE(manager_->workers_.end() == manager_->workers_.find(id));
75 } 78 }
76 79
77 void CheckWorkerCount(size_t size) { 80 void CheckWorkerCount(size_t size) {
78 EXPECT_EQ(size, manager_->workers_.size()); 81 EXPECT_EQ(size, manager_->workers_.size());
(...skipping 26 matching lines...) Expand all
105 blink::WebContentSecurityPolicyTypeReport, 108 blink::WebContentSecurityPolicyTypeReport,
106 browser_context_->GetResourceContext(), 109 browser_context_->GetResourceContext(),
107 partition_id_); 110 partition_id_);
108 111
109 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 1); 112 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 1);
110 EXPECT_FALSE(agent_host.get()); 113 EXPECT_FALSE(agent_host.get());
111 114
112 // Created -> Started -> Destroyed 115 // Created -> Started -> Destroyed
113 CheckWorkerNotExist(1, 1); 116 CheckWorkerNotExist(1, 1);
114 manager_->SharedWorkerCreated(1, 1, instance1); 117 manager_->SharedWorkerCreated(1, 1, instance1);
115 CheckWorkerState(1, 1, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); 118 CheckWorkerState(1, 1, WorkerState::WORKER_UNINSPECTED);
116 manager_->WorkerContextStarted(1, 1); 119 manager_->WorkerContextStarted(1, 1);
117 CheckWorkerState(1, 1, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); 120 CheckWorkerState(1, 1, WorkerState::WORKER_UNINSPECTED);
118 manager_->WorkerDestroyed(1, 1); 121 manager_->WorkerDestroyed(1, 1);
119 CheckWorkerNotExist(1, 1); 122 CheckWorkerNotExist(1, 1);
120 123
121 // Created -> GetDevToolsAgentHost -> Started -> Destroyed 124 // Created -> GetDevToolsAgentHost -> Started -> Destroyed
122 CheckWorkerNotExist(1, 2); 125 CheckWorkerNotExist(1, 2);
123 manager_->SharedWorkerCreated(1, 2, instance1); 126 manager_->SharedWorkerCreated(1, 2, instance1);
124 CheckWorkerState(1, 2, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); 127 CheckWorkerState(1, 2, WorkerState::WORKER_UNINSPECTED);
125 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 2); 128 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 2);
126 EXPECT_TRUE(agent_host.get()); 129 EXPECT_TRUE(agent_host.get());
127 CheckWorkerState(1, 2, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); 130 CheckWorkerState(1, 2, WorkerState::WORKER_UNINSPECTED);
128 EXPECT_EQ(agent_host.get(), manager_->GetDevToolsAgentHostForWorker(1, 2)); 131 EXPECT_EQ(agent_host.get(), manager_->GetDevToolsAgentHostForWorker(1, 2));
129 manager_->WorkerContextStarted(1, 2); 132 manager_->WorkerContextStarted(1, 2);
130 CheckWorkerState(1, 2, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); 133 CheckWorkerState(1, 2, WorkerState::WORKER_UNINSPECTED);
131 manager_->WorkerDestroyed(1, 2); 134 manager_->WorkerDestroyed(1, 2);
132 CheckWorkerState(1, 2, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); 135 CheckWorkerState(1, 2, WorkerState::WORKER_TERMINATED);
133 agent_host = NULL; 136 agent_host = NULL;
134 CheckWorkerNotExist(1, 2); 137 CheckWorkerNotExist(1, 2);
135 138
136 // Created -> Started -> GetDevToolsAgentHost -> Destroyed 139 // Created -> Started -> GetDevToolsAgentHost -> Destroyed
137 CheckWorkerNotExist(1, 3); 140 CheckWorkerNotExist(1, 3);
138 manager_->SharedWorkerCreated(1, 3, instance1); 141 manager_->SharedWorkerCreated(1, 3, instance1);
139 CheckWorkerState(1, 3, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); 142 CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED);
140 manager_->WorkerContextStarted(1, 3); 143 manager_->WorkerContextStarted(1, 3);
141 CheckWorkerState(1, 3, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); 144 CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED);
142 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 3); 145 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 3);
143 EXPECT_TRUE(agent_host.get()); 146 EXPECT_TRUE(agent_host.get());
144 CheckWorkerState(1, 3, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); 147 CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED);
145 manager_->WorkerDestroyed(1, 3); 148 manager_->WorkerDestroyed(1, 3);
146 CheckWorkerState(1, 3, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); 149 CheckWorkerState(1, 3, WorkerState::WORKER_TERMINATED);
147 agent_host = NULL; 150 agent_host = NULL;
148 CheckWorkerNotExist(1, 3); 151 CheckWorkerNotExist(1, 3);
149 152
150 // Created -> Destroyed 153 // Created -> Destroyed
151 CheckWorkerNotExist(1, 4); 154 CheckWorkerNotExist(1, 4);
152 manager_->SharedWorkerCreated(1, 4, instance1); 155 manager_->SharedWorkerCreated(1, 4, instance1);
153 CheckWorkerState(1, 4, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); 156 CheckWorkerState(1, 4, WorkerState::WORKER_UNINSPECTED);
154 manager_->WorkerDestroyed(1, 4); 157 manager_->WorkerDestroyed(1, 4);
155 CheckWorkerNotExist(1, 4); 158 CheckWorkerNotExist(1, 4);
156 159
157 // Created -> GetDevToolsAgentHost -> Destroyed 160 // Created -> GetDevToolsAgentHost -> Destroyed
158 CheckWorkerNotExist(1, 5); 161 CheckWorkerNotExist(1, 5);
159 manager_->SharedWorkerCreated(1, 5, instance1); 162 manager_->SharedWorkerCreated(1, 5, instance1);
160 CheckWorkerState(1, 5, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); 163 CheckWorkerState(1, 5, WorkerState::WORKER_UNINSPECTED);
161 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 5); 164 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 5);
162 EXPECT_TRUE(agent_host.get()); 165 EXPECT_TRUE(agent_host.get());
163 CheckWorkerState(1, 5, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); 166 CheckWorkerState(1, 5, WorkerState::WORKER_UNINSPECTED);
164 manager_->WorkerDestroyed(1, 5); 167 manager_->WorkerDestroyed(1, 5);
165 CheckWorkerState(1, 5, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); 168 CheckWorkerState(1, 5, WorkerState::WORKER_TERMINATED);
166 agent_host = NULL; 169 agent_host = NULL;
167 CheckWorkerNotExist(1, 5); 170 CheckWorkerNotExist(1, 5);
168 171
169 // Created -> GetDevToolsAgentHost -> Free agent_host -> Destroyed 172 // Created -> GetDevToolsAgentHost -> Free agent_host -> Destroyed
170 CheckWorkerNotExist(1, 6); 173 CheckWorkerNotExist(1, 6);
171 manager_->SharedWorkerCreated(1, 6, instance1); 174 manager_->SharedWorkerCreated(1, 6, instance1);
172 CheckWorkerState(1, 6, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); 175 CheckWorkerState(1, 6, WorkerState::WORKER_UNINSPECTED);
173 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 6); 176 agent_host = manager_->GetDevToolsAgentHostForWorker(1, 6);
174 EXPECT_TRUE(agent_host.get()); 177 EXPECT_TRUE(agent_host.get());
175 CheckWorkerState(1, 6, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); 178 CheckWorkerState(1, 6, WorkerState::WORKER_UNINSPECTED);
176 agent_host = NULL; 179 agent_host = NULL;
177 manager_->WorkerDestroyed(1, 6); 180 manager_->WorkerDestroyed(1, 6);
178 CheckWorkerNotExist(1, 6); 181 CheckWorkerNotExist(1, 6);
179 } 182 }
180 183
181 TEST_F(EmbeddedWorkerDevToolsManagerTest, AttachTest) { 184 TEST_F(EmbeddedWorkerDevToolsManagerTest, AttachTest) {
182 scoped_refptr<DevToolsAgentHost> agent_host1; 185 scoped_refptr<DevToolsAgentHost> agent_host1;
183 scoped_refptr<DevToolsAgentHost> agent_host2; 186 scoped_refptr<DevToolsAgentHost> agent_host2;
184 187
185 SharedWorkerInstance instance1(GURL("http://example.com/w1.js"), 188 SharedWorkerInstance instance1(GURL("http://example.com/w1.js"),
186 base::string16(), 189 base::string16(),
187 base::string16(), 190 base::string16(),
188 blink::WebContentSecurityPolicyTypeReport, 191 blink::WebContentSecurityPolicyTypeReport,
189 browser_context_->GetResourceContext(), 192 browser_context_->GetResourceContext(),
190 partition_id_); 193 partition_id_);
191 SharedWorkerInstance instance2(GURL("http://example.com/w2.js"), 194 SharedWorkerInstance instance2(GURL("http://example.com/w2.js"),
192 base::string16(), 195 base::string16(),
193 base::string16(), 196 base::string16(),
194 blink::WebContentSecurityPolicyTypeReport, 197 blink::WebContentSecurityPolicyTypeReport,
195 browser_context_->GetResourceContext(), 198 browser_context_->GetResourceContext(),
196 partition_id_); 199 partition_id_);
197 200
198 // Created -> GetDevToolsAgentHost -> Register -> Started -> Destroyed 201 // Created -> GetDevToolsAgentHost -> Register -> Started -> Destroyed
199 scoped_ptr<TestDevToolsClientHost> client_host1(new TestDevToolsClientHost()); 202 scoped_ptr<TestDevToolsClientHost> client_host1(new TestDevToolsClientHost());
200 CheckWorkerNotExist(2, 1); 203 CheckWorkerNotExist(2, 1);
201 manager_->SharedWorkerCreated(2, 1, instance1); 204 manager_->SharedWorkerCreated(2, 1, instance1);
202 CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); 205 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED);
203 agent_host1 = manager_->GetDevToolsAgentHostForWorker(2, 1); 206 agent_host1 = manager_->GetDevToolsAgentHostForWorker(2, 1);
204 EXPECT_TRUE(agent_host1.get()); 207 EXPECT_TRUE(agent_host1.get());
205 CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); 208 CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED);
206 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); 209 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1));
207 RegisterDevToolsClientHostFor(agent_host1.get(), client_host1.get()); 210 RegisterDevToolsClientHostFor(agent_host1.get(), client_host1.get());
208 CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); 211 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED);
209 manager_->WorkerContextStarted(2, 1); 212 manager_->WorkerContextStarted(2, 1);
210 CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); 213 CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED);
211 manager_->WorkerDestroyed(2, 1); 214 manager_->WorkerDestroyed(2, 1);
212 CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); 215 CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED);
213 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); 216 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1));
214 217
215 // Created -> Started -> GetDevToolsAgentHost -> Register -> Destroyed 218 // Created -> Started -> GetDevToolsAgentHost -> Register -> Destroyed
216 scoped_ptr<TestDevToolsClientHost> client_host2(new TestDevToolsClientHost()); 219 scoped_ptr<TestDevToolsClientHost> client_host2(new TestDevToolsClientHost());
217 manager_->SharedWorkerCreated(2, 2, instance2); 220 manager_->SharedWorkerCreated(2, 2, instance2);
218 CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); 221 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED);
219 manager_->WorkerContextStarted(2, 2); 222 manager_->WorkerContextStarted(2, 2);
220 CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); 223 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED);
221 agent_host2 = manager_->GetDevToolsAgentHostForWorker(2, 2); 224 agent_host2 = manager_->GetDevToolsAgentHostForWorker(2, 2);
222 EXPECT_TRUE(agent_host2.get()); 225 EXPECT_TRUE(agent_host2.get());
223 EXPECT_NE(agent_host1.get(), agent_host2.get()); 226 EXPECT_NE(agent_host1.get(), agent_host2.get());
224 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2)); 227 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2));
225 CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); 228 CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED);
226 RegisterDevToolsClientHostFor(agent_host2.get(), client_host2.get()); 229 RegisterDevToolsClientHostFor(agent_host2.get(), client_host2.get());
227 CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); 230 CheckWorkerState(2, 2, WorkerState::WORKER_INSPECTED);
228 manager_->WorkerDestroyed(2, 2); 231 manager_->WorkerDestroyed(2, 2);
229 CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); 232 CheckWorkerState(2, 2, WorkerState::WORKER_TERMINATED);
230 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2)); 233 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2));
231 234
232 // Re-created -> Started -> ClientHostClosing -> Destroyed 235 // Re-created -> Started -> ClientHostClosing -> Destroyed
233 CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); 236 CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED);
234 manager_->SharedWorkerCreated(2, 3, instance1); 237 manager_->SharedWorkerCreated(2, 3, instance1);
235 CheckWorkerNotExist(2, 1); 238 CheckWorkerNotExist(2, 1);
236 CheckWorkerState( 239 CheckWorkerState(2, 3, WorkerState::WORKER_PAUSED_FOR_REATTACH);
237 2, 3, EmbeddedWorkerDevToolsManager::WORKER_PAUSED_FOR_REATTACH);
238 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 3)); 240 EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 3));
239 manager_->WorkerContextStarted(2, 3); 241 manager_->WorkerContextStarted(2, 3);
240 CheckWorkerState(2, 3, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); 242 CheckWorkerState(2, 3, WorkerState::WORKER_INSPECTED);
241 ClientHostClosing(client_host1.get()); 243 ClientHostClosing(client_host1.get());
242 manager_->WorkerDestroyed(2, 3); 244 manager_->WorkerDestroyed(2, 3);
243 CheckWorkerState(2, 3, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); 245 CheckWorkerState(2, 3, WorkerState::WORKER_TERMINATED);
244 agent_host1 = NULL; 246 agent_host1 = NULL;
245 CheckWorkerNotExist(2, 3); 247 CheckWorkerNotExist(2, 3);
246 248
247 // Re-created -> Destroyed 249 // Re-created -> Destroyed
248 CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); 250 CheckWorkerState(2, 2, WorkerState::WORKER_TERMINATED);
249 manager_->SharedWorkerCreated(2, 4, instance2); 251 manager_->SharedWorkerCreated(2, 4, instance2);
250 CheckWorkerNotExist(2, 2); 252 CheckWorkerNotExist(2, 2);
251 CheckWorkerState( 253 CheckWorkerState(2, 4, WorkerState::WORKER_PAUSED_FOR_REATTACH);
252 2, 4, EmbeddedWorkerDevToolsManager::WORKER_PAUSED_FOR_REATTACH);
253 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 4)); 254 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 4));
254 manager_->WorkerDestroyed(2, 4); 255 manager_->WorkerDestroyed(2, 4);
255 CheckWorkerNotExist(2, 4); 256 CheckWorkerNotExist(2, 2);
256 CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); 257 CheckWorkerState(2, 4, WorkerState::WORKER_TERMINATED);
257 258
258 // Re-created -> ClientHostClosing -> Destroyed 259 // Re-created -> ClientHostClosing -> Destroyed
259 manager_->SharedWorkerCreated(2, 5, instance2); 260 manager_->SharedWorkerCreated(2, 5, instance2);
260 CheckWorkerNotExist(2, 2); 261 CheckWorkerNotExist(2, 2);
261 CheckWorkerState( 262 CheckWorkerState(2, 5, WorkerState::WORKER_PAUSED_FOR_REATTACH);
262 2, 5, EmbeddedWorkerDevToolsManager::WORKER_PAUSED_FOR_REATTACH);
263 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 5)); 263 EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 5));
264 ClientHostClosing(client_host2.get()); 264 ClientHostClosing(client_host2.get());
265 CheckWorkerCount(1); 265 CheckWorkerCount(1);
266 agent_host2 = NULL; 266 agent_host2 = NULL;
267 CheckWorkerCount(1); 267 CheckWorkerCount(1);
268 manager_->WorkerDestroyed(2, 5); 268 manager_->WorkerDestroyed(2, 5);
269 CheckWorkerCount(0); 269 CheckWorkerCount(0);
270 } 270 }
271 271
272 TEST_F(EmbeddedWorkerDevToolsManagerTest, ReattachTest) {
273 SharedWorkerInstance instance(GURL("http://example.com/w3.js"),
274 base::string16(),
275 base::string16(),
276 blink::WebContentSecurityPolicyTypeReport,
277 browser_context_->GetResourceContext(),
278 partition_id_);
279 scoped_ptr<TestDevToolsClientHost> client_host(new TestDevToolsClientHost());
280 // Created -> GetDevToolsAgentHost -> Register -> Destroyed
281 manager_->SharedWorkerCreated(3, 1, instance);
282 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED);
283 scoped_refptr<DevToolsAgentHost> agent_host(
284 manager_->GetDevToolsAgentHostForWorker(3, 1));
285 EXPECT_TRUE(agent_host.get());
286 CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED);
287 RegisterDevToolsClientHostFor(agent_host.get(), client_host.get());
288 CheckWorkerState(3, 1, WorkerState::WORKER_INSPECTED);
289 manager_->WorkerDestroyed(3, 1);
290 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED);
291 // ClientHostClosing -> Re-created -> release agent_host -> Destroyed
292 ClientHostClosing(client_host.get());
293 CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED);
294 manager_->SharedWorkerCreated(3, 2, instance);
295 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED);
296 agent_host = NULL;
297 CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED);
298 manager_->WorkerDestroyed(3, 2);
299 CheckWorkerNotExist(3, 2);
300 CheckWorkerCount(0);
301 }
302
272 } // namespace content 303 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/devtools/embedded_worker_devtools_manager.cc ('k') | content/content_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698