Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / mojo / public / shell / application.h
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 #ifndef MOJO_PUBLIC_SHELL_APPLICATION_H_
6 #define MOJO_PUBLIC_SHELL_APPLICATION_H_
7
8 #include <vector>
9
10 #include "mojo/public/bindings/remote_ptr.h"
11 #include "mojo/public/cpp/system/core.h"
12 #include "mojo/public/shell/service.h"
13 #include "mojo/public/shell/shell.mojom.h"
14
15 namespace mojo {
16
17 class Application : public internal::ServiceFactoryBase::Owner {
18  public:
19   explicit Application(ScopedShellHandle shell_handle);
20   explicit Application(MojoHandle shell_handle);
21   virtual ~Application();
22
23   // internal::ServiceFactoryBase::Owner methods.
24   // Takes ownership of |service_factory|.
25   virtual void AddServiceFactory(internal::ServiceFactoryBase* service_factory)
26       MOJO_OVERRIDE;
27   virtual void RemoveServiceFactory(
28     internal::ServiceFactoryBase* service_factory) MOJO_OVERRIDE;
29
30  protected:
31   // ShellClient methods.
32   virtual void AcceptConnection(const mojo::String& url,
33                                 ScopedMessagePipeHandle client_handle)
34       MOJO_OVERRIDE;
35
36  private:
37   typedef std::vector<internal::ServiceFactoryBase*> ServiceFactoryList;
38   ServiceFactoryList service_factories_;
39 };
40
41 }  // namespace mojo
42
43 #endif  // MOJO_PUBLIC_SHELL_APPLICATION_H_