#include "core/css/CSSFunctionValue.h"
#include "core/css/CSSGradientValue.h"
#include "core/css/CSSGridLineNamesValue.h"
-#include "core/css/CSSGridTemplateValue.h"
+#include "core/css/CSSGridTemplateAreasValue.h"
#include "core/css/CSSHelper.h"
#include "core/css/CSSImageSetValue.h"
#include "core/css/CSSLineBoxContainValue.h"
#include "core/css/CSSPrimitiveValueMappings.h"
#include "core/css/CSSProperty.h"
#include "core/css/CSSReflectValue.h"
-#include "core/css/CSSVariableValue.h"
#include "core/css/Counter.h"
#include "core/css/Pair.h"
#include "core/css/Rect.h"
ASSERT_NOT_REACHED();
break;
case CSSValueBolder:
+ state.fontBuilder().setWeight(state.parentStyle()->fontDescription().weight());
state.fontBuilder().setWeightBolder();
break;
case CSSValueLighter:
+ state.fontBuilder().setWeight(state.parentStyle()->fontDescription().weight());
state.fontBuilder().setWeightLighter();
break;
default:
}
}
-void StyleBuilderFunctions::applyInitialCSSPropertyWebkitFontVariantLigatures(StyleResolverState& state)
+void StyleBuilderFunctions::applyInitialCSSPropertyFontVariantLigatures(StyleResolverState& state)
{
state.fontBuilder().setFontVariantLigaturesInitial();
}
-void StyleBuilderFunctions::applyInheritCSSPropertyWebkitFontVariantLigatures(StyleResolverState& state)
+void StyleBuilderFunctions::applyInheritCSSPropertyFontVariantLigatures(StyleResolverState& state)
{
state.fontBuilder().setFontVariantLigaturesInherit(state.parentFontDescription());
}
-void StyleBuilderFunctions::applyValueCSSPropertyWebkitFontVariantLigatures(StyleResolverState& state, CSSValue* value)
+void StyleBuilderFunctions::applyValueCSSPropertyFontVariantLigatures(StyleResolverState& state, CSSValue* value)
{
state.fontBuilder().setFontVariantLigaturesValue(value);
}
for (CSSValueListIterator j = lineNamesValue; j.hasMore(); j.advance()) {
String namedGridLine = toCSSPrimitiveValue(j.value())->getStringValue();
NamedGridLinesMap::AddResult result = namedGridLines.add(namedGridLine, Vector<size_t>());
- result.iterator->value.append(currentNamedGridLine);
+ result.storedValue->value.append(currentNamedGridLine);
OrderedNamedGridLines::AddResult orderedInsertionResult = orderedNamedGridLines.add(currentNamedGridLine, Vector<String>());
- orderedInsertionResult.iterator->value.append(namedGridLine);
+ orderedInsertionResult.storedValue->value.append(namedGridLine);
}
continue;
}
return false;
}
-static bool hasVariableReference(CSSValue* value)
-{
- if (value->isPrimitiveValue()) {
- CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
- return primitiveValue->hasVariableReference();
- }
-
- if (value->isCalcValue())
- return toCSSCalcValue(value)->hasVariableReference();
-
- if (value->isReflectValue()) {
- CSSReflectValue* reflectValue = toCSSReflectValue(value);
- CSSPrimitiveValue* direction = reflectValue->direction();
- CSSPrimitiveValue* offset = reflectValue->offset();
- CSSValue* mask = reflectValue->mask();
- return (direction && hasVariableReference(direction)) || (offset && hasVariableReference(offset)) || (mask && hasVariableReference(mask));
- }
-
- for (CSSValueListIterator i = value; i.hasMore(); i.advance()) {
- if (hasVariableReference(i.value()))
- return true;
- }
-
- return false;
-}
-
-// FIXME: Resolving variables should be factored better. Maybe a resover-style class?
-static void resolveVariables(StyleResolverState& state, CSSPropertyID id, CSSValue* value, Vector<std::pair<CSSPropertyID, String> >& knownExpressions)
-{
- std::pair<CSSPropertyID, String> expression(id, value->serializeResolvingVariables(*state.style()->variables()));
-
- if (knownExpressions.contains(expression))
- return; // cycle detected.
-
- knownExpressions.append(expression);
-
- // FIXME: It would be faster not to re-parse from strings, but for now CSS property validation lives inside the parser so we do it there.
- RefPtr<MutableStylePropertySet> resultSet = MutableStylePropertySet::create();
- if (!BisonCSSParser::parseValue(resultSet.get(), id, expression.second, false, state.document()))
- return; // expression failed to parse.
-
- for (unsigned i = 0; i < resultSet->propertyCount(); i++) {
- StylePropertySet::PropertyReference property = resultSet->propertyAt(i);
- if (property.id() != CSSPropertyVariable && hasVariableReference(property.value())) {
- resolveVariables(state, property.id(), property.value(), knownExpressions);
- } else {
- StyleBuilder::applyProperty(property.id(), state, property.value());
- // All properties become dependent on their parent style when they use variables.
- state.style()->setHasExplicitlyInheritedProperties();
- }
- }
-}
void StyleBuilder::applyProperty(CSSPropertyID id, StyleResolverState& state, CSSValue* value)
{
- if (RuntimeEnabledFeatures::cssVariablesEnabled() && id != CSSPropertyVariable && hasVariableReference(value)) {
- Vector<std::pair<CSSPropertyID, String> > knownExpressions;
- resolveVariables(state, id, value, knownExpressions);
- return;
- }
-
- // CSS variables don't resolve shorthands at parsing time, so this should be *after* handling variables.
ASSERT_WITH_MESSAGE(!isExpandedShorthand(id), "Shorthand property id = %d wasn't expanded at parsing time", id);
bool isInherit = state.parentNode() && value->isInheritedValue();
if (isInherit && !state.parentStyle()->hasExplicitlyInheritedProperties() && !CSSProperty::isInheritedProperty(id))
state.parentStyle()->setHasExplicitlyInheritedProperties();
- if (id == CSSPropertyVariable) {
- ASSERT_WITH_SECURITY_IMPLICATION(value->isVariableValue());
- CSSVariableValue* variable = toCSSVariableValue(value);
- ASSERT(!variable->name().isEmpty());
- ASSERT(!variable->value().isEmpty());
- state.style()->setVariable(variable->name(), variable->value());
- return;
- }
-
if (StyleBuilder::applyProperty(id, state, value, isInitial, isInherit))
return;
state.style()->setGridAutoRows(createGridTrackSize(value, state));
return;
}
- case CSSPropertyGridDefinitionColumns: {
+ case CSSPropertyGridTemplateColumns: {
if (isInherit) {
- state.style()->setGridDefinitionColumns(state.parentStyle()->gridDefinitionColumns());
+ state.style()->setGridTemplateColumns(state.parentStyle()->gridTemplateColumns());
state.style()->setNamedGridColumnLines(state.parentStyle()->namedGridColumnLines());
state.style()->setOrderedNamedGridColumnLines(state.parentStyle()->orderedNamedGridColumnLines());
return;
}
if (isInitial) {
- state.style()->setGridDefinitionColumns(RenderStyle::initialGridDefinitionColumns());
+ state.style()->setGridTemplateColumns(RenderStyle::initialGridTemplateColumns());
state.style()->setNamedGridColumnLines(RenderStyle::initialNamedGridColumnLines());
state.style()->setOrderedNamedGridColumnLines(RenderStyle::initialOrderedNamedGridColumnLines());
return;
OrderedNamedGridLines orderedNamedGridLines;
if (!createGridTrackList(value, trackSizes, namedGridLines, orderedNamedGridLines, state))
return;
- state.style()->setGridDefinitionColumns(trackSizes);
+ state.style()->setGridTemplateColumns(trackSizes);
state.style()->setNamedGridColumnLines(namedGridLines);
state.style()->setOrderedNamedGridColumnLines(orderedNamedGridLines);
return;
}
- case CSSPropertyGridDefinitionRows: {
+ case CSSPropertyGridTemplateRows: {
if (isInherit) {
- state.style()->setGridDefinitionRows(state.parentStyle()->gridDefinitionRows());
+ state.style()->setGridTemplateRows(state.parentStyle()->gridTemplateRows());
state.style()->setNamedGridRowLines(state.parentStyle()->namedGridRowLines());
state.style()->setOrderedNamedGridRowLines(state.parentStyle()->orderedNamedGridRowLines());
return;
}
if (isInitial) {
- state.style()->setGridDefinitionRows(RenderStyle::initialGridDefinitionRows());
+ state.style()->setGridTemplateRows(RenderStyle::initialGridTemplateRows());
state.style()->setNamedGridRowLines(RenderStyle::initialNamedGridRowLines());
state.style()->setOrderedNamedGridRowLines(RenderStyle::initialOrderedNamedGridRowLines());
return;
OrderedNamedGridLines orderedNamedGridLines;
if (!createGridTrackList(value, trackSizes, namedGridLines, orderedNamedGridLines, state))
return;
- state.style()->setGridDefinitionRows(trackSizes);
+ state.style()->setGridTemplateRows(trackSizes);
state.style()->setNamedGridRowLines(namedGridLines);
state.style()->setOrderedNamedGridRowLines(orderedNamedGridLines);
return;
return;
}
- case CSSPropertyGridTemplate: {
+ case CSSPropertyGridTemplateAreas: {
if (isInherit) {
state.style()->setNamedGridArea(state.parentStyle()->namedGridArea());
state.style()->setNamedGridAreaRowCount(state.parentStyle()->namedGridAreaRowCount());
return;
}
- CSSGridTemplateValue* gridTemplateValue = toCSSGridTemplateValue(value);
- state.style()->setNamedGridArea(gridTemplateValue->gridAreaMap());
- state.style()->setNamedGridAreaRowCount(gridTemplateValue->rowCount());
- state.style()->setNamedGridAreaColumnCount(gridTemplateValue->columnCount());
+ CSSGridTemplateAreasValue* gridTemplateAreasValue = toCSSGridTemplateAreasValue(value);
+ state.style()->setNamedGridArea(gridTemplateAreasValue->gridAreaMap());
+ state.style()->setNamedGridAreaRowCount(gridTemplateAreasValue->rowCount());
+ state.style()->setNamedGridAreaColumnCount(gridTemplateAreasValue->columnCount());
return;
}
case CSSPropertyFontSize:
case CSSPropertyFontStyle:
case CSSPropertyFontVariant:
+ case CSSPropertyFontVariantLigatures:
case CSSPropertyFontWeight:
case CSSPropertyHeight:
case CSSPropertyImageRendering:
case CSSPropertyTouchAction:
case CSSPropertyTouchActionDelay:
case CSSPropertyUnicodeBidi:
- case CSSPropertyVariable:
case CSSPropertyVerticalAlign:
case CSSPropertyVisibility:
case CSSPropertyWebkitAnimationDelay:
case CSSPropertyFlexWrap:
case CSSPropertyJustifyContent:
case CSSPropertyOrder:
- case CSSPropertyWebkitFlowFrom:
- case CSSPropertyWebkitFlowInto:
case CSSPropertyWebkitFontSmoothing:
- case CSSPropertyWebkitFontVariantLigatures:
case CSSPropertyWebkitHighlight:
case CSSPropertyWebkitHyphenateCharacter:
- case CSSPropertyWebkitLineAlign:
case CSSPropertyWebkitLineBreak:
case CSSPropertyWebkitLineClamp:
- case CSSPropertyWebkitLineGrid:
- case CSSPropertyWebkitLineSnap:
case CSSPropertyInternalMarqueeDirection:
case CSSPropertyInternalMarqueeIncrement:
case CSSPropertyInternalMarqueeRepetition:
case CSSPropertyWebkitPerspectiveOriginX:
case CSSPropertyWebkitPerspectiveOriginY:
case CSSPropertyWebkitPrintColorAdjust:
- case CSSPropertyWebkitRegionBreakAfter:
- case CSSPropertyWebkitRegionBreakBefore:
- case CSSPropertyWebkitRegionBreakInside:
- case CSSPropertyWebkitRegionFragment:
case CSSPropertyWebkitRtlOrdering:
case CSSPropertyWebkitRubyPosition:
case CSSPropertyWebkitTextCombine: