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