c191e8c90b581f761cb2da292154a4cb64478f88
[platform/framework/web/crosswalk.git] / src / mojo / shell / context.h
1 // Copyright 2013 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_SHELL_CONTEXT_H_
6 #define MOJO_SHELL_CONTEXT_H_
7
8 #include <string>
9
10 #include "mojo/application_manager/application_manager.h"
11 #include "mojo/shell/mojo_url_resolver.h"
12 #include "mojo/shell/task_runners.h"
13
14 #if defined(OS_ANDROID)
15 #include "base/android/scoped_java_ref.h"
16 #endif  // defined(OS_ANDROID)
17
18 namespace mojo {
19
20 class Spy;
21
22 namespace shell {
23
24 class DynamicApplicationLoader;
25
26 // The "global" context for the shell's main process.
27 class Context : ApplicationManager::Delegate {
28  public:
29   Context();
30   virtual ~Context();
31
32   void Init();
33
34   // ApplicationManager::Delegate override.
35   virtual void OnApplicationError(const GURL& gurl) OVERRIDE;
36
37   void Run(const GURL& url);
38   ScopedMessagePipeHandle ConnectToServiceByName(
39       const GURL& application_url,
40       const std::string& service_name);
41
42   TaskRunners* task_runners() { return task_runners_.get(); }
43   ApplicationManager* application_manager() { return &application_manager_; }
44   MojoURLResolver* mojo_url_resolver() { return &mojo_url_resolver_; }
45
46 #if defined(OS_ANDROID)
47   base::MessageLoop* ui_loop() const { return ui_loop_; }
48   void set_ui_loop(base::MessageLoop* ui_loop) { ui_loop_ = ui_loop; }
49 #endif  // defined(OS_ANDROID)
50
51  private:
52   class NativeViewportApplicationLoader;
53
54   std::set<GURL> app_urls_;
55   scoped_ptr<TaskRunners> task_runners_;
56   ApplicationManager application_manager_;
57   MojoURLResolver mojo_url_resolver_;
58   scoped_ptr<Spy> spy_;
59 #if defined(OS_ANDROID)
60   base::MessageLoop* ui_loop_;
61 #endif  // defined(OS_ANDROID)
62
63   DISALLOW_COPY_AND_ASSIGN(Context);
64 };
65
66 }  // namespace shell
67 }  // namespace mojo
68
69 #endif  // MOJO_SHELL_CONTEXT_H_