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/service_worker/embedded_worker_test_helper.h" | 5 #include "content/browser/service_worker/embedded_worker_test_helper.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "content/browser/service_worker/embedded_worker_instance.h" | 8 #include "content/browser/service_worker/embedded_worker_instance.h" |
9 #include "content/browser/service_worker/embedded_worker_registry.h" | 9 #include "content/browser/service_worker/embedded_worker_registry.h" |
10 #include "content/browser/service_worker/service_worker_context_core.h" | 10 #include "content/browser/service_worker/service_worker_context_core.h" |
11 #include "content/browser/service_worker/service_worker_context_wrapper.h" | 11 #include "content/browser/service_worker/service_worker_context_wrapper.h" |
12 #include "content/common/service_worker/embedded_worker_messages.h" | 12 #include "content/common/service_worker/embedded_worker_messages.h" |
13 #include "content/common/service_worker/service_worker_messages.h" | 13 #include "content/common/service_worker/service_worker_messages.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
15 | 15 |
16 namespace content { | 16 namespace content { |
17 | 17 |
18 EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper(int mock_render_process_id) | 18 EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper(int mock_render_process_id) |
19 : wrapper_(new ServiceWorkerContextWrapper(NULL)), | 19 : wrapper_(new ServiceWorkerContextWrapper(NULL)), |
20 next_thread_id_(0), | 20 next_thread_id_(0), |
21 mock_render_process_id_(mock_render_process_id), | |
21 weak_factory_(this) { | 22 weak_factory_(this) { |
22 wrapper_->InitInternal(base::FilePath(), | 23 wrapper_->InitInternal(base::FilePath(), |
23 base::MessageLoopProxy::current(), | 24 base::MessageLoopProxy::current(), |
24 base::MessageLoopProxy::current(), | 25 base::MessageLoopProxy::current(), |
25 NULL); | 26 NULL); |
26 wrapper_->process_manager()->SetProcessIdForTest(mock_render_process_id); | 27 wrapper_->process_manager()->SetProcessIdForTest(mock_render_process_id); |
27 registry()->AddChildProcessSender(mock_render_process_id, this); | 28 registry()->AddChildProcessSender(mock_render_process_id, this); |
28 } | 29 } |
29 | 30 |
30 EmbeddedWorkerTestHelper::~EmbeddedWorkerTestHelper() { | 31 EmbeddedWorkerTestHelper::~EmbeddedWorkerTestHelper() { |
(...skipping 15 matching lines...) Expand all Loading... | |
46 delete message; | 47 delete message; |
47 return true; | 48 return true; |
48 } | 49 } |
49 | 50 |
50 bool EmbeddedWorkerTestHelper::OnMessageReceived(const IPC::Message& message) { | 51 bool EmbeddedWorkerTestHelper::OnMessageReceived(const IPC::Message& message) { |
51 bool handled = true; | 52 bool handled = true; |
52 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message) | 53 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message) |
53 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StartWorker, OnStartWorkerStub) | 54 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StartWorker, OnStartWorkerStub) |
54 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StopWorker, OnStopWorkerStub) | 55 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StopWorker, OnStopWorkerStub) |
55 IPC_MESSAGE_HANDLER(EmbeddedWorkerContextMsg_MessageToWorker, | 56 IPC_MESSAGE_HANDLER(EmbeddedWorkerContextMsg_MessageToWorker, |
56 OnMessageToWorkerStub) | 57 OnMessageToWorkerStub); |
58 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_ResumeAfterDownload, | |
59 OnResumeAfterDownloadStub); | |
falken
2014/07/18 05:13:24
We should put the semicolon on all or none... grep
| |
57 IPC_MESSAGE_UNHANDLED(handled = false) | 60 IPC_MESSAGE_UNHANDLED(handled = false) |
58 IPC_END_MESSAGE_MAP() | 61 IPC_END_MESSAGE_MAP() |
59 | 62 |
60 // IPC::TestSink only records messages that are not handled by filters, | 63 // IPC::TestSink only records messages that are not handled by filters, |
61 // so we just forward all messages to the separate sink. | 64 // so we just forward all messages to the separate sink. |
62 sink_.OnMessageReceived(message); | 65 sink_.OnMessageReceived(message); |
63 | 66 |
64 return handled; | 67 return handled; |
65 } | 68 } |
66 | 69 |
67 ServiceWorkerContextCore* EmbeddedWorkerTestHelper::context() { | 70 ServiceWorkerContextCore* EmbeddedWorkerTestHelper::context() { |
68 return wrapper_->context(); | 71 return wrapper_->context(); |
69 } | 72 } |
70 | 73 |
71 void EmbeddedWorkerTestHelper::ShutdownContext() { | 74 void EmbeddedWorkerTestHelper::ShutdownContext() { |
72 wrapper_->Shutdown(); | 75 wrapper_->Shutdown(); |
73 wrapper_ = NULL; | 76 wrapper_ = NULL; |
74 } | 77 } |
75 | 78 |
76 void EmbeddedWorkerTestHelper::OnStartWorker( | 79 void EmbeddedWorkerTestHelper::OnStartWorker( |
77 int embedded_worker_id, | 80 int embedded_worker_id, |
78 int64 service_worker_version_id, | 81 int64 service_worker_version_id, |
79 const GURL& scope, | 82 const GURL& scope, |
80 const GURL& script_url) { | 83 const GURL& script_url, |
81 // By default just notify the sender that the worker is started. | 84 bool pause_after_download) { |
85 if (pause_after_download) { | |
86 SimulatePausedAfterDownload(embedded_worker_id); | |
87 return; | |
88 } | |
89 SimulateWorkerScriptLoaded(embedded_worker_id); | |
82 SimulateWorkerStarted(next_thread_id_++, embedded_worker_id); | 90 SimulateWorkerStarted(next_thread_id_++, embedded_worker_id); |
83 } | 91 } |
84 | 92 |
93 void EmbeddedWorkerTestHelper::OnResumeAfterDownload(int embedded_worker_id) { | |
94 SimulateWorkerScriptLoaded(embedded_worker_id); | |
95 SimulateWorkerStarted(next_thread_id_++, embedded_worker_id); | |
96 } | |
97 | |
85 void EmbeddedWorkerTestHelper::OnStopWorker(int embedded_worker_id) { | 98 void EmbeddedWorkerTestHelper::OnStopWorker(int embedded_worker_id) { |
86 // By default just notify the sender that the worker is stopped. | 99 // By default just notify the sender that the worker is stopped. |
87 SimulateWorkerStopped(embedded_worker_id); | 100 SimulateWorkerStopped(embedded_worker_id); |
88 } | 101 } |
89 | 102 |
90 bool EmbeddedWorkerTestHelper::OnMessageToWorker( | 103 bool EmbeddedWorkerTestHelper::OnMessageToWorker( |
91 int thread_id, | 104 int thread_id, |
92 int embedded_worker_id, | 105 int embedded_worker_id, |
93 const IPC::Message& message) { | 106 const IPC::Message& message) { |
94 bool handled = true; | 107 bool handled = true; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
128 SimulateSend( | 141 SimulateSend( |
129 new ServiceWorkerHostMsg_FetchEventFinished( | 142 new ServiceWorkerHostMsg_FetchEventFinished( |
130 embedded_worker_id, | 143 embedded_worker_id, |
131 request_id, | 144 request_id, |
132 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, | 145 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, |
133 ServiceWorkerResponse(200, "OK", | 146 ServiceWorkerResponse(200, "OK", |
134 std::map<std::string, std::string>(), | 147 std::map<std::string, std::string>(), |
135 std::string()))); | 148 std::string()))); |
136 } | 149 } |
137 | 150 |
151 void EmbeddedWorkerTestHelper::SimulatePausedAfterDownload( | |
152 int embedded_worker_id) { | |
153 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | |
154 ASSERT_TRUE(worker != NULL); | |
155 registry()->OnPausedAfterDownload(worker->process_id(), embedded_worker_id); | |
156 } | |
157 | |
158 void EmbeddedWorkerTestHelper::SimulateWorkerScriptLoaded( | |
159 int embedded_worker_id) { | |
160 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | |
161 ASSERT_TRUE(worker != NULL); | |
162 registry()->OnWorkerScriptLoaded(worker->process_id(), embedded_worker_id); | |
163 } | |
164 | |
138 void EmbeddedWorkerTestHelper::SimulateWorkerStarted( | 165 void EmbeddedWorkerTestHelper::SimulateWorkerStarted( |
139 int thread_id, int embedded_worker_id) { | 166 int thread_id, int embedded_worker_id) { |
140 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 167 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
141 ASSERT_TRUE(worker != NULL); | 168 ASSERT_TRUE(worker != NULL); |
142 registry()->OnWorkerStarted( | 169 registry()->OnWorkerStarted( |
143 worker->process_id(), | 170 worker->process_id(), |
144 thread_id, | 171 thread_id, |
145 embedded_worker_id); | 172 embedded_worker_id); |
146 } | 173 } |
147 | 174 |
(...skipping 12 matching lines...) Expand all Loading... | |
160 | 187 |
161 void EmbeddedWorkerTestHelper::OnStartWorkerStub( | 188 void EmbeddedWorkerTestHelper::OnStartWorkerStub( |
162 const EmbeddedWorkerMsg_StartWorker_Params& params) { | 189 const EmbeddedWorkerMsg_StartWorker_Params& params) { |
163 EmbeddedWorkerInstance* worker = | 190 EmbeddedWorkerInstance* worker = |
164 registry()->GetWorker(params.embedded_worker_id); | 191 registry()->GetWorker(params.embedded_worker_id); |
165 ASSERT_TRUE(worker != NULL); | 192 ASSERT_TRUE(worker != NULL); |
166 EXPECT_EQ(EmbeddedWorkerInstance::STARTING, worker->status()); | 193 EXPECT_EQ(EmbeddedWorkerInstance::STARTING, worker->status()); |
167 base::MessageLoopProxy::current()->PostTask( | 194 base::MessageLoopProxy::current()->PostTask( |
168 FROM_HERE, | 195 FROM_HERE, |
169 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, | 196 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, |
197 weak_factory_.GetWeakPtr(), | |
198 params.embedded_worker_id, | |
199 params.service_worker_version_id, | |
200 params.scope, | |
201 params.script_url, | |
202 params.pause_after_download)); | |
203 } | |
204 | |
205 void EmbeddedWorkerTestHelper::OnResumeAfterDownloadStub( | |
206 int embedded_worker_id) { | |
207 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | |
208 ASSERT_TRUE(worker != NULL); | |
209 base::MessageLoopProxy::current()->PostTask( | |
210 FROM_HERE, | |
211 base::Bind(&EmbeddedWorkerTestHelper::OnResumeAfterDownload, | |
170 weak_factory_.GetWeakPtr(), | 212 weak_factory_.GetWeakPtr(), |
171 params.embedded_worker_id, | 213 embedded_worker_id)); |
172 params.service_worker_version_id, | |
173 params.scope, | |
174 params.script_url)); | |
175 } | 214 } |
176 | 215 |
177 void EmbeddedWorkerTestHelper::OnStopWorkerStub(int embedded_worker_id) { | 216 void EmbeddedWorkerTestHelper::OnStopWorkerStub(int embedded_worker_id) { |
178 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 217 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
179 ASSERT_TRUE(worker != NULL); | 218 ASSERT_TRUE(worker != NULL); |
180 base::MessageLoopProxy::current()->PostTask( | 219 base::MessageLoopProxy::current()->PostTask( |
181 FROM_HERE, | 220 FROM_HERE, |
182 base::Bind(&EmbeddedWorkerTestHelper::OnStopWorker, | 221 base::Bind(&EmbeddedWorkerTestHelper::OnStopWorker, |
183 weak_factory_.GetWeakPtr(), | 222 weak_factory_.GetWeakPtr(), |
184 embedded_worker_id)); | 223 embedded_worker_id)); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
232 request_id, | 271 request_id, |
233 request)); | 272 request)); |
234 } | 273 } |
235 | 274 |
236 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() { | 275 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() { |
237 DCHECK(context()); | 276 DCHECK(context()); |
238 return context()->embedded_worker_registry(); | 277 return context()->embedded_worker_registry(); |
239 } | 278 } |
240 | 279 |
241 } // namespace content | 280 } // namespace content |
OLD | NEW |