| 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 |
| 11 #include "base/atomic_sequence_num.h" | 11 #include "base/atomic_sequence_num.h" |
| 12 #include "base/bind.h" | 12 #include "base/bind.h" |
| 13 #include "base/memory/scoped_vector.h" | 13 #include "base/memory/scoped_vector.h" |
| 14 #include "base/threading/thread_task_runner_handle.h" | 14 #include "base/threading/thread_task_runner_handle.h" |
| 15 #include "base/time/time.h" | 15 #include "base/time/time.h" |
| 16 #include "content/browser/message_port_message_filter.h" | 16 #include "content/browser/message_port_message_filter.h" |
| 17 #include "content/browser/service_worker/embedded_worker_instance.h" | 17 #include "content/browser/service_worker/embedded_worker_instance.h" |
| 18 #include "content/browser/service_worker/embedded_worker_registry.h" | 18 #include "content/browser/service_worker/embedded_worker_registry.h" |
| 19 #include "content/browser/service_worker/embedded_worker_status.h" | 19 #include "content/browser/service_worker/embedded_worker_status.h" |
| 20 #include "content/browser/service_worker/service_worker_context_core.h" | 20 #include "content/browser/service_worker/service_worker_context_core.h" |
| 21 #include "content/browser/service_worker/service_worker_context_wrapper.h" | 21 #include "content/browser/service_worker/service_worker_context_wrapper.h" |
| 22 #include "content/common/service_worker/embedded_worker_messages.h" | 22 #include "content/common/service_worker/embedded_worker_messages.h" |
| 23 #include "content/common/service_worker/embedded_worker_setup.mojom.h" | 23 #include "content/common/service_worker/embedded_worker_setup.mojom.h" |
| 24 #include "content/common/service_worker/embedded_worker_start_params.h" | 24 #include "content/common/service_worker/embedded_worker_start_params.h" |
| 25 #include "content/common/service_worker/fetch_event_dispatcher.mojom.h" | 25 #include "content/common/service_worker/fetch_event_dispatcher.mojom.h" |
| 26 #include "content/common/service_worker/service_worker_messages.h" | 26 #include "content/common/service_worker/service_worker_messages.h" |
| 27 #include "content/common/service_worker/service_worker_status_code.h" | |
| 28 #include "content/public/common/push_event_payload.h" | 27 #include "content/public/common/push_event_payload.h" |
| 29 #include "content/public/test/mock_render_process_host.h" | 28 #include "content/public/test/mock_render_process_host.h" |
| 30 #include "content/public/test/test_browser_context.h" | 29 #include "content/public/test/test_browser_context.h" |
| 31 #include "mojo/public/cpp/bindings/interface_request.h" | 30 #include "mojo/public/cpp/bindings/interface_request.h" |
| 32 #include "mojo/public/cpp/bindings/strong_binding.h" | 31 #include "mojo/public/cpp/bindings/strong_binding.h" |
| 33 #include "services/shell/public/cpp/interface_provider.h" | 32 #include "services/shell/public/cpp/interface_provider.h" |
| 34 #include "services/shell/public/cpp/interface_registry.h" | 33 #include "services/shell/public/cpp/interface_registry.h" |
| 35 #include "testing/gtest/include/gtest/gtest.h" | 34 #include "testing/gtest/include/gtest/gtest.h" |
| 36 | 35 |
| 37 namespace content { | 36 namespace content { |
| (...skipping 16 matching lines...) Expand all Loading... |
| 54 ~MockMessagePortMessageFilter() override {} | 53 ~MockMessagePortMessageFilter() override {} |
| 55 base::AtomicSequenceNumber next_routing_id_; | 54 base::AtomicSequenceNumber next_routing_id_; |
| 56 ScopedVector<IPC::Message> message_queue_; | 55 ScopedVector<IPC::Message> message_queue_; |
| 57 }; | 56 }; |
| 58 | 57 |
| 59 } // namespace | 58 } // namespace |
| 60 | 59 |
| 61 class EmbeddedWorkerTestHelper::MockEmbeddedWorkerSetup | 60 class EmbeddedWorkerTestHelper::MockEmbeddedWorkerSetup |
| 62 : public mojom::EmbeddedWorkerSetup { | 61 : public mojom::EmbeddedWorkerSetup { |
| 63 public: | 62 public: |
| 63 explicit MockEmbeddedWorkerSetup( |
| 64 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper) |
| 65 : helper_(helper) {} |
| 66 |
| 64 static void Create(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, | 67 static void Create(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, |
| 65 mojom::EmbeddedWorkerSetupRequest request) { | 68 mojom::EmbeddedWorkerSetupRequest request) { |
| 66 mojo::MakeStrongBinding(base::MakeUnique<MockEmbeddedWorkerSetup>(helper), | 69 mojo::MakeStrongBinding(base::MakeUnique<MockEmbeddedWorkerSetup>(helper), |
| 67 std::move(request)); | 70 std::move(request)); |
| 68 } | 71 } |
| 69 | 72 |
| 70 explicit MockEmbeddedWorkerSetup( | |
| 71 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper) | |
| 72 : helper_(helper) {} | |
| 73 | |
| 74 ~MockEmbeddedWorkerSetup() override {} | |
| 75 | |
| 76 void ExchangeInterfaceProviders( | 73 void ExchangeInterfaceProviders( |
| 77 int32_t thread_id, | 74 int32_t thread_id, |
| 78 shell::mojom::InterfaceProviderRequest request, | 75 shell::mojom::InterfaceProviderRequest request, |
| 79 shell::mojom::InterfaceProviderPtr remote_interfaces) override { | 76 shell::mojom::InterfaceProviderPtr remote_interfaces) override { |
| 80 if (!helper_) | 77 if (!helper_) |
| 81 return; | 78 return; |
| 82 helper_->OnSetupMojoStub(thread_id, std::move(request), | 79 helper_->OnSetupMojoStub(thread_id, std::move(request), |
| 83 std::move(remote_interfaces)); | 80 std::move(remote_interfaces)); |
| 84 } | 81 } |
| 85 | 82 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 102 | 99 |
| 103 embedded_worker_id_ = params.embedded_worker_id; | 100 embedded_worker_id_ = params.embedded_worker_id; |
| 104 | 101 |
| 105 EmbeddedWorkerInstance* worker = | 102 EmbeddedWorkerInstance* worker = |
| 106 helper_->registry()->GetWorker(params.embedded_worker_id); | 103 helper_->registry()->GetWorker(params.embedded_worker_id); |
| 107 ASSERT_TRUE(worker != NULL); | 104 ASSERT_TRUE(worker != NULL); |
| 108 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); | 105 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); |
| 109 | 106 |
| 110 base::ThreadTaskRunnerHandle::Get()->PostTask( | 107 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 111 FROM_HERE, | 108 FROM_HERE, |
| 112 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, | 109 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, helper_->AsWeakPtr(), |
| 113 helper_->weak_factory_.GetWeakPtr(), params.embedded_worker_id, | 110 params.embedded_worker_id, params.service_worker_version_id, |
| 114 params.service_worker_version_id, params.scope, | 111 params.scope, params.script_url, params.pause_after_download)); |
| 115 params.script_url, params.pause_after_download)); | 112 } |
| 113 |
| 114 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StopWorker( |
| 115 const StopWorkerCallback& callback) { |
| 116 if (!helper_) |
| 117 return; |
| 118 |
| 119 ASSERT_TRUE(embedded_worker_id_); |
| 120 EmbeddedWorkerInstance* worker = |
| 121 helper_->registry()->GetWorker(embedded_worker_id_.value()); |
| 122 ASSERT_TRUE(worker != NULL); |
| 123 EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, worker->status()); |
| 124 |
| 125 callback.Run(); |
| 116 } | 126 } |
| 117 | 127 |
| 118 // static | 128 // static |
| 119 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::Bind( | 129 void EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::Bind( |
| 120 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, | 130 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, |
| 121 mojom::EmbeddedWorkerInstanceClientRequest request) { | 131 mojom::EmbeddedWorkerInstanceClientRequest request) { |
| 122 std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>* clients = | 132 std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>* clients = |
| 123 helper->mock_instance_clients(); | 133 helper->mock_instance_clients(); |
| 124 size_t next_client_index = helper->mock_instance_clients_next_index_; | 134 size_t next_client_index = helper->mock_instance_clients_next_index_; |
| 125 | 135 |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 IPC_MESSAGE_UNHANDLED(handled = false) | 237 IPC_MESSAGE_UNHANDLED(handled = false) |
| 228 IPC_END_MESSAGE_MAP() | 238 IPC_END_MESSAGE_MAP() |
| 229 | 239 |
| 230 // IPC::TestSink only records messages that are not handled by filters, | 240 // IPC::TestSink only records messages that are not handled by filters, |
| 231 // so we just forward all messages to the separate sink. | 241 // so we just forward all messages to the separate sink. |
| 232 sink_.OnMessageReceived(message); | 242 sink_.OnMessageReceived(message); |
| 233 | 243 |
| 234 return handled; | 244 return handled; |
| 235 } | 245 } |
| 236 | 246 |
| 247 void EmbeddedWorkerTestHelper::RegisterMockInstanceClient( |
| 248 std::unique_ptr<MockEmbeddedWorkerInstanceClient> client) { |
| 249 mock_instance_clients_.push_back(std::move(client)); |
| 250 } |
| 251 |
| 237 ServiceWorkerContextCore* EmbeddedWorkerTestHelper::context() { | 252 ServiceWorkerContextCore* EmbeddedWorkerTestHelper::context() { |
| 238 return wrapper_->context(); | 253 return wrapper_->context(); |
| 239 } | 254 } |
| 240 | 255 |
| 241 void EmbeddedWorkerTestHelper::ShutdownContext() { | 256 void EmbeddedWorkerTestHelper::ShutdownContext() { |
| 242 wrapper_->Shutdown(); | 257 wrapper_->Shutdown(); |
| 243 wrapper_ = NULL; | 258 wrapper_ = NULL; |
| 244 } | 259 } |
| 245 | 260 |
| 246 void EmbeddedWorkerTestHelper::OnStartWorker(int embedded_worker_id, | 261 void EmbeddedWorkerTestHelper::OnStartWorker(int embedded_worker_id, |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 413 } | 428 } |
| 414 | 429 |
| 415 void EmbeddedWorkerTestHelper::OnStartWorkerStub( | 430 void EmbeddedWorkerTestHelper::OnStartWorkerStub( |
| 416 const EmbeddedWorkerStartParams& params) { | 431 const EmbeddedWorkerStartParams& params) { |
| 417 EmbeddedWorkerInstance* worker = | 432 EmbeddedWorkerInstance* worker = |
| 418 registry()->GetWorker(params.embedded_worker_id); | 433 registry()->GetWorker(params.embedded_worker_id); |
| 419 ASSERT_TRUE(worker != NULL); | 434 ASSERT_TRUE(worker != NULL); |
| 420 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); | 435 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); |
| 421 base::ThreadTaskRunnerHandle::Get()->PostTask( | 436 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 422 FROM_HERE, | 437 FROM_HERE, |
| 423 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, | 438 base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, AsWeakPtr(), |
| 424 weak_factory_.GetWeakPtr(), params.embedded_worker_id, | 439 params.embedded_worker_id, params.service_worker_version_id, |
| 425 params.service_worker_version_id, params.scope, | 440 params.scope, params.script_url, params.pause_after_download)); |
| 426 params.script_url, params.pause_after_download)); | |
| 427 } | 441 } |
| 428 | 442 |
| 429 void EmbeddedWorkerTestHelper::OnResumeAfterDownloadStub( | 443 void EmbeddedWorkerTestHelper::OnResumeAfterDownloadStub( |
| 430 int embedded_worker_id) { | 444 int embedded_worker_id) { |
| 431 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 445 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 432 ASSERT_TRUE(worker); | 446 ASSERT_TRUE(worker); |
| 433 base::ThreadTaskRunnerHandle::Get()->PostTask( | 447 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 434 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnResumeAfterDownload, | 448 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnResumeAfterDownload, |
| 435 weak_factory_.GetWeakPtr(), embedded_worker_id)); | 449 AsWeakPtr(), embedded_worker_id)); |
| 436 } | 450 } |
| 437 | 451 |
| 438 void EmbeddedWorkerTestHelper::OnStopWorkerStub(int embedded_worker_id) { | 452 void EmbeddedWorkerTestHelper::OnStopWorkerStub(int embedded_worker_id) { |
| 439 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 453 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 440 ASSERT_TRUE(worker != NULL); | 454 ASSERT_TRUE(worker != NULL); |
| 441 base::ThreadTaskRunnerHandle::Get()->PostTask( | 455 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 442 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnStopWorker, | 456 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnStopWorker, |
| 443 weak_factory_.GetWeakPtr(), embedded_worker_id)); | 457 AsWeakPtr(), embedded_worker_id)); |
| 444 } | 458 } |
| 445 | 459 |
| 446 void EmbeddedWorkerTestHelper::OnMessageToWorkerStub( | 460 void EmbeddedWorkerTestHelper::OnMessageToWorkerStub( |
| 447 int thread_id, | 461 int thread_id, |
| 448 int embedded_worker_id, | 462 int embedded_worker_id, |
| 449 const IPC::Message& message) { | 463 const IPC::Message& message) { |
| 450 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 464 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
| 451 ASSERT_TRUE(worker != NULL); | 465 ASSERT_TRUE(worker != NULL); |
| 452 EXPECT_EQ(worker->thread_id(), thread_id); | 466 EXPECT_EQ(worker->thread_id(), thread_id); |
| 453 base::ThreadTaskRunnerHandle::Get()->PostTask( | 467 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 454 FROM_HERE, | 468 FROM_HERE, |
| 455 base::Bind( | 469 base::Bind( |
| 456 base::IgnoreResult(&EmbeddedWorkerTestHelper::OnMessageToWorker), | 470 base::IgnoreResult(&EmbeddedWorkerTestHelper::OnMessageToWorker), |
| 457 weak_factory_.GetWeakPtr(), thread_id, embedded_worker_id, message)); | 471 AsWeakPtr(), thread_id, embedded_worker_id, message)); |
| 458 } | 472 } |
| 459 | 473 |
| 460 void EmbeddedWorkerTestHelper::OnActivateEventStub(int request_id) { | 474 void EmbeddedWorkerTestHelper::OnActivateEventStub(int request_id) { |
| 461 base::ThreadTaskRunnerHandle::Get()->PostTask( | 475 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 462 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnActivateEvent, | 476 FROM_HERE, |
| 463 weak_factory_.GetWeakPtr(), | 477 base::Bind(&EmbeddedWorkerTestHelper::OnActivateEvent, AsWeakPtr(), |
| 464 current_embedded_worker_id_, request_id)); | 478 current_embedded_worker_id_, request_id)); |
| 465 } | 479 } |
| 466 | 480 |
| 467 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub( | 481 void EmbeddedWorkerTestHelper::OnExtendableMessageEventStub( |
| 468 int request_id, | 482 int request_id, |
| 469 const ServiceWorkerMsg_ExtendableMessageEvent_Params& params) { | 483 const ServiceWorkerMsg_ExtendableMessageEvent_Params& params) { |
| 470 base::ThreadTaskRunnerHandle::Get()->PostTask( | 484 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 471 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent, | 485 FROM_HERE, |
| 472 weak_factory_.GetWeakPtr(), | 486 base::Bind(&EmbeddedWorkerTestHelper::OnExtendableMessageEvent, |
| 473 current_embedded_worker_id_, request_id)); | 487 AsWeakPtr(), current_embedded_worker_id_, request_id)); |
| 474 } | 488 } |
| 475 | 489 |
| 476 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { | 490 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { |
| 477 base::ThreadTaskRunnerHandle::Get()->PostTask( | 491 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 478 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, | 492 FROM_HERE, |
| 479 weak_factory_.GetWeakPtr(), | 493 base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, AsWeakPtr(), |
| 480 current_embedded_worker_id_, request_id)); | 494 current_embedded_worker_id_, request_id)); |
| 481 } | 495 } |
| 482 | 496 |
| 483 void EmbeddedWorkerTestHelper::OnFetchEventStub( | 497 void EmbeddedWorkerTestHelper::OnFetchEventStub( |
| 484 int thread_id, | 498 int thread_id, |
| 485 int response_id, | 499 int response_id, |
| 486 const ServiceWorkerFetchRequest& request, | 500 const ServiceWorkerFetchRequest& request, |
| 487 const FetchCallback& callback) { | 501 const FetchCallback& callback) { |
| 488 base::ThreadTaskRunnerHandle::Get()->PostTask( | 502 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 489 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnFetchEvent, | 503 FROM_HERE, |
| 490 weak_factory_.GetWeakPtr(), | 504 base::Bind(&EmbeddedWorkerTestHelper::OnFetchEvent, AsWeakPtr(), |
| 491 thread_id_embedded_worker_id_map_[thread_id], | 505 thread_id_embedded_worker_id_map_[thread_id], response_id, |
| 492 response_id, request, callback)); | 506 request, callback)); |
| 493 } | 507 } |
| 494 | 508 |
| 495 void EmbeddedWorkerTestHelper::OnPushEventStub( | 509 void EmbeddedWorkerTestHelper::OnPushEventStub( |
| 496 int request_id, | 510 int request_id, |
| 497 const PushEventPayload& payload) { | 511 const PushEventPayload& payload) { |
| 498 base::ThreadTaskRunnerHandle::Get()->PostTask( | 512 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 499 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnPushEvent, | 513 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnPushEvent, AsWeakPtr(), |
| 500 weak_factory_.GetWeakPtr(), | |
| 501 current_embedded_worker_id_, request_id, payload)); | 514 current_embedded_worker_id_, request_id, payload)); |
| 502 } | 515 } |
| 503 | 516 |
| 504 void EmbeddedWorkerTestHelper::OnSetupMojoStub( | 517 void EmbeddedWorkerTestHelper::OnSetupMojoStub( |
| 505 int thread_id, | 518 int thread_id, |
| 506 shell::mojom::InterfaceProviderRequest request, | 519 shell::mojom::InterfaceProviderRequest request, |
| 507 shell::mojom::InterfaceProviderPtr remote_interfaces) { | 520 shell::mojom::InterfaceProviderPtr remote_interfaces) { |
| 508 std::unique_ptr<shell::InterfaceRegistry> local( | 521 std::unique_ptr<shell::InterfaceRegistry> local( |
| 509 new shell::InterfaceRegistry); | 522 new shell::InterfaceRegistry); |
| 510 local->Bind(std::move(request)); | 523 local->Bind(std::move(request)); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 529 new MockMessagePortMessageFilter); | 542 new MockMessagePortMessageFilter); |
| 530 message_port_message_filters_.push_back(filter); | 543 message_port_message_filters_.push_back(filter); |
| 531 return filter.get(); | 544 return filter.get(); |
| 532 } | 545 } |
| 533 | 546 |
| 534 std::unique_ptr<shell::InterfaceRegistry> | 547 std::unique_ptr<shell::InterfaceRegistry> |
| 535 EmbeddedWorkerTestHelper::CreateInterfaceRegistry(MockRenderProcessHost* rph) { | 548 EmbeddedWorkerTestHelper::CreateInterfaceRegistry(MockRenderProcessHost* rph) { |
| 536 std::unique_ptr<shell::InterfaceRegistry> registry( | 549 std::unique_ptr<shell::InterfaceRegistry> registry( |
| 537 new shell::InterfaceRegistry); | 550 new shell::InterfaceRegistry); |
| 538 registry->AddInterface( | 551 registry->AddInterface( |
| 539 base::Bind(&MockEmbeddedWorkerSetup::Create, weak_factory_.GetWeakPtr())); | 552 base::Bind(&MockEmbeddedWorkerSetup::Create, AsWeakPtr())); |
| 540 registry->AddInterface(base::Bind(&MockEmbeddedWorkerInstanceClient::Bind, | 553 registry->AddInterface( |
| 541 weak_factory_.GetWeakPtr())); | 554 base::Bind(&MockEmbeddedWorkerInstanceClient::Bind, AsWeakPtr())); |
| 542 | 555 |
| 543 shell::mojom::InterfaceProviderPtr interfaces; | 556 shell::mojom::InterfaceProviderPtr interfaces; |
| 544 registry->Bind(mojo::GetProxy(&interfaces)); | 557 registry->Bind(mojo::GetProxy(&interfaces)); |
| 545 | 558 |
| 546 std::unique_ptr<shell::InterfaceProvider> remote_interfaces( | 559 std::unique_ptr<shell::InterfaceProvider> remote_interfaces( |
| 547 new shell::InterfaceProvider); | 560 new shell::InterfaceProvider); |
| 548 remote_interfaces->Bind(std::move(interfaces)); | 561 remote_interfaces->Bind(std::move(interfaces)); |
| 549 rph->SetRemoteInterfaces(std::move(remote_interfaces)); | 562 rph->SetRemoteInterfaces(std::move(remote_interfaces)); |
| 550 return registry; | 563 return registry; |
| 551 } | 564 } |
| 552 | 565 |
| 553 } // namespace content | 566 } // namespace content |
| OLD | NEW |