• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #ifndef CONTENT_BROWSER_MOJO_MOJO_APPLICATION_HOST_H_
6 #define CONTENT_BROWSER_MOJO_MOJO_APPLICATION_HOST_H_
7 
8 #include "base/process/process_handle.h"
9 #include "content/common/mojo/service_registry_impl.h"
10 #include "mojo/embedder/channel_init.h"
11 #include "mojo/embedder/scoped_platform_handle.h"
12 
13 namespace IPC {
14 class Sender;
15 }
16 
17 namespace content {
18 
19 // MojoApplicationHost represents the code needed on the browser side to setup
20 // a child process as a Mojo application via Chrome IPC. The child process
21 // should use MojoApplication to handle messages generated by an instance of
22 // MojoApplicationHost. MojoApplicationHost makes the ServiceRegistry interface
23 // available so that child-provided services can be invoked.
24 class MojoApplicationHost {
25  public:
26   MojoApplicationHost();
27   virtual ~MojoApplicationHost();
28 
29   // Two-phase initialization:
30   //  1- Init makes service_registry() available synchronously.
31   //  2- Activate establishes the actual connection to the peer process.
32   bool Init();
33   bool Activate(IPC::Sender* sender, base::ProcessHandle process_handle);
34 
35   void WillDestroySoon();
36 
did_activate()37   bool did_activate() const { return did_activate_; }
38 
service_registry()39   ServiceRegistry* service_registry() { return &service_registry_; }
40 
41  private:
42   mojo::embedder::ChannelInit channel_init_;
43   mojo::embedder::ScopedPlatformHandle client_handle_;
44 
45   bool did_activate_;
46 
47   ServiceRegistryImpl service_registry_;
48 
49   DISALLOW_COPY_AND_ASSIGN(MojoApplicationHost);
50 };
51 
52 }  // namespace content
53 
54 #endif  // CONTENT_BROWSER_MOJO_MOJO_APPLICATION_HOST_H_
55