Commit 58a87433 authored by wangxianzhu's avatar wangxianzhu Committed by Commit bot

Complete XXXPaintPropertyNode::operator== and toString()

operator== should check all fields that are part of paint properties.

toString() should output all fields that are checked in operator==, so that we can
see what changed in the failure message of paint property under-invalidation.

CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2606863002
Cr-Commit-Position: refs/heads/master@{#440901}
parent 2c8a4081
......@@ -5,6 +5,7 @@
#include "platform/graphics/CompositingReasons.h"
#include "wtf/StdLibExtras.h"
#include "wtf/text/StringBuilder.h"
namespace blink {
......@@ -141,4 +142,19 @@ const CompositingReasonStringMap kCompositingReasonStringMap[] = {
const size_t kNumberOfCompositingReasons =
WTF_ARRAY_LENGTH(kCompositingReasonStringMap);
String compositingReasonsAsString(CompositingReasons reasons) {
if (!reasons)
return "none";
StringBuilder builder;
for (size_t i = 0; i < kNumberOfCompositingReasons; ++i) {
if (reasons & kCompositingReasonStringMap[i].reason) {
if (builder.length())
builder.append(',');
builder.append(kCompositingReasonStringMap[i].shortName);
}
}
return builder.toString();
}
} // namespace blink
......@@ -7,6 +7,7 @@
#include "platform/PlatformExport.h"
#include "wtf/Allocator.h"
#include "wtf/text/WTFString.h"
#include <stdint.h>
namespace blink {
......@@ -181,6 +182,7 @@ struct CompositingReasonStringMap {
PLATFORM_EXPORT extern const CompositingReasonStringMap
kCompositingReasonStringMap[];
PLATFORM_EXPORT extern const size_t kNumberOfCompositingReasons;
PLATFORM_EXPORT String compositingReasonsAsString(CompositingReasons);
} // namespace blink
......
......@@ -17,9 +17,11 @@ ClipPaintPropertyNode* ClipPaintPropertyNode::root() {
}
String ClipPaintPropertyNode::toString() const {
return String::format("localTransformSpace=%p rect=%s",
m_localTransformSpace.get(),
m_clipRect.toString().ascii().data());
return String::format(
"parent=%p localTransformSpace=%p rect=%s directCompositingReasons=%s",
m_parent.get(), m_localTransformSpace.get(),
m_clipRect.toString().ascii().data(),
compositingReasonsAsString(m_directCompositingReasons).ascii().data());
}
} // namespace blink
......@@ -71,7 +71,8 @@ class PLATFORM_EXPORT ClipPaintPropertyNode
bool operator==(const ClipPaintPropertyNode& o) const {
return m_parent == o.m_parent &&
m_localTransformSpace == o.m_localTransformSpace &&
m_clipRect == o.m_clipRect;
m_clipRect == o.m_clipRect &&
m_directCompositingReasons == o.m_directCompositingReasons;
}
#endif
......
......@@ -25,9 +25,12 @@ cc::Layer* EffectPaintPropertyNode::ensureDummyLayer() const {
String EffectPaintPropertyNode::toString() const {
return String::format(
"localTransformSpace=%p outputClip=%p opacity=%f filter=%s blendMode=%s",
m_localTransformSpace.get(), m_outputClip.get(), m_opacity,
m_filter.toString().ascii().data(), SkBlendMode_Name(m_blendMode));
"parent=%p localTransformSpace=%p outputClip=%p opacity=%f filter=%s "
"blendMode=%s directCompositingReasons=%s",
m_parent.get(), m_localTransformSpace.get(), m_outputClip.get(),
m_opacity, m_filter.toString().ascii().data(),
SkBlendMode_Name(m_blendMode),
compositingReasonsAsString(m_directCompositingReasons).ascii().data());
}
} // namespace blink
......@@ -92,9 +92,10 @@ class PLATFORM_EXPORT EffectPaintPropertyNode
bool operator==(const EffectPaintPropertyNode& o) const {
return m_parent == o.m_parent &&
m_localTransformSpace == o.m_localTransformSpace &&
m_outputClip == o.m_outputClip && m_opacity == o.m_opacity &&
m_blendMode == o.m_blendMode &&
m_filter.equalsIgnoringReferenceFilters(o.m_filter);
m_outputClip == o.m_outputClip &&
m_filter.equalsIgnoringReferenceFilters(o.m_filter) &&
m_opacity == o.m_opacity && m_blendMode == o.m_blendMode &&
m_directCompositingReasons == o.m_directCompositingReasons;
}
#endif
......
......@@ -21,10 +21,11 @@ String ScrollPaintPropertyNode::toString() const {
MainThreadScrollingReason::mainThreadScrollingReasonsAsText(
m_mainThreadScrollingReasons);
return String::format(
"scrollOffsetTranslation=%s clip=%s bounds=%s userScrollableHorizontal=%s"
"parent=%p scrollOffsetTranslation=%s clip=%s bounds=%s "
"userScrollableHorizontal=%s"
" userScrollableVertical=%s mainThreadScrollingReasons=%s",
scrollOffset.toString().ascii().data(), m_clip.toString().ascii().data(),
m_bounds.toString().ascii().data(),
m_parent.get(), scrollOffset.toString().ascii().data(),
m_clip.toString().ascii().data(), m_bounds.toString().ascii().data(),
m_userScrollableHorizontal ? "yes" : "no",
m_userScrollableVertical ? "yes" : "no",
mainThreadScrollingReasonsAsText.c_str());
......
......@@ -14,7 +14,13 @@ TransformPaintPropertyNode* TransformPaintPropertyNode::root() {
}
String TransformPaintPropertyNode::toString() const {
return "transform=" + m_matrix.toString() + " origin=" + m_origin.toString();
return String::format(
"parent=%p transform=%s origin=%s flattensInheritedTransform=%s "
"renderContextID=%x directCompositingReasons=%s",
m_parent.get(), m_matrix.toString().ascii().data(),
m_origin.toString().ascii().data(),
m_flattensInheritedTransform ? "yes" : "no", m_renderingContextID,
compositingReasonsAsString(m_directCompositingReasons).ascii().data());
}
} // namespace blink
......@@ -36,7 +36,7 @@ class PLATFORM_EXPORT TransformPaintPropertyNode
unsigned renderingContextID = 0,
CompositingReasons directCompositingReasons = CompositingReasonNone) {
return adoptRef(new TransformPaintPropertyNode(
matrix, origin, std::move(parent), flattensInheritedTransform,
std::move(parent), matrix, origin, flattensInheritedTransform,
renderingContextID, directCompositingReasons));
}
......@@ -86,17 +86,18 @@ class PLATFORM_EXPORT TransformPaintPropertyNode
// a transform node before it has been updated, to later detect changes.
PassRefPtr<TransformPaintPropertyNode> clone() const {
return adoptRef(new TransformPaintPropertyNode(
m_matrix, m_origin, m_parent, m_flattensInheritedTransform,
m_parent, m_matrix, m_origin, m_flattensInheritedTransform,
m_renderingContextID, m_directCompositingReasons));
}
// The equality operator is used by FindPropertiesNeedingUpdate.h for checking
// if a transform node has changed.
bool operator==(const TransformPaintPropertyNode& o) const {
return m_matrix == o.m_matrix && m_origin == o.m_origin &&
m_parent == o.m_parent &&
return m_parent == o.m_parent && m_matrix == o.m_matrix &&
m_origin == o.m_origin &&
m_flattensInheritedTransform == o.m_flattensInheritedTransform &&
m_renderingContextID == o.m_renderingContextID;
m_renderingContextID == o.m_renderingContextID &&
m_directCompositingReasons == o.m_directCompositingReasons;
}
#endif
......@@ -104,22 +105,22 @@ class PLATFORM_EXPORT TransformPaintPropertyNode
private:
TransformPaintPropertyNode(
PassRefPtr<const TransformPaintPropertyNode> parent,
const TransformationMatrix& matrix,
const FloatPoint3D& origin,
PassRefPtr<const TransformPaintPropertyNode> parent,
bool flattensInheritedTransform,
unsigned renderingContextID,
CompositingReasons directCompositingReasons)
: m_matrix(matrix),
: m_parent(parent),
m_matrix(matrix),
m_origin(origin),
m_parent(parent),
m_flattensInheritedTransform(flattensInheritedTransform),
m_renderingContextID(renderingContextID),
m_directCompositingReasons(directCompositingReasons) {}
RefPtr<const TransformPaintPropertyNode> m_parent;
TransformationMatrix m_matrix;
FloatPoint3D m_origin;
RefPtr<const TransformPaintPropertyNode> m_parent;
bool m_flattensInheritedTransform;
unsigned m_renderingContextID;
CompositingReasons m_directCompositingReasons;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment