summaryrefslogtreecommitdiffstats
path: root/mojo/shell/app_child_process_host.cc
diff options
context:
space:
mode:
authorviettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-20 17:37:19 +0000
committerviettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-20 17:37:19 +0000
commit5dcd57c3f8a07a6dadee280e0031b576277b0af5 (patch)
treea68edf86af447bd791ae0f4857baf0c4d95bed01 /mojo/shell/app_child_process_host.cc
parent0ed2f78e683a3695c80932792f771397278b56cd (diff)
downloadchromium_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.cc31
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()|.