1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/application/application_runner_chromium.h"
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/examples/surfaces_app/child_impl.h"
703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/public/c/system/main.h"
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/application/application_connection.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/application/application_delegate.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/application/application_impl.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/bindings/string.h"
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace mojo {
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace examples {
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ChildApp : public ApplicationDelegate, public InterfaceFactory<Child> {
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public:
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ChildApp() {}
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual ~ChildApp() {}
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void Initialize(ApplicationImpl* app) OVERRIDE {
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    surfaces_service_connection_ =
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        app->ConnectToApplication("mojo:mojo_surfaces_service");
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  }
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // ApplicationDelegate implementation.
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual bool ConfigureIncomingConnection(
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      ApplicationConnection* connection) OVERRIDE {
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    connection->AddService(this);
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return true;
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // InterfaceFactory<Child> implementation.
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void Create(ApplicationConnection* connection,
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                      InterfaceRequest<Child> request) OVERRIDE {
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    BindToRequest(new ChildImpl(surfaces_service_connection_), &request);
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private:
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  ApplicationConnection* surfaces_service_connection_;
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(ChildApp);
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace examples
4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}  // namespace mojo
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
4803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)MojoResult MojoMain(MojoHandle shell_handle) {
4903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  mojo::ApplicationRunnerChromium runner(new mojo::examples::ChildApp);
5003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  return runner.Run(shell_handle);
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
52