ScrollingStatePositionedNode.cpp [plain text]
#include "config.h"
#include "ScrollingStatePositionedNode.h"
#include "GraphicsLayer.h"
#include "Logging.h"
#include "ScrollingStateTree.h"
#include <wtf/text/TextStream.h>
#if ENABLE(ASYNC_SCROLLING)
namespace WebCore {
Ref<ScrollingStatePositionedNode> ScrollingStatePositionedNode::create(ScrollingStateTree& stateTree, ScrollingNodeID nodeID)
{
return adoptRef(*new ScrollingStatePositionedNode(stateTree, nodeID));
}
ScrollingStatePositionedNode::ScrollingStatePositionedNode(ScrollingStateTree& tree, ScrollingNodeID nodeID)
: ScrollingStateNode(ScrollingNodeType::Positioned, tree, nodeID)
{
}
ScrollingStatePositionedNode::ScrollingStatePositionedNode(const ScrollingStatePositionedNode& node, ScrollingStateTree& adoptiveTree)
: ScrollingStateNode(node, adoptiveTree)
, m_relatedOverflowScrollingNodes(node.relatedOverflowScrollingNodes())
, m_constraints(node.layoutConstraints())
{
}
ScrollingStatePositionedNode::~ScrollingStatePositionedNode() = default;
Ref<ScrollingStateNode> ScrollingStatePositionedNode::clone(ScrollingStateTree& adoptiveTree)
{
return adoptRef(*new ScrollingStatePositionedNode(*this, adoptiveTree));
}
void ScrollingStatePositionedNode::setPropertyChangedBitsAfterReattach()
{
setPropertyChangedBit(RelatedOverflowScrollingNodes);
setPropertyChangedBit(LayoutConstraintData);
ScrollingStateNode::setPropertyChangedBitsAfterReattach();
}
void ScrollingStatePositionedNode::setRelatedOverflowScrollingNodes(Vector<ScrollingNodeID>&& nodes)
{
if (nodes == m_relatedOverflowScrollingNodes)
return;
m_relatedOverflowScrollingNodes = WTFMove(nodes);
setPropertyChanged(RelatedOverflowScrollingNodes);
}
void ScrollingStatePositionedNode::updateConstraints(const AbsolutePositionConstraints& constraints)
{
if (m_constraints == constraints)
return;
LOG_WITH_STREAM(Scrolling, stream << "ScrollingStatePositionedNode " << scrollingNodeID() << " updateConstraints " << constraints);
m_constraints = constraints;
setPropertyChanged(LayoutConstraintData);
}
void ScrollingStatePositionedNode::dumpProperties(TextStream& ts, ScrollingStateTreeAsTextBehavior behavior) const
{
ts << "Positioned node";
ScrollingStateNode::dumpProperties(ts, behavior);
ts.dumpProperty("layout constraints", m_constraints);
ts.dumpProperty("related overflow nodes", m_relatedOverflowScrollingNodes.size());
if (behavior & ScrollingStateTreeAsTextBehaviorIncludeNodeIDs) {
if (!m_relatedOverflowScrollingNodes.isEmpty()) {
TextStream::GroupScope scope(ts);
ts << "overflow nodes";
for (auto nodeID : m_relatedOverflowScrollingNodes)
ts << "\n" << indent << "nodeID " << nodeID;
}
}
}
}
#endif // ENABLE(ASYNC_SCROLLING)