• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
task_runners()42   TaskRunners* task_runners() { return task_runners_.get(); }
application_manager()43   ApplicationManager* application_manager() { return &application_manager_; }
mojo_url_resolver()44   MojoURLResolver* mojo_url_resolver() { return &mojo_url_resolver_; }
45 
46 #if defined(OS_ANDROID)
ui_loop()47   base::MessageLoop* ui_loop() const { return ui_loop_; }
set_ui_loop(base::MessageLoop * 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_
70