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#include "mojo/application/application_runner_chromium.h" 6#include "mojo/examples/surfaces_app/child_impl.h" 7#include "mojo/public/c/system/main.h" 8#include "mojo/public/cpp/application/application_connection.h" 9#include "mojo/public/cpp/application/application_delegate.h" 10#include "mojo/public/cpp/application/application_impl.h" 11#include "mojo/public/cpp/bindings/string.h" 12 13namespace mojo { 14namespace examples { 15 16class ChildApp : public ApplicationDelegate, public InterfaceFactory<Child> { 17 public: 18 ChildApp() {} 19 virtual ~ChildApp() {} 20 21 virtual void Initialize(ApplicationImpl* app) OVERRIDE { 22 surfaces_service_connection_ = 23 app->ConnectToApplication("mojo:mojo_surfaces_service"); 24 } 25 26 // ApplicationDelegate implementation. 27 virtual bool ConfigureIncomingConnection( 28 ApplicationConnection* connection) OVERRIDE { 29 connection->AddService(this); 30 return true; 31 } 32 33 // InterfaceFactory<Child> implementation. 34 virtual void Create(ApplicationConnection* connection, 35 InterfaceRequest<Child> request) OVERRIDE { 36 BindToRequest(new ChildImpl(surfaces_service_connection_), &request); 37 } 38 39 private: 40 ApplicationConnection* surfaces_service_connection_; 41 42 DISALLOW_COPY_AND_ASSIGN(ChildApp); 43}; 44 45} // namespace examples 46} // namespace mojo 47 48MojoResult MojoMain(MojoHandle shell_handle) { 49 mojo::ApplicationRunnerChromium runner(new mojo::examples::ChildApp); 50 return runner.Run(shell_handle); 51} 52