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/public/c/system/main.h" 7 #include "mojo/public/cpp/application/application_connection.h" 8 #include "mojo/public/cpp/application/application_delegate.h" 9 #include "mojo/services/view_manager/view_manager_init_service_context.h" 10 #include "mojo/services/view_manager/view_manager_init_service_impl.h" 11 12 namespace mojo { 13 namespace service { 14 15 class ViewManagerApp : public ApplicationDelegate, 16 public InterfaceFactory<ViewManagerInitService> { 17 public: 18 ViewManagerApp() {} 19 virtual ~ViewManagerApp() {} 20 21 virtual bool ConfigureIncomingConnection( 22 ApplicationConnection* connection) OVERRIDE { 23 context_.ConfigureIncomingConnection(connection); 24 // TODO(sky): this needs some sort of authentication as well as making sure 25 // we only ever have one active at a time. 26 connection->AddService(this); 27 return true; 28 } 29 30 virtual void Create( 31 ApplicationConnection* connection, 32 InterfaceRequest<ViewManagerInitService> request) OVERRIDE { 33 BindToRequest(new ViewManagerInitServiceImpl(connection, &context_), 34 &request); 35 } 36 37 private: 38 ViewManagerInitServiceContext context_; 39 40 DISALLOW_COPY_AND_ASSIGN(ViewManagerApp); 41 }; 42 43 } // namespace service 44 } // namespace mojo 45 46 MojoResult MojoMain(MojoHandle shell_handle) { 47 mojo::ApplicationRunnerChromium runner(new mojo::service::ViewManagerApp); 48 return runner.Run(shell_handle); 49 } 50