#ifndef EXTENSIONS_BROWSER_API_TEST_TEST_API_OBSERVER_REGISTRY_H_
#define EXTENSIONS_BROWSER_API_TEST_TEST_API_OBSERVER_REGISTRY_H_
#include <string>
#include "base/no_destructor.h"
#include "base/observer_list.h"
#include "extensions/browser/api/test/test_api_observer.h"
namespace base {
class Value;
}
namespace content {
class BrowserContext;
}
namespace extensions {
class TestSendMessageFunction;
class TestApiObserverRegistry {
public:
TestApiObserverRegistry(const TestApiObserverRegistry&) = delete;
TestApiObserverRegistry& operator=(const TestApiObserverRegistry&) = delete;
static TestApiObserverRegistry* GetInstance();
void NotifyTestPassed(content::BrowserContext* browser_context);
void NotifyTestFailed(content::BrowserContext* browser_context,
const std::string& message);
bool NotifyTestMessage(TestSendMessageFunction* function,
const std::string& message);
void NotifyScriptResult(const base::Value& result_value);
void AddObserver(TestApiObserver* observer);
void RemoveObserver(TestApiObserver* observer);
private:
friend class base::NoDestructor<TestApiObserverRegistry>;
TestApiObserverRegistry();
~TestApiObserverRegistry();
base::ObserverList<TestApiObserver> observers_;
};
}
#endif