Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(640)

Unified Diff: third_party/WebKit/Source/core/style/ComputedStyle.cpp

Issue 2187493004: Add a generated ComputedStyleBase class that ComputedStyle extends (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@_make_visibility_enum_class_rebase
Patch Set: Re-ordered inheritance to match initializers Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/style/ComputedStyle.cpp
diff --git a/third_party/WebKit/Source/core/style/ComputedStyle.cpp b/third_party/WebKit/Source/core/style/ComputedStyle.cpp
index a81a1ae815f051b09bf12b604df7baa9aadce200..fca60578af7bb40c36feca861b0921ec36f826e8 100644
--- a/third_party/WebKit/Source/core/style/ComputedStyle.cpp
+++ b/third_party/WebKit/Source/core/style/ComputedStyle.cpp
@@ -53,6 +53,7 @@
#include "wtf/MathExtras.h"
#include "wtf/PtrUtil.h"
#include "wtf/SaturatedArithmetic.h"
+#include "wtf/SizeAssertions.h"
#include <algorithm>
#include <memory>
@@ -63,11 +64,11 @@ struct SameSizeAsBorderValue {
unsigned m_width;
};
-static_assert(sizeof(BorderValue) == sizeof(SameSizeAsBorderValue), "BorderValue should stay small");
+ASSERT_SIZE(BorderValue, SameSizeAsBorderValue);
// Since different compilers/architectures pack ComputedStyle differently,
// re-create the same structure for an accurate size comparison.
-struct SameSizeAsComputedStyle : public RefCounted<SameSizeAsComputedStyle> {
+struct SameSizeAsComputedStyle : public ComputedStyleBase, public RefCounted<ComputedStyle> {
void* dataRefs[7];
void* ownPtrs[1];
void* dataRefSvgStyle;
@@ -81,7 +82,7 @@ struct SameSizeAsComputedStyle : public RefCounted<SameSizeAsComputedStyle> {
} m_nonInheritedData;
};
-static_assert(sizeof(ComputedStyle) == sizeof(SameSizeAsComputedStyle), "ComputedStyle should stay small");
+ASSERT_SIZE(ComputedStyle, SameSizeAsComputedStyle);
PassRefPtr<ComputedStyle> ComputedStyle::create()
{
@@ -113,7 +114,9 @@ PassRefPtr<ComputedStyle> ComputedStyle::clone(const ComputedStyle& other)
}
ALWAYS_INLINE ComputedStyle::ComputedStyle()
- : m_box(initialStyle().m_box)
+ : ComputedStyleBase()
+ , RefCounted<ComputedStyle>()
+ , m_box(initialStyle().m_box)
, m_visual(initialStyle().m_visual)
, m_background(initialStyle().m_background)
, m_surround(initialStyle().m_surround)
@@ -128,6 +131,8 @@ ALWAYS_INLINE ComputedStyle::ComputedStyle()
}
ALWAYS_INLINE ComputedStyle::ComputedStyle(InitialStyleTag)
+ : ComputedStyleBase()
+ , RefCounted<ComputedStyle>()
{
setBitDefaults();
@@ -152,7 +157,8 @@ ALWAYS_INLINE ComputedStyle::ComputedStyle(InitialStyleTag)
}
ALWAYS_INLINE ComputedStyle::ComputedStyle(const ComputedStyle& o)
- : RefCounted<ComputedStyle>()
+ : ComputedStyleBase(o)
+ , RefCounted<ComputedStyle>()
, m_box(o.m_box)
, m_visual(o.m_visual)
, m_background(o.m_background)
@@ -306,6 +312,7 @@ ContentDistributionType ComputedStyle::resolvedAlignContentDistribution(const St
void ComputedStyle::inheritFrom(const ComputedStyle& inheritParent, IsAtShadowBoundary isAtShadowBoundary)
{
+ ComputedStyleBase::inheritFrom(inheritParent, isAtShadowBoundary);
if (isAtShadowBoundary == AtShadowBoundary) {
// Even if surrounding content is user-editable, shadow DOM should act as a single unit, and not necessarily be editable
EUserModify currentUserModify = userModify();
@@ -470,12 +477,14 @@ bool ComputedStyle::inheritedEqual(const ComputedStyle& other) const
bool ComputedStyle::independentInheritedEqual(const ComputedStyle& other) const
{
- return m_inheritedData.compareEqualIndependent(other.m_inheritedData);
+ return ComputedStyleBase::independentInheritedEqual(other)
+ && m_inheritedData.compareEqualIndependent(other.m_inheritedData);
}
bool ComputedStyle::nonIndependentInheritedEqual(const ComputedStyle& other) const
{
- return m_inheritedData.compareEqualNonIndependent(other.m_inheritedData)
+ return ComputedStyleBase::nonIndependentInheritedEqual(other)
+ && m_inheritedData.compareEqualNonIndependent(other.m_inheritedData)
&& m_styleInheritedData == other.m_styleInheritedData
&& m_svgStyle->inheritedEqual(*other.m_svgStyle)
&& m_rareInheritedData == other.m_rareInheritedData;
@@ -501,7 +510,9 @@ bool ComputedStyle::nonInheritedEqual(const ComputedStyle& other) const
bool ComputedStyle::inheritedDataShared(const ComputedStyle& other) const
{
// This is a fast check that only looks if the data structures are shared.
- return m_inheritedData == other.m_inheritedData
+ // TODO(sashab): Should ComputedStyleBase have an inheritedDataShared method?
+ return ComputedStyleBase::inheritedEqual(other)
+ && m_inheritedData == other.m_inheritedData
&& m_styleInheritedData.get() == other.m_styleInheritedData.get()
&& m_svgStyle.get() == other.m_svgStyle.get()
&& m_rareInheritedData.get() == other.m_rareInheritedData.get();
@@ -810,7 +821,7 @@ bool ComputedStyle::diffNeedsPaintInvalidationObject(const ComputedStyle& other)
if (!m_background->outline().visuallyEqual(other.m_background->outline()))
return true;
- if (m_inheritedData.m_visibility != other.m_inheritedData.m_visibility
+ if (visibility() != other.visibility()
|| m_inheritedData.m_printColorAdjust != other.m_inheritedData.m_printColorAdjust
|| m_inheritedData.m_insideLink != other.m_inheritedData.m_insideLink
|| !m_surround->border.visuallyEqual(other.m_surround->border)
« no previous file with comments | « third_party/WebKit/Source/core/style/ComputedStyle.h ('k') | third_party/WebKit/Source/core/style/ComputedStyleConstants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698