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 @@ ...@@ -5,6 +5,7 @@
#include "platform/graphics/CompositingReasons.h" #include "platform/graphics/CompositingReasons.h"
#include "wtf/StdLibExtras.h" #include "wtf/StdLibExtras.h"
#include "wtf/text/StringBuilder.h"
namespace blink { namespace blink {
...@@ -141,4 +142,19 @@ const CompositingReasonStringMap kCompositingReasonStringMap[] = { ...@@ -141,4 +142,19 @@ const CompositingReasonStringMap kCompositingReasonStringMap[] = {
const size_t kNumberOfCompositingReasons = const size_t kNumberOfCompositingReasons =
WTF_ARRAY_LENGTH(kCompositingReasonStringMap); 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 } // namespace blink
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "platform/PlatformExport.h" #include "platform/PlatformExport.h"
#include "wtf/Allocator.h" #include "wtf/Allocator.h"
#include "wtf/text/WTFString.h"
#include <stdint.h> #include <stdint.h>
namespace blink { namespace blink {
...@@ -181,6 +182,7 @@ struct CompositingReasonStringMap { ...@@ -181,6 +182,7 @@ struct CompositingReasonStringMap {
PLATFORM_EXPORT extern const CompositingReasonStringMap PLATFORM_EXPORT extern const CompositingReasonStringMap
kCompositingReasonStringMap[]; kCompositingReasonStringMap[];
PLATFORM_EXPORT extern const size_t kNumberOfCompositingReasons; PLATFORM_EXPORT extern const size_t kNumberOfCompositingReasons;
PLATFORM_EXPORT String compositingReasonsAsString(CompositingReasons);
} // namespace blink } // namespace blink
......
...@@ -17,9 +17,11 @@ ClipPaintPropertyNode* ClipPaintPropertyNode::root() { ...@@ -17,9 +17,11 @@ ClipPaintPropertyNode* ClipPaintPropertyNode::root() {
} }
String ClipPaintPropertyNode::toString() const { String ClipPaintPropertyNode::toString() const {
return String::format("localTransformSpace=%p rect=%s", return String::format(
m_localTransformSpace.get(), "parent=%p localTransformSpace=%p rect=%s directCompositingReasons=%s",
m_clipRect.toString().ascii().data()); m_parent.get(), m_localTransformSpace.get(),
m_clipRect.toString().ascii().data(),
compositingReasonsAsString(m_directCompositingReasons).ascii().data());
} }
} // namespace blink } // namespace blink
...@@ -71,7 +71,8 @@ class PLATFORM_EXPORT ClipPaintPropertyNode ...@@ -71,7 +71,8 @@ class PLATFORM_EXPORT ClipPaintPropertyNode
bool operator==(const ClipPaintPropertyNode& o) const { bool operator==(const ClipPaintPropertyNode& o) const {
return m_parent == o.m_parent && return m_parent == o.m_parent &&
m_localTransformSpace == o.m_localTransformSpace && m_localTransformSpace == o.m_localTransformSpace &&
m_clipRect == o.m_clipRect; m_clipRect == o.m_clipRect &&
m_directCompositingReasons == o.m_directCompositingReasons;
} }
#endif #endif
......
...@@ -25,9 +25,12 @@ cc::Layer* EffectPaintPropertyNode::ensureDummyLayer() const { ...@@ -25,9 +25,12 @@ cc::Layer* EffectPaintPropertyNode::ensureDummyLayer() const {
String EffectPaintPropertyNode::toString() const { String EffectPaintPropertyNode::toString() const {
return String::format( return String::format(
"localTransformSpace=%p outputClip=%p opacity=%f filter=%s blendMode=%s", "parent=%p localTransformSpace=%p outputClip=%p opacity=%f filter=%s "
m_localTransformSpace.get(), m_outputClip.get(), m_opacity, "blendMode=%s directCompositingReasons=%s",
m_filter.toString().ascii().data(), SkBlendMode_Name(m_blendMode)); 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 } // namespace blink
...@@ -92,9 +92,10 @@ class PLATFORM_EXPORT EffectPaintPropertyNode ...@@ -92,9 +92,10 @@ class PLATFORM_EXPORT EffectPaintPropertyNode
bool operator==(const EffectPaintPropertyNode& o) const { bool operator==(const EffectPaintPropertyNode& o) const {
return m_parent == o.m_parent && return m_parent == o.m_parent &&
m_localTransformSpace == o.m_localTransformSpace && m_localTransformSpace == o.m_localTransformSpace &&
m_outputClip == o.m_outputClip && m_opacity == o.m_opacity && m_outputClip == o.m_outputClip &&
m_blendMode == o.m_blendMode && m_filter.equalsIgnoringReferenceFilters(o.m_filter) &&
m_filter.equalsIgnoringReferenceFilters(o.m_filter); m_opacity == o.m_opacity && m_blendMode == o.m_blendMode &&
m_directCompositingReasons == o.m_directCompositingReasons;
} }
#endif #endif
......
...@@ -21,10 +21,11 @@ String ScrollPaintPropertyNode::toString() const { ...@@ -21,10 +21,11 @@ String ScrollPaintPropertyNode::toString() const {
MainThreadScrollingReason::mainThreadScrollingReasonsAsText( MainThreadScrollingReason::mainThreadScrollingReasonsAsText(
m_mainThreadScrollingReasons); m_mainThreadScrollingReasons);
return String::format( 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", " userScrollableVertical=%s mainThreadScrollingReasons=%s",
scrollOffset.toString().ascii().data(), m_clip.toString().ascii().data(), m_parent.get(), scrollOffset.toString().ascii().data(),
m_bounds.toString().ascii().data(), m_clip.toString().ascii().data(), m_bounds.toString().ascii().data(),
m_userScrollableHorizontal ? "yes" : "no", m_userScrollableHorizontal ? "yes" : "no",
m_userScrollableVertical ? "yes" : "no", m_userScrollableVertical ? "yes" : "no",
mainThreadScrollingReasonsAsText.c_str()); mainThreadScrollingReasonsAsText.c_str());
......
...@@ -14,7 +14,13 @@ TransformPaintPropertyNode* TransformPaintPropertyNode::root() { ...@@ -14,7 +14,13 @@ TransformPaintPropertyNode* TransformPaintPropertyNode::root() {
} }
String TransformPaintPropertyNode::toString() const { 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 } // namespace blink
...@@ -36,7 +36,7 @@ class PLATFORM_EXPORT TransformPaintPropertyNode ...@@ -36,7 +36,7 @@ class PLATFORM_EXPORT TransformPaintPropertyNode
unsigned renderingContextID = 0, unsigned renderingContextID = 0,
CompositingReasons directCompositingReasons = CompositingReasonNone) { CompositingReasons directCompositingReasons = CompositingReasonNone) {
return adoptRef(new TransformPaintPropertyNode( return adoptRef(new TransformPaintPropertyNode(
matrix, origin, std::move(parent), flattensInheritedTransform, std::move(parent), matrix, origin, flattensInheritedTransform,
renderingContextID, directCompositingReasons)); renderingContextID, directCompositingReasons));
} }
...@@ -86,17 +86,18 @@ class PLATFORM_EXPORT TransformPaintPropertyNode ...@@ -86,17 +86,18 @@ class PLATFORM_EXPORT TransformPaintPropertyNode
// a transform node before it has been updated, to later detect changes. // a transform node before it has been updated, to later detect changes.
PassRefPtr<TransformPaintPropertyNode> clone() const { PassRefPtr<TransformPaintPropertyNode> clone() const {
return adoptRef(new TransformPaintPropertyNode( return adoptRef(new TransformPaintPropertyNode(
m_matrix, m_origin, m_parent, m_flattensInheritedTransform, m_parent, m_matrix, m_origin, m_flattensInheritedTransform,
m_renderingContextID, m_directCompositingReasons)); m_renderingContextID, m_directCompositingReasons));
} }
// The equality operator is used by FindPropertiesNeedingUpdate.h for checking // The equality operator is used by FindPropertiesNeedingUpdate.h for checking
// if a transform node has changed. // if a transform node has changed.
bool operator==(const TransformPaintPropertyNode& o) const { bool operator==(const TransformPaintPropertyNode& o) const {
return m_matrix == o.m_matrix && m_origin == o.m_origin && return m_parent == o.m_parent && m_matrix == o.m_matrix &&
m_parent == o.m_parent && m_origin == o.m_origin &&
m_flattensInheritedTransform == o.m_flattensInheritedTransform && m_flattensInheritedTransform == o.m_flattensInheritedTransform &&
m_renderingContextID == o.m_renderingContextID; m_renderingContextID == o.m_renderingContextID &&
m_directCompositingReasons == o.m_directCompositingReasons;
} }
#endif #endif
...@@ -104,22 +105,22 @@ class PLATFORM_EXPORT TransformPaintPropertyNode ...@@ -104,22 +105,22 @@ class PLATFORM_EXPORT TransformPaintPropertyNode
private: private:
TransformPaintPropertyNode( TransformPaintPropertyNode(
PassRefPtr<const TransformPaintPropertyNode> parent,
const TransformationMatrix& matrix, const TransformationMatrix& matrix,
const FloatPoint3D& origin, const FloatPoint3D& origin,
PassRefPtr<const TransformPaintPropertyNode> parent,
bool flattensInheritedTransform, bool flattensInheritedTransform,
unsigned renderingContextID, unsigned renderingContextID,
CompositingReasons directCompositingReasons) CompositingReasons directCompositingReasons)
: m_matrix(matrix), : m_parent(parent),
m_matrix(matrix),
m_origin(origin), m_origin(origin),
m_parent(parent),
m_flattensInheritedTransform(flattensInheritedTransform), m_flattensInheritedTransform(flattensInheritedTransform),
m_renderingContextID(renderingContextID), m_renderingContextID(renderingContextID),
m_directCompositingReasons(directCompositingReasons) {} m_directCompositingReasons(directCompositingReasons) {}
RefPtr<const TransformPaintPropertyNode> m_parent;
TransformationMatrix m_matrix; TransformationMatrix m_matrix;
FloatPoint3D m_origin; FloatPoint3D m_origin;
RefPtr<const TransformPaintPropertyNode> m_parent;
bool m_flattensInheritedTransform; bool m_flattensInheritedTransform;
unsigned m_renderingContextID; unsigned m_renderingContextID;
CompositingReasons m_directCompositingReasons; 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