Chromium Code Reviews| Index: extensions/browser/service_registration_manager.h |
| diff --git a/extensions/browser/service_registration_manager.h b/extensions/browser/service_registration_manager.h |
| index cec84a0b9dc7b0cbbbe9514d95ccea19fe3e68af..e577de72d3507d1c02a94a5a3bbf23c5372769d6 100644 |
| --- a/extensions/browser/service_registration_manager.h |
| +++ b/extensions/browser/service_registration_manager.h |
| @@ -5,6 +5,7 @@ |
| #ifndef EXTENSIONS_BROWSER_SERVICE_REGISTRATION_MANAGER_H_ |
| #define EXTENSIONS_BROWSER_SERVICE_REGISTRATION_MANAGER_H_ |
| +#include <map> |
| #include <string> |
| #include <utility> |
| #include <vector> |
| @@ -27,6 +28,8 @@ class ServiceFactoryBase { |
| // Add this service factory to |service_registry|. |
| virtual void Register(content::ServiceRegistry* service_registry) const = 0; |
| + |
| + virtual std::string GetName() const = 0; |
| }; |
| template <typename Interface> |
| @@ -42,6 +45,8 @@ class ServiceFactory : public ServiceFactoryBase { |
| service_registry->AddService(factory_); |
| } |
| + virtual std::string GetName() const override { return Interface::Name_; } |
| + |
| private: |
| const base::Callback<void(mojo::InterfaceRequest<Interface>)> factory_; |
| DISALLOW_COPY_AND_ASSIGN(ServiceFactory); |
| @@ -77,6 +82,24 @@ class ServiceRegistrationManager { |
| new internal::ServiceFactory<Interface>(factory)))); |
| } |
| + // Overrides an existing service factory with |factory| for testing. This |
| + // does not alter the permission checks used to determine whether a service |
| + // is available. |
| + template <typename Interface> |
| + void OverrideServiceFactoryForTest( |
|
raymes
2014/10/15 21:07:09
It seems a bit nicer to me to avoid having this te
Sam McNally
2014/10/20 07:21:07
Done.
|
| + const base::Callback<void(mojo::InterfaceRequest<Interface>)>& factory) { |
| + bool inserted = |
| + test_factories_.insert(std::make_pair( |
| + Interface::Name_, |
| + linked_ptr<internal::ServiceFactoryBase>( |
| + new internal::ServiceFactory<Interface>( |
| + factory)))).second; |
| + DCHECK(inserted); |
| + } |
| + |
| + // Clears any overrides created using OverrideServiceFactoryForTest(). |
| + void ClearOverridesForTest(); |
| + |
| // Adds the service factories appropriate for |render_frame_host| to its |
| // ServiceRegistry. |
| void AddToRenderFrame(content::RenderFrameHost* render_frame_host); |
| @@ -86,6 +109,9 @@ class ServiceRegistrationManager { |
| std::vector<std::pair<std::string, linked_ptr<internal::ServiceFactoryBase>>> |
| factories_; |
| + std::map<std::string, linked_ptr<internal::ServiceFactoryBase>> |
| + test_factories_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(ServiceRegistrationManager); |
| }; |