Changeset 167173 in webkit


Ignore:
Timestamp:
Apr 11, 2014 5:19:24 PM (10 years ago)
Author:
Brian Burg
Message:

Web Replay: consolidate decoding macros used in SerializationMethods
https://bugs.webkit.org/show_bug.cgi?id=131564

Reviewed by Timothy Hatcher.

We can use EncodingTraits<T>::DecodedType to create a local variable
with the appropriate decoded type, rather than special casing.

  • replay/SerializationMethods.cpp:

(JSC::EncodingTraits<NondeterministicInputBase>::decodeValue):
(JSC::EncodingTraits<KeypressCommand>::decodeValue):
(JSC::EncodingTraits<PlatformKeyboardEvent>::decodeValue):
(JSC::EncodingTraits<PlatformMouseEvent>::decodeValue):
(JSC::EncodingTraits<PlatformWheelEvent>::decodeValue):
(JSC::EncodingTraits<PluginData>::decodeValue):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r167172 r167173  
     12014-04-11  Brian J. Burg  <burg@cs.washington.edu>
     2
     3        Web Replay: consolidate decoding macros used in SerializationMethods
     4        https://bugs.webkit.org/show_bug.cgi?id=131564
     5
     6        Reviewed by Timothy Hatcher.
     7
     8        We can use EncodingTraits<T>::DecodedType to create a local variable
     9        with the appropriate decoded type, rather than special casing.
     10
     11        * replay/SerializationMethods.cpp:
     12        (JSC::EncodingTraits<NondeterministicInputBase>::decodeValue):
     13        (JSC::EncodingTraits<KeypressCommand>::decodeValue):
     14        (JSC::EncodingTraits<PlatformKeyboardEvent>::decodeValue):
     15        (JSC::EncodingTraits<PlatformMouseEvent>::decodeValue):
     16        (JSC::EncodingTraits<PlatformWheelEvent>::decodeValue):
     17        (JSC::EncodingTraits<PluginData>::decodeValue):
     18
    1192014-04-11  Beth Dakin  <bdakin@apple.com>
    220
  • trunk/Source/WebCore/replay/SerializationMethods.cpp

    r167085 r167173  
    127127        return false
    128128
     129#define DECODE_TYPE_WITH_KEY(_encodedValue, _type, _key) \
     130    EncodingTraits<_type>::DecodedType _key; \
     131    DECODE_TYPE_WITH_KEY_TO_LVALUE(_encodedValue, _type, _key, _key)
     132
    129133#define DECODE_OPTIONAL_TYPE_WITH_KEY_TO_LVALUE(_encodedValue, _type, _key, _lvalue) \
    130134    bool _key ## WasDecoded = _encodedValue.get<_type>(ASCIILiteral(#_key), _lvalue)
    131135
    132 #define DECODE_REFCOUNTED_TYPE_WITH_KEY(_encodedValue, _type, _key) \
    133     RefPtr<_type> _key; \
    134     DECODE_TYPE_WITH_KEY_TO_LVALUE(_encodedValue, _type, _key, _key)
    135 
    136 #define DECODE_UNIQUE_TYPE_WITH_KEY(_encodedValue, _type, _key) \
    137     std::unique_ptr<_type> _key; \
    138     DECODE_TYPE_WITH_KEY_TO_LVALUE(_encodedValue, _type, _key, _key)
    139 
    140 #define DECODE_SCALAR_TYPE_WITH_KEY(_encodedValue, _type, _key) \
    141     _type _key; \
    142     DECODE_TYPE_WITH_KEY_TO_LVALUE(_encodedValue, _type, _key, _key)
    143 
    144 #define DECODE_OPTIONAL_SCALAR_TYPE_WITH_KEY(_encodedValue, _type, _key) \
    145     _type _key; \
    146     DECODE_OPTIONAL_TYPE_WITH_KEY_TO_LVALUE(_encodedValue, _type, _key, _key)
    147 
    148 #define DECODE_OPTIONAL_REFCOUNTED_TYPE_WITH_KEY(_encodedValue, _type, _key) \
    149     RefPtr<_type> _key; \
     136#define DECODE_OPTIONAL_TYPE_WITH_KEY(_encodedValue, _type, _key) \
     137    EncodingTraits<_type>::DecodedType _key; \
    150138    DECODE_OPTIONAL_TYPE_WITH_KEY_TO_LVALUE(_encodedValue, _type, _key, _key)
    151139
     
    206194bool EncodingTraits<NondeterministicInputBase>::decodeValue(EncodedValue& encodedValue, std::unique_ptr<NondeterministicInputBase>& input)
    207195{
    208     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, String, type);
     196    DECODE_TYPE_WITH_KEY(encodedValue, String, type);
    209197
    210198#define DECODE_IF_TYPE_TAG_MATCHES(name) \
     
    247235bool EncodingTraits<KeypressCommand>::decodeValue(EncodedValue& encodedValue, KeypressCommand& decodedValue)
    248236{
    249     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, String, commandName);
    250     DECODE_OPTIONAL_SCALAR_TYPE_WITH_KEY(encodedValue, String, text);
     237    DECODE_TYPE_WITH_KEY(encodedValue, String, commandName);
     238    DECODE_OPTIONAL_TYPE_WITH_KEY(encodedValue, String, text);
    251239
    252240    decodedValue = textWasDecoded ? KeypressCommand(commandName, text) : KeypressCommand(commandName);
     
    290278bool EncodingTraits<PlatformKeyboardEvent>::decodeValue(EncodedValue& encodedValue, std::unique_ptr<PlatformKeyboardEvent>& input)
    291279{
    292     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, double, timestamp);
    293     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, PlatformEvent::Type, type);
    294     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, PlatformEvent::Modifiers, modifiers);
    295     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, String, text);
    296     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, String, unmodifiedText);
    297     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, String, keyIdentifier);
    298     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, int, windowsVirtualKeyCode);
    299     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, int, nativeVirtualKeyCode);
    300     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, int, macCharCode);
    301     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, bool, autoRepeat);
    302     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, bool, keypad);
    303     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, bool, systemKey);
     280    DECODE_TYPE_WITH_KEY(encodedValue, double, timestamp);
     281    DECODE_TYPE_WITH_KEY(encodedValue, PlatformEvent::Type, type);
     282    DECODE_TYPE_WITH_KEY(encodedValue, PlatformEvent::Modifiers, modifiers);
     283    DECODE_TYPE_WITH_KEY(encodedValue, String, text);
     284    DECODE_TYPE_WITH_KEY(encodedValue, String, unmodifiedText);
     285    DECODE_TYPE_WITH_KEY(encodedValue, String, keyIdentifier);
     286    DECODE_TYPE_WITH_KEY(encodedValue, int, windowsVirtualKeyCode);
     287    DECODE_TYPE_WITH_KEY(encodedValue, int, nativeVirtualKeyCode);
     288    DECODE_TYPE_WITH_KEY(encodedValue, int, macCharCode);
     289    DECODE_TYPE_WITH_KEY(encodedValue, bool, autoRepeat);
     290    DECODE_TYPE_WITH_KEY(encodedValue, bool, keypad);
     291    DECODE_TYPE_WITH_KEY(encodedValue, bool, systemKey);
    304292#if USE(APPKIT)
    305     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, bool, handledByInputMethod);
    306     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, Vector<KeypressCommand>, commands);
     293    DECODE_TYPE_WITH_KEY(encodedValue, bool, handledByInputMethod);
     294    DECODE_TYPE_WITH_KEY(encodedValue, Vector<KeypressCommand>, commands);
    307295#endif
    308296
     
    338326bool EncodingTraits<PlatformMouseEvent>::decodeValue(EncodedValue& encodedValue, std::unique_ptr<PlatformMouseEvent>& input)
    339327{
    340     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, int, positionX);
    341     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, int, positionY);
    342     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, int, globalPositionX);
    343     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, int, globalPositionY);
    344     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, MouseButton, button);
    345     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, PlatformEvent::Type, type);
    346     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, int, clickCount);
    347     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, bool, shiftKey);
    348     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, bool, ctrlKey);
    349     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, bool, altKey);
    350     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, bool, metaKey);
    351     DECODE_SCALAR_TYPE_WITH_KEY(encodedValue, int, timestamp);
     328    DECODE_TYPE_WITH_KEY(encodedValue, int, positionX);
     329    DECODE_TYPE_WITH_KEY(encodedValue, int, positionY);
     330    DECODE_TYPE_WITH_KEY(encodedValue, int, globalPositionX);
     331    DECODE_TYPE_WITH_KEY(encodedValue, int, globalPositionY);
     332    DECODE_TYPE_WITH_KEY(encodedValue, MouseButton, button);
     333    DECODE_TYPE_WITH_KEY(encodedValue, PlatformEvent::Type, type);
     334    DECODE_TYPE_WITH_KEY(encodedValue, int, clickCount);
     335    DECODE_TYPE_WITH_KEY(encodedValue, bool, shiftKey);
     336    DECODE_TYPE_WITH_KEY(encodedValue, bool, ctrlKey);
     337    DECODE_TYPE_WITH_KEY(encodedValue, bool, altKey);
     338    DECODE_TYPE_WITH_KEY(encodedValue, bool, metaKey);
     339    DECODE_TYPE_WITH_KEY(encodedValue, int, timestamp);
    352340
    353341    input = std::make_unique<PlatformMouseEvent>(IntPoint(positionX, positionY),
     
    418406bool EncodingTraits<PlatformWheelEvent>::decodeValue(EncodedValue& encodedData, std::unique_ptr<PlatformWheelEvent>& input)
    419407{
    420     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, int, positionX);
    421     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, int, positionY);
    422     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, int, globalPositionX);
    423     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, int, globalPositionY);
    424     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, bool, shiftKey);
    425     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, bool, ctrlKey);
    426     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, bool, altKey);
    427     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, bool, metaKey);
    428     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, float, deltaX);
    429     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, float, deltaY);
    430     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, float, wheelTicksX);
    431     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, float, wheelTicksY);
    432     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, PlatformWheelEventGranularity, granularity);
     408    DECODE_TYPE_WITH_KEY(encodedData, int, positionX);
     409    DECODE_TYPE_WITH_KEY(encodedData, int, positionY);
     410    DECODE_TYPE_WITH_KEY(encodedData, int, globalPositionX);
     411    DECODE_TYPE_WITH_KEY(encodedData, int, globalPositionY);
     412    DECODE_TYPE_WITH_KEY(encodedData, bool, shiftKey);
     413    DECODE_TYPE_WITH_KEY(encodedData, bool, ctrlKey);
     414    DECODE_TYPE_WITH_KEY(encodedData, bool, altKey);
     415    DECODE_TYPE_WITH_KEY(encodedData, bool, metaKey);
     416    DECODE_TYPE_WITH_KEY(encodedData, float, deltaX);
     417    DECODE_TYPE_WITH_KEY(encodedData, float, deltaY);
     418    DECODE_TYPE_WITH_KEY(encodedData, float, wheelTicksX);
     419    DECODE_TYPE_WITH_KEY(encodedData, float, wheelTicksY);
     420    DECODE_TYPE_WITH_KEY(encodedData, PlatformWheelEventGranularity, granularity);
    433421
    434422#if PLATFORM(COCOA)
     
    475463bool EncodingTraits<PluginData>::decodeValue(EncodedValue& encodedData, RefPtr<PluginData>& input)
    476464{
    477     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, Vector<PluginInfo>, plugins);
    478     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, Vector<MimeClassInfo>, mimes);
    479     DECODE_SCALAR_TYPE_WITH_KEY(encodedData, Vector<size_t>, mimePluginIndices);
     465    DECODE_TYPE_WITH_KEY(encodedData, Vector<PluginInfo>, plugins);
     466    DECODE_TYPE_WITH_KEY(encodedData, Vector<MimeClassInfo>, mimes);
     467    DECODE_TYPE_WITH_KEY(encodedData, Vector<size_t>, mimePluginIndices);
    480468
    481469    input = adoptRef(new DeserializedPluginData(plugins, mimes, mimePluginIndices));
Note: See TracChangeset for help on using the changeset viewer.