/* * Copyright (C) 2014 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // DO NOT EDIT THIS FILE. It is automatically generated from generate-enum-encoding-helpers.json // by the script: JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py #include "config.h" #include "generate-enum-encoding-helpers.json-TestReplayInputs.h" #if ENABLE(WEB_REPLAY) #include "InternalNamespaceImplIncludeDummy.h" #include "NondeterministicInput.h" #include "PlatformMouseEvent.h" #include namespace Test { SavedMouseButton::SavedMouseButton(MouseButton button) : NondeterministicInput() , m_button(button) { } SavedMouseButton::~SavedMouseButton() { } } // namespace Test namespace JSC { const String& InputTraits::type() { static NeverDestroyed type(ASCIILiteral("SavedMouseButton")); return type; } void InputTraits::encode(EncodedValue& encodedValue, const Test::SavedMouseButton& input) { encodedValue.put(ASCIILiteral("button"), input.button()); } bool InputTraits::decode(EncodedValue& encodedValue, std::unique_ptr& input) { Test::MouseButton button; if (!encodedValue.get(ASCIILiteral("button"), button)) return false; input = std::make_unique(button); return true; } EncodedValue EncodingTraits::encodeValue(const Test::InputQueue& enumValue) { switch (enumValue) { case Test::InputQueue::EventLoopInput: return EncodedValue::createString("EventLoopInput"); case Test::InputQueue::LoaderMemoizedData: return EncodedValue::createString("LoaderMemoizedData"); case Test::InputQueue::ScriptMemoizedData: return EncodedValue::createString("ScriptMemoizedData"); default: ASSERT_NOT_REACHED(); return EncodedValue::createString("Error!"); } } bool EncodingTraits::decodeValue(EncodedValue& encodedValue, Test::InputQueue& enumValue) { String enumString = encodedValue.convertTo(); if (enumString == "EventLoopInput") { enumValue = Test::InputQueue::EventLoopInput; return true; } if (enumString == "LoaderMemoizedData") { enumValue = Test::InputQueue::LoaderMemoizedData; return true; } if (enumString == "ScriptMemoizedData") { enumValue = Test::InputQueue::ScriptMemoizedData; return true; } return false; } EncodedValue EncodingTraits::encodeValue(const Test::MouseButton& enumValue) { EncodedValue encodedValue = EncodedValue::createArray(); if (enumValue & Test::NoButton) { encodedValue.append(ASCIILiteral("NoButton")); if (enumValue == Test::NoButton) return encodedValue; } if (enumValue & Test::LeftButton) { encodedValue.append(ASCIILiteral("LeftButton")); if (enumValue == Test::LeftButton) return encodedValue; } if (enumValue & Test::MiddleButton) { encodedValue.append(ASCIILiteral("MiddleButton")); if (enumValue == Test::MiddleButton) return encodedValue; } if (enumValue & Test::RightButton) { encodedValue.append(ASCIILiteral("RightButton")); if (enumValue == Test::RightButton) return encodedValue; } return encodedValue; } bool EncodingTraits::decodeValue(EncodedValue& encodedValue, Test::MouseButton& enumValue) { Vector enumStrings; if (!EncodingTraits>::decodeValue(encodedValue, enumStrings)) return false; for (const String& enumString : enumStrings) { if (enumString == "NoButton") enumValue = static_cast(enumValue | Test::NoButton); else if (enumString == "LeftButton") enumValue = static_cast(enumValue | Test::LeftButton); else if (enumString == "MiddleButton") enumValue = static_cast(enumValue | Test::MiddleButton); else if (enumString == "RightButton") enumValue = static_cast(enumValue | Test::RightButton); } return true; } EncodedValue EncodingTraits::encodeValue(const Test::PlatformEvent::Type& enumValue) { EncodedValue encodedValue = EncodedValue::createArray(); if (enumValue & Test::PlatformEvent::Mouse) { encodedValue.append(ASCIILiteral("Mouse")); if (enumValue == Test::PlatformEvent::Mouse) return encodedValue; } if (enumValue & Test::PlatformEvent::Key) { encodedValue.append(ASCIILiteral("Key")); if (enumValue == Test::PlatformEvent::Key) return encodedValue; } if (enumValue & Test::PlatformEvent::Touch) { encodedValue.append(ASCIILiteral("Touch")); if (enumValue == Test::PlatformEvent::Touch) return encodedValue; } if (enumValue & Test::PlatformEvent::Wheel) { encodedValue.append(ASCIILiteral("Wheel")); if (enumValue == Test::PlatformEvent::Wheel) return encodedValue; } return encodedValue; } bool EncodingTraits::decodeValue(EncodedValue& encodedValue, Test::PlatformEvent::Type& enumValue) { Vector enumStrings; if (!EncodingTraits>::decodeValue(encodedValue, enumStrings)) return false; for (const String& enumString : enumStrings) { if (enumString == "Mouse") enumValue = static_cast(enumValue | Test::PlatformEvent::Mouse); else if (enumString == "Key") enumValue = static_cast(enumValue | Test::PlatformEvent::Key); else if (enumString == "Touch") enumValue = static_cast(enumValue | Test::PlatformEvent::Touch); else if (enumString == "Wheel") enumValue = static_cast(enumValue | Test::PlatformEvent::Wheel); } return true; } } // namespace JSC #endif // ENABLE(WEB_REPLAY)