| 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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 | 100 |
| 101 embedded_worker_id_ = params.embedded_worker_id; | 101 embedded_worker_id_ = params.embedded_worker_id; |
| 102 | 102 |
| 103 EmbeddedWorkerInstance* worker = | 103 EmbeddedWorkerInstance* worker = |
| 104 helper_->registry()->GetWorker(params.embedded_worker_id); | 104 helper_->registry()->GetWorker(params.embedded_worker_id); |
| 105 ASSERT_TRUE(worker != NULL); | 105 ASSERT_TRUE(worker != NULL); |
| 106 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); | 106 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); |
| 107 | 107 |
| 108 base::ThreadTaskRunnerHandle::Get()->PostTask( | 108 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 109 FROM_HERE, | 109 FROM_HERE, |
| 110 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, | 110 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, helper_->AsWeakPtr(), |
| 111 helper_->weak_factory_.GetWeakPtr(), params.embedded_worker_id, | 111 params.embedded_worker_id, params.service_worker_version_id, |
| 112 params.service_worker_version_id, params.scope, | 112 params.scope, params.script_url, params.pause_after_download)); |
| 113 params.script_url, params.pause_after_download)); | 113 } |
| 114 |
| 115 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StopWorker( |
| 116 const StopWorkerCallback& callback) { |
| 117 if (!helper_) |
| 118 return; |
| 119 |
| 120 ASSERT_TRUE(embedded_worker_id_); |
| 121 EmbeddedWorkerInstance* worker = |
| 122 helper_->registry()->GetWorker(embedded_worker_id_.value()); |
| 123 ASSERT_TRUE(worker != NULL); |
| 124 EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, worker->status()); |
| 125 |
| 126 callback.Run(); |
| 114 } | 127 } |
| 115 | 128 |
| 116 // static | 129 // static |
| 117 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::Bind( | 130 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::Bind( |
| 118 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, | 131 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, |
| 119 mojom::EmbeddedWorkerInstanceClientRequest request) { | 132 mojom::EmbeddedWorkerInstanceClientRequest request) { |
| 120 std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>* clients = | 133 std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>* clients = |
| 121 helper->mock_instance_clients(); | 134 helper->mock_instance_clients(); |
| 122 size_t next_client_index = helper->mock_instance_clients_next_index_; | 135 size_t next_client_index = helper->mock_instance_clients_next_index_; |
| 123 | 136 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 IPC_MESSAGE_UNHANDLED(handled = false) | 207 IPC_MESSAGE_UNHANDLED(handled = false) |
| 195 IPC_END_MESSAGE_MAP() | 208 IPC_END_MESSAGE_MAP() |
| 196 | 209 |
| 197 // IPC::TestSink only records messages that are not handled by filters, | 210 // IPC::TestSink only records messages that are not handled by filters, |
| 198 // so we just forward all messages to the separate sink. | 211 // so we just forward all messages to the separate sink. |
| 199 sink_.OnMessageReceived(message); | 212 sink_.OnMessageReceived(message); |
| 200 | 213 |
| 201 return handled; | 214 return handled; |
| 202 } | 215 } |
| 203 | 216 |
| 217 void EmbeddedWorkerTestHelper::RegisterMockInstanceClient( |
| 218 std::unique_ptr<MockEmbeddedWorkerInstanceClient> client) { |
| 219 mock_instance_clients_.push_back(std::move(client)); |
| 220 } |
| 221 |
| 204 ServiceWorkerContextCore* EmbeddedWorkerTestHelper::context() { | 222 ServiceWorkerContextCore* EmbeddedWorkerTestHelper::context() { |
| 205 return wrapper_->context(); | 223 return wrapper_->context(); |
| 206 } | 224 } |
| 207 | 225 |
| 208 void EmbeddedWorkerTestHelper::ShutdownContext() { | 226 void EmbeddedWorkerTestHelper::ShutdownContext() { |
| 209 wrapper_->Shutdown(); | 227 wrapper_->Shutdown(); |
| 210 wrapper_ = NULL; | 228 wrapper_ = NULL; |
| 211 } | 229 } |
| 212 | 230 |
| 213 void EmbeddedWorkerTestHelper::OnStartWorker(int embedded_worker_id, | 231 void EmbeddedWorkerTestHelper::OnStartWorker(int embedded_worker_id, |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 } | 395 } |
| 378 | 396 |
| 379 void EmbeddedWorkerTestHelper::OnStartWorkerStub( | 397 void EmbeddedWorkerTestHelper::OnStartWorkerStub( |
| 380 const EmbeddedWorkerStartParams& params) { | 398 const EmbeddedWorkerStartParams& params) { |
| 381 EmbeddedWorkerInstance* worker = | 399 EmbeddedWorkerInstance* worker = |
| 382 registry()->GetWorker(params.embedded_worker_id); | 400 registry()->GetWorker(params.embedded_worker_id); |
| 383 ASSERT_TRUE(worker != NULL); | 401 ASSERT_TRUE(worker != NULL); |
| 384 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); | 402 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); |
| 385 base::ThreadTaskRunnerHandle::Get()->PostTask( | 403 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 386 FROM_HERE, | 404 FROM_HERE, |
| 387 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, | 405 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, AsWeakPtr(), |
| 388 weak_factory_.GetWeakPtr(), params.embedded_worker_id, | 406 params.embedded_worker_id, params.service_worker_version_id, |
| 389 params.service_worker_version_id, params.scope, | 407 params.scope, params.script_url, params.pause_after_download)); |
| 390 params.script_url, params.pause_after_download)); | |
| 391 } | 408 } |
| 392 | 409 |
| 393 void EmbeddedWorkerTestHelper::OnResumeAfterDownloadStub( | 410 void EmbeddedWorkerTestHelper::OnResumeAfterDownloadStub( |
| 394 int embedded_worker_id) { | 411 int embedded_worker_id) { |
| 395 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 412 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 396 ASSERT_TRUE(worker); | 413 ASSERT_TRUE(worker); |
| 397 base::ThreadTaskRunnerHandle::Get()->PostTask( | 414 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 398 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnResumeAfterDownload, | 415 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnResumeAfterDownload, |
| 399 weak_factory_.GetWeakPtr(), embedded_worker_id)); | 416 AsWeakPtr(), embedded_worker_id)); |
| 400 } | 417 } |
| 401 | 418 |
| 402 void EmbeddedWorkerTestHelper::OnStopWorkerStub(int embedded_worker_id) { | 419 void EmbeddedWorkerTestHelper::OnStopWorkerStub(int embedded_worker_id) { |
| 403 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 420 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 404 ASSERT_TRUE(worker != NULL); | 421 ASSERT_TRUE(worker != NULL); |
| 405 base::ThreadTaskRunnerHandle::Get()->PostTask( | 422 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 406 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnStopWorker, | 423 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnStopWorker, |
| 407 weak_factory_.GetWeakPtr(), embedded_worker_id)); | 424 AsWeakPtr(), embedded_worker_id)); |
| 408 } | 425 } |
| 409 | 426 |
| 410 void EmbeddedWorkerTestHelper::OnMessageToWorkerStub( | 427 void EmbeddedWorkerTestHelper::OnMessageToWorkerStub( |
| 411 int thread_id, | 428 int thread_id, |
| 412 int embedded_worker_id, | 429 int embedded_worker_id, |
| 413 const IPC::Message& message) { | 430 const IPC::Message& message) { |
| 414 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 431 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 415 ASSERT_TRUE(worker != NULL); | 432 ASSERT_TRUE(worker != NULL); |
| 416 EXPECT_EQ(worker->thread_id(), thread_id); | 433 EXPECT_EQ(worker->thread_id(), thread_id); |
| 417 base::ThreadTaskRunnerHandle::Get()->PostTask( | 434 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 418 FROM_HERE, | 435 FROM_HERE, |
| 419 base::Bind( | 436 base::Bind( |
| 420 base::IgnoreResult(&EmbeddedWorkerTestHelper::OnMessageToWorker), | 437 base::IgnoreResult(&EmbeddedWorkerTestHelper::OnMessageToWorker), |
| 421 weak_factory_.GetWeakPtr(), thread_id, embedded_worker_id, message)); | 438 AsWeakPtr(), thread_id, embedded_worker_id, message)); |
| 422 } | 439 } |
| 423 | 440 |
| 424 void EmbeddedWorkerTestHelper::OnActivateEventStub(int request_id) { | 441 void EmbeddedWorkerTestHelper::OnActivateEventStub(int request_id) { |
| 425 base::ThreadTaskRunnerHandle::Get()->PostTask( | 442 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 426 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnActivateEvent, | 443 FROM_HERE, |
| 427 weak_factory_.GetWeakPtr(), | 444 base::Bind(&EmbeddedWorkerTestHelper::OnActivateEvent, AsWeakPtr(), |
| 428 current_embedded_worker_id_, request_id)); | 445 current_embedded_worker_id_, request_id)); |
| 429 } | 446 } |
| 430 | 447 |
| 431 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub( | 448 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub( |
| 432 int request_id, | 449 int request_id, |
| 433 const ServiceWorkerMsg_ExtendableMessageEvent_Params& params) { | 450 const ServiceWorkerMsg_ExtendableMessageEvent_Params& params) { |
| 434 base::ThreadTaskRunnerHandle::Get()->PostTask( | 451 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 435 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent, | 452 FROM_HERE, |
| 436 weak_factory_.GetWeakPtr(), | 453 base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent, |
| 437 current_embedded_worker_id_, request_id)); | 454 AsWeakPtr(), current_embedded_worker_id_, request_id)); |
| 438 } | 455 } |
| 439 | 456 |
| 440 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { | 457 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { |
| 441 base::ThreadTaskRunnerHandle::Get()->PostTask( | 458 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 442 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, | 459 FROM_HERE, |
| 443 weak_factory_.GetWeakPtr(), | 460 base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, AsWeakPtr(), |
| 444 current_embedded_worker_id_, request_id)); | 461 current_embedded_worker_id_, request_id)); |
| 445 } | 462 } |
| 446 | 463 |
| 447 void EmbeddedWorkerTestHelper::OnFetchEventStub( | 464 void EmbeddedWorkerTestHelper::OnFetchEventStub( |
| 448 int response_id, | 465 int response_id, |
| 449 int event_finish_id, | 466 int event_finish_id, |
| 450 const ServiceWorkerFetchRequest& request) { | 467 const ServiceWorkerFetchRequest& request) { |
| 451 base::ThreadTaskRunnerHandle::Get()->PostTask( | 468 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 452 FROM_HERE, | 469 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnFetchEvent, |
| 453 base::Bind(&EmbeddedWorkerTestHelper::OnFetchEvent, | 470 AsWeakPtr(), current_embedded_worker_id_, |
| 454 weak_factory_.GetWeakPtr(), current_embedded_worker_id_, | 471 response_id, event_finish_id, request)); |
| 455 response_id, event_finish_id, request)); | |
| 456 } | 472 } |
| 457 | 473 |
| 458 void EmbeddedWorkerTestHelper::OnPushEventStub( | 474 void EmbeddedWorkerTestHelper::OnPushEventStub( |
| 459 int request_id, | 475 int request_id, |
| 460 const PushEventPayload& payload) { | 476 const PushEventPayload& payload) { |
| 461 base::ThreadTaskRunnerHandle::Get()->PostTask( | 477 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 462 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnPushEvent, | 478 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnPushEvent, AsWeakPtr(), |
| 463 weak_factory_.GetWeakPtr(), | |
| 464 current_embedded_worker_id_, request_id, payload)); | 479 current_embedded_worker_id_, request_id, payload)); |
| 465 } | 480 } |
| 466 | 481 |
| 467 void EmbeddedWorkerTestHelper::OnSetupMojoStub( | 482 void EmbeddedWorkerTestHelper::OnSetupMojoStub( |
| 468 int thread_id, | 483 int thread_id, |
| 469 shell::mojom::InterfaceProviderRequest request, | 484 shell::mojom::InterfaceProviderRequest request, |
| 470 shell::mojom::InterfaceProviderPtr remote_interfaces) { | 485 shell::mojom::InterfaceProviderPtr remote_interfaces) { |
| 471 std::unique_ptr<shell::InterfaceRegistry> local( | 486 std::unique_ptr<shell::InterfaceRegistry> local( |
| 472 new shell::InterfaceRegistry); | 487 new shell::InterfaceRegistry); |
| 473 local->Bind(std::move(request)); | 488 local->Bind(std::move(request)); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 492 new MockMessagePortMessageFilter); | 507 new MockMessagePortMessageFilter); |
| 493 message_port_message_filters_.push_back(filter); | 508 message_port_message_filters_.push_back(filter); |
| 494 return filter.get(); | 509 return filter.get(); |
| 495 } | 510 } |
| 496 | 511 |
| 497 std::unique_ptr<shell::InterfaceRegistry> | 512 std::unique_ptr<shell::InterfaceRegistry> |
| 498 EmbeddedWorkerTestHelper::CreateInterfaceRegistry(MockRenderProcessHost* rph) { | 513 EmbeddedWorkerTestHelper::CreateInterfaceRegistry(MockRenderProcessHost* rph) { |
| 499 std::unique_ptr<shell::InterfaceRegistry> registry( | 514 std::unique_ptr<shell::InterfaceRegistry> registry( |
| 500 new shell::InterfaceRegistry); | 515 new shell::InterfaceRegistry); |
| 501 registry->AddInterface( | 516 registry->AddInterface( |
| 502 base::Bind(&MockEmbeddedWorkerSetup::Create, weak_factory_.GetWeakPtr())); | 517 base::Bind(&MockEmbeddedWorkerSetup::Create, AsWeakPtr())); |
| 503 registry->AddInterface(base::Bind(&MockEmbeddedWorkerInstanceClient::Bind, | 518 registry->AddInterface( |
| 504 weak_factory_.GetWeakPtr())); | 519 base::Bind(&MockEmbeddedWorkerInstanceClient::Bind, AsWeakPtr())); |
| 505 | 520 |
| 506 shell::mojom::InterfaceProviderPtr interfaces; | 521 shell::mojom::InterfaceProviderPtr interfaces; |
| 507 registry->Bind(mojo::GetProxy(&interfaces)); | 522 registry->Bind(mojo::GetProxy(&interfaces)); |
| 508 | 523 |
| 509 std::unique_ptr<shell::InterfaceProvider> remote_interfaces( | 524 std::unique_ptr<shell::InterfaceProvider> remote_interfaces( |
| 510 new shell::InterfaceProvider); | 525 new shell::InterfaceProvider); |
| 511 remote_interfaces->Bind(std::move(interfaces)); | 526 remote_interfaces->Bind(std::move(interfaces)); |
| 512 rph->SetRemoteInterfaces(std::move(remote_interfaces)); | 527 rph->SetRemoteInterfaces(std::move(remote_interfaces)); |
| 513 return registry; | 528 return registry; |
| 514 } | 529 } |
| 515 | 530 |
| 516 } // namespace content | 531 } // namespace content |
| OLD | NEW |