Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(332)

Side by Side Diff: content/browser/mojo/mojo_application_host.cc

Issue 2099063002: Migrate RenderProcessHost, ChildThread to InterfaceRegistry/Provider (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/mojo/mojo_application_host.h" 5 #include "content/browser/mojo/mojo_application_host.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
11 #include "mojo/edk/embedder/embedder.h" 11 #include "mojo/edk/embedder/embedder.h"
12 12
13 namespace content { 13 namespace content {
14 namespace { 14 namespace {
15 15
16 // TODO(beng): remove this in favor of just using shell APIs directly. 16 // TODO(beng): remove this in favor of just using shell APIs directly.
17 // http://crbug.com/2072603002 17 // http://crbug.com/2072603002
18 class ApplicationSetupImpl : public mojom::ApplicationSetup { 18 class ApplicationSetupImpl : public mojom::ApplicationSetup {
19 public: 19 public:
20 ApplicationSetupImpl(ServiceRegistryImpl* service_registry, 20 ApplicationSetupImpl(shell::InterfaceRegistry* interface_registry,
21 shell::InterfaceProvider* remote_interfaces,
21 mojo::InterfaceRequest<mojom::ApplicationSetup> request) 22 mojo::InterfaceRequest<mojom::ApplicationSetup> request)
22 : binding_(this, std::move(request)), 23 : binding_(this, std::move(request)),
23 service_registry_(service_registry) {} 24 interface_registry_(interface_registry),
25 remote_interfaces_(remote_interfaces) {
26 shell::mojom::InterfaceProviderPtr remote;
27 pending_interfaces_request_ = GetProxy(&remote);
28 remote_interfaces_->Bind(std::move(remote));
29 }
24 30
25 ~ApplicationSetupImpl() override { 31 ~ApplicationSetupImpl() override {
26 } 32 }
27 33
28 private: 34 private:
29 // mojom::ApplicationSetup implementation. 35 // mojom::ApplicationSetup implementation.
30 void ExchangeInterfaceProviders( 36 void ExchangeInterfaceProviders(
31 shell::mojom::InterfaceProviderRequest services, 37 shell::mojom::InterfaceProviderRequest request,
32 shell::mojom::InterfaceProviderPtr exposed_services) override { 38 shell::mojom::InterfaceProviderPtr remote_interfaces) override {
33 service_registry_->Bind(std::move(services)); 39 mojo::FuseInterface(std::move(pending_interfaces_request_),
34 mojo::FuseInterface(service_registry_->TakeRemoteRequest(), 40 remote_interfaces.PassInterface());
35 exposed_services.PassInterface()); 41 interface_registry_->Bind(std::move(request));
36 } 42 }
37 43
38 mojo::Binding<mojom::ApplicationSetup> binding_; 44 mojo::Binding<mojom::ApplicationSetup> binding_;
39 ServiceRegistryImpl* service_registry_; 45 shell::InterfaceRegistry* interface_registry_;
46 shell::InterfaceProvider* remote_interfaces_;
47 shell::mojom::InterfaceProviderRequest pending_interfaces_request_;
40 }; 48 };
41 49
42 } // namespace 50 } // namespace
43 51
44 MojoApplicationHost::MojoApplicationHost(const std::string& child_token) 52 MojoApplicationHost::MojoApplicationHost(const std::string& child_token)
45 : token_(mojo::edk::GenerateRandomToken()) { 53 : token_(mojo::edk::GenerateRandomToken()),
54 interface_registry_(new shell::InterfaceRegistry(nullptr)),
55 remote_interfaces_(new shell::InterfaceProvider) {
46 #if defined(OS_ANDROID) 56 #if defined(OS_ANDROID)
47 service_registry_android_ = 57 service_registry_android_ = ServiceRegistryAndroid::Create(
48 ServiceRegistryAndroid::Create(&service_registry_); 58 interface_registry_.get(), remote_interfaces_.get());
49 #endif 59 #endif
50 60
51 mojo::ScopedMessagePipeHandle pipe = 61 mojo::ScopedMessagePipeHandle pipe =
52 mojo::edk::CreateParentMessagePipe(token_, child_token); 62 mojo::edk::CreateParentMessagePipe(token_, child_token);
53 DCHECK(pipe.is_valid()); 63 DCHECK(pipe.is_valid());
54 application_setup_.reset(new ApplicationSetupImpl( 64 application_setup_.reset(new ApplicationSetupImpl(
55 &service_registry_, 65 interface_registry_.get(),
66 remote_interfaces_.get(),
56 mojo::MakeRequest<mojom::ApplicationSetup>(std::move(pipe)))); 67 mojo::MakeRequest<mojom::ApplicationSetup>(std::move(pipe))));
57 } 68 }
58 69
59 MojoApplicationHost::~MojoApplicationHost() { 70 MojoApplicationHost::~MojoApplicationHost() {
60 } 71 }
61 72
62 } // namespace content 73 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/mojo/mojo_application_host.h ('k') | content/browser/mojo/mojo_shell_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698