Home | History | Annotate | Download | only in shell
      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