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/child/mojo/mojo_application.h" | 5 #include "content/child/mojo/mojo_application.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "content/common/application_setup.mojom.h" | 10 #include "content/common/application_setup.mojom.h" |
11 #include "mojo/edk/embedder/embedder.h" | 11 #include "mojo/edk/embedder/embedder.h" |
12 | 12 |
13 namespace content { | 13 namespace content { |
14 | 14 |
15 MojoApplication::MojoApplication() { | 15 MojoApplication::MojoApplication() { |
16 } | 16 } |
17 | 17 |
18 MojoApplication::~MojoApplication() { | 18 MojoApplication::~MojoApplication() { |
19 } | 19 } |
20 | 20 |
21 void MojoApplication::InitWithToken(const std::string& token) { | 21 void MojoApplication::InitWithToken(const std::string& token) { |
| 22 DCHECK(!interface_registry_.get()); |
22 mojo::ScopedMessagePipeHandle handle = | 23 mojo::ScopedMessagePipeHandle handle = |
23 mojo::edk::CreateChildMessagePipe(token); | 24 mojo::edk::CreateChildMessagePipe(token); |
24 DCHECK(handle.is_valid()); | 25 DCHECK(handle.is_valid()); |
25 | 26 |
26 mojom::ApplicationSetupPtr application_setup; | 27 mojom::ApplicationSetupPtr application_setup; |
27 application_setup.Bind( | 28 application_setup.Bind( |
28 mojo::InterfacePtrInfo<mojom::ApplicationSetup>(std::move(handle), 0u)); | 29 mojo::InterfacePtrInfo<mojom::ApplicationSetup>(std::move(handle), 0u)); |
29 | 30 |
30 shell::mojom::InterfaceProviderPtr services; | 31 interface_registry_.reset(new shell::InterfaceRegistry(nullptr)); |
31 shell::mojom::InterfaceProviderPtr exposed_services; | 32 shell::mojom::InterfaceProviderPtr exposed_interfaces; |
32 service_registry_.Bind(GetProxy(&exposed_services)); | 33 interface_registry_->Bind(GetProxy(&exposed_interfaces)); |
| 34 |
| 35 shell::mojom::InterfaceProviderPtr remote_interfaces; |
| 36 shell::mojom::InterfaceProviderRequest remote_interfaces_request = |
| 37 GetProxy(&remote_interfaces); |
| 38 remote_interfaces_.reset( |
| 39 new shell::InterfaceProvider(std::move(remote_interfaces))); |
33 application_setup->ExchangeInterfaceProviders( | 40 application_setup->ExchangeInterfaceProviders( |
34 service_registry_.TakeRemoteRequest(), | 41 std::move(remote_interfaces_request), |
35 std::move(exposed_services)); | 42 std::move(exposed_interfaces)); |
36 } | 43 } |
37 | 44 |
38 } // namespace content | 45 } // namespace content |
OLD | NEW |