void CSSPrimitiveValue::cleanup() { switch (static_cast<UnitTypes>(m_primitiveUnitType)) { case CSS_STRING: case CSS_URI: case CSS_ATTR: case CSS_COUNTER_NAME: case CSS_PARSER_HEXCOLOR: if (m_value.string) m_value.string->deref(); break; case CSS_COUNTER: m_value.counter->deref(); break; case CSS_RECT: m_value.rect->deref(); break; case CSS_QUAD: m_value.quad->deref(); break; case CSS_PAIR: m_value.pair->deref(); break; #if ENABLE(DASHBOARD_SUPPORT) case CSS_DASHBOARD_REGION: if (m_value.region) m_value.region->deref(); break; #endif case CSS_CALC: m_value.calc->deref(); break; case CSS_CALC_PERCENTAGE_WITH_NUMBER: case CSS_CALC_PERCENTAGE_WITH_LENGTH: ASSERT_NOT_REACHED(); break; case CSS_SHAPE: m_value.shape->deref(); break; case CSS_NUMBER: case CSS_PARSER_INTEGER: case CSS_PERCENTAGE: case CSS_EMS: case CSS_EXS: case CSS_REMS: case CSS_CHS: case CSS_PX: case CSS_CM: case CSS_MM: case CSS_IN: case CSS_PT: case CSS_PC: case CSS_DEG: case CSS_RAD: case CSS_GRAD: case CSS_MS: case CSS_S: case CSS_HZ: case CSS_KHZ: case CSS_TURN: case CSS_VW: case CSS_VH: case CSS_VMIN: case CSS_VMAX: case CSS_DPPX: case CSS_DPI: case CSS_DPCM: case CSS_FR: case CSS_IDENT: case CSS_RGBCOLOR: case CSS_DIMENSION: case CSS_UNKNOWN: case CSS_UNICODE_RANGE: case CSS_PARSER_OPERATOR: case CSS_PARSER_IDENTIFIER: case CSS_PROPERTY_ID: case CSS_VALUE_ID: break; } m_primitiveUnitType = 0; if (m_hasCachedCSSText) { cssTextCache().remove(this); m_hasCachedCSSText = false; } }
void CSSPrimitiveValue::cleanup() { switch (type()) { case UnitType::CustomIdentifier: case UnitType::String: case UnitType::URI: case UnitType::Attribute: if (m_value.string) m_value.string->deref(); break; case UnitType::Counter: // We must not call deref() when oilpan is enabled because m_value.counter is traced. #if !ENABLE(OILPAN) m_value.counter->deref(); #endif break; case UnitType::Rect: // We must not call deref() when oilpan is enabled because m_value.rect is traced. #if !ENABLE(OILPAN) m_value.rect->deref(); #endif break; case UnitType::Quad: // We must not call deref() when oilpan is enabled because m_value.quad is traced. #if !ENABLE(OILPAN) m_value.quad->deref(); #endif break; case UnitType::Pair: // We must not call deref() when oilpan is enabled because m_value.pair is traced. #if !ENABLE(OILPAN) m_value.pair->deref(); #endif break; case UnitType::Calc: // We must not call deref() when oilpan is enabled because m_value.calc is traced. #if !ENABLE(OILPAN) m_value.calc->deref(); #endif break; case UnitType::CalcPercentageWithNumber: case UnitType::CalcPercentageWithLength: ASSERT_NOT_REACHED(); break; case UnitType::Shape: // We must not call deref() when oilpan is enabled because m_value.shape is traced. #if !ENABLE(OILPAN) m_value.shape->deref(); #endif break; case UnitType::Number: case UnitType::Integer: case UnitType::Percentage: case UnitType::Ems: case UnitType::QuirkyEms: case UnitType::Exs: case UnitType::Rems: case UnitType::Chs: case UnitType::Pixels: case UnitType::Centimeters: case UnitType::Millimeters: case UnitType::Inches: case UnitType::Points: case UnitType::Picas: case UnitType::Degrees: case UnitType::Radians: case UnitType::Gradians: case UnitType::Milliseconds: case UnitType::Seconds: case UnitType::Hertz: case UnitType::Kilohertz: case UnitType::Turns: case UnitType::ViewportWidth: case UnitType::ViewportHeight: case UnitType::ViewportMin: case UnitType::ViewportMax: case UnitType::DotsPerPixel: case UnitType::DotsPerInch: case UnitType::DotsPerCentimeter: case UnitType::Fraction: case UnitType::RGBColor: case UnitType::Unknown: case UnitType::PropertyID: case UnitType::ValueID: break; } if (m_hasCachedCSSText) { cssTextCache().remove(this); m_hasCachedCSSText = false; } }
String CSSPrimitiveValue::customCSSText() const { if (m_hasCachedCSSText) { ASSERT(cssTextCache().contains(this)); return cssTextCache().get(this); } String text; switch (type()) { case UnitType::Unknown: // FIXME break; case UnitType::Integer: text = String::format("%d", getIntValue()); break; case UnitType::Number: case UnitType::Percentage: case UnitType::Ems: case UnitType::QuirkyEms: case UnitType::Exs: case UnitType::Rems: case UnitType::Chs: case UnitType::Pixels: case UnitType::Centimeters: case UnitType::DotsPerPixel: case UnitType::DotsPerInch: case UnitType::DotsPerCentimeter: case UnitType::Millimeters: case UnitType::Inches: case UnitType::Points: case UnitType::Picas: case UnitType::Degrees: case UnitType::Radians: case UnitType::Gradians: case UnitType::Milliseconds: case UnitType::Seconds: case UnitType::Hertz: case UnitType::Kilohertz: case UnitType::Turns: case UnitType::Fraction: case UnitType::ViewportWidth: case UnitType::ViewportHeight: case UnitType::ViewportMin: case UnitType::ViewportMax: text = formatNumber(m_value.num, unitTypeToString(type())); break; case UnitType::CustomIdentifier: text = quoteCSSStringIfNeeded(m_value.string); break; case UnitType::String: { text = serializeString(m_value.string); break; } case UnitType::URI: text = serializeURI(m_value.string); break; case UnitType::ValueID: text = valueName(m_value.valueID); break; case UnitType::PropertyID: text = propertyName(m_value.propertyID); break; case UnitType::RGBColor: { text = Color(m_value.rgbcolor).serializedAsCSSComponentValue(); break; } case UnitType::Calc: text = m_value.calc->customCSSText(); break; case UnitType::CalcPercentageWithNumber: case UnitType::CalcPercentageWithLength: ASSERT_NOT_REACHED(); break; } ASSERT(!cssTextCache().contains(this)); cssTextCache().set(this, text); m_hasCachedCSSText = true; return text; }