Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / mojo / services / view_manager / main.cc
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 }