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