| Index: mojo/service_manager/service_manager.cc
|
| diff --git a/mojo/service_manager/service_manager.cc b/mojo/service_manager/service_manager.cc
|
| index fe8575dc75543cdd18c5e89f1e22bff1c38dd255..8b80825c8cea1256dee86e58be262af511450fe5 100644
|
| --- a/mojo/service_manager/service_manager.cc
|
| +++ b/mojo/service_manager/service_manager.cc
|
| @@ -32,6 +32,7 @@ class ServiceManager::ServiceFactory : public Shell, public ErrorHandler {
|
| url,
|
| pipe.handle_to_self.Pass());
|
| }
|
| +
|
| virtual ~ServiceFactory() {}
|
|
|
| void ConnectToClient(ScopedMessagePipeHandle handle) {
|
| @@ -73,7 +74,7 @@ ServiceManager::ServiceManager() : default_loader_(NULL) {
|
| }
|
|
|
| ServiceManager::~ServiceManager() {
|
| - for (ServiceFactoryMap::iterator it = url_to_service_factory_.begin();
|
| + for (URLToServiceFactoryMap::iterator it = url_to_service_factory_.begin();
|
| it != url_to_service_factory_.end(); ++it) {
|
| delete it->second;
|
| }
|
| @@ -88,22 +89,9 @@ ServiceManager* ServiceManager::GetInstance() {
|
| return &instance.Get();
|
| }
|
|
|
| -void ServiceManager::SetLoaderForURL(ServiceLoader* loader, const GURL& gurl) {
|
| - DCHECK(url_to_loader_.find(gurl) == url_to_loader_.end());
|
| - url_to_loader_[gurl] = loader;
|
| -}
|
| -
|
| -ServiceLoader* ServiceManager::GetLoaderForURL(const GURL& gurl) {
|
| - LoaderMap::const_iterator it = url_to_loader_.find(gurl);
|
| - if (it != url_to_loader_.end())
|
| - return it->second;
|
| - DCHECK(default_loader_);
|
| - return default_loader_;
|
| -}
|
| -
|
| void ServiceManager::Connect(const GURL& url,
|
| ScopedMessagePipeHandle client_handle) {
|
| - ServiceFactoryMap::const_iterator service_it =
|
| + URLToServiceFactoryMap::const_iterator service_it =
|
| url_to_service_factory_.find(url);
|
| ServiceFactory* service_factory;
|
| if (service_it != url_to_service_factory_.end()) {
|
| @@ -115,9 +103,32 @@ void ServiceManager::Connect(const GURL& url,
|
| service_factory->ConnectToClient(client_handle.Pass());
|
| }
|
|
|
| +void ServiceManager::SetLoaderForURL(ServiceLoader* loader, const GURL& url) {
|
| + DCHECK(url_to_loader_.find(url) == url_to_loader_.end());
|
| + url_to_loader_[url] = loader;
|
| +}
|
| +
|
| +void ServiceManager::SetLoaderForScheme(ServiceLoader* loader,
|
| + const std::string& scheme) {
|
| + DCHECK(scheme_to_loader_.find(scheme) == scheme_to_loader_.end());
|
| + scheme_to_loader_[scheme] = loader;
|
| +}
|
| +
|
| +ServiceLoader* ServiceManager::GetLoaderForURL(const GURL& url) {
|
| + URLToLoaderMap::const_iterator url_it = url_to_loader_.find(url);
|
| + if (url_it != url_to_loader_.end())
|
| + return url_it->second;
|
| + SchemeToLoaderMap::const_iterator scheme_it =
|
| + scheme_to_loader_.find(url.scheme());
|
| + if (scheme_it != scheme_to_loader_.end())
|
| + return scheme_it->second;
|
| + DCHECK(default_loader_);
|
| + return default_loader_;
|
| +}
|
| +
|
| void ServiceManager::OnServiceFactoryError(ServiceFactory* service_factory) {
|
| const GURL url = service_factory->url();
|
| - ServiceFactoryMap::iterator it = url_to_service_factory_.find(url);
|
| + URLToServiceFactoryMap::iterator it = url_to_service_factory_.find(url);
|
| DCHECK(it != url_to_service_factory_.end());
|
| delete it->second;
|
| url_to_service_factory_.erase(it);
|
|
|