WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED LATER
136297
Web Replay: code generator should be able to encode/decode ViewState::Flags
https://bugs.webkit.org/show_bug.cgi?id=136297
Summary
Web Replay: code generator should be able to encode/decode ViewState::Flags
Brian Burg
Reported
2014-08-27 11:04:54 PDT
ViewState::(enum) is an anonymous enum inside of a struct (ViewState). ViewState::Flags is a typedef for uint32_t, and the enum values are used to bitwise-construct and query a uint32_t containing several flags. For replay we still want to serialize ViewState with string names, since ViewState::Flags could change in the future and we don't want reordering the flags to break serialization. But, since the enum is un-named and ViewState::Flags is a uint32_t, the existing code will try to define new EncodingTraits specializations for uint32_t, which isn't allowed. To sidestep this, I'll generate a wrapper class for each framework, so multiple specializations can exist for the same underlying type. Cases like ViewState will use a new flag in the inputs file to opt-in to this code generation behavior. Sketch: enum class JSEnum { FooBar, BarBaz }; template <JSEnum EnumName, typename StorageType> class UncheckedJSEnum { public: UncheckedJSEnum(StorageType value) : m_value(value) { } StorageType m_value; }; template<> struct EncodingTraits<UncheckedJSEnum<JSEnum::FooBar,uint32_t>> { ... };
Attachments
WIP
(30.05 KB, patch)
2014-09-24 16:36 PDT
,
Brian Burg
no flags
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Brian Burg
Comment 1
2014-08-27 11:59:58 PDT
Even simpler: enum class WebEnums { FooBar, BarBaz }; struct ViewState { typedef uint32_t Flags; }; template <typename EnumType, EnumType tag> class Phantom { }; template<> struct EncodingTraits<Phantom<JSEnums,JSEnums::FooBar>> { typedef ViewState::Flags DecodedType; static EncodedValue encodeValue(const DecodedType&); static bool decodeValue(EncodedValue&, const DecodedType&); };
Brian Burg
Comment 2
2014-09-24 16:36:44 PDT
Created
attachment 238625
[details]
WIP
Blaze Burg
Comment 3
2017-07-10 13:59:36 PDT
Closing web replay-related bugs until we resume working on the feature again.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug