| Index: mojo/shell/application_manager.h
|
| diff --git a/mojo/shell/application_manager.h b/mojo/shell/application_manager.h
|
| index 02f9a38c9451be96028648b5ed7f69380e3f371e..1f9bf0c07c1d1e63b1607c280e7c04aaf02a5b8c 100644
|
| --- a/mojo/shell/application_manager.h
|
| +++ b/mojo/shell/application_manager.h
|
| @@ -16,6 +16,8 @@
|
| #include "mojo/application/public/interfaces/shell.mojom.h"
|
| #include "mojo/public/cpp/bindings/interface_ptr_info.h"
|
| #include "mojo/public/cpp/bindings/interface_request.h"
|
| +#include "mojo/services/network/public/interfaces/network_service.mojom.h"
|
| +#include "mojo/services/network/public/interfaces/url_loader_factory.mojom.h"
|
| #include "mojo/services/updater/updater.mojom.h"
|
| #include "mojo/shell/application_loader.h"
|
| #include "mojo/shell/capability_filter.h"
|
| @@ -33,12 +35,31 @@
|
| namespace mojo {
|
| namespace shell {
|
|
|
| -class ApplicationFetcher;
|
| class ApplicationInstance;
|
| class ContentHandlerConnection;
|
|
|
| class ApplicationManager {
|
| public:
|
| + class Delegate {
|
| + public:
|
| + // Gives the delegate a chance to apply any mappings for the specified url.
|
| + // This should not resolve 'mojo' urls, that is done by ResolveMojoURL().
|
| + virtual GURL ResolveMappings(const GURL& url) = 0;
|
| +
|
| + // Used to map a url with the scheme 'mojo' to the appropriate url. Return
|
| + // |url| if the scheme is not 'mojo'.
|
| + virtual GURL ResolveMojoURL(const GURL& url) = 0;
|
| +
|
| + // Asks the delegate to create a Fetcher for the specified url. Return
|
| + // true on success, false if the default fetcher should be created.
|
| + virtual bool CreateFetcher(
|
| + const GURL& url,
|
| + const Fetcher::FetchCallback& loader_callback) = 0;
|
| +
|
| + protected:
|
| + virtual ~Delegate() {}
|
| + };
|
| +
|
| // API for testing.
|
| class TestAPI {
|
| public:
|
| @@ -56,7 +77,7 @@
|
| DISALLOW_COPY_AND_ASSIGN(TestAPI);
|
| };
|
|
|
| - explicit ApplicationManager(scoped_ptr<ApplicationFetcher> fetcher);
|
| + explicit ApplicationManager(Delegate* delegate);
|
| ~ApplicationManager();
|
|
|
| // Loads a service if necessary and establishes a new client connection.
|
| @@ -112,6 +133,7 @@
|
| void set_blocking_pool(base::SequencedWorkerPool* blocking_pool) {
|
| blocking_pool_ = blocking_pool;
|
| }
|
| + void set_disable_cache(bool disable_cache) { disable_cache_ = disable_cache; }
|
| // Sets a Loader to be used for a specific url.
|
| void SetLoaderForURL(scoped_ptr<ApplicationLoader> loader, const GURL& url);
|
| // Sets a Loader to be used for a specific url scheme.
|
| @@ -159,7 +181,7 @@
|
| // may be different from |(*params)->app_url()| because of mappings and
|
| // resolution rules.
|
| // Takes the contents of |params| only when it returns true.
|
| - void ConnectToApplicationWithLoader(
|
| + bool ConnectToApplicationWithLoader(
|
| scoped_ptr<ConnectToApplicationParams>* params,
|
| const GURL& resolved_url,
|
| ApplicationLoader* loader);
|
| @@ -172,11 +194,13 @@
|
| // the requested application before any mappings/resolution have been applied.
|
| // The corresponding URLRequest struct in |params| has been taken.
|
| void HandleFetchCallback(scoped_ptr<ConnectToApplicationParams> params,
|
| + NativeApplicationCleanup cleanup,
|
| scoped_ptr<Fetcher> fetcher);
|
|
|
| void RunNativeApplication(InterfaceRequest<Application> application_request,
|
| bool start_sandboxed,
|
| const NativeRunnerFactory::Options& options,
|
| + NativeApplicationCleanup cleanup,
|
| scoped_ptr<Fetcher> fetcher,
|
| const base::FilePath& file_path,
|
| bool path_exists);
|
| @@ -192,8 +216,8 @@
|
| InterfaceRequest<Application> application_request,
|
| URLResponsePtr url_response);
|
|
|
| - // Returns the appropriate loader for |url|, or the default loader if there is
|
| - // no loader configured for the URL.
|
| + // Returns the appropriate loader for |url|, or null if there is no loader
|
| + // configured for the URL.
|
| ApplicationLoader* GetLoaderForURL(const GURL& url);
|
|
|
| void CleanupRunner(NativeRunner* runner);
|
| @@ -202,7 +226,7 @@
|
| const GURL& application_url,
|
| const std::string& interface_name);
|
|
|
| - scoped_ptr<ApplicationFetcher> const fetcher_;
|
| + Delegate* const delegate_;
|
| // Loader management.
|
| // Loaders are chosen in the order they are listed here.
|
| URLToLoaderMap url_to_loader_;
|
| @@ -217,9 +241,12 @@
|
| URLToNativeOptionsMap url_to_native_options_;
|
|
|
| base::SequencedWorkerPool* blocking_pool_;
|
| + NetworkServicePtr network_service_;
|
| + URLLoaderFactoryPtr url_loader_factory_;
|
| updater::UpdaterPtr updater_;
|
| MimeTypeToURLMap mime_type_to_url_;
|
| ScopedVector<NativeRunner> native_runners_;
|
| + bool disable_cache_;
|
| // Counter used to assign ids to content_handlers.
|
| uint32_t content_handler_id_counter_;
|
| base::WeakPtrFactory<ApplicationManager> weak_ptr_factory_;
|
|
|