2  * Copyright (C) 2014 Apple Inc. All rights reserved.
 
   4  * Redistribution and use in source and binary forms, with or without
 
   5  * modification, are permitted provided that the following conditions
 
   8  * 1.  Redistributions of source code must retain the above copyright
 
   9  *     notice, this list of conditions and the following disclaimer.
 
  10  * 2.  Redistributions in binary form must reproduce the above copyright
 
  11  *     notice, this list of conditions and the following disclaimer in the
 
  12  *     documentation and/or other materials provided with the distribution.
 
  14  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 
  15  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 
  16  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 
  17  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 
  18  * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 
  19  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 
  20  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
  21  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
  22  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
  23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 
  24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
  27 // DO NOT EDIT THIS FILE. It is automatically generated from generate-enum-encoding-helpers-with-guarded-values.json
 
  28 // by the script: JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py
 
  31 #include "generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h"
 
  33 #if ENABLE(WEB_REPLAY)
 
  34 #include "InternalNamespaceImplIncludeDummy.h"
 
  35 #include <platform/ExternalNamespaceImplIncludeDummy.h>
 
  36 #include <platform/PlatformMouseEvent.h>
 
  39 SavedMouseButton::SavedMouseButton(MouseButton button)
 
  40     : NondeterministicInput<SavedMouseButton>()
 
  45 SavedMouseButton::~SavedMouseButton()
 
  51 const AtomicString& InputTraits<Test::SavedMouseButton>::type()
 
  53     static NeverDestroyed<const AtomicString> type("SavedMouseButton", AtomicString::ConstructFromLiteral);
 
  57 void InputTraits<Test::SavedMouseButton>::encode(EncodedValue& encodedValue, const Test::SavedMouseButton& input)
 
  59     encodedValue.put<WebCore::MouseButton>(ASCIILiteral("button"), input.button());
 
  62 bool InputTraits<Test::SavedMouseButton>::decode(EncodedValue& encodedValue, std::unique_ptr<Test::SavedMouseButton>& input)
 
  64     WebCore::MouseButton button;
 
  65     if (!encodedValue.get<WebCore::MouseButton>(ASCIILiteral("button"), button))
 
  68     input = std::make_unique<Test::SavedMouseButton>(button);
 
  71 EncodedValue EncodingTraits<WebCore::MouseButton>::encodeValue(const WebCore::MouseButton& enumValue)
 
  73     EncodedValue encodedValue = EncodedValue::createArray();
 
  74     if (enumValue & WebCore::NoButton) {
 
  75         encodedValue.append<String>(ASCIILiteral("NoButton"));
 
  76         if (enumValue == WebCore::NoButton)
 
  79     if (enumValue & WebCore::LeftButton) {
 
  80         encodedValue.append<String>(ASCIILiteral("LeftButton"));
 
  81         if (enumValue == WebCore::LeftButton)
 
  84     if (enumValue & WebCore::MiddleButton) {
 
  85         encodedValue.append<String>(ASCIILiteral("MiddleButton"));
 
  86         if (enumValue == WebCore::MiddleButton)
 
  89     if (enumValue & WebCore::RightButton) {
 
  90         encodedValue.append<String>(ASCIILiteral("RightButton"));
 
  91         if (enumValue == WebCore::RightButton)
 
  94 #if ENABLE(SIDE_BUTTONS)
 
  95     if (enumValue & WebCore::LeftSideButton) {
 
  96         encodedValue.append<String>(ASCIILiteral("LeftSideButton"));
 
  97         if (enumValue == WebCore::LeftSideButton)
 
 100     if (enumValue & WebCore::RightSideButton) {
 
 101         encodedValue.append<String>(ASCIILiteral("RightSideButton"));
 
 102         if (enumValue == WebCore::RightSideButton)
 
 105 #endif // ENABLE(SIDE_BUTTONS)
 
 106 #if PLATFORM(WINDOWS)
 
 107     if (enumValue & WebCore::WindowsButton) {
 
 108         encodedValue.append<String>(ASCIILiteral("WindowsButton"));
 
 109         if (enumValue == WebCore::WindowsButton)
 
 112 #endif // PLATFORM(WINDOWS)
 
 116 bool EncodingTraits<WebCore::MouseButton>::decodeValue(EncodedValue& encodedValue, WebCore::MouseButton& enumValue)
 
 118     Vector<String> enumStrings;
 
 119     if (!EncodingTraits<Vector<String>>::decodeValue(encodedValue, enumStrings))
 
 122     for (String enumString : enumStrings) {
 
 123         if (enumString == "NoButton")
 
 124             enumValue = static_cast<WebCore::MouseButton>(enumValue | WebCore::NoButton);
 
 125         if (enumString == "LeftButton")
 
 126             enumValue = static_cast<WebCore::MouseButton>(enumValue | WebCore::LeftButton);
 
 127         if (enumString == "MiddleButton")
 
 128             enumValue = static_cast<WebCore::MouseButton>(enumValue | WebCore::MiddleButton);
 
 129         if (enumString == "RightButton")
 
 130             enumValue = static_cast<WebCore::MouseButton>(enumValue | WebCore::RightButton);
 
 131 #if ENABLE(SIDE_BUTTONS)
 
 132         if (enumString == "LeftSideButton")
 
 133             enumValue = static_cast<WebCore::MouseButton>(enumValue | WebCore::LeftSideButton);
 
 134         if (enumString == "RightSideButton")
 
 135             enumValue = static_cast<WebCore::MouseButton>(enumValue | WebCore::RightSideButton);
 
 136 #endif // ENABLE(SIDE_BUTTONS)
 
 137 #if PLATFORM(WINDOWS)
 
 138         if (enumString == "WindowsButton")
 
 139             enumValue = static_cast<WebCore::MouseButton>(enumValue | WebCore::WindowsButton);
 
 140 #endif // PLATFORM(WINDOWS)
 
 147 #endif // ENABLE(WEB_REPLAY)