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

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

Issue 2869043002: Store border-*-color on SurroundData in ComputedStyle not BorderColorAndStyle (Closed)
Patch Set: Always return VisitedDependantColor(CSSPropertyID) Created 3 years, 7 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.h
diff --git a/third_party/WebKit/Source/core/style/ComputedStyle.h b/third_party/WebKit/Source/core/style/ComputedStyle.h
index 530ca187ad96fd55c51e399fd4e182de0116e59a..bec09ad018f742e7405169ffecc71a941d07f6b0 100644
--- a/third_party/WebKit/Source/core/style/ComputedStyle.h
+++ b/third_party/WebKit/Source/core/style/ComputedStyle.h
@@ -562,23 +562,27 @@ class CORE_EXPORT ComputedStyle : public ComputedStyleBase,
// Border color properties.
// border-left-color
- void SetBorderLeftColor(const StyleColor& v) {
- SET_BORDERVALUE_COLOR(surround_data_, border_.left_, v);
+ void SetBorderLeftColor(const StyleColor& color) {
+ SetBorderLeftColorInternal(color.Resolve(Color()));
+ SetBorderLeftColorIsCurrentColor(color.IsCurrentColor());
}
// border-right-color
- void SetBorderRightColor(const StyleColor& v) {
- SET_BORDERVALUE_COLOR(surround_data_, border_.right_, v);
+ void SetBorderRightColor(const StyleColor& color) {
+ SetBorderRightColorInternal(color.Resolve(Color()));
+ SetBorderRightColorIsCurrentColor(color.IsCurrentColor());
}
// border-top-color
- void SetBorderTopColor(const StyleColor& v) {
- SET_BORDERVALUE_COLOR(surround_data_, border_.top_, v);
+ void SetBorderTopColor(const StyleColor& color) {
+ SetBorderTopColorInternal(color.Resolve(Color()));
+ SetBorderTopColorIsCurrentColor(color.IsCurrentColor());
}
// border-bottom-color
- void SetBorderBottomColor(const StyleColor& v) {
- SET_BORDERVALUE_COLOR(surround_data_, border_.bottom_, v);
shend 2017/05/09 07:24:41 Can we get rid of this macro now?
nainar 2017/05/09 07:40:39 Nope. Needed by BorderValue.
+ void SetBorderBottomColor(const StyleColor& color) {
+ SetBorderBottomColorInternal(color.Resolve(Color()));
+ SetBorderBottomColorIsCurrentColor(color.IsCurrentColor());
}
// box-shadow (aka -webkit-box-shadow)
@@ -2846,16 +2850,24 @@ class CORE_EXPORT ComputedStyle : public ComputedStyleBase,
void SetBorderImageSlicesFill(bool);
const BorderData& Border() const { return surround_data_->border_; }
const BorderValue BorderLeft() const {
- return BorderValue(surround_data_->border_.Left(), BorderLeftWidth());
+ return BorderValue(surround_data_->border_.Left(),
+ VisitedDependentColor(CSSPropertyBorderLeftColor),
+ BorderLeftWidth());
}
const BorderValue BorderRight() const {
- return BorderValue(surround_data_->border_.Right(), BorderRightWidth());
+ return BorderValue(surround_data_->border_.Right(),
+ VisitedDependentColor(CSSPropertyBorderRightColor),
+ BorderRightWidth());
}
const BorderValue BorderTop() const {
- return BorderValue(surround_data_->border_.Top(), BorderTopWidth());
+ return BorderValue(surround_data_->border_.Top(),
+ VisitedDependentColor(CSSPropertyBorderTopColor),
+ BorderTopWidth());
}
const BorderValue BorderBottom() const {
- return BorderValue(surround_data_->border_.Bottom(), BorderBottomWidth());
+ return BorderValue(surround_data_->border_.Bottom(),
+ VisitedDependentColor(CSSPropertyBorderBottomColor),
+ BorderBottomWidth());
}
bool BorderSizeEquals(const ComputedStyle& o) const {
return BorderWidthEquals(BorderLeftWidth(), o.BorderLeftWidth()) &&
@@ -2892,7 +2904,10 @@ class CORE_EXPORT ComputedStyle : public ComputedStyleBase,
return false;
}
bool HasBorderColorReferencingCurrentColor() const {
- return Border().HasBorderColorReferencingCurrentColor();
+ return (BorderLeft().NonZero() && BorderLeftColor().IsCurrentColor()) ||
+ (BorderRight().NonZero() && BorderRightColor().IsCurrentColor()) ||
+ (BorderTop().NonZero() && BorderTopColor().IsCurrentColor()) ||
+ (BorderBottom().NonZero() && BorderBottomColor().IsCurrentColor());
}
bool RadiiEqual(const ComputedStyle& o) const {
@@ -2914,19 +2929,19 @@ class CORE_EXPORT ComputedStyle : public ComputedStyleBase,
ResetBorderBottomRightRadius();
}
void ResetBorderTop() {
- SET_VAR(surround_data_, border_.top_, BorderColorAndStyle());
+ SET_VAR(surround_data_, border_.top_, BorderStyle());
SetBorderTopWidth(3);
}
void ResetBorderRight() {
- SET_VAR(surround_data_, border_.right_, BorderColorAndStyle());
+ SET_VAR(surround_data_, border_.right_, BorderStyle());
SetBorderRightWidth(3);
}
void ResetBorderBottom() {
- SET_VAR(surround_data_, border_.bottom_, BorderColorAndStyle());
+ SET_VAR(surround_data_, border_.bottom_, BorderStyle());
SetBorderBottomWidth(3);
}
void ResetBorderLeft() {
- SET_VAR(surround_data_, border_.left_, BorderColorAndStyle());
+ SET_VAR(surround_data_, border_.left_, BorderStyle());
SetBorderLeftWidth(3);
}
void ResetBorderImage() {
@@ -3489,16 +3504,24 @@ class CORE_EXPORT ComputedStyle : public ComputedStyleBase,
// Color accessors are all private to make sure callers use
// VisitedDependentColor instead to access them.
StyleColor BorderLeftColor() const {
- return surround_data_->border_.Left().GetColor();
+ return BorderLeftColorIsCurrentColor()
+ ? StyleColor::CurrentColor()
+ : StyleColor(BorderBottomColorInternal());
}
StyleColor BorderRightColor() const {
- return surround_data_->border_.Right().GetColor();
+ return BorderRightColorIsCurrentColor()
+ ? StyleColor::CurrentColor()
+ : StyleColor(BorderBottomColorInternal());
}
StyleColor BorderTopColor() const {
- return surround_data_->border_.Top().GetColor();
+ return BorderTopColorIsCurrentColor()
+ ? StyleColor::CurrentColor()
+ : StyleColor(BorderBottomColorInternal());
}
StyleColor BorderBottomColor() const {
- return surround_data_->border_.Bottom().GetColor();
+ return BorderBottomColorIsCurrentColor()
+ ? StyleColor::CurrentColor()
+ : StyleColor(BorderBottomColorInternal());
}
StyleColor BackgroundColor() const {
return background_data_->background_color_;

Powered by Google App Engine
This is Rietveld 408576698