Index: third_party/WebKit/Source/core/style/StyleDifference.cpp |
diff --git a/third_party/WebKit/Source/core/style/StyleDifference.cpp b/third_party/WebKit/Source/core/style/StyleDifference.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cd085be9ad8e42bde4008f4c8d5b1a2beb20d8ca |
--- /dev/null |
+++ b/third_party/WebKit/Source/core/style/StyleDifference.cpp |
@@ -0,0 +1,87 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "core/style/StyleDifference.h" |
+ |
+namespace blink { |
+ |
+std::ostream& operator<<(std::ostream& out, const StyleDifference& diff) { |
+ out << "StyleDifference{layoutType="; |
+ |
+ switch (diff.m_layoutType) { |
+ case StyleDifference::NoLayout: |
+ out << "NoLayout"; |
+ break; |
+ case StyleDifference::PositionedMovement: |
+ out << "PositionedMovement"; |
+ break; |
+ case StyleDifference::FullLayout: |
+ out << "FullLayout"; |
+ break; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
+ |
+ out << ", paintInvalidationType="; |
+ switch (diff.m_paintInvalidationType) { |
+ case StyleDifference::NoPaintInvalidation: |
+ out << "NoPaintInvalidation"; |
+ break; |
+ case StyleDifference::PaintInvalidationObject: |
+ out << "PaintInvalidationObject"; |
+ break; |
+ case StyleDifference::PaintInvalidationSubtree: |
+ out << "PaintInvalidationSubtree"; |
+ break; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
+ |
+ out << ", recomputeOverflow=" << diff.m_recomputeOverflow; |
+ |
+ out << ", propertySpecificDifferences="; |
+ int diffCount = 0; |
+ for (int i = 0; i < StyleDifference::kPropertyDifferenceCount; i++) { |
+ unsigned bitTest = 1 << i; |
+ if (diff.m_propertySpecificDifferences & bitTest) { |
+ if (diffCount++ > 0) |
+ out << "|"; |
+ switch (bitTest) { |
+ case StyleDifference::TransformChanged: |
+ out << "TransformChanged"; |
+ break; |
+ case StyleDifference::OpacityChanged: |
+ out << "OpacityChanged"; |
+ break; |
+ case StyleDifference::ZIndexChanged: |
+ out << "ZIndexChanged"; |
+ break; |
+ case StyleDifference::FilterChanged: |
+ out << "FilterChanged"; |
+ break; |
+ case StyleDifference::BackdropFilterChanged: |
+ out << "BackdropFilterChanged"; |
+ break; |
+ case StyleDifference::CSSClipChanged: |
+ out << "CSSClipChanged"; |
+ break; |
+ case StyleDifference::TextDecorationOrColorChanged: |
+ out << "TextDecorationOrColorChanged"; |
+ break; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
+ } |
+ } |
+ |
+ out << ", scrollAnchorDisablingPropertyChanged=" |
+ << diff.m_scrollAnchorDisablingPropertyChanged; |
+ |
+ return out << "}"; |
+} |
+ |
+} // namespace blink |