generate-enum-encoding-helpers.json-TestReplayInputs.cpp [plain text]
#include "config.h"
#include "generate-enum-encoding-helpers.json-TestReplayInputs.h"
#if ENABLE(WEB_REPLAY)
#include "InternalNamespaceImplIncludeDummy.h"
#include <platform/ExternalNamespaceImplIncludeDummy.h>
#include <platform/PlatformMouseEvent.h>
#include <replay/NondeterministicInput.h>
namespace Test {
SavedMouseButton::SavedMouseButton(MouseButton button)
: NondeterministicInput<SavedMouseButton>()
, m_button(button)
{
}
SavedMouseButton::~SavedMouseButton()
{
}
}
namespace JSC {
const AtomicString& InputTraits<Test::SavedMouseButton>::type()
{
static NeverDestroyed<const AtomicString> type("SavedMouseButton", AtomicString::ConstructFromLiteral);
return type;
}
void InputTraits<Test::SavedMouseButton>::encode(EncodedValue& encodedValue, const Test::SavedMouseButton& input)
{
encodedValue.put<WebCore::MouseButton>(ASCIILiteral("button"), input.button());
}
bool InputTraits<Test::SavedMouseButton>::decode(EncodedValue& encodedValue, std::unique_ptr<Test::SavedMouseButton>& input)
{
WebCore::MouseButton button;
if (!encodedValue.get<WebCore::MouseButton>(ASCIILiteral("button"), button))
return false;
input = std::make_unique<Test::SavedMouseButton>(button);
return true;
}
EncodedValue EncodingTraits<InputQueue>::encodeValue(const InputQueue& enumValue)
{
switch (enumValue) {
case InputQueue::EventLoopInput: return EncodedValue::createString("EventLoopInput");
case InputQueue::LoaderMemoizedData: return EncodedValue::createString("LoaderMemoizedData");
case InputQueue::ScriptMemoizedData: return EncodedValue::createString("ScriptMemoizedData");
default: ASSERT_NOT_REACHED(); return EncodedValue::createString("Error!");
}
}
bool EncodingTraits<InputQueue>::decodeValue(EncodedValue& encodedValue, InputQueue& enumValue)
{
String enumString = encodedValue.convertTo<String>();
if (enumString == "EventLoopInput") {
enumValue = InputQueue::EventLoopInput;
return true;
}
if (enumString == "LoaderMemoizedData") {
enumValue = InputQueue::LoaderMemoizedData;
return true;
}
if (enumString == "ScriptMemoizedData") {
enumValue = InputQueue::ScriptMemoizedData;
return true;
}
return false;
}
EncodedValue EncodingTraits<WebCore::MouseButton>::encodeValue(const WebCore::MouseButton& enumValue)
{
EncodedValue encodedValue = EncodedValue::createArray();
if (enumValue & WebCore::NoButton) {
encodedValue.append<String>(ASCIILiteral("NoButton"));
if (enumValue == WebCore::NoButton)
return encodedValue;
}
if (enumValue & WebCore::LeftButton) {
encodedValue.append<String>(ASCIILiteral("LeftButton"));
if (enumValue == WebCore::LeftButton)
return encodedValue;
}
if (enumValue & WebCore::MiddleButton) {
encodedValue.append<String>(ASCIILiteral("MiddleButton"));
if (enumValue == WebCore::MiddleButton)
return encodedValue;
}
if (enumValue & WebCore::RightButton) {
encodedValue.append<String>(ASCIILiteral("RightButton"));
if (enumValue == WebCore::RightButton)
return encodedValue;
}
return encodedValue;
}
bool EncodingTraits<WebCore::MouseButton>::decodeValue(EncodedValue& encodedValue, WebCore::MouseButton& enumValue)
{
Vector<String> enumStrings;
if (!EncodingTraits<Vector<String>>::decodeValue(encodedValue, enumStrings))
return false;
for (String enumString : enumStrings) {
if (enumString == "NoButton")
enumValue = static_cast<WebCore::MouseButton>(enumValue | WebCore::NoButton);
if (enumString == "LeftButton")
enumValue = static_cast<WebCore::MouseButton>(enumValue | WebCore::LeftButton);
if (enumString == "MiddleButton")
enumValue = static_cast<WebCore::MouseButton>(enumValue | WebCore::MiddleButton);
if (enumString == "RightButton")
enumValue = static_cast<WebCore::MouseButton>(enumValue | WebCore::RightButton);
}
return true;
}
}
#endif // ENABLE(WEB_REPLAY)