diff options
author | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-20 17:37:19 +0000 |
---|---|---|
committer | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-20 17:37:19 +0000 |
commit | 5dcd57c3f8a07a6dadee280e0031b576277b0af5 (patch) | |
tree | a68edf86af447bd791ae0f4857baf0c4d95bed01 /mojo/shell/app_child_process_host.cc | |
parent | 0ed2f78e683a3695c80932792f771397278b56cd (diff) | |
download | chromium_src-5dcd57c3f8a07a6dadee280e0031b576277b0af5.zip chromium_src-5dcd57c3f8a07a6dadee280e0031b576277b0af5.tar.gz chromium_src-5dcd57c3f8a07a6dadee280e0031b576277b0af5.tar.bz2 |
Mojo: Add a mojom interface between the app child process and the parent.
Do some plumbing.
R=sky@chromium.org
Review URL: https://codereview.chromium.org/205733002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@258325 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'mojo/shell/app_child_process_host.cc')
-rw-r--r-- | mojo/shell/app_child_process_host.cc | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/mojo/shell/app_child_process_host.cc b/mojo/shell/app_child_process_host.cc index 9f14532..42e5d82 100644 --- a/mojo/shell/app_child_process_host.cc +++ b/mojo/shell/app_child_process_host.cc @@ -4,6 +4,7 @@ #include "mojo/shell/app_child_process_host.h" +#include "base/logging.h" #include "base/message_loop/message_loop.h" #include "mojo/embedder/embedder.h" #include "mojo/public/system/core_cpp.h" @@ -13,23 +14,19 @@ namespace mojo { namespace shell { -AppChildProcessHost::AppChildProcessHost(Context* context, - AppDelegate* app_delegate) +AppChildProcessHost::AppChildProcessHost( + Context* context, + mojo_shell::AppChildControllerClient* controller_client) : ChildProcessHost(context, this, ChildProcess::TYPE_APP), - app_delegate_(app_delegate), + controller_client_(controller_client), channel_info_(NULL) { } AppChildProcessHost::~AppChildProcessHost() { } -void AppChildProcessHost::DidStart(bool success) { - DVLOG(2) << "AppChildProcessHost::DidStart()"; - - if (!success) { - app_delegate_->DidTerminate(); - return; - } +void AppChildProcessHost::WillStart() { + DCHECK(platform_channel()->is_valid()); mojo::ScopedMessagePipeHandle child_message_pipe(embedder::CreateChannel( platform_channel()->Pass(), @@ -37,8 +34,20 @@ void AppChildProcessHost::DidStart(bool success) { base::Bind(&AppChildProcessHost::DidCreateChannel, base::Unretained(this)), base::MessageLoop::current()->message_loop_proxy())); + controller_.reset( + mojo_shell::ScopedAppChildControllerHandle( + mojo_shell::AppChildControllerHandle( + child_message_pipe.release().value())), controller_client_); +} - // TODO(vtl): Hook up a RemotePtr, etc. +void AppChildProcessHost::DidStart(bool success) { + DVLOG(2) << "AppChildProcessHost::DidStart()"; + + if (!success) { + LOG(ERROR) << "Failed to start app child process"; + controller_client_->AppCompleted(MOJO_RESULT_UNKNOWN); + return; + } } // Callback for |embedder::CreateChannel()|. |