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.
5 #ifndef MOJO_SHELL_APP_CHILD_PROCESS_HOST_H_
6 #define MOJO_SHELL_APP_CHILD_PROCESS_HOST_H_
8 #include "base/macros.h"
9 #include "mojo/public/bindings/remote_ptr.h"
10 #include "mojo/shell/app_child_process.mojom.h"
11 #include "mojo/shell/child_process_host.h"
21 // A subclass of |ChildProcessHost| to host a |TYPE_APP| child process, which
22 // runs a single app (loaded from the file system).
24 // Note: After |Start()|, this object must remain alive until the controller
25 // client's |AppCompleted()| is called.
26 class AppChildProcessHost : public ChildProcessHost,
27 public ChildProcessHost::Delegate {
29 AppChildProcessHost(Context* context,
30 mojo_shell::AppChildControllerClient* controller_client);
31 virtual ~AppChildProcessHost();
33 mojo_shell::AppChildController* controller() {
34 return controller_.get();
38 // |ChildProcessHost::Delegate| methods:
39 virtual void WillStart() OVERRIDE;
40 virtual void DidStart(bool success) OVERRIDE;
42 // Callback for |embedder::CreateChannel()|.
43 void DidCreateChannel(embedder::ChannelInfo* channel_info);
45 mojo_shell::AppChildControllerClient* const controller_client_;
47 RemotePtr<mojo_shell::AppChildController> controller_;
48 embedder::ChannelInfo* channel_info_;
50 DISALLOW_COPY_AND_ASSIGN(AppChildProcessHost);
56 #endif // MOJO_SHELL_APP_CHILD_PROCESS_HOST_H_