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 |