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 MOJO_SHELL_APP_CHILD_PROCESS_HOST_H_ 6 #define MOJO_SHELL_APP_CHILD_PROCESS_HOST_H_ 7 8 #include "base/macros.h" 9 #include "mojo/shell/app_child_process.mojom.h" 10 #include "mojo/shell/child_process_host.h" 11 12 namespace mojo { 13 14 namespace embedder { 15 struct ChannelInfo; 16 } 17 18 namespace shell { 19 20 // A subclass of |ChildProcessHost| to host a |TYPE_APP| child process, which 21 // runs a single app (loaded from the file system). 22 // 23 // Note: After |Start()|, this object must remain alive until the controller 24 // client's |AppCompleted()| is called. 25 class AppChildProcessHost : public ChildProcessHost, 26 public ChildProcessHost::Delegate { 27 public: 28 AppChildProcessHost(Context* context, 29 AppChildControllerClient* controller_client); 30 virtual ~AppChildProcessHost(); 31 controller()32 AppChildController* controller() { 33 return controller_.get(); 34 } 35 36 private: 37 // |ChildProcessHost::Delegate| methods: 38 virtual void WillStart() OVERRIDE; 39 virtual void DidStart(bool success) OVERRIDE; 40 41 // Callback for |embedder::CreateChannel()|. 42 void DidCreateChannel(embedder::ChannelInfo* channel_info); 43 44 AppChildControllerClient* const controller_client_; 45 46 AppChildControllerPtr controller_; 47 embedder::ChannelInfo* channel_info_; 48 49 DISALLOW_COPY_AND_ASSIGN(AppChildProcessHost); 50 }; 51 52 } // namespace shell 53 } // namespace mojo 54 55 #endif // MOJO_SHELL_APP_CHILD_PROCESS_HOST_H_ 56