Chromium Code Reviews| Index: shell/application_manager/application_manager.cc |
| diff --git a/shell/application_manager/application_manager.cc b/shell/application_manager/application_manager.cc |
| index 2b1c632cff09c335518ee15b6a29c4b12e122cf2..145e4a1f25a26886dfd7020bf5495ac5fb80e0ef 100644 |
| --- a/shell/application_manager/application_manager.cc |
| +++ b/shell/application_manager/application_manager.cc |
| @@ -23,6 +23,7 @@ |
| namespace mojo { |
| namespace { |
| + |
| // Used by TestAPI. |
| bool has_created_instance = false; |
| @@ -296,16 +297,26 @@ void ApplicationManager::HandleFetchCallback( |
| // application. That could either mean looking for the platform-specific dll |
| // header, or looking for some specific mojo signature prepended to the |
| // library. |
| + // TODO(vtl): (Maybe this should be done by the factory/runner?) |
| + |
| + NativeRunnerFactory::Options options; |
| + if (url_to_native_options_.find(fetcher->GetURL()) != |
|
qsr
2015/03/05 14:47:52
As you put it in the comment in SetNativeOptionsFo
viettrungluu
2015/03/05 18:30:10
That's easier now that you've landed your change.
|
| + url_to_native_options_.end()) { |
| + DVLOG(2) << "Applying stored native options to resolved URL " |
| + << fetcher->GetURL() << " (requested URL " << requested_url << ")"; |
| + options = url_to_native_options_[fetcher->GetURL()]; |
| + } |
| fetcher->AsPath( |
| blocking_pool_, |
| base::Bind(&ApplicationManager::RunNativeApplication, |
| weak_ptr_factory_.GetWeakPtr(), base::Passed(request.Pass()), |
| - cleanup_behavior, base::Passed(fetcher.Pass()))); |
| + options, cleanup_behavior, base::Passed(fetcher.Pass()))); |
| } |
| void ApplicationManager::RunNativeApplication( |
| InterfaceRequest<Application> application_request, |
| + const NativeRunnerFactory::Options& options, |
| NativeRunner::CleanupBehavior cleanup_behavior, |
| scoped_ptr<Fetcher> fetcher, |
| const base::FilePath& path, |
| @@ -321,7 +332,7 @@ void ApplicationManager::RunNativeApplication( |
| return; |
| } |
| - NativeRunner* runner = native_runner_factory_->Create().release(); |
| + NativeRunner* runner = native_runner_factory_->Create(options).release(); |
| native_runners_.push_back(runner); |
| runner->Start(path, cleanup_behavior, application_request.Pass(), |
| base::Bind(&ApplicationManager::CleanupRunner, |
| @@ -390,6 +401,18 @@ void ApplicationManager::SetArgsForURL(const std::vector<std::string>& args, |
| url_to_args_[url] = args; |
| } |
| +void ApplicationManager::SetNativeOptionsForURL( |
| + const NativeRunnerFactory::Options& options, |
| + const GURL& url) { |
| + // Apply mappings and resolution to get the resolved URL. |
| + GURL resolved_url = delegate_->ResolveURL(delegate_->ResolveMappings(url)); |
| + // TODO(vtl): We should probably also remove/disregard the query string (and |
| + // maybe canonicalize in other ways). |
| + DVLOG(2) << "Storing native options for resolved URL " << resolved_url |
| + << " (original URL " << url << ")"; |
| + url_to_native_options_[resolved_url] = options; |
| +} |
| + |
| ApplicationLoader* ApplicationManager::GetLoaderForURL(const GURL& url) { |
| auto url_it = url_to_loader_.find(StripQueryFromURL(url)); |
| if (url_it != url_to_loader_.end()) |