Modified: trunk/Source/WebCore/ChangeLog (129830 => 129831)
--- trunk/Source/WebCore/ChangeLog 2012-09-28 01:43:52 UTC (rev 129830)
+++ trunk/Source/WebCore/ChangeLog 2012-09-28 02:16:38 UTC (rev 129831)
@@ -1,3 +1,25 @@
+2012-09-27 Luke Macpherson <macpher...@chromium.org>
+
+ Implement reviewer feedback that I missed on bug 95930.
+ https://bugs.webkit.org/show_bug.cgi?id=97752
+
+ Reviewed by Alexey Proskuryakov.
+
+ This patch updates the indentation of function parameters in a few places,
+ and reserves an appropriate amount of space when using StringBuilder.
+
+ * css/CSSBasicShapes.cpp:
+ (WebCore::buildRectangleString):
+ (WebCore::CSSBasicShapeRectangle::cssText):
+ (WebCore::CSSBasicShapeRectangle::serializeResolvingVariables):
+ (WebCore::CSSBasicShapeCircle::serializeResolvingVariables):
+ (WebCore::CSSBasicShapeEllipse::serializeResolvingVariables):
+ (WebCore::buildPolygonString):
+ * css/Rect.h:
+ (WebCore::Rect::serializeResolvingVariables):
+ (WebCore::Quad::serializeResolvingVariables):
+ (WebCore::Quad::generateCSSString):
+
2012-09-27 Sheriff Bot <webkit.review....@gmail.com>
Unreviewed, rolling out r129823.
Modified: trunk/Source/WebCore/css/CSSBasicShapes.cpp (129830 => 129831)
--- trunk/Source/WebCore/css/CSSBasicShapes.cpp 2012-09-28 01:43:52 UTC (rev 129830)
+++ trunk/Source/WebCore/css/CSSBasicShapes.cpp 2012-09-28 02:16:38 UTC (rev 129831)
@@ -39,20 +39,24 @@
static String buildRectangleString(const String& x, const String& y, const String& width, const String& height, const String& radiusX, const String& radiusY)
{
+ char opening[] = "rectangle(";
+ char separator[] = ", ";
StringBuilder result;
- result.appendLiteral("rectangle(");
+ // Compute the required capacity in advance to reduce allocations.
+ result.reserveCapacity((sizeof(opening) - 1) + (5 * (sizeof(separator) -1 )) + 1 + x.length() + y.length() + width.length() + height.length() + radiusX.length() + radiusY.length());
+ result.appendLiteral(opening);
result.append(x);
- result.appendLiteral(", ");
+ result.appendLiteral(separator);
result.append(y);
- result.appendLiteral(", ");
+ result.appendLiteral(separator);
result.append(width);
- result.appendLiteral(", ");
+ result.appendLiteral(separator);
result.append(height);
if (!radiusX.isNull()) {
- result.appendLiteral(", ");
+ result.appendLiteral(separator);
result.append(radiusX);
if (!radiusY.isNull()) {
- result.appendLiteral(", ");
+ result.appendLiteral(separator);
result.append(radiusY);
}
}
@@ -63,22 +67,22 @@
String CSSBasicShapeRectangle::cssText() const
{
return buildRectangleString(m_x->cssText(),
- m_y->cssText(),
- m_width->cssText(),
- m_height->cssText(),
- m_radiusX.get() ? m_radiusX->cssText() : String(),
- m_radiusY.get() ? m_radiusY->cssText() : String());
+ m_y->cssText(),
+ m_width->cssText(),
+ m_height->cssText(),
+ m_radiusX.get() ? m_radiusX->cssText() : String(),
+ m_radiusY.get() ? m_radiusY->cssText() : String());
}
#if ENABLE(CSS_VARIABLES)
String CSSBasicShapeRectangle::serializeResolvingVariables(const HashMap<AtomicString, String>& variables) const
{
return buildRectangleString(m_x->serializeResolvingVariables(variables),
- m_y->serializeResolvingVariables(variables),
- m_width->serializeResolvingVariables(variables),
- m_height->serializeResolvingVariables(variables),
- m_radiusX.get() ? m_radiusX->serializeResolvingVariables(variables) : String(),
- m_radiusY.get() ? m_radiusY->serializeResolvingVariables(variables) : String());
+ m_y->serializeResolvingVariables(variables),
+ m_width->serializeResolvingVariables(variables),
+ m_height->serializeResolvingVariables(variables),
+ m_radiusX.get() ? m_radiusX->serializeResolvingVariables(variables) : String(),
+ m_radiusY.get() ? m_radiusY->serializeResolvingVariables(variables) : String());
}
bool CSSBasicShapeRectangle::hasVariableReference() const
@@ -106,8 +110,8 @@
String CSSBasicShapeCircle::serializeResolvingVariables(const HashMap<AtomicString, String>& variables) const
{
return buildCircleString(m_centerX->serializeResolvingVariables(variables),
- m_centerY->serializeResolvingVariables(variables),
- m_radius->serializeResolvingVariables(variables));
+ m_centerY->serializeResolvingVariables(variables),
+ m_radius->serializeResolvingVariables(variables));
}
bool CSSBasicShapeCircle::hasVariableReference() const
@@ -132,9 +136,9 @@
String CSSBasicShapeEllipse::serializeResolvingVariables(const HashMap<AtomicString, String>& variables) const
{
return buildEllipseString(m_centerX->serializeResolvingVariables(variables),
- m_centerY->serializeResolvingVariables(variables),
- m_radiusX->serializeResolvingVariables(variables),
- m_radiusY->serializeResolvingVariables(variables));
+ m_centerY->serializeResolvingVariables(variables),
+ m_radiusX->serializeResolvingVariables(variables),
+ m_radiusY->serializeResolvingVariables(variables));
}
bool CSSBasicShapeEllipse::hasVariableReference() const
@@ -148,18 +152,32 @@
static String buildPolygonString(const WindRule& windRule, const Vector<String>& points)
{
+ ASSERT(!(points.size() % 2));
+
StringBuilder result;
+ char evenOddOpening[] = "polygon(evenodd, ";
+ char nonZeroOpening[] = "polygon(nonzero, ";
+ char commaSeparator[] = ", ";
+ COMPILE_ASSERT(sizeof(evenOddOpening) == sizeof(nonZeroOpening), polygon_string_openings_have_same_length);
+
+ // Compute the required capacity in advance to reduce allocations.
+ size_t length = sizeof(evenOddOpening) - 1;
+ for (size_t i = 0; i < points.size(); i += 2) {
+ if (i)
+ length += (sizeof(commaSeparator) - 1);
+ // add length of two strings, plus one for the space separator.
+ length += points[i].length() + 1 + points[i + 1].length();
+ }
+ result.reserveCapacity(length);
if (windRule == RULE_EVENODD)
- result.appendLiteral("polygon(evenodd, ");
+ result.appendLiteral(evenOddOpening);
else
- result.appendLiteral("polygon(nonzero, ");
+ result.appendLiteral(nonZeroOpening);
- ASSERT(!(points.size() % 2));
-
for (size_t i = 0; i < points.size(); i += 2) {
if (i)
- result.appendLiteral(", ");
+ result.appendLiteral(commaSeparator);
result.append(points[i]);
result.append(' ');
result.append(points[i + 1]);
Modified: trunk/Source/WebCore/css/Rect.h (129830 => 129831)
--- trunk/Source/WebCore/css/Rect.h 2012-09-28 01:43:52 UTC (rev 129830)
+++ trunk/Source/WebCore/css/Rect.h 2012-09-28 02:16:38 UTC (rev 129831)
@@ -83,9 +83,9 @@
String serializeResolvingVariables(const HashMap<AtomicString, String>& variables) const
{
return generateCSSString(top()->customSerializeResolvingVariables(variables),
- right()->customSerializeResolvingVariables(variables),
- bottom()->customSerializeResolvingVariables(variables),
- left()->customSerializeResolvingVariables(variables));
+ right()->customSerializeResolvingVariables(variables),
+ bottom()->customSerializeResolvingVariables(variables),
+ left()->customSerializeResolvingVariables(variables));
}
#endif
@@ -113,9 +113,9 @@
String serializeResolvingVariables(const HashMap<AtomicString, String>& variables) const
{
return generateCSSString(top()->customSerializeResolvingVariables(variables),
- right()->customSerializeResolvingVariables(variables),
- bottom()->customSerializeResolvingVariables(variables),
- left()->customSerializeResolvingVariables(variables));
+ right()->customSerializeResolvingVariables(variables),
+ bottom()->customSerializeResolvingVariables(variables),
+ left()->customSerializeResolvingVariables(variables));
}
#endif
@@ -125,6 +125,8 @@
static String generateCSSString(const String& top, const String& right, const String& bottom, const String& left)
{
StringBuilder result;
+ // reserve space for the four strings, plus three space separator characters.
+ result.reserveCapacity(top.length() + right.length() + bottom.length() + left.length() + 3);
result.append(top);
if (right != top || bottom != top || left != top) {
result.append(' ');