#ifndef MOJO_SHELL_CONTEXT_H_
#define MOJO_SHELL_CONTEXT_H_
+#include <string>
+
+#include "mojo/application_manager/application_manager.h"
#include "mojo/shell/keep_alive.h"
-#include "mojo/shell/loader.h"
-#include "mojo/shell/service_manager.h"
-#include "mojo/shell/storage.h"
+#include "mojo/shell/mojo_url_resolver.h"
#include "mojo/shell/task_runners.h"
#if defined(OS_ANDROID)
#endif // defined(OS_ANDROID)
namespace mojo {
+
+class Spy;
+
namespace shell {
-class DynamicServiceLoader;
+class DynamicApplicationLoader;
+// The "global" context for the shell's main process.
class Context {
public:
Context();
~Context();
- TaskRunners* task_runners() { return &task_runners_; }
- Storage* storage() { return &storage_; }
- Loader* loader() { return &loader_; }
- ServiceManager* service_manager() { return &service_manager_; }
+ void Init();
+
+ TaskRunners* task_runners() { return task_runners_.get(); }
+ ApplicationManager* application_manager() { return &application_manager_; }
KeepAliveCounter* keep_alive_counter() { return &keep_alive_counter_; }
+ MojoURLResolver* mojo_url_resolver() { return &mojo_url_resolver_; }
#if defined(OS_ANDROID)
- jobject activity() const { return activity_.obj(); }
- void set_activity(jobject activity) { activity_.Reset(NULL, activity); }
+ base::MessageLoop* ui_loop() const { return ui_loop_; }
+ void set_ui_loop(base::MessageLoop* ui_loop) { ui_loop_ = ui_loop; }
#endif // defined(OS_ANDROID)
private:
- TaskRunners task_runners_;
- Storage storage_;
- Loader loader_;
- ServiceManager service_manager_;
- scoped_ptr<DynamicServiceLoader> dynamic_service_loader_;
+ class NativeViewportApplicationLoader;
+ scoped_ptr<TaskRunners> task_runners_;
+ ApplicationManager application_manager_;
+ MojoURLResolver mojo_url_resolver_;
+ scoped_ptr<Spy> spy_;
#if defined(OS_ANDROID)
- base::android::ScopedJavaGlobalRef<jobject> activity_;
+ base::MessageLoop* ui_loop_;
#endif // defined(OS_ANDROID)
KeepAliveCounter keep_alive_counter_;