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_ 70