#ifndef EXTENSIONS_BROWSER_API_TEST_TEST_API_H_
#define EXTENSIONS_BROWSER_API_TEST_TEST_API_H_
#include "base/memory/raw_ptr.h"
#include "base/values.h"
#include "extensions/browser/extension_function.h"
namespace base {
template <typename T>
struct DefaultSingletonTraits;
}
namespace extensions {
class TestExtensionFunction : public ExtensionFunction {
protected:
~TestExtensionFunction() override;
bool PreRunValidation(std::string* error) override;
};
class TestNotifyPassFunction : public TestExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("test.notifyPass", UNKNOWN)
protected:
~TestNotifyPassFunction() override;
ResponseAction Run() override;
};
class TestNotifyFailFunction : public TestExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("test.notifyFail", UNKNOWN)
protected:
~TestNotifyFailFunction() override;
ResponseAction Run() override;
};
class TestOpenFileUrlFunction : public TestExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("test.openFileUrl", UNKNOWN)
protected:
~TestOpenFileUrlFunction() override;
ResponseAction Run() override;
};
class TestLogFunction : public TestExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("test.log", UNKNOWN)
protected:
~TestLogFunction() override;
ResponseAction Run() override;
};
class TestSendMessageFunction : public ExtensionFunction {
public:
TestSendMessageFunction();
DECLARE_EXTENSION_FUNCTION("test.sendMessage", UNKNOWN)
void Reply(const std::string& message);
void ReplyWithError(const std::string& error);
protected:
~TestSendMessageFunction() override;
ResponseAction Run() override;
bool waiting_ = false;
std::optional<ResponseValue> response_;
};
class TestSendScriptResultFunction : public TestExtensionFunction {
public:
TestSendScriptResultFunction();
DECLARE_EXTENSION_FUNCTION("test.sendScriptResult", UNKNOWN)
private:
~TestSendScriptResultFunction() override;
ResponseAction Run() override;
};
class TestGetConfigFunction : public TestExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("test.getConfig", UNKNOWN)
static void set_test_config_state(base::Value::Dict* value);
protected:
class TestConfigState {
public:
TestConfigState(const TestConfigState&) = delete;
TestConfigState& operator=(const TestConfigState&) = delete;
static TestConfigState* GetInstance();
void set_config_state(base::Value::Dict* config_state) {
config_state_ = config_state;
}
const base::Value::Dict* config_state() { return config_state_; }
private:
friend struct base::DefaultSingletonTraits<TestConfigState>;
TestConfigState();
raw_ptr<base::Value::Dict, DanglingUntriaged> config_state_;
};
~TestGetConfigFunction() override;
ResponseAction Run() override;
};
class TestWaitForRoundTripFunction : public TestExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("test.waitForRoundTrip", UNKNOWN)
protected:
~TestWaitForRoundTripFunction() override;
ResponseAction Run() override;
};
}
#endif