Chromium Code Reviews| 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 |