Issue #1668 - Part 2: Visited color and auto support for caret-color property.

Mozilla's original implementation of this failed a couple of tests, but this seems to solve all the problems. Basically, the caret-color wasn't able to be set differently based on whether a link was visited, and the auto value implementation was incomplete. The only test we fail now is the one where you have grey text on a grey background and the caret is supposed to be visible, but I think that may have been removed from the spec. Even if it wasn't, no other browser supports it anyway.
This commit is contained in:
athenian200 2020-10-18 10:12:53 -05:00 committed by roytam1
commit 1f68b25468
4 changed files with 27 additions and 8 deletions

View file

@ -5141,6 +5141,13 @@ nsRuleNode::ComputeUserInterfaceData(void* aStartStruct,
{
COMPUTE_START_INHERITED(UserInterface, ui, parentUI)
auto setComplexColor = [&](const nsCSSValue* aValue,
StyleComplexColor nsStyleUserInterface::* aField) {
SetComplexColor<eUnsetInherit>(*aValue, parentUI->*aField,
StyleComplexColor::Auto(),
mPresContext, ui->*aField, conditions);
};
// cursor: enum, url, inherit
const nsCSSValue* cursorValue = aRuleData->ValueForCursor();
nsCSSUnit cursorUnit = cursorValue->GetUnit();
@ -5213,12 +5220,8 @@ nsRuleNode::ComputeUserInterfaceData(void* aStartStruct,
NS_STYLE_POINTER_EVENTS_AUTO);
// caret-color: auto, color, inherit
const nsCSSValue* caretColorValue = aRuleData->ValueForCaretColor();
SetComplexColor<eUnsetInherit>(*caretColorValue,
parentUI->mCaretColor,
StyleComplexColor::Auto(),
mPresContext,
ui->mCaretColor, conditions);
setComplexColor(aRuleData->ValueForCaretColor(),
&nsStyleUserInterface::mCaretColor);
COMPUTE_END_INHERITED(UserInterface, ui)
}