Bug 1613009 - Make SimpleLayerAttributes explicitly serialized. r=botond

Depends on D66819

Differential Revision: https://phabricator.services.mozilla.com/D66820

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Kartikaya Gupta 2020-03-13 19:59:04 +00:00
parent 71c660e36c
commit 4795d60bd9
3 changed files with 61 additions and 8 deletions

View File

@ -265,6 +265,12 @@ struct ParamTraits<mozilla::gfx::ColorSpace>
mozilla::gfx::ColorSpace::SRGB,
mozilla::gfx::ColorSpace::Max> {};
template <>
struct ParamTraits<mozilla::gfx::CompositionOp>
: public ContiguousEnumSerializerInclusive<
mozilla::gfx::CompositionOp, mozilla::gfx::CompositionOp::OP_OVER,
mozilla::gfx::CompositionOp::OP_COUNT> {};
/*
template <>
struct ParamTraits<mozilla::PixelFormat>

View File

@ -132,8 +132,7 @@ struct ScrollbarData {
};
/**
* Infrequently changing layer attributes that require no special
* serialization work.
* Infrequently changing layer attributes.
*/
class SimpleLayerAttributes final {
friend struct IPC::ParamTraits<mozilla::layers::SimpleLayerAttributes>;
@ -388,6 +387,8 @@ class SimpleLayerAttributes final {
SideBits mSides;
};
Maybe<FixedPositionData> mFixedPositionData;
friend struct IPC::ParamTraits<
mozilla::layers::SimpleLayerAttributes::FixedPositionData>;
struct StickyPositionData {
ScrollableLayerGuid::ViewID mScrollId;
@ -395,11 +396,11 @@ class SimpleLayerAttributes final {
LayerRectAbsolute mInner;
};
Maybe<StickyPositionData> mStickyPositionData;
friend struct IPC::ParamTraits<
mozilla::layers::SimpleLayerAttributes::StickyPositionData>;
/**
* This class may only contain plain-old-data members that can be safely
* copied over IPC. Make sure to add new members to operator ==.
*/
// Make sure to add new members to operator== and the ParamTraits template
// instantiation.
};
} // namespace layers

View File

@ -836,8 +836,54 @@ struct ParamTraits<mozilla::layers::ScrollbarData> {
};
template <>
struct ParamTraits<mozilla::layers::SimpleLayerAttributes>
: public PlainOldDataSerializer<mozilla::layers::SimpleLayerAttributes> {};
struct ParamTraits<mozilla::layers::SimpleLayerAttributes::FixedPositionData>
: public PlainOldDataSerializer<
mozilla::layers::SimpleLayerAttributes::FixedPositionData> {};
template <>
struct ParamTraits<mozilla::layers::SimpleLayerAttributes::StickyPositionData>
: public PlainOldDataSerializer<
mozilla::layers::SimpleLayerAttributes::StickyPositionData> {};
template <>
struct ParamTraits<mozilla::layers::SimpleLayerAttributes> {
typedef mozilla::layers::SimpleLayerAttributes paramType;
static void Write(Message* aMsg, const paramType& aParam) {
WriteParam(aMsg, aParam.mTransform);
WriteParam(aMsg, aParam.mTransformIsPerspective);
WriteParam(aMsg, aParam.mScrolledClip);
WriteParam(aMsg, aParam.mPostXScale);
WriteParam(aMsg, aParam.mPostYScale);
WriteParam(aMsg, aParam.mContentFlags);
WriteParam(aMsg, aParam.mOpacity);
WriteParam(aMsg, aParam.mIsFixedPosition);
WriteParam(aMsg, aParam.mIsAsyncZoomContainerForViewId);
WriteParam(aMsg, aParam.mScrollbarData);
WriteParam(aMsg, aParam.mMixBlendMode);
WriteParam(aMsg, aParam.mForceIsolatedGroup);
WriteParam(aMsg, aParam.mFixedPositionData);
WriteParam(aMsg, aParam.mStickyPositionData);
}
static bool Read(const Message* aMsg, PickleIterator* aIter,
paramType* aResult) {
return ReadParam(aMsg, aIter, &aResult->mTransform) &&
ReadParam(aMsg, aIter, &aResult->mTransformIsPerspective) &&
ReadParam(aMsg, aIter, &aResult->mScrolledClip) &&
ReadParam(aMsg, aIter, &aResult->mPostXScale) &&
ReadParam(aMsg, aIter, &aResult->mPostYScale) &&
ReadParam(aMsg, aIter, &aResult->mContentFlags) &&
ReadParam(aMsg, aIter, &aResult->mOpacity) &&
ReadParam(aMsg, aIter, &aResult->mIsFixedPosition) &&
ReadParam(aMsg, aIter, &aResult->mIsAsyncZoomContainerForViewId) &&
ReadParam(aMsg, aIter, &aResult->mScrollbarData) &&
ReadParam(aMsg, aIter, &aResult->mMixBlendMode) &&
ReadParam(aMsg, aIter, &aResult->mForceIsolatedGroup) &&
ReadParam(aMsg, aIter, &aResult->mFixedPositionData) &&
ReadParam(aMsg, aIter, &aResult->mStickyPositionData);
}
};
template <>
struct ParamTraits<mozilla::layers::ScrollUpdateInfo>