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

Unified Diff: third_party/WebKit/Source/core/style/StyleRareInheritedData.h

Issue 2345543002: debugging for crbug.com/646539
Patch Set: 3 TUs, 2 .h 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/StyleRareInheritedData.h
diff --git a/third_party/WebKit/Source/core/style/StyleRareInheritedData.h b/third_party/WebKit/Source/core/style/StyleRareInheritedData.h
index b4515f6e5d00e5a2cebf75dc0d81188e18659f0c..3240b65456e081768a5a66ae18f61f7b27e4a0da 100644
--- a/third_party/WebKit/Source/core/style/StyleRareInheritedData.h
+++ b/third_party/WebKit/Source/core/style/StyleRareInheritedData.h
@@ -25,149 +25,110 @@
#ifndef StyleRareInheritedData_h
#define StyleRareInheritedData_h
-#include "core/CoreExport.h"
-#include "core/css/StyleColor.h"
-#include "core/style/TextSizeAdjust.h"
-#include "platform/Length.h"
-#include "platform/graphics/Color.h"
-#include "platform/heap/Handle.h"
-#include "platform/text/TabSize.h"
-#include "wtf/PassRefPtr.h"
-#include "wtf/RefCounted.h"
-#include "wtf/RefVector.h"
-#include "wtf/text/AtomicString.h"
-
namespace blink {
-class AppliedTextDecoration;
-class CursorData;
-class QuotesData;
-class ShadowList;
-class StyleImage;
-class StyleVariableData;
-
-typedef RefVector<AppliedTextDecoration> AppliedTextDecorationList;
-typedef HeapVector<CursorData> CursorList;
-
-// This struct is for rarely used inherited CSS3, CSS2, and WebKit-specific properties.
-// By grouping them together, we save space, and only allocate this object when someone
-// actually uses one of these properties.
-// TODO(sashab): Move this into a private class on ComputedStyle, and remove
-// all methods on it, merging them into copy/creation methods on ComputedStyle
-// instead. Keep the allocation logic, only allocating a new object if needed.
-class CORE_EXPORT StyleRareInheritedData : public RefCounted<StyleRareInheritedData> {
+enum CSSPropertyID {
+ CSSPropertyStopColor = 197,
+ CSSPropertyTextDecorationColor = 214,
+ CSSPropertyWebkitTextFillColor = 298,
+};
+
+typedef unsigned RGBA32; // RGBA quadruplet
+
+RGBA32 makeRGB(int r, int g, int b);
+
+inline int alphaChannel(RGBA32 color) { return (color >> 24) & 0xFF; }
+
+class Color {
public:
- static PassRefPtr<StyleRareInheritedData> create() { return adoptRef(new StyleRareInheritedData); }
- PassRefPtr<StyleRareInheritedData> copy() const { return adoptRef(new StyleRareInheritedData(*this)); }
- ~StyleRareInheritedData();
+ Color() : m_color(Color::transparent) { }
+ Color(RGBA32 color) : m_color(color) { }
+ Color(int r, int g, int b) : m_color(makeRGB(r, g, b)) { }
- bool operator==(const StyleRareInheritedData&) const;
- bool operator!=(const StyleRareInheritedData& o) const
- {
- return !(*this == o);
- }
- bool shadowDataEquivalent(const StyleRareInheritedData&) const;
- bool quotesDataEquivalent(const StyleRareInheritedData&) const;
+ bool hasAlpha() const { return alpha() < 255; }
- Persistent<StyleImage> listStyleImage;
+ int alpha() const { return alphaChannel(m_color); }
- StyleColor textStrokeColor() const { return m_textStrokeColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_textStrokeColor); }
- StyleColor textFillColor() const { return m_textFillColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_textFillColor); }
- StyleColor textEmphasisColor() const { return m_textEmphasisColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_textEmphasisColor); }
- StyleColor visitedLinkTextStrokeColor() const { return m_visitedLinkTextStrokeColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_visitedLinkTextStrokeColor); }
- StyleColor visitedLinkTextFillColor() const { return m_visitedLinkTextFillColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_visitedLinkTextFillColor); }
- StyleColor visitedLinkTextEmphasisColor() const { return m_visitedLinkTextEmphasisColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_visitedLinkTextEmphasisColor); }
+ RGBA32 rgb() const { return m_color; } // Preserve the alpha.
- void setTextStrokeColor(const StyleColor& color) { m_textStrokeColor = color.resolve(Color()); m_textStrokeColorIsCurrentColor = color.isCurrentColor(); }
- void setTextFillColor(const StyleColor& color) { m_textFillColor = color.resolve(Color()); m_textFillColorIsCurrentColor = color.isCurrentColor(); }
- void setTextEmphasisColor(const StyleColor& color) { m_textEmphasisColor = color.resolve(Color()); m_textEmphasisColorIsCurrentColor = color.isCurrentColor(); }
- void setVisitedLinkTextStrokeColor(const StyleColor& color) { m_visitedLinkTextStrokeColor = color.resolve(Color()); m_visitedLinkTextStrokeColorIsCurrentColor = color.isCurrentColor(); }
- void setVisitedLinkTextFillColor(const StyleColor& color) { m_visitedLinkTextFillColor = color.resolve(Color()); m_visitedLinkTextFillColorIsCurrentColor = color.isCurrentColor(); }
- void setVisitedLinkTextEmphasisColor(const StyleColor& color) { m_visitedLinkTextEmphasisColor = color.resolve(Color()); m_visitedLinkTextEmphasisColorIsCurrentColor = color.isCurrentColor(); }
+ static const RGBA32 black = 0xFF000000;
+ static const RGBA32 transparent = 0x00000000;
- Color m_textStrokeColor;
- float textStrokeWidth;
- Color m_textFillColor;
- Color m_textEmphasisColor;
+private:
+ RGBA32 m_color;
+};
- Color m_visitedLinkTextStrokeColor;
- Color m_visitedLinkTextFillColor;
- Color m_visitedLinkTextEmphasisColor;
+inline bool operator==(const Color& a, const Color& b)
+{
+ return a.rgb() == b.rgb();
+}
- RefPtr<ShadowList> textShadow; // Our text shadow information for shadowed text drawing.
- AtomicString highlight; // Apple-specific extension for custom highlight rendering.
+inline bool operator!=(const Color& a, const Color& b)
+{
+ return !(a == b);
+}
- Persistent<CursorList> cursorData;
- Length indent;
- float m_effectiveZoom;
+class StyleColor {
+public:
+ StyleColor() : m_currentColor(true) { }
+ StyleColor(Color color) : m_color(color), m_currentColor(false) { }
+ static StyleColor currentColor() { return StyleColor(); }
+
+ bool isCurrentColor() const { return m_currentColor; }
+ Color getColor() const { /*ASSERT(!isCurrentColor());*/ return m_color; }
+
+ Color resolve(Color currentColor) const { return m_currentColor ? currentColor : m_color; }
+
+private:
+ Color m_color;
+ bool m_currentColor;
+};
- // Paged media properties.
- short widows;
- short orphans;
+inline bool operator==(const StyleColor& a, const StyleColor& b)
+{
+ if (a.isCurrentColor() || b.isCurrentColor())
+ return a.isCurrentColor() && b.isCurrentColor();
+ return a.getColor() == b.getColor();
+}
+
+inline bool operator!=(const StyleColor& a, const StyleColor& b)
+{
+ return !(a == b);
+}
+
+class StyleRareInheritedData {
+public:
+ ~StyleRareInheritedData();
+
+ StyleColor textStrokeColor() const
+ {
+ return m_textStrokeColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_textStrokeColor);
+ }
+ StyleColor visitedLinkTextFillColor() const
+ {
+ return m_visitedLinkTextFillColorIsCurrentColor ? StyleColor::currentColor() : StyleColor(m_visitedLinkTextFillColor);
+ }
+
+ void setVisitedLinkTextFillColor(const StyleColor& color)
+ {
+ m_visitedLinkTextFillColor = color.resolve(Color());
+ m_visitedLinkTextFillColorIsCurrentColor = color.isCurrentColor();
+ }
+
+ Color m_textStrokeColor;
+ Color m_visitedLinkTextFillColor;
unsigned m_textStrokeColorIsCurrentColor : 1;
- unsigned m_textFillColorIsCurrentColor : 1;
- unsigned m_textEmphasisColorIsCurrentColor : 1;
- unsigned m_visitedLinkTextStrokeColorIsCurrentColor : 1;
unsigned m_visitedLinkTextFillColorIsCurrentColor : 1;
- unsigned m_visitedLinkTextEmphasisColorIsCurrentColor : 1;
-
- unsigned textSecurity : 2; // ETextSecurity
- unsigned userModify : 2; // EUserModify (editing)
- unsigned wordBreak : 2; // EWordBreak
- unsigned overflowWrap : 1; // EOverflowWrap
- unsigned lineBreak : 3; // LineBreak
- unsigned userSelect : 2; // EUserSelect
- unsigned speak : 3; // ESpeak
- unsigned hyphens : 2; // Hyphens
- unsigned textEmphasisFill : 1; // TextEmphasisFill
- unsigned textEmphasisMark : 3; // TextEmphasisMark
- unsigned textEmphasisPosition : 1; // TextEmphasisPosition
- unsigned m_textAlignLast : 3; // TextAlignLast
- unsigned m_textJustify : 2; // TextJustify
- unsigned m_textOrientation : 2; // TextOrientation
- unsigned m_textCombine : 1; // CSS3 text-combine-upright properties
- unsigned m_textIndentLine : 1; // TextIndentEachLine
- unsigned m_textIndentType : 1; // TextIndentHanging
- // CSS Image Values Level 3
- unsigned m_imageRendering : 3; // EImageRendering
- unsigned m_textUnderlinePosition : 1; // TextUnderlinePosition
- unsigned m_rubyPosition : 1; // RubyPosition
-
- // Though will-change is not itself an inherited property, the intent
- // expressed by 'will-change: contents' includes descendants.
- unsigned m_subtreeWillChangeContents : 1;
-
- unsigned m_selfOrAncestorHasDirAutoAttribute : 1;
-
- unsigned m_respectImageOrientation : 1;
-
- unsigned m_snapHeightPosition : 7;
-
- AtomicString hyphenationString;
- short hyphenationLimitBefore;
- short hyphenationLimitAfter;
- short hyphenationLimitLines;
-
- uint8_t m_snapHeightUnit;
-
- AtomicString textEmphasisCustomMark;
- RefPtr<QuotesData> quotes;
-
- Color tapHighlightColor;
-
- RefPtr<AppliedTextDecorationList> appliedTextDecorations;
- TabSize m_tabSize;
-
- RefPtr<StyleVariableData> variables;
- TextSizeAdjust m_textSizeAdjust;
-private:
+ StyleColor m_textDecorationColor;
+ StyleColor m_visitedLinkTextDecorationColor;
+
StyleRareInheritedData();
- StyleRareInheritedData(const StyleRareInheritedData&);
};
+
} // namespace blink
#endif // StyleRareInheritedData_h
« no previous file with comments | « third_party/WebKit/Source/core/style/DataRef.h ('k') | third_party/WebKit/Source/core/style/StyleRareInheritedData.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698