blob: 3bfef63b8a5020bc7fb678b947d356116c90fc95 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef EXTENSIONS_TEST_TEST_SERVICE_REGISTRATION_MANAGER_H_
#define EXTENSIONS_TEST_TEST_SERVICE_REGISTRATION_MANAGER_H_
#include <map>
#include <string>
#include "extensions/browser/mojo/service_registration_manager.h"
namespace extensions {
class TestServiceRegistrationManager : public ServiceRegistrationManager {
public:
TestServiceRegistrationManager();
~TestServiceRegistrationManager() override;
// 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(
const base::Callback<void(mojo::InterfaceRequest<Interface>)>& factory) {
linked_ptr<internal::ServiceFactoryBase> service_factory(
new internal::ServiceFactory<Interface>(factory));
auto result = test_factories_.insert(
std::make_pair(Interface::Name_, service_factory));
DCHECK(result.second);
}
void AddServiceToServiceRegistry(
content::ServiceRegistry* service_registry,
internal::ServiceFactoryBase* service_factory) override;
private:
std::map<std::string, linked_ptr<internal::ServiceFactoryBase>>
test_factories_;
ServiceRegistrationManager* service_registration_manager_;
DISALLOW_COPY_AND_ASSIGN(TestServiceRegistrationManager);
};
} // namespace extensions
#endif // EXTENSIONS_TEST_TEST_SERVICE_REGISTRATION_MANAGER_H_