Index: mojo/shell/context.h |
diff --git a/mojo/shell/context.h b/mojo/shell/context.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4be704ee2603ad3a26ddf05ccb1f8950453b7f48 |
--- /dev/null |
+++ b/mojo/shell/context.h |
@@ -0,0 +1,87 @@ |
+// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef SHELL_CONTEXT_H_ |
+#define SHELL_CONTEXT_H_ |
+ |
+#include <string> |
+ |
+#include "base/macros.h" |
+#include "mojo/edk/embedder/process_delegate.h" |
+#include "mojo/shell/application_manager/application_manager.h" |
+#include "mojo/shell/task_runners.h" |
+#include "mojo/shell/url_resolver.h" |
+ |
+namespace mojo { |
+namespace shell { |
+ |
+class NativeApplicationLoader; |
+ |
+// The "global" context for the shell's main process. |
+class Context : public ApplicationManager::Delegate, |
+ public embedder::ProcessDelegate { |
+ public: |
+ Context(); |
+ ~Context() override; |
+ |
+ static void EnsureEmbedderIsInitialized(); |
+ |
+ // Point to the directory containing installed services, such as the network |
+ // service. By default this directory is used as the base URL for resolving |
+ // unknown mojo: URLs. The network service will be loaded from this directory, |
+ // even when the base URL for unknown mojo: URLs is overridden. |
+ void SetShellFileRoot(const base::FilePath& path); |
+ |
+ // Resolve an URL relative to the shell file root. This is a nop for |
+ // everything but relative file URLs or URLs without a scheme. |
+ GURL ResolveShellFileURL(const std::string& path); |
+ |
+ // Override the CWD, which is used for resolving file URLs passed in from the |
+ // command line. |
+ void SetCommandLineCWD(const base::FilePath& path); |
+ |
+ // Resolve an URL relative to the CWD mojo_shell was invoked from. This is a |
+ // nop for everything but relative file URLs or URLs without a scheme. |
+ GURL ResolveCommandLineURL(const std::string& path); |
+ |
+ // This must be called with a message loop set up for the current thread, |
+ // which must remain alive until after Shutdown() is called. Returns true on |
+ // success. |
+ bool Init(); |
+ |
+ // If Init() was called and succeeded, this must be called before destruction. |
+ void Shutdown(); |
+ |
+ void Run(const GURL& url); |
+ |
+ TaskRunners* task_runners() { return task_runners_.get(); } |
+ ApplicationManager* application_manager() { return &application_manager_; } |
+ URLResolver* url_resolver() { return &url_resolver_; } |
+ |
+ private: |
+ class NativeViewportApplicationLoader; |
+ |
+ // ApplicationManager::Delegate overrides. |
+ GURL ResolveURL(const GURL& url) override; |
+ GURL ResolveMappings(const GURL& url) override; |
+ |
+ // ProcessDelegate implementation. |
+ void OnShutdownComplete() override; |
+ |
+ void OnApplicationEnd(const GURL& url); |
+ |
+ std::set<GURL> app_urls_; |
+ scoped_ptr<TaskRunners> task_runners_; |
+ ApplicationManager application_manager_; |
+ URLResolver url_resolver_; |
+ GURL shell_file_root_; |
+ GURL command_line_cwd_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(Context); |
+}; |
+ |
+} // namespace shell |
+} // namespace mojo |
+ |
+#endif // SHELL_CONTEXT_H_ |