Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(721)

Unified Diff: shell/application_manager/application_manager.h

Issue 974403002: Add --force-in-process flag to shell. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: use resolved url Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | shell/application_manager/application_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: shell/application_manager/application_manager.h
diff --git a/shell/application_manager/application_manager.h b/shell/application_manager/application_manager.h
index ac01fffbaf577d7d67b3f99f05b61804a01f28b7..1841c472ba7b6438fd290ed1eb33f9fefc76d7b1 100644
--- a/shell/application_manager/application_manager.h
+++ b/shell/application_manager/application_manager.h
@@ -34,12 +34,16 @@ class NativeRunner {
public:
// Parameter for |Start()| to specify its cleanup behavior.
enum CleanupBehavior { DeleteAppPath, DontDeleteAppPath };
+
virtual ~NativeRunner() {}
// Loads the app in the file at |app_path| and runs it on some other
// thread/process. If |cleanup_behavior| is |true|, takes ownership of the
// file. |app_completed_callback| is posted (to the thread on which |Start()|
// was called) after |MojoMain()| completes.
+ // TODO(vtl): |app_path| and |cleanup_behavior| should probably be moved to
+ // the factory's Create(). Rationale: The factory may need information from
+ // the file to decide what kind of NativeRunner to make.
virtual void Start(const base::FilePath& app_path,
CleanupBehavior cleanup_behavior,
InterfaceRequest<Application> application_request,
@@ -48,8 +52,17 @@ class NativeRunner {
class NativeRunnerFactory {
public:
+ // Options for running the native app. (This will contain, e.g., information
+ // about the sandbox profile, etc.)
+ struct Options {
+ // Constructs with default options.
+ Options() : force_in_process(false) {}
+
+ bool force_in_process;
+ };
+
virtual ~NativeRunnerFactory() {}
- virtual scoped_ptr<NativeRunner> Create() = 0;
+ virtual scoped_ptr<NativeRunner> Create(const Options& options) = 0;
};
class ApplicationManager {
@@ -127,9 +140,19 @@ class ApplicationManager {
// Sets a Loader to be used for a specific url scheme.
void SetLoaderForScheme(scoped_ptr<ApplicationLoader> loader,
const std::string& scheme);
- // These strings will be passed to the Initialize() method when an
- // Application is instantiated.
+ // These strings will be passed to the Initialize() method when an Application
+ // is instantiated.
+ // TODO(vtl): Maybe we should store/compare resolved URLs, like
+ // SetNativeOptionsForURL() below?
void SetArgsForURL(const std::vector<std::string>& args, const GURL& url);
+ // These options will be used in running any native application at |url|.
+ // (|url| will be mapped and resolved, and any application whose resolved URL
+ // matches it will have |options| applied.)
+ // TODO(vtl): This may not do what's desired if the resolved URL results in an
+ // HTTP redirect. Really, we want options to be identified with a particular
+ // implementation, maybe via a signed manifest or something like that.
+ void SetNativeOptionsForURL(const NativeRunnerFactory::Options& options,
+ const GURL& url);
// Destroys all Shell-ends of connections established with Applications.
// Applications connected by this ApplicationManager will observe pipe errors
@@ -148,6 +171,7 @@ class ApplicationManager {
typedef std::map<GURL, ContentHandlerConnection*> URLToContentHandlerMap;
typedef std::map<GURL, std::vector<std::string>> URLToArgsMap;
typedef std::map<std::string, GURL> MimeTypeToURLMap;
+ typedef std::map<GURL, NativeRunnerFactory::Options> URLToNativeOptionsMap;
bool ConnectToRunningApplication(const GURL& resolved_url,
const GURL& requestor_url,
@@ -189,6 +213,7 @@ class ApplicationManager {
scoped_ptr<Fetcher> fetcher);
void RunNativeApplication(InterfaceRequest<Application> application_request,
+ const NativeRunnerFactory::Options& options,
NativeRunner::CleanupBehavior cleanup_behavior,
scoped_ptr<Fetcher> fetcher,
const base::FilePath& file_path,
@@ -210,7 +235,7 @@ class ApplicationManager {
void CleanupRunner(NativeRunner* runner);
- Delegate* delegate_;
+ Delegate* const delegate_;
// Loader management.
// Loaders are chosen in the order they are listed here.
URLToLoaderMap url_to_loader_;
@@ -221,6 +246,8 @@ class ApplicationManager {
URLToShellImplMap url_to_shell_impl_;
URLToContentHandlerMap url_to_content_handler_;
URLToArgsMap url_to_args_;
+ // Note: The keys are mapped/resolved URLs.
jamesr 2015/03/04 22:16:15 nit: mapped+resolved URLs? these are things that h
+ URLToNativeOptionsMap url_to_native_options_;
base::WeakPtrFactory<ApplicationManager> weak_ptr_factory_;
« no previous file with comments | « no previous file | shell/application_manager/application_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698