1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#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 base
namespace extensions {
// A function that is only available in tests.
// Prior to running, checks that we are in a testing process.
class TestExtensionFunction : public ExtensionFunction {
protected:
~TestExtensionFunction() override;
// ExtensionFunction:
bool PreRunValidation(std::string* error) override;
};
class TestNotifyPassFunction : public TestExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("test.notifyPass", UNKNOWN)
protected:
~TestNotifyPassFunction() override;
// ExtensionFunction:
ResponseAction Run() override;
};
class TestNotifyFailFunction : public TestExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("test.notifyFail", UNKNOWN)
protected:
~TestNotifyFailFunction() override;
// ExtensionFunction:
ResponseAction Run() override;
};
class TestOpenFileUrlFunction : public TestExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("test.openFileUrl", UNKNOWN)
protected:
~TestOpenFileUrlFunction() override;
// ExtensionFunction:
ResponseAction Run() override;
};
class TestLogFunction : public TestExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("test.log", UNKNOWN)
protected:
~TestLogFunction() override;
// ExtensionFunction:
ResponseAction Run() override;
};
class TestSendMessageFunction : public ExtensionFunction {
public:
TestSendMessageFunction();
DECLARE_EXTENSION_FUNCTION("test.sendMessage", UNKNOWN)
// Sends a reply back to the calling extension. Many extensions don't need
// a reply and will just ignore it.
void Reply(const std::string& message);
// Sends an error back to the calling extension.
void ReplyWithError(const std::string& error);
protected:
~TestSendMessageFunction() override;
// UIExtensionFunction:
ResponseAction Run() override;
// Whether or not the function is currently waiting for a reply.
bool waiting_ = false;
std::optional<ResponseValue> response_;
};
class TestSendScriptResultFunction : public TestExtensionFunction {
public:
TestSendScriptResultFunction();
DECLARE_EXTENSION_FUNCTION("test.sendScriptResult", UNKNOWN)
private:
~TestSendScriptResultFunction() override;
// ExtensionFunction:
ResponseAction Run() override;
};
class TestGetConfigFunction : public TestExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("test.getConfig", UNKNOWN)
// Set the dictionary returned by chrome.test.getConfig().
// Does not take ownership of `value`.
static void set_test_config_state(base::Value::Dict* value);
protected:
// Tests that set configuration state do so by calling
// set_test_config_state() as part of test set up, and unsetting it
// during tear down. This singleton class holds a pointer to that
// state, owned by the test code.
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;
// ExtensionFunction:
ResponseAction Run() override;
};
class TestWaitForRoundTripFunction : public TestExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("test.waitForRoundTrip", UNKNOWN)
protected:
~TestWaitForRoundTripFunction() override;
// ExtensionFunction:
ResponseAction Run() override;
};
} // namespace extensions
#endif // EXTENSIONS_BROWSER_API_TEST_TEST_API_H_
|