| 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 <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 ~MockMessagePortMessageFilter() override {} | 54 ~MockMessagePortMessageFilter() override {} |
| 55 base::AtomicSequenceNumber next_routing_id_; | 55 base::AtomicSequenceNumber next_routing_id_; |
| 56 ScopedVector<IPC::Message> message_queue_; | 56 ScopedVector<IPC::Message> message_queue_; |
| 57 }; | 57 }; |
| 58 | 58 |
| 59 } // namespace | 59 } // namespace |
| 60 | 60 |
| 61 class EmbeddedWorkerTestHelper::MockEmbeddedWorkerSetup | 61 class EmbeddedWorkerTestHelper::MockEmbeddedWorkerSetup |
| 62 : public mojom::EmbeddedWorkerSetup { | 62 : public mojom::EmbeddedWorkerSetup { |
| 63 public: | 63 public: |
| 64 explicit MockEmbeddedWorkerSetup( | |
| 65 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper) | |
| 66 : helper_(helper) {} | |
| 67 | |
| 68 static void Create(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, | 64 static void Create(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, |
| 69 mojom::EmbeddedWorkerSetupRequest request) { | 65 mojom::EmbeddedWorkerSetupRequest request) { |
| 70 mojo::MakeStrongBinding(base::MakeUnique<MockEmbeddedWorkerSetup>(helper), | 66 // TODO(shimazu): Remove this mock after EmbeddedWorkerSetup is removed. |
| 71 std::move(request)); | 67 NOTREACHED(); |
| 72 } | 68 } |
| 73 | 69 |
| 74 void AttachServiceWorkerEventDispatcher( | 70 void AttachServiceWorkerEventDispatcher( |
| 75 int32_t thread_id, | 71 int32_t thread_id, |
| 76 mojom::ServiceWorkerEventDispatcherRequest request) override { | 72 mojom::ServiceWorkerEventDispatcherRequest request) override { |
| 77 if (!helper_) | 73 NOTREACHED(); |
| 78 return; | |
| 79 helper_->OnSetupMojo(thread_id, std::move(request)); | |
| 80 } | 74 } |
| 81 | |
| 82 private: | |
| 83 base::WeakPtr<EmbeddedWorkerTestHelper> helper_; | |
| 84 }; | 75 }; |
| 85 | 76 |
| 86 EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient:: | 77 EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient:: |
| 87 MockEmbeddedWorkerInstanceClient( | 78 MockEmbeddedWorkerInstanceClient( |
| 88 base::WeakPtr<EmbeddedWorkerTestHelper> helper) | 79 base::WeakPtr<EmbeddedWorkerTestHelper> helper) |
| 89 : helper_(helper), binding_(this) {} | 80 : helper_(helper), binding_(this) {} |
| 90 | 81 |
| 91 EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient:: | 82 EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient:: |
| 92 ~MockEmbeddedWorkerInstanceClient() {} | 83 ~MockEmbeddedWorkerInstanceClient() {} |
| 93 | 84 |
| 94 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StartWorker( | 85 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StartWorker( |
| 95 const EmbeddedWorkerStartParams& params, | 86 const EmbeddedWorkerStartParams& params, |
| 96 mojom::ServiceWorkerEventDispatcherRequest dispatcher_request) { | 87 mojom::ServiceWorkerEventDispatcherRequest dispatcher_request) { |
| 97 if (!helper_) | 88 if (!helper_) |
| 98 return; | 89 return; |
| 99 | 90 |
| 100 embedded_worker_id_ = params.embedded_worker_id; | 91 embedded_worker_id_ = params.embedded_worker_id; |
| 101 | 92 |
| 102 EmbeddedWorkerInstance* worker = | 93 EmbeddedWorkerInstance* worker = |
| 103 helper_->registry()->GetWorker(params.embedded_worker_id); | 94 helper_->registry()->GetWorker(params.embedded_worker_id); |
| 104 ASSERT_TRUE(worker != NULL); | 95 ASSERT_TRUE(worker); |
| 105 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); | 96 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); |
| 106 | 97 |
| 107 base::ThreadTaskRunnerHandle::Get()->PostTask( | 98 helper_->OnStartWorkerStub(params, std::move(dispatcher_request)); |
| 108 FROM_HERE, | |
| 109 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, helper_->AsWeakPtr(), | |
| 110 params.embedded_worker_id, params.service_worker_version_id, | |
| 111 params.scope, params.script_url, params.pause_after_download)); | |
| 112 base::ThreadTaskRunnerHandle::Get()->PostTask( | |
| 113 FROM_HERE, | |
| 114 base::Bind(&EmbeddedWorkerTestHelper::OnSetupMojo, helper_->AsWeakPtr(), | |
| 115 worker->thread_id(), base::Passed(&dispatcher_request))); | |
| 116 } | 99 } |
| 117 | 100 |
| 118 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StopWorker( | 101 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StopWorker( |
| 119 const StopWorkerCallback& callback) { | 102 const StopWorkerCallback& callback) { |
| 120 if (!helper_) | 103 if (!helper_) |
| 121 return; | 104 return; |
| 122 | 105 |
| 123 ASSERT_TRUE(embedded_worker_id_); | 106 ASSERT_TRUE(embedded_worker_id_); |
| 124 EmbeddedWorkerInstance* worker = | 107 EmbeddedWorkerInstance* worker = |
| 125 helper_->registry()->GetWorker(embedded_worker_id_.value()); | 108 helper_->registry()->GetWorker(embedded_worker_id_.value()); |
| 126 // |worker| is possible to be null when corresponding EmbeddedWorkerInstance | 109 // |worker| is possible to be null when corresponding EmbeddedWorkerInstance |
| 127 // is removed right after sending StopWorker. | 110 // is removed right after sending StopWorker. |
| 128 if (worker) | 111 if (worker) |
| 129 EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, worker->status()); | 112 EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, worker->status()); |
| 130 callback.Run(); | 113 helper_->OnStopWorkerStub(callback); |
| 131 } | 114 } |
| 132 | 115 |
| 133 // static | 116 // static |
| 134 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::Bind( | 117 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::Bind( |
| 135 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, | 118 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, |
| 136 mojom::EmbeddedWorkerInstanceClientRequest request) { | 119 mojom::EmbeddedWorkerInstanceClientRequest request) { |
| 137 std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>* clients = | 120 std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>* clients = |
| 138 helper->mock_instance_clients(); | 121 helper->mock_instance_clients(); |
| 139 size_t next_client_index = helper->mock_instance_clients_next_index_; | 122 size_t next_client_index = helper->mock_instance_clients_next_index_; |
| 140 | 123 |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 | 232 |
| 250 bool EmbeddedWorkerTestHelper::Send(IPC::Message* message) { | 233 bool EmbeddedWorkerTestHelper::Send(IPC::Message* message) { |
| 251 OnMessageReceived(*message); | 234 OnMessageReceived(*message); |
| 252 delete message; | 235 delete message; |
| 253 return true; | 236 return true; |
| 254 } | 237 } |
| 255 | 238 |
| 256 bool EmbeddedWorkerTestHelper::OnMessageReceived(const IPC::Message& message) { | 239 bool EmbeddedWorkerTestHelper::OnMessageReceived(const IPC::Message& message) { |
| 257 bool handled = true; | 240 bool handled = true; |
| 258 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message) | 241 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message) |
| 259 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StartWorker, OnStartWorkerStub) | |
| 260 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_ResumeAfterDownload, | 242 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_ResumeAfterDownload, |
| 261 OnResumeAfterDownloadStub) | 243 OnResumeAfterDownloadStub) |
| 262 IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StopWorker, OnStopWorkerStub) | |
| 263 IPC_MESSAGE_HANDLER(EmbeddedWorkerContextMsg_MessageToWorker, | 244 IPC_MESSAGE_HANDLER(EmbeddedWorkerContextMsg_MessageToWorker, |
| 264 OnMessageToWorkerStub) | 245 OnMessageToWorkerStub) |
| 265 IPC_MESSAGE_UNHANDLED(handled = false) | 246 IPC_MESSAGE_UNHANDLED(handled = false) |
| 266 IPC_END_MESSAGE_MAP() | 247 IPC_END_MESSAGE_MAP() |
| 267 | 248 |
| 268 // IPC::TestSink only records messages that are not handled by filters, | 249 // IPC::TestSink only records messages that are not handled by filters, |
| 269 // so we just forward all messages to the separate sink. | 250 // so we just forward all messages to the separate sink. |
| 270 sink_.OnMessageReceived(message); | 251 sink_.OnMessageReceived(message); |
| 271 | 252 |
| 272 return handled; | 253 return handled; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 291 net::HttpResponseInfo info; | 272 net::HttpResponseInfo info; |
| 292 const char data[] = | 273 const char data[] = |
| 293 "HTTP/1.1 200 OK\0" | 274 "HTTP/1.1 200 OK\0" |
| 294 "Content-Type: application/javascript\0" | 275 "Content-Type: application/javascript\0" |
| 295 "\0"; | 276 "\0"; |
| 296 info.headers = | 277 info.headers = |
| 297 new net::HttpResponseHeaders(std::string(data, arraysize(data))); | 278 new net::HttpResponseHeaders(std::string(data, arraysize(data))); |
| 298 return info; | 279 return info; |
| 299 } | 280 } |
| 300 | 281 |
| 301 void EmbeddedWorkerTestHelper::OnStartWorker(int embedded_worker_id, | 282 void EmbeddedWorkerTestHelper::OnStartWorker( |
| 302 int64_t service_worker_version_id, | 283 int embedded_worker_id, |
| 303 const GURL& scope, | 284 int64_t service_worker_version_id, |
| 304 const GURL& script_url, | 285 const GURL& scope, |
| 305 bool pause_after_download) { | 286 const GURL& script_url, |
| 287 bool pause_after_download, |
| 288 mojom::ServiceWorkerEventDispatcherRequest request) { |
| 289 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 290 ASSERT_TRUE(worker); |
| 291 MockServiceWorkerEventDispatcher::Create(AsWeakPtr(), worker->thread_id(), |
| 292 std::move(request)); |
| 293 |
| 306 embedded_worker_id_service_worker_version_id_map_[embedded_worker_id] = | 294 embedded_worker_id_service_worker_version_id_map_[embedded_worker_id] = |
| 307 service_worker_version_id; | 295 service_worker_version_id; |
| 308 SimulateWorkerReadyForInspection(embedded_worker_id); | 296 SimulateWorkerReadyForInspection(embedded_worker_id); |
| 309 SimulateWorkerScriptCached(embedded_worker_id); | 297 SimulateWorkerScriptCached(embedded_worker_id); |
| 310 SimulateWorkerScriptLoaded(embedded_worker_id); | 298 SimulateWorkerScriptLoaded(embedded_worker_id); |
| 311 if (!pause_after_download) | 299 if (!pause_after_download) |
| 312 OnResumeAfterDownload(embedded_worker_id); | 300 OnResumeAfterDownload(embedded_worker_id); |
| 313 } | 301 } |
| 314 | 302 |
| 315 void EmbeddedWorkerTestHelper::OnResumeAfterDownload(int embedded_worker_id) { | 303 void EmbeddedWorkerTestHelper::OnResumeAfterDownload(int embedded_worker_id) { |
| 316 SimulateWorkerThreadStarted(GetNextThreadId(), embedded_worker_id); | 304 SimulateWorkerThreadStarted(GetNextThreadId(), embedded_worker_id); |
| 317 SimulateWorkerScriptEvaluated(embedded_worker_id, true /* success */); | 305 SimulateWorkerScriptEvaluated(embedded_worker_id, true /* success */); |
| 318 SimulateWorkerStarted(embedded_worker_id); | 306 SimulateWorkerStarted(embedded_worker_id); |
| 319 } | 307 } |
| 320 | 308 |
| 321 void EmbeddedWorkerTestHelper::OnStopWorker(int embedded_worker_id) { | 309 void EmbeddedWorkerTestHelper::OnStopWorker( |
| 310 const mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback& callback) { |
| 322 // By default just notify the sender that the worker is stopped. | 311 // By default just notify the sender that the worker is stopped. |
| 323 SimulateWorkerStopped(embedded_worker_id); | 312 callback.Run(); |
| 324 } | 313 } |
| 325 | 314 |
| 326 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id, | 315 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id, |
| 327 int embedded_worker_id, | 316 int embedded_worker_id, |
| 328 const IPC::Message& message) { | 317 const IPC::Message& message) { |
| 329 bool handled = true; | 318 bool handled = true; |
| 330 current_embedded_worker_id_ = embedded_worker_id; | 319 current_embedded_worker_id_ = embedded_worker_id; |
| 331 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message) | 320 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message) |
| 332 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ActivateEvent, OnActivateEventStub) | 321 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ActivateEvent, OnActivateEventStub) |
| 333 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEventStub) | 322 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEventStub) |
| 334 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_PushEvent, OnPushEventStub) | 323 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_PushEvent, OnPushEventStub) |
| 335 IPC_MESSAGE_UNHANDLED(handled = false) | 324 IPC_MESSAGE_UNHANDLED(handled = false) |
| 336 IPC_END_MESSAGE_MAP() | 325 IPC_END_MESSAGE_MAP() |
| 337 // Record all messages directed to inner script context. | 326 // Record all messages directed to inner script context. |
| 338 inner_sink_.OnMessageReceived(message); | 327 inner_sink_.OnMessageReceived(message); |
| 339 return handled; | 328 return handled; |
| 340 } | 329 } |
| 341 | 330 |
| 342 void EmbeddedWorkerTestHelper::OnSetupMojo( | |
| 343 int thread_id, | |
| 344 mojom::ServiceWorkerEventDispatcherRequest dispatcher_request) { | |
| 345 MockServiceWorkerEventDispatcher::Create(AsWeakPtr(), thread_id, | |
| 346 std::move(dispatcher_request)); | |
| 347 } | |
| 348 | |
| 349 void EmbeddedWorkerTestHelper::OnActivateEvent(int embedded_worker_id, | 331 void EmbeddedWorkerTestHelper::OnActivateEvent(int embedded_worker_id, |
| 350 int request_id) { | 332 int request_id) { |
| 351 SimulateSend(new ServiceWorkerHostMsg_ActivateEventFinished( | 333 SimulateSend(new ServiceWorkerHostMsg_ActivateEventFinished( |
| 352 embedded_worker_id, request_id, | 334 embedded_worker_id, request_id, |
| 353 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); | 335 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); |
| 354 } | 336 } |
| 355 | 337 |
| 356 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent( | 338 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent( |
| 357 mojom::ExtendableMessageEventPtr event, | 339 mojom::ExtendableMessageEventPtr event, |
| 358 const mojom::ServiceWorkerEventDispatcher:: | 340 const mojom::ServiceWorkerEventDispatcher:: |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 396 int request_id, | 378 int request_id, |
| 397 const PushEventPayload& payload) { | 379 const PushEventPayload& payload) { |
| 398 SimulateSend(new ServiceWorkerHostMsg_PushEventFinished( | 380 SimulateSend(new ServiceWorkerHostMsg_PushEventFinished( |
| 399 embedded_worker_id, request_id, | 381 embedded_worker_id, request_id, |
| 400 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); | 382 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); |
| 401 } | 383 } |
| 402 | 384 |
| 403 void EmbeddedWorkerTestHelper::SimulateWorkerReadyForInspection( | 385 void EmbeddedWorkerTestHelper::SimulateWorkerReadyForInspection( |
| 404 int embedded_worker_id) { | 386 int embedded_worker_id) { |
| 405 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 387 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 406 ASSERT_TRUE(worker != NULL); | 388 ASSERT_TRUE(worker); |
| 407 registry()->OnWorkerReadyForInspection(worker->process_id(), | 389 registry()->OnWorkerReadyForInspection(worker->process_id(), |
| 408 embedded_worker_id); | 390 embedded_worker_id); |
| 409 } | 391 } |
| 410 | 392 |
| 411 void EmbeddedWorkerTestHelper::SimulateWorkerScriptCached( | 393 void EmbeddedWorkerTestHelper::SimulateWorkerScriptCached( |
| 412 int embedded_worker_id) { | 394 int embedded_worker_id) { |
| 413 int64_t version_id = | 395 int64_t version_id = |
| 414 embedded_worker_id_service_worker_version_id_map_[embedded_worker_id]; | 396 embedded_worker_id_service_worker_version_id_map_[embedded_worker_id]; |
| 415 ServiceWorkerVersion* version = context()->GetLiveVersion(version_id); | 397 ServiceWorkerVersion* version = context()->GetLiveVersion(version_id); |
| 416 if (!version || version->script_cache_map()->size()) | 398 if (!version || version->script_cache_map()->size()) |
| 417 return; | 399 return; |
| 418 std::vector<ServiceWorkerDatabase::ResourceRecord> records; | 400 std::vector<ServiceWorkerDatabase::ResourceRecord> records; |
| 419 // Add a dummy ResourceRecord for the main script to the script cache map of | 401 // Add a dummy ResourceRecord for the main script to the script cache map of |
| 420 // the ServiceWorkerVersion. We use embedded_worker_id for resource_id to | 402 // the ServiceWorkerVersion. We use embedded_worker_id for resource_id to |
| 421 // avoid ID collision. | 403 // avoid ID collision. |
| 422 records.push_back(ServiceWorkerDatabase::ResourceRecord( | 404 records.push_back(ServiceWorkerDatabase::ResourceRecord( |
| 423 embedded_worker_id, version->script_url(), 100)); | 405 embedded_worker_id, version->script_url(), 100)); |
| 424 version->script_cache_map()->SetResources(records); | 406 version->script_cache_map()->SetResources(records); |
| 425 version->SetMainScriptHttpResponseInfo(CreateHttpResponseInfo()); | 407 version->SetMainScriptHttpResponseInfo(CreateHttpResponseInfo()); |
| 426 } | 408 } |
| 427 | 409 |
| 428 void EmbeddedWorkerTestHelper::SimulateWorkerScriptLoaded( | 410 void EmbeddedWorkerTestHelper::SimulateWorkerScriptLoaded( |
| 429 int embedded_worker_id) { | 411 int embedded_worker_id) { |
| 430 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 412 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 431 ASSERT_TRUE(worker != NULL); | 413 ASSERT_TRUE(worker); |
| 432 registry()->OnWorkerScriptLoaded(worker->process_id(), embedded_worker_id); | 414 registry()->OnWorkerScriptLoaded(worker->process_id(), embedded_worker_id); |
| 433 } | 415 } |
| 434 | 416 |
| 435 void EmbeddedWorkerTestHelper::SimulateWorkerThreadStarted( | 417 void EmbeddedWorkerTestHelper::SimulateWorkerThreadStarted( |
| 436 int thread_id, | 418 int thread_id, |
| 437 int embedded_worker_id) { | 419 int embedded_worker_id) { |
| 438 thread_id_embedded_worker_id_map_[thread_id] = embedded_worker_id; | 420 thread_id_embedded_worker_id_map_[thread_id] = embedded_worker_id; |
| 439 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 421 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 440 ASSERT_TRUE(worker != NULL); | 422 ASSERT_TRUE(worker); |
| 441 registry()->OnWorkerThreadStarted(worker->process_id(), thread_id, | 423 registry()->OnWorkerThreadStarted(worker->process_id(), thread_id, |
| 442 embedded_worker_id); | 424 embedded_worker_id); |
| 443 } | 425 } |
| 444 | 426 |
| 445 void EmbeddedWorkerTestHelper::SimulateWorkerScriptEvaluated( | 427 void EmbeddedWorkerTestHelper::SimulateWorkerScriptEvaluated( |
| 446 int embedded_worker_id, | 428 int embedded_worker_id, |
| 447 bool success) { | 429 bool success) { |
| 448 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 430 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 449 ASSERT_TRUE(worker != NULL); | 431 ASSERT_TRUE(worker); |
| 450 registry()->OnWorkerScriptEvaluated(worker->process_id(), embedded_worker_id, | 432 registry()->OnWorkerScriptEvaluated(worker->process_id(), embedded_worker_id, |
| 451 success); | 433 success); |
| 452 } | 434 } |
| 453 | 435 |
| 454 void EmbeddedWorkerTestHelper::SimulateWorkerStarted(int embedded_worker_id) { | 436 void EmbeddedWorkerTestHelper::SimulateWorkerStarted(int embedded_worker_id) { |
| 455 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 437 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 456 ASSERT_TRUE(worker != NULL); | 438 ASSERT_TRUE(worker); |
| 457 registry()->OnWorkerStarted(worker->process_id(), embedded_worker_id); | 439 registry()->OnWorkerStarted(worker->process_id(), embedded_worker_id); |
| 458 } | 440 } |
| 459 | 441 |
| 460 void EmbeddedWorkerTestHelper::SimulateWorkerStopped(int embedded_worker_id) { | 442 void EmbeddedWorkerTestHelper::SimulateWorkerStopped(int embedded_worker_id) { |
| 461 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 443 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 462 if (worker != NULL) | 444 if (worker) |
| 463 registry()->OnWorkerStopped(worker->process_id(), embedded_worker_id); | 445 registry()->OnWorkerStopped(worker->process_id(), embedded_worker_id); |
| 464 } | 446 } |
| 465 | 447 |
| 466 void EmbeddedWorkerTestHelper::SimulateSend(IPC::Message* message) { | 448 void EmbeddedWorkerTestHelper::SimulateSend(IPC::Message* message) { |
| 467 registry()->OnMessageReceived(*message, mock_render_process_id_); | 449 registry()->OnMessageReceived(*message, mock_render_process_id_); |
| 468 delete message; | 450 delete message; |
| 469 } | 451 } |
| 470 | 452 |
| 471 void EmbeddedWorkerTestHelper::OnStartWorkerStub( | 453 void EmbeddedWorkerTestHelper::OnStartWorkerStub( |
| 472 const EmbeddedWorkerStartParams& params) { | 454 const EmbeddedWorkerStartParams& params, |
| 455 mojom::ServiceWorkerEventDispatcherRequest request) { |
| 473 EmbeddedWorkerInstance* worker = | 456 EmbeddedWorkerInstance* worker = |
| 474 registry()->GetWorker(params.embedded_worker_id); | 457 registry()->GetWorker(params.embedded_worker_id); |
| 475 ASSERT_TRUE(worker != NULL); | 458 ASSERT_TRUE(worker); |
| 476 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); | 459 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); |
| 477 base::ThreadTaskRunnerHandle::Get()->PostTask( | 460 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 478 FROM_HERE, | 461 FROM_HERE, |
| 479 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, AsWeakPtr(), | 462 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, AsWeakPtr(), |
| 480 params.embedded_worker_id, params.service_worker_version_id, | 463 params.embedded_worker_id, params.service_worker_version_id, |
| 481 params.scope, params.script_url, params.pause_after_download)); | 464 params.scope, params.script_url, params.pause_after_download, |
| 465 base::Passed(&request))); |
| 482 } | 466 } |
| 483 | 467 |
| 484 void EmbeddedWorkerTestHelper::OnResumeAfterDownloadStub( | 468 void EmbeddedWorkerTestHelper::OnResumeAfterDownloadStub( |
| 485 int embedded_worker_id) { | 469 int embedded_worker_id) { |
| 486 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 470 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 487 ASSERT_TRUE(worker); | 471 ASSERT_TRUE(worker); |
| 488 base::ThreadTaskRunnerHandle::Get()->PostTask( | 472 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 489 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnResumeAfterDownload, | 473 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnResumeAfterDownload, |
| 490 AsWeakPtr(), embedded_worker_id)); | 474 AsWeakPtr(), embedded_worker_id)); |
| 491 } | 475 } |
| 492 | 476 |
| 493 void EmbeddedWorkerTestHelper::OnStopWorkerStub(int embedded_worker_id) { | 477 void EmbeddedWorkerTestHelper::OnStopWorkerStub( |
| 494 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 478 const mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback& callback) { |
| 495 ASSERT_TRUE(worker != NULL); | |
| 496 base::ThreadTaskRunnerHandle::Get()->PostTask( | 479 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 497 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnStopWorker, | 480 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnStopWorker, |
| 498 AsWeakPtr(), embedded_worker_id)); | 481 AsWeakPtr(), callback)); |
| 499 } | 482 } |
| 500 | 483 |
| 501 void EmbeddedWorkerTestHelper::OnMessageToWorkerStub( | 484 void EmbeddedWorkerTestHelper::OnMessageToWorkerStub( |
| 502 int thread_id, | 485 int thread_id, |
| 503 int embedded_worker_id, | 486 int embedded_worker_id, |
| 504 const IPC::Message& message) { | 487 const IPC::Message& message) { |
| 505 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 488 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 506 ASSERT_TRUE(worker != NULL); | 489 ASSERT_TRUE(worker); |
| 507 EXPECT_EQ(worker->thread_id(), thread_id); | 490 EXPECT_EQ(worker->thread_id(), thread_id); |
| 508 base::ThreadTaskRunnerHandle::Get()->PostTask( | 491 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 509 FROM_HERE, | 492 FROM_HERE, |
| 510 base::Bind( | 493 base::Bind( |
| 511 base::IgnoreResult(&EmbeddedWorkerTestHelper::OnMessageToWorker), | 494 base::IgnoreResult(&EmbeddedWorkerTestHelper::OnMessageToWorker), |
| 512 AsWeakPtr(), thread_id, embedded_worker_id, message)); | 495 AsWeakPtr(), thread_id, embedded_worker_id, message)); |
| 513 } | 496 } |
| 514 | 497 |
| 515 void EmbeddedWorkerTestHelper::OnActivateEventStub(int request_id) { | 498 void EmbeddedWorkerTestHelper::OnActivateEventStub(int request_id) { |
| 516 base::ThreadTaskRunnerHandle::Get()->PostTask( | 499 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 585 service_manager::InterfaceProviderSpec()); | 568 service_manager::InterfaceProviderSpec()); |
| 586 | 569 |
| 587 std::unique_ptr<service_manager::InterfaceProvider> remote_interfaces( | 570 std::unique_ptr<service_manager::InterfaceProvider> remote_interfaces( |
| 588 new service_manager::InterfaceProvider); | 571 new service_manager::InterfaceProvider); |
| 589 remote_interfaces->Bind(std::move(interfaces)); | 572 remote_interfaces->Bind(std::move(interfaces)); |
| 590 rph->SetRemoteInterfaces(std::move(remote_interfaces)); | 573 rph->SetRemoteInterfaces(std::move(remote_interfaces)); |
| 591 return registry; | 574 return registry; |
| 592 } | 575 } |
| 593 | 576 |
| 594 } // namespace content | 577 } // namespace content |
| OLD | NEW |