WebKit Bugzilla
Attachment 370017 Details for
Bug 197831
: Unify the parsing of SVGList super classes
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-197831-20190515190036.patch (text/plain), 122.46 KB, created by
Said Abou-Hallawa
on 2019-05-15 19:00:37 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Said Abou-Hallawa
Created:
2019-05-15 19:00:37 PDT
Size:
122.46 KB
patch
obsolete
>Subversion Revision: 245338 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 44db6ae85ba3c10cdab90d6609c2d38296eb15e0..64525d35730d8d1030c59164e11615c85aaa3cf7 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,90 @@ >+2019-05-15 Said Abou-Hallawa <said@apple.com> >+ >+ Unify the parsing of SVGList super classes >+ https://bugs.webkit.org/show_bug.cgi?id=197831 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Parsing the SVG lists is just ad-hoc. There is no single rule for: >+ >+ -- The leading spaces: SVGLengthList SVGNumberList treated them as an error >+ while SVGTransformList and SVGPointList were just skipping them. >+ -- Status of the list in case of an error: SVGTransformList was clearing >+ the list if an error was detected. The other lists were leaving whatever >+ is parsed before the error happened but return an error. >+ -- Reporting an error message in the console: SVGPointList was reporting >+ an error message if a parsing error happened. The other type of lists >+ were just silent when an error happens. >+ -- Delimiters: SVGNumberList assume the white spaces are the only allowed >+ delimiter. All other lists allow the comma also as a delimiter. >+ -- Extra text at the end: SVGTransformList was not reporting an error if >+ there is extra text at the end. Other list were returning false. >+ >+ In addition to that, the parsing code was repeated in every SVGList >+ super class. Instead parsing the list should be in SVGValuePropertyList >+ and SVGPrimitiveList. And parsing the item should be moved to the value >+ property class or the SVGPropertyTraits of the primitive. >+ >+ SVGViewSpec parsing is cleaned up in the patch as well. Parsing of this >+ class is needed to create the view for a fragment. >+ >+ * svg/SVGElement.cpp: >+ (WebCore::SVGElement::reportAttributeParsingError): >+ * svg/SVGFitToViewBox.cpp: >+ (WebCore::SVGFitToViewBox::parseAttribute): >+ (WebCore::SVGFitToViewBox::parseViewBox): >+ * svg/SVGFitToViewBox.h: >+ * svg/SVGLength.h: >+ (WebCore::SVGLength::create): >+ * svg/SVGLengthList.h: >+ (WebCore::SVGLengthList::parse): >+ * svg/SVGNumber.h: >+ (WebCore::SVGNumber::create): >+ * svg/SVGNumberList.h: >+ (WebCore::SVGNumberList::create): >+ (WebCore::SVGNumberList::parse): Deleted. >+ (): Deleted. >+ * svg/SVGParsingError.h: >+ * svg/SVGPoint.h: >+ (WebCore::SVGPoint::create): >+ * svg/SVGPointList.h: >+ (WebCore::SVGPointList::create): >+ (WebCore::SVGPointList::parse): Deleted. >+ (): Deleted. >+ * svg/SVGPolyElement.cpp: >+ (WebCore::SVGPolyElement::parseAttribute): >+ * svg/SVGPreserveAspectRatioValue.cpp: >+ (WebCore::SVGPreserveAspectRatioValue::parse): >+ * svg/SVGPreserveAspectRatioValue.h: >+ * svg/SVGSVGElement.cpp: >+ (WebCore::SVGSVGElement::parseAttribute): >+ (WebCore::SVGSVGElement::scrollToFragment): >+ * svg/SVGStringList.h: >+ * svg/SVGTests.cpp: >+ (WebCore::SVGTests::parseAttribute): >+ * svg/SVGTransform.h: >+ (WebCore::SVGTransform::create): >+ * svg/SVGTransformList.h: >+ * svg/SVGViewElement.cpp: >+ (WebCore::SVGViewElement::parseAttribute): >+ * svg/SVGViewSpec.cpp: >+ (WebCore::parseNamesValues): >+ (WebCore::SVGViewSpec::parseAttribute): >+ (WebCore::SVGViewSpec::parseViewSpec): >+ * svg/SVGViewSpec.h: >+ * svg/SVGZoomAndPan.cpp: >+ (WebCore::SVGZoomAndPan::parseAttribute): >+ (WebCore::SVGZoomAndPan::parseZoomAndPan): Deleted. >+ * svg/SVGZoomAndPan.h: >+ * svg/SVGZoomAndPanType.h: >+ (WebCore::SVGPropertyTraits<SVGZoomAndPanType>::parse): >+ (WebCore::SVGPropertyTraits<SVGZoomAndPanType>::fromString): >+ (WebCore::SVGPropertyTraits<SVGZoomAndPanType>::toString): Deleted. >+ * svg/properties/SVGPrimitiveList.h: >+ (WebCore::SVGPrimitiveList::parse): >+ * svg/properties/SVGValuePropertyList.h: >+ (WebCore::SVGValuePropertyList::parse): >+ > 2019-05-15 Youenn Fablet <youenn@apple.com> > > getUserMedia sandbox extensions should not be revoked when a getUserMedia allowed request is being processed >diff --git a/Source/WebCore/svg/SVGElement.cpp b/Source/WebCore/svg/SVGElement.cpp >index cc5b6fd25e85b7f9ca9eca2e1aead4ef458f6189..9d4cb87239853461896587d1d4dd2e40e45ca728 100644 >--- a/Source/WebCore/svg/SVGElement.cpp >+++ b/Source/WebCore/svg/SVGElement.cpp >@@ -238,17 +238,31 @@ void SVGElement::reportAttributeParsingError(SVGParsingError error, const Qualif > String errorString = "<" + tagName() + "> attribute " + name.toString() + "=\"" + value + "\""; > SVGDocumentExtensions& extensions = document().accessSVGExtensions(); > >- if (error == NegativeValueForbiddenError) { >+ switch (error) { >+ case NoError: >+ ASSERT_NOT_REACHED(); >+ break; >+ >+ case UnexpectedEndOfAttributeError: >+ extensions.reportError("Unexpected end of attribute for " + errorString); >+ break; >+ >+ case ZeroValueForbiddenError: >+ extensions.reportError("Invalid zero value for " + errorString); >+ break; >+ >+ case NegativeValueForbiddenError: > extensions.reportError("Invalid negative value for " + errorString); >- return; >- } >+ break; >+ >+ case UnrecognizedEnumValueError: >+ extensions.reportError("Unrecognized enumerated value for " + errorString); >+ break; > >- if (error == ParsingAttributeFailedError) { >+ case ParsingAttributeFailedError: > extensions.reportError("Invalid value for " + errorString); >- return; >+ break; > } >- >- ASSERT_NOT_REACHED(); > } > > void SVGElement::removedFromAncestor(RemovalType removalType, ContainerNode& oldParentOfRemovedTree) >diff --git a/Source/WebCore/svg/SVGFitToViewBox.cpp b/Source/WebCore/svg/SVGFitToViewBox.cpp >index d15e3546c1213e00dfa57c81b4a00b2efe30a973..bbb2978a40bf804188a88bfdebfcc34dc55adacd 100644 >--- a/Source/WebCore/svg/SVGFitToViewBox.cpp >+++ b/Source/WebCore/svg/SVGFitToViewBox.cpp >@@ -63,35 +63,41 @@ void SVGFitToViewBox::reset() > resetPreserveAspectRatio(); > } > >-bool SVGFitToViewBox::parseAttribute(const QualifiedName& name, const AtomicString& value) >+Optional<SVGParsingError> SVGFitToViewBox::parseAttribute(const QualifiedName& name, const AtomicString& value) > { >- if (name == SVGNames::viewBoxAttr) { >+ if (name.matches(SVGNames::viewBoxAttr)) { > FloatRect viewBox; >- if (!value.isNull() && parseViewBox(value, viewBox)) >- setViewBox(viewBox); >- else >+ if (auto error = parseViewBox(value, viewBox)) { > resetViewBox(); >- return true; >+ return error; >+ } >+ setViewBox(viewBox); >+ return NoError; > } > >- if (name == SVGNames::preserveAspectRatioAttr) { >+ if (name.matches(SVGNames::preserveAspectRatioAttr)) { > SVGPreserveAspectRatioValue preserveAspectRatio; >- preserveAspectRatio.parse(value); >+ if (!preserveAspectRatio.parse(value)) { >+ resetPreserveAspectRatio(); >+ return ParsingAttributeFailedError; >+ } > setPreserveAspectRatio(preserveAspectRatio); >- return true; >+ return NoError; > } > >- return false; >+ return { }; > } > >-bool SVGFitToViewBox::parseViewBox(const AtomicString& value, FloatRect& viewBox) >+SVGParsingError SVGFitToViewBox::parseViewBox(const AtomicString& value, FloatRect& viewBox) > { >+ if (value.isNull()) >+ return UnexpectedEndOfAttributeError; > auto upconvertedCharacters = StringView(value).upconvertedCharacters(); > const UChar* characters = upconvertedCharacters; > return parseViewBox(characters, characters + value.length(), viewBox); > } > >-bool SVGFitToViewBox::parseViewBox(const UChar*& c, const UChar* end, FloatRect& viewBox, bool validate) >+SVGParsingError SVGFitToViewBox::parseViewBox(const UChar*& c, const UChar* end, FloatRect& viewBox) > { > String str(c, end - c); > >@@ -103,36 +109,24 @@ bool SVGFitToViewBox::parseViewBox(const UChar*& c, const UChar* end, FloatRect& > float height = 0.0f; > bool valid = parseNumber(c, end, x) && parseNumber(c, end, y) && parseNumber(c, end, width) && parseNumber(c, end, height, false); > >- if (validate) { >- Document& document = m_viewBox->contextElement()->document(); >+ if (!valid) >+ return ParsingAttributeFailedError; > >- if (!valid) { >- document.accessSVGExtensions().reportWarning("Problem parsing viewBox=\"" + str + "\""); >- return false; >- } >+ // Check that width is positive. >+ if (width < 0.0) >+ return NegativeValueForbiddenError; > >- // Check that width is positive. >- if (width < 0.0) { >- document.accessSVGExtensions().reportError("A negative value for ViewBox width is not allowed"); >- return false; >- } >+ // Check that height is positive. >+ if (height < 0.0) >+ return NegativeValueForbiddenError; > >- // Check that height is positive. >- if (height < 0.0) { >- document.accessSVGExtensions().reportError("A negative value for ViewBox height is not allowed"); >- return false; >- } >- >- // Nothing should come after the last, fourth number. >- skipOptionalSVGSpaces(c, end); >- if (c < end) { >- document.accessSVGExtensions().reportWarning("Problem parsing viewBox=\"" + str + "\""); >- return false; >- } >- } >+ // Nothing should come after the last, fourth number. >+ skipOptionalSVGSpaces(c, end); >+ if (c < end) >+ return ParsingAttributeFailedError; > > viewBox = { x, y, width, height }; >- return true; >+ return NoError; > } > > AffineTransform SVGFitToViewBox::viewBoxToViewTransform(const FloatRect& viewBoxRect, const SVGPreserveAspectRatioValue& preserveAspectRatio, float viewWidth, float viewHeight) >diff --git a/Source/WebCore/svg/SVGFitToViewBox.h b/Source/WebCore/svg/SVGFitToViewBox.h >index 7cc4231416019319d7e2b4d2d7d7636c379b8a4f..fcb69011b067839aea9e9fbee45ac30faf924e22 100644 >--- a/Source/WebCore/svg/SVGFitToViewBox.h >+++ b/Source/WebCore/svg/SVGFitToViewBox.h >@@ -64,9 +64,9 @@ protected: > static bool isKnownAttribute(const QualifiedName& attributeName) { return PropertyRegistry::isKnownAttribute(attributeName); } > > void reset(); >- bool parseAttribute(const QualifiedName&, const AtomicString&); >- bool parseViewBox(const AtomicString& value, FloatRect& viewBox); >- bool parseViewBox(const UChar*& start, const UChar* end, FloatRect& viewBox, bool validate = true); >+ Optional<SVGParsingError> parseAttribute(const QualifiedName&, const AtomicString&); >+ SVGParsingError parseViewBox(const AtomicString& value, FloatRect& viewBox); >+ SVGParsingError parseViewBox(const UChar*& start, const UChar* end, FloatRect& viewBox); > > private: > Ref<SVGAnimatedRect> m_viewBox; >diff --git a/Source/WebCore/svg/SVGLength.h b/Source/WebCore/svg/SVGLength.h >index ff0fd3514b263e138d5cca907f3a7987b6f3b9ef..9bbb5df8255aef60a58c134f2458ae18fc9021b6 100644 >--- a/Source/WebCore/svg/SVGLength.h >+++ b/Source/WebCore/svg/SVGLength.h >@@ -66,6 +66,23 @@ public: > return adoptRef(*new SVGLength(owner, access, value)); > } > >+ static Expected<Ref<SVGLength>, SVGParsingError> create(const UChar*& ptr, const UChar* end, SVGLengthMode lengthMode) >+ { >+ const UChar* start = ptr; >+ while (ptr < end && *ptr != ',' && !isSVGSpace(*ptr)) >+ ptr++; >+ >+ String string(start, ptr - start); >+ if (string.isEmpty()) >+ return makeUnexpected(ParsingAttributeFailedError); >+ >+ SVGLengthValue value(lengthMode); >+ if (value.setValueAsString(string).hasException()) >+ return makeUnexpected(ParsingAttributeFailedError); >+ >+ return SVGLength::create(value); >+ } >+ > template<typename T> > static ExceptionOr<Ref<SVGLength>> create(ExceptionOr<T>&& value) > { >diff --git a/Source/WebCore/svg/SVGLengthList.h b/Source/WebCore/svg/SVGLengthList.h >index b0147fa234f4d9a88f9fc9f31d5f388973167695..dfe65698589369587d0d9836c2974a5490fbde08 100644 >--- a/Source/WebCore/svg/SVGLengthList.h >+++ b/Source/WebCore/svg/SVGLengthList.h >@@ -52,46 +52,11 @@ public: > > SVGLengthMode lengthMode() const { return m_lengthMode; } > >- bool parse(const String& value) >+ SVGParsingError parse(const String& value) > { >- clearItems(); >- >- auto upconvertedCharacters = StringView(value).upconvertedCharacters(); >- const UChar* ptr = upconvertedCharacters; >- const UChar* end = ptr + value.length(); >- while (ptr < end) { >- const UChar* start = ptr; >- while (ptr < end && *ptr != ',' && !isSVGSpace(*ptr)) >- ptr++; >- if (ptr == start) >- break; >- >- String valueString(start, ptr - start); >- SVGLengthValue value(m_lengthMode); >- if (value.setValueAsString(valueString).hasException()) >- break; >- >- append(SVGLength::create(value)); >- skipOptionalSVGSpacesOrDelimiter(ptr, end); >- } >- >- return ptr == end; >+ return Base::parse(value, m_lengthMode); > } > >- String valueAsString() const override >- { >- StringBuilder builder; >- >- for (const auto& length : m_items) { >- if (builder.length()) >- builder.append(' '); >- >- builder.append(length->value().valueAsString()); >- } >- >- return builder.toString(); >- } >- > private: > SVGLengthList(SVGLengthMode lengthMode) > : m_lengthMode(lengthMode) >diff --git a/Source/WebCore/svg/SVGNumber.h b/Source/WebCore/svg/SVGNumber.h >index 23c82e44e677d8d360c96154c795dab8776a1fa4..92f5a1ad8ce4abcfdde7ca4b6e0d7bfd50998f46 100644 >--- a/Source/WebCore/svg/SVGNumber.h >+++ b/Source/WebCore/svg/SVGNumber.h >@@ -45,6 +45,14 @@ public: > return adoptRef(*new SVGNumber(owner, access, value)); > } > >+ static Expected<Ref<SVGNumber>, SVGParsingError> create(const UChar*& ptr, const UChar* end) >+ { >+ float number = 0; >+ if (!parseNumber(ptr, end, number)) >+ return makeUnexpected(ParsingAttributeFailedError); >+ return SVGNumber::create(number); >+ } >+ > template<typename T> > static ExceptionOr<Ref<SVGNumber>> create(ExceptionOr<T>&& value) > { >diff --git a/Source/WebCore/svg/SVGNumberList.h b/Source/WebCore/svg/SVGNumberList.h >index 5e2c114659bb66e62a1ff42971334010b54ac281..a5e73e1909dbf4614ac07ef31e3ab45272eff31d 100644 >--- a/Source/WebCore/svg/SVGNumberList.h >+++ b/Source/WebCore/svg/SVGNumberList.h >@@ -49,40 +49,6 @@ public: > { > return adoptRef(*new SVGNumberList(other, access)); > } >- >- bool parse(const String& value) >- { >- clearItems(); >- >- float number = 0; >- auto upconvertedCharacters = StringView(value).upconvertedCharacters(); >- const UChar* ptr = upconvertedCharacters; >- const UChar* end = ptr + value.length(); >- >- // The spec (section 4.1) strangely doesn't allow leading whitespace. >- // We might choose to violate that intentionally. >- while (ptr < end) { >- if (!parseNumber(ptr, end, number)) >- break; >- append(SVGNumber::create(number)); >- } >- >- return ptr == end; >- } >- >- String valueAsString() const override >- { >- StringBuilder builder; >- >- for (const auto& number : m_items) { >- if (builder.length()) >- builder.append(' '); >- >- builder.appendNumber(number->value()); >- } >- >- return builder.toString(); >- } > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGParsingError.h b/Source/WebCore/svg/SVGParsingError.h >index 1b9a701b9b28996568550ad7b89b373d74363972..772596099c43ff730a7c675e78960b7a8de662a7 100644 >--- a/Source/WebCore/svg/SVGParsingError.h >+++ b/Source/WebCore/svg/SVGParsingError.h >@@ -30,8 +30,11 @@ namespace WebCore { > > enum SVGParsingError { > NoError, >- ParsingAttributeFailedError, >- NegativeValueForbiddenError >+ UnexpectedEndOfAttributeError, >+ ZeroValueForbiddenError, >+ NegativeValueForbiddenError, >+ UnrecognizedEnumValueError, >+ ParsingAttributeFailedError > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGPoint.h b/Source/WebCore/svg/SVGPoint.h >index 77445b9fcb1fb40b51396e192e734586c6354b52..b1faf612c056add573f7205434d54a0e9bcf1391 100644 >--- a/Source/WebCore/svg/SVGPoint.h >+++ b/Source/WebCore/svg/SVGPoint.h >@@ -44,6 +44,19 @@ public: > return adoptRef(*new SVGPoint(value)); > } > >+ static Expected<Ref<SVGPoint>, SVGParsingError> create(const UChar*& ptr, const UChar* end) >+ { >+ float xPos = 0.0f; >+ if (!parseNumber(ptr, end, xPos)) >+ return makeUnexpected(ParsingAttributeFailedError); >+ >+ float yPos = 0.0f; >+ if (!parseNumber(ptr, end, yPos, false)) >+ return makeUnexpected(ParsingAttributeFailedError); >+ >+ return SVGPoint::create({ xPos, yPos }); >+ } >+ > template<typename T> > static ExceptionOr<Ref<SVGPoint>> create(ExceptionOr<T>&& value) > { >@@ -88,7 +101,6 @@ public: > return adoptRef(*new SVGPoint(newPoint)); > } > >-private: > String valueAsString() const override > { > return SVGPropertyTraits<FloatPoint>::toString(m_value); >diff --git a/Source/WebCore/svg/SVGPointList.h b/Source/WebCore/svg/SVGPointList.h >index 80b83901e7f8ae026b0a5fdd4e04e59d826059b2..dbec89bfa8989e4320370e2cc04267b5ce247f3f 100644 >--- a/Source/WebCore/svg/SVGPointList.h >+++ b/Source/WebCore/svg/SVGPointList.h >@@ -49,57 +49,6 @@ public: > { > return adoptRef(*new SVGPointList(other, access)); > } >- >- bool parse(const String& value) >- { >- clearItems(); >- >- auto upconvertedCharacters = StringView(value).upconvertedCharacters(); >- const UChar* cur = upconvertedCharacters; >- const UChar* end = cur + value.length(); >- >- skipOptionalSVGSpaces(cur, end); >- >- bool delimParsed = false; >- while (cur < end) { >- delimParsed = false; >- float xPos = 0.0f; >- if (!parseNumber(cur, end, xPos)) >- return false; >- >- float yPos = 0.0f; >- if (!parseNumber(cur, end, yPos, false)) >- return false; >- >- skipOptionalSVGSpaces(cur, end); >- >- if (cur < end && *cur == ',') { >- delimParsed = true; >- cur++; >- } >- skipOptionalSVGSpaces(cur, end); >- >- append(SVGPoint::create({ xPos, yPos })); >- } >- >- return !delimParsed; >- } >- >- String valueAsString() const override >- { >- StringBuilder builder; >- >- for (const auto& point : m_items) { >- if (builder.length()) >- builder.append(' '); >- >- builder.appendNumber(point->x()); >- builder.append(' '); >- builder.appendNumber(point->y()); >- } >- >- return builder.toString(); >- } > }; > > } >diff --git a/Source/WebCore/svg/SVGPolyElement.cpp b/Source/WebCore/svg/SVGPolyElement.cpp >index c2fe2eaa897d78b69b095c6dcf350c29f0fcbbb6..c9552c66b46b0eb21060f61adcb83ef5d222a9e7 100644 >--- a/Source/WebCore/svg/SVGPolyElement.cpp >+++ b/Source/WebCore/svg/SVGPolyElement.cpp >@@ -46,7 +46,7 @@ SVGPolyElement::SVGPolyElement(const QualifiedName& tagName, Document& document) > void SVGPolyElement::parseAttribute(const QualifiedName& name, const AtomicString& value) > { > if (name == SVGNames::pointsAttr) { >- if (!m_points->baseVal()->parse(value)) >+ if (m_points->baseVal()->parse(value) != NoError) > document().accessSVGExtensions().reportError("Problem parsing points=\"" + value + "\""); > return; > } >diff --git a/Source/WebCore/svg/SVGPreserveAspectRatioValue.cpp b/Source/WebCore/svg/SVGPreserveAspectRatioValue.cpp >index d0bc716620f7a8a51ec634af7be94bbf5101e755..7e446e2caf056f7318adfa8c92ecd9aa7569f5ef 100644 >--- a/Source/WebCore/svg/SVGPreserveAspectRatioValue.cpp >+++ b/Source/WebCore/svg/SVGPreserveAspectRatioValue.cpp >@@ -58,11 +58,11 @@ ExceptionOr<void> SVGPreserveAspectRatioValue::setMeetOrSlice(unsigned short mee > return { }; > } > >-void SVGPreserveAspectRatioValue::parse(const String& value) >+bool SVGPreserveAspectRatioValue::parse(const String& value) > { > auto upconvertedCharacters = StringView(value).upconvertedCharacters(); > const UChar* begin = upconvertedCharacters; >- parseInternal(begin, begin + value.length(), true); >+ return parseInternal(begin, begin + value.length(), true); > } > > bool SVGPreserveAspectRatioValue::parse(const UChar*& currParam, const UChar* end, bool validate) >diff --git a/Source/WebCore/svg/SVGPreserveAspectRatioValue.h b/Source/WebCore/svg/SVGPreserveAspectRatioValue.h >index 415b8723f8d30864c1b3fd788cc3b989bad7ef9c..66ed146be7fd1802341c28e9c6f5eb12e75f8c02 100644 >--- a/Source/WebCore/svg/SVGPreserveAspectRatioValue.h >+++ b/Source/WebCore/svg/SVGPreserveAspectRatioValue.h >@@ -64,7 +64,7 @@ public: > > AffineTransform getCTM(float logicalX, float logicalY, float logicalWidth, float logicalHeight, float physicalWidth, float physicalHeight) const; > >- void parse(const String&); >+ bool parse(const String&); > bool parse(const UChar*& currParam, const UChar* end, bool validate); > > String valueAsString() const; >diff --git a/Source/WebCore/svg/SVGSVGElement.cpp b/Source/WebCore/svg/SVGSVGElement.cpp >index 9bf0342332aeb44dcdb49ba9432b11cbce026baa..b7fc7fd438507195b473c96175b07b18f3d7a899 100644 >--- a/Source/WebCore/svg/SVGSVGElement.cpp >+++ b/Source/WebCore/svg/SVGSVGElement.cpp >@@ -252,12 +252,16 @@ void SVGSVGElement::parseAttribute(const QualifiedName& name, const AtomicString > m_height->setBaseValInternal(length); > } > >- reportAttributeParsingError(parseError, name, value); >- > SVGGraphicsElement::parseAttribute(name, value); > SVGExternalResourcesRequired::parseAttribute(name, value); >- SVGFitToViewBox::parseAttribute(name, value); >- SVGZoomAndPan::parseAttribute(name, value); >+ >+ if (auto error = SVGFitToViewBox::parseAttribute(name, value)) >+ parseError = *error; >+ >+ if (auto error = SVGZoomAndPan::parseAttribute(name, value)) >+ parseError = *error; >+ >+ reportAttributeParsingError(parseError, name, value); > } > > void SVGSVGElement::svgAttributeChanged(const QualifiedName& attrName) >@@ -651,7 +655,7 @@ bool SVGSVGElement::scrollToFragment(const String& fragmentIdentifier) > if (fragmentIdentifier.startsWith("svgView(")) { > if (!view) > view = ¤tView(); // Create the SVGViewSpec. >- if (view->parseViewSpec(fragmentIdentifier)) >+ if (view->parseViewSpec(fragmentIdentifier) == NoError) > m_useCurrentView = true; > else > view->reset(); >diff --git a/Source/WebCore/svg/SVGStringList.h b/Source/WebCore/svg/SVGStringList.h >index d1e01069b12c7e90602af002fe293c40d4b70ec5..350e8a8135701b21b1c16cc4c2632ddcfb8678b0 100644 >--- a/Source/WebCore/svg/SVGStringList.h >+++ b/Source/WebCore/svg/SVGStringList.h >@@ -25,7 +25,6 @@ > > #pragma once > >-#include "SVGParserUtilities.h" > #include "SVGPrimitiveList.h" > #include <wtf/text/StringBuilder.h> > >@@ -42,47 +41,15 @@ public: > return adoptRef(*new SVGStringList(owner)); > } > >- void reset(const String& string) >+ SVGParsingError parse(const String& string) > { >- parse(string, ' '); >+ SVGParsingError error = Base::parse(string); > > // Add empty string, if list is empty. > if (m_items.isEmpty()) > m_items.append(emptyString()); >- } >- >- bool parse(const String& data, UChar delimiter) >- { >- clearItems(); >- >- auto upconvertedCharacters = StringView(data).upconvertedCharacters(); >- const UChar* ptr = upconvertedCharacters; >- const UChar* end = ptr + data.length(); >- while (ptr < end) { >- const UChar* start = ptr; >- while (ptr < end && *ptr != delimiter && !isSVGSpace(*ptr)) >- ptr++; >- if (ptr == start) >- break; >- m_items.append(String(start, ptr - start)); >- skipOptionalSVGSpacesOrDelimiter(ptr, end, delimiter); >- } >- >- return ptr == end; >- } >- >- String valueAsString() const override >- { >- StringBuilder builder; >- >- for (auto string : m_items) { >- if (builder.length()) >- builder.append(' '); >- >- builder.append(string); >- } >- >- return builder.toString(); >+ >+ return error; > } > }; > >diff --git a/Source/WebCore/svg/SVGTests.cpp b/Source/WebCore/svg/SVGTests.cpp >index 45523044f84066fe022c03d1595e8f32a9f7c0d5..9bc70019c17348e880e1430eea63425eb6ec40ca 100644 >--- a/Source/WebCore/svg/SVGTests.cpp >+++ b/Source/WebCore/svg/SVGTests.cpp >@@ -150,11 +150,11 @@ bool SVGTests::isValid() const > void SVGTests::parseAttribute(const QualifiedName& attributeName, const AtomicString& value) > { > if (attributeName == requiredFeaturesAttr) >- m_requiredFeatures->reset(value); >+ m_requiredFeatures->parse(value); > if (attributeName == requiredExtensionsAttr) >- m_requiredExtensions->reset(value); >+ m_requiredExtensions->parse(value); > if (attributeName == systemLanguageAttr) >- m_systemLanguage->reset(value); >+ m_systemLanguage->parse(value); > } > > void SVGTests::svgAttributeChanged(const QualifiedName& attrName) >diff --git a/Source/WebCore/svg/SVGTransform.h b/Source/WebCore/svg/SVGTransform.h >index 6a29c72cf3e7f313f709657a4012481c223b8dcd..77b899614fbce38919d73b52bf981ee3f6a8d7e0 100644 >--- a/Source/WebCore/svg/SVGTransform.h >+++ b/Source/WebCore/svg/SVGTransform.h >@@ -27,6 +27,7 @@ > > #include "SVGMatrix.h" > #include "SVGTransformValue.h" >+#include "SVGTransformable.h" > #include "SVGValueProperty.h" > > namespace WebCore { >@@ -48,6 +49,19 @@ public: > return adoptRef(*new SVGTransform(value.type(), value.matrix()->value(), value.angle(), value.rotationCenter())); > } > >+ static Expected<Ref<SVGTransform>, SVGParsingError> create(const UChar*& ptr, const UChar* end) >+ { >+ SVGTransformValue::SVGTransformType type = SVGTransformValue::SVG_TRANSFORM_UNKNOWN; >+ if (!SVGTransformable::parseAndSkipType(ptr, end, type)) >+ return makeUnexpected(ParsingAttributeFailedError); >+ >+ Ref<SVGTransform> transform = SVGTransform::create(type); >+ if (!SVGTransformable::parseTransformValue(type, ptr, end, transform->value())) >+ return makeUnexpected(ParsingAttributeFailedError); >+ >+ return transform; >+ } >+ > template<typename T> > static ExceptionOr<Ref<SVGTransform>> create(ExceptionOr<T>&& value) > { >@@ -130,6 +144,11 @@ public: > return { }; > } > >+ String valueAsString() const override >+ { >+ return m_value.valueAsString(); >+ } >+ > private: > using Base = SVGValueProperty<SVGTransformValue>; > >@@ -147,11 +166,6 @@ private: > owner()->commitPropertyChange(this); > m_value.matrixDidChange(); > } >- >- String valueAsString() const override >- { >- return m_value.valueAsString(); >- } > }; > > } // namespace WebCore >diff --git a/Source/WebCore/svg/SVGTransformList.h b/Source/WebCore/svg/SVGTransformList.h >index 544d60b2e635c1c209934ee435cf4125e6a71f2b..7754b71fb4e961b2e7f06cf71610eb35f4c10240 100644 >--- a/Source/WebCore/svg/SVGTransformList.h >+++ b/Source/WebCore/svg/SVGTransformList.h >@@ -22,13 +22,11 @@ > #pragma once > > #include "SVGTransform.h" >-#include "SVGTransformable.h" > #include "SVGValuePropertyList.h" > > namespace WebCore { > > class SVGTransformList final : public SVGValuePropertyList<SVGTransform> { >- friend class SVGViewSpec; > using Base = SVGValuePropertyList<SVGTransform>; > using Base::Base; > >@@ -75,16 +73,6 @@ public: > return makeRefPtr(item.get()); > } > >- void parse(const String& value) >- { >- clearItems(); >- >- auto upconvertedCharacters = StringView(value).upconvertedCharacters(); >- const UChar* start = upconvertedCharacters; >- if (!parse(start, start + value.length())) >- clearItems(); >- } >- > AffineTransform concatenate() const > { > AffineTransform result; >@@ -93,44 +81,13 @@ public: > return result; > } > >- String valueAsString() const override >+ SVGParsingError parse(const String& string) > { >- StringBuilder builder; >- for (const auto& transfrom : m_items) { >- if (builder.length()) >- builder.append(' '); >- >- builder.append(transfrom->value().valueAsString()); >- } >- return builder.toString(); >- } >- >-private: >- bool parse(const UChar*& start, const UChar* end) >- { >- bool delimParsed = false; >- while (start < end) { >- delimParsed = false; >- SVGTransformValue::SVGTransformType type = SVGTransformValue::SVG_TRANSFORM_UNKNOWN; >- skipOptionalSVGSpaces(start, end); >- >- if (!SVGTransformable::parseAndSkipType(start, end, type)) >- return false; >- >- Ref<SVGTransform> transform = SVGTransform::create(type); >- if (!SVGTransformable::parseTransformValue(type, start, end, transform->value())) >- return false; >- >- append(WTFMove(transform)); >- skipOptionalSVGSpaces(start, end); >- if (start < end && *start == ',') { >- delimParsed = true; >- ++start; >- } >- >- skipOptionalSVGSpaces(start, end); >+ if (auto error = Base::parse(string)) { >+ clearItems(); >+ return error; > } >- return !delimParsed; >+ return NoError; > } > }; > >diff --git a/Source/WebCore/svg/SVGViewElement.cpp b/Source/WebCore/svg/SVGViewElement.cpp >index 3396c6e98236b64e8695ff0419e80269577b473a..0aec3276ec4adc0b21a62f74fb5379a85397bb2a 100644 >--- a/Source/WebCore/svg/SVGViewElement.cpp >+++ b/Source/WebCore/svg/SVGViewElement.cpp >@@ -51,7 +51,7 @@ Ref<SVGViewElement> SVGViewElement::create(const QualifiedName& tagName, Documen > void SVGViewElement::parseAttribute(const QualifiedName& name, const AtomicString& value) > { > if (name == SVGNames::viewTargetAttr) { >- m_viewTarget->reset(value); >+ m_viewTarget->parse(value); > return; > } > >diff --git a/Source/WebCore/svg/SVGViewSpec.cpp b/Source/WebCore/svg/SVGViewSpec.cpp >index 8f423516b5bdbc5287cda44adf49fc618ddc32ec..78b89c5980c1bf964d9e1daf791a81ccf2bb03a3 100644 >--- a/Source/WebCore/svg/SVGViewSpec.cpp >+++ b/Source/WebCore/svg/SVGViewSpec.cpp >@@ -23,11 +23,8 @@ > > #include "Document.h" > #include "SVGElement.h" >-#include "SVGFitToViewBox.h" > #include "SVGNames.h" >-#include "SVGParserUtilities.h" > #include "SVGTransformList.h" >-#include "SVGTransformable.h" > > namespace WebCore { > >@@ -60,99 +57,104 @@ void SVGViewSpec::reset() > SVGZoomAndPan::reset(); > } > >-static const UChar svgViewSpec[] = {'s', 'v', 'g', 'V', 'i', 'e', 'w'}; >-static const UChar viewBoxSpec[] = {'v', 'i', 'e', 'w', 'B', 'o', 'x'}; >-static const UChar preserveAspectRatioSpec[] = {'p', 'r', 'e', 's', 'e', 'r', 'v', 'e', 'A', 's', 'p', 'e', 'c', 't', 'R', 'a', 't', 'i', 'o'}; >-static const UChar transformSpec[] = {'t', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm'}; >-static const UChar zoomAndPanSpec[] = {'z', 'o', 'o', 'm', 'A', 'n', 'd', 'P', 'a', 'n'}; >-static const UChar viewTargetSpec[] = {'v', 'i', 'e', 'w', 'T', 'a', 'r', 'g', 'e', 't'}; >+static Optional<Vector<std::pair<String, String>>> parseNamesValues(const String& string) >+{ >+ Vector<std::pair<String, String>> result; >+ >+ for (size_t position = 0; position < string.length(); ) { >+ size_t start = position; >+ >+ // Find of the end of the attributue name. >+ position = string.find('(', start); >+ if (position == notFound) >+ return WTF::nullopt; >+ >+ // Extract the name and stip the white spaces. >+ String name = string.substring(start, position - start).stripWhiteSpace(); >+ >+ // Keep track of opend left parentheses but store the postions of the closed ones >+ Vector<size_t> leftParentheses { position }; >+ Vector<std::pair<size_t, size_t>> parentheses; >+ start = position++; >+ >+ while (position < string.length() && !leftParentheses.isEmpty()) { >+ if (string[position] == '(') >+ leftParentheses.append(position); >+ else if (string[position] == ')') >+ parentheses.append(std::make_pair(leftParentheses.takeLast(), position)); >+ ++position; >+ } >+ >+ // Unbalanced parentheses. >+ if (!leftParentheses.isEmpty()) >+ return WTF::nullopt; > >-bool SVGViewSpec::parseViewSpec(const String& viewSpec) >+ size_t end = position; >+ >+ // Remove unnecessary parentheses. >+ for (; !parentheses.isEmpty(); ++start, --end) { >+ auto pair = parentheses.takeLast(); >+ if (pair.first != start || pair.second != end -1) >+ break; >+ } >+ >+ // Extract the value and stip the white spaces. >+ String value = string.substring(start, end - start).stripWhiteSpace(); >+ result.append(std::make_pair(name, value)); >+ >+ // Skip the semicolon if it separates the attributes. >+ if (position < string.length() && string[position] == ';') >+ ++position; >+ } >+ >+ return result; >+} >+ >+SVGParsingError SVGViewSpec::parseAttribute(const QualifiedName& name, const AtomicString& value) >+{ >+ if (name == SVGNames::transformAttr) >+ return m_transform->parse(value); >+ >+ if (auto error = SVGFitToViewBox::parseAttribute(name, value)) >+ return *error; >+ >+ if (auto error = SVGZoomAndPan::parseAttribute(name, value)) >+ return *error; >+ >+ return ParsingAttributeFailedError; >+} >+ >+SVGParsingError SVGViewSpec::parseViewSpec(const String& viewSpec) > { >- auto upconvertedCharacters = StringView(viewSpec).upconvertedCharacters(); >- const UChar* currViewSpec = upconvertedCharacters; >- const UChar* end = currViewSpec + viewSpec.length(); >- >- if (currViewSpec >= end || !m_contextElement) >- return false; >- >- if (!skipString(currViewSpec, end, svgViewSpec, WTF_ARRAY_LENGTH(svgViewSpec))) >- return false; >- >- if (currViewSpec >= end || *currViewSpec != '(') >- return false; >- currViewSpec++; >- >- while (currViewSpec < end && *currViewSpec != ')') { >- if (*currViewSpec == 'v') { >- if (skipString(currViewSpec, end, viewBoxSpec, WTF_ARRAY_LENGTH(viewBoxSpec))) { >- if (currViewSpec >= end || *currViewSpec != '(') >- return false; >- currViewSpec++; >- FloatRect viewBox; >- if (!SVGFitToViewBox::parseViewBox(currViewSpec, end, viewBox, false)) >- return false; >- setViewBox(viewBox); >- if (currViewSpec >= end || *currViewSpec != ')') >- return false; >- currViewSpec++; >- } else if (skipString(currViewSpec, end, viewTargetSpec, WTF_ARRAY_LENGTH(viewTargetSpec))) { >- if (currViewSpec >= end || *currViewSpec != '(') >- return false; >- const UChar* viewTargetStart = ++currViewSpec; >- while (currViewSpec < end && *currViewSpec != ')') >- currViewSpec++; >- if (currViewSpec >= end) >- return false; >- m_viewTargetString = String(viewTargetStart, currViewSpec - viewTargetStart); >- currViewSpec++; >- } else >- return false; >- } else if (*currViewSpec == 'z') { >- if (!skipString(currViewSpec, end, zoomAndPanSpec, WTF_ARRAY_LENGTH(zoomAndPanSpec))) >- return false; >- if (currViewSpec >= end || *currViewSpec != '(') >- return false; >- currViewSpec++; >- if (!SVGZoomAndPan::parseZoomAndPan(currViewSpec, end)) >- return false; >- if (currViewSpec >= end || *currViewSpec != ')') >- return false; >- currViewSpec++; >- } else if (*currViewSpec == 'p') { >- if (!skipString(currViewSpec, end, preserveAspectRatioSpec, WTF_ARRAY_LENGTH(preserveAspectRatioSpec))) >- return false; >- if (currViewSpec >= end || *currViewSpec != '(') >- return false; >- currViewSpec++; >- SVGPreserveAspectRatioValue preserveAspectRatio; >- if (!preserveAspectRatio.parse(currViewSpec, end, false)) >- return false; >- setPreserveAspectRatio(preserveAspectRatio); >- if (currViewSpec >= end || *currViewSpec != ')') >- return false; >- currViewSpec++; >- } else if (*currViewSpec == 't') { >- if (!skipString(currViewSpec, end, transformSpec, WTF_ARRAY_LENGTH(transformSpec))) >- return false; >- if (currViewSpec >= end || *currViewSpec != '(') >- return false; >- currViewSpec++; >- m_transform->parse(currViewSpec, end); >- if (currViewSpec >= end || *currViewSpec != ')') >- return false; >- currViewSpec++; >- } else >- return false; >- >- if (currViewSpec < end && *currViewSpec == ';') >- currViewSpec++; >+ auto result = parseNamesValues(viewSpec); >+ if (!result || result->size() != 1 || (*result)[0].first != "svgView") >+ return ParsingAttributeFailedError; >+ >+ auto namesValues = parseNamesValues((*result)[0].second); >+ if (!namesValues || namesValues->isEmpty()) >+ return ParsingAttributeFailedError; >+ >+ StringBuilder transfrom; >+ for (auto& nameValue : *namesValues) { >+ QualifiedName name(emptyAtom(), nameValue.first, emptyAtom()); >+ if (name.matches(SVGNames::viewTargetAttr)) { >+ // viewTarget can't be an empty string. >+ if (nameValue.second.isEmpty()) >+ return UnexpectedEndOfAttributeError; >+ m_viewTargetString = nameValue.second; >+ } else if (name.matches(SVGNames::transformAttr)) { >+ // transform can exist multiple times. Collect values and parse at the end. >+ if (transfrom.length()) >+ transfrom.append(' '); >+ transfrom.append(nameValue.second); >+ } else if (auto error = parseAttribute(name, nameValue.second)) >+ return error; > } >- >- if (currViewSpec >= end || *currViewSpec != ')') >- return false; > >- return true; >+ if (transfrom.length()) >+ return parseAttribute(SVGNames::transformAttr, transfrom.toString()); >+ >+ return NoError; > } > > } >diff --git a/Source/WebCore/svg/SVGViewSpec.h b/Source/WebCore/svg/SVGViewSpec.h >index 2e7ef9786c1a886fd25acfea037fc850d79de520..557799576d7fbe7624aee5a712a07263a5eb2e03 100644 >--- a/Source/WebCore/svg/SVGViewSpec.h >+++ b/Source/WebCore/svg/SVGViewSpec.h >@@ -36,7 +36,7 @@ public: > return adoptRef(*new SVGViewSpec(contextElement)); > } > >- bool parseViewSpec(const String&); >+ SVGParsingError parseViewSpec(const String&); > void reset(); > void resetContextElement() { m_contextElement = nullptr; } > >@@ -51,6 +51,8 @@ public: > private: > explicit SVGViewSpec(SVGElement&); > >+ SVGParsingError parseAttribute(const QualifiedName&, const AtomicString&); >+ > using PropertyRegistry = SVGPropertyOwnerRegistry<SVGViewSpec, SVGFitToViewBox>; > > WeakPtr<SVGElement> m_contextElement; >diff --git a/Source/WebCore/svg/SVGZoomAndPan.cpp b/Source/WebCore/svg/SVGZoomAndPan.cpp >index 14d8fcb77ea5801d65109f453da250362311276d..3924f83d87474cb19d8c268293b1707bce77c7e7 100644 >--- a/Source/WebCore/svg/SVGZoomAndPan.cpp >+++ b/Source/WebCore/svg/SVGZoomAndPan.cpp >@@ -24,28 +24,17 @@ > > namespace WebCore { > >-bool SVGZoomAndPan::parseZoomAndPan(const UChar*& start, const UChar* end) >+Optional<SVGParsingError> SVGZoomAndPan::parseAttribute(const QualifiedName& name, const AtomicString& value) > { >- static const UChar disable[] = { 'd', 'i', 's', 'a', 'b', 'l', 'e' }; >- if (skipString(start, end, disable, WTF_ARRAY_LENGTH(disable))) { >- m_zoomAndPan = SVGZoomAndPanDisable; >- return true; >- } >+ if (!name.matches(SVGNames::zoomAndPanAttr)) >+ return { }; > >- static const UChar magnify[] = { 'm', 'a', 'g', 'n', 'i', 'f', 'y' }; >- if (skipString(start, end, magnify, WTF_ARRAY_LENGTH(magnify))) { >- m_zoomAndPan = SVGZoomAndPanMagnify; >- return true; >- } >- >- return false; >-} >- >-void SVGZoomAndPan::parseAttribute(const QualifiedName& attributeName, const AtomicString& value) >-{ >- if (attributeName != SVGNames::zoomAndPanAttr) >- return; >- m_zoomAndPan = SVGPropertyTraits<SVGZoomAndPanType>::fromString(value); >+ auto expectedZoomAndPan = SVGPropertyTraits<SVGZoomAndPanType>::parse(value); >+ if (!expectedZoomAndPan) >+ return expectedZoomAndPan.error(); >+ >+ m_zoomAndPan = *expectedZoomAndPan; >+ return NoError; > } > > } >diff --git a/Source/WebCore/svg/SVGZoomAndPan.h b/Source/WebCore/svg/SVGZoomAndPan.h >index 9fbcfb09ac3ad016b8fe2d292dab23562a5254a7..399b5eac220bb77d0da32b656ffddd4442b8a2b8 100644 >--- a/Source/WebCore/svg/SVGZoomAndPan.h >+++ b/Source/WebCore/svg/SVGZoomAndPan.h >@@ -43,13 +43,11 @@ public: > ExceptionOr<void> setZoomAndPan(unsigned) { return Exception { NoModificationAllowedError }; } > void reset() { m_zoomAndPan = SVGPropertyTraits<SVGZoomAndPanType>::initialValue(); } > >- void parseAttribute(const QualifiedName&, const AtomicString&); >+ Optional<SVGParsingError> parseAttribute(const QualifiedName&, const AtomicString&); > > protected: > SVGZoomAndPan() = default; > >- bool parseZoomAndPan(const UChar*&, const UChar*); >- > private: > SVGZoomAndPanType m_zoomAndPan { SVGPropertyTraits<SVGZoomAndPanType>::initialValue() }; > }; >diff --git a/Source/WebCore/svg/SVGZoomAndPanType.h b/Source/WebCore/svg/SVGZoomAndPanType.h >index 120fa93f63766d327015ae61916970e5c86af66a..2a75cf85e786caa4e1312c0b9585d1df9d7d2278 100644 >--- a/Source/WebCore/svg/SVGZoomAndPanType.h >+++ b/Source/WebCore/svg/SVGZoomAndPanType.h >@@ -38,15 +38,15 @@ enum SVGZoomAndPanType { > template<> > struct SVGPropertyTraits<SVGZoomAndPanType> { > static SVGZoomAndPanType initialValue() { return SVGZoomAndPanMagnify; } >- static String toString(SVGZoomAndPanType) { return emptyString(); } >- static SVGZoomAndPanType fromString(const String& value) >+ static Expected<SVGZoomAndPanType, SVGParsingError> parse(const String& string) > { >- if (value == "disable") >+ if (string == "disable") > return SVGZoomAndPanDisable; >- if (value == "magnify") >+ if (string == "magnify") > return SVGZoomAndPanMagnify; >- return SVGZoomAndPanUnknown; >+ return makeUnexpected(UnrecognizedEnumValueError); > } >+ static SVGZoomAndPanType fromString(const String& string) { return parse(string).value_or(SVGZoomAndPanUnknown); } > }; > > } >diff --git a/Source/WebCore/svg/properties/SVGPrimitiveList.h b/Source/WebCore/svg/properties/SVGPrimitiveList.h >index 45731a3803167dde136b31ae351a980e7ec72659..a04ff3d34c469c4bd11a6e67305ac3b6d0ec1ec2 100644 >--- a/Source/WebCore/svg/properties/SVGPrimitiveList.h >+++ b/Source/WebCore/svg/properties/SVGPrimitiveList.h >@@ -26,15 +26,50 @@ > #pragma once > > #include "SVGList.h" >+#include "SVGParserUtilities.h" >+#include "SVGParsingError.h" >+#include "SVGPropertyTraits.h" > > namespace WebCore { > > template<typename PropertyType> > class SVGPrimitiveList : public SVGList<PropertyType> { >-protected: > using Base = SVGList<PropertyType>; > using Base::Base; >+ using Base::clearItems; > using Base::size; >+ >+public: >+ SVGParsingError parse(const String& string) >+ { >+ clearItems(); >+ >+ auto upconvertedCharacters = StringView(string).upconvertedCharacters(); >+ const UChar* ptr = upconvertedCharacters; >+ const UChar* end = ptr + string.length(); >+ >+ bool delimParsed = false; >+ while (skipOptionalSVGSpaces(ptr, end)) { >+ delimParsed = false; >+ >+ ASSERT(ptr < end); >+ const UChar* start = ptr; >+ while (ptr < end && !isSVGSpace(*ptr)) >+ ptr++; >+ >+ ASSERT(ptr > start); >+ append(SVGPropertyTraits<PropertyType>::fromString(String(start, ptr - start))); >+ >+ if (ptr < end && *ptr == ',') { >+ ++ptr; >+ delimParsed = true; >+ } >+ } >+ >+ return delimParsed ? UnexpectedEndOfAttributeError : NoError; >+ } >+ >+protected: > using Base::m_items; > > PropertyType at(unsigned index) const override >@@ -70,6 +105,19 @@ protected: > m_items.append(WTFMove(newItem)); > return at(size() - 1); > } >+ >+ String valueAsString() const override >+ { >+ StringBuilder builder; >+ >+ for (auto item : m_items) { >+ if (builder.length()) >+ builder.append(' '); >+ builder.append(SVGPropertyTraits<PropertyType>::toString(item)); >+ } >+ >+ return builder.toString(); >+ } > }; > > } >diff --git a/Source/WebCore/svg/properties/SVGValuePropertyList.h b/Source/WebCore/svg/properties/SVGValuePropertyList.h >index 3010c33a74089bc44fbb410a56f785a9f717ccee..4eb93838fa0a03361357de1c0f0da09f3afa3154 100644 >--- a/Source/WebCore/svg/properties/SVGValuePropertyList.h >+++ b/Source/WebCore/svg/properties/SVGValuePropertyList.h >@@ -66,6 +66,48 @@ public: > remove(size() - 1); > } > >+ template<typename... Arguments> >+ SVGParsingError parse(const String& string, Arguments&&... arguments) >+ { >+ clearItems(); >+ >+ auto upconvertedCharacters = StringView(string).upconvertedCharacters(); >+ const UChar* ptr = upconvertedCharacters; >+ const UChar* end = ptr + string.length(); >+ >+ bool delimParsed = false; >+ while (skipOptionalSVGSpaces(ptr, end)) { >+ delimParsed = false; >+ >+ ASSERT(ptr < end); >+ auto expectedItem = PropertyType::create(ptr, end, std::forward<Arguments>(arguments)...); >+ if (!expectedItem) >+ return expectedItem.error(); >+ >+ append(WTFMove(expectedItem.value())); >+ >+ if (ptr < end && *ptr == ',') { >+ ++ptr; >+ delimParsed = true; >+ } >+ } >+ >+ return delimParsed ? UnexpectedEndOfAttributeError : NoError; >+ } >+ >+ String valueAsString() const override >+ { >+ StringBuilder builder; >+ >+ for (const auto& item : items()) { >+ if (builder.length()) >+ builder.append(' '); >+ builder.append(item->valueAsString()); >+ } >+ >+ return builder.toString(); >+ } >+ > // Visual Studio doesn't seem to see these private constructors from subclasses. > // FIXME: See what it takes to remove this hack. > #if !COMPILER(MSVC) >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 802360d8b877572ab199a6b0fb7e6cfcdd5e854b..9b47d61d20c8954cf3cb214622388026c6b4886c 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,52 @@ >+2019-05-15 Said Abou-Hallawa <said@apple.com> >+ >+ Unify the parsing of SVGList super classes >+ https://bugs.webkit.org/show_bug.cgi?id=197831 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * html5lib/generated/run-tests11-data-expected.txt: >+ * html5lib/generated/run-tests11-write-expected.txt: >+ Report error messages if a SVGPreserveAspectRatio or SVGZoomAndPan parsing >+ error happens. >+ >+ * platform/gtk/svg/custom/viewbox-syntax-expected.txt: >+ * platform/gtk/svg/hixie/error/010-expected.txt: >+ * platform/gtk/svg/hixie/error/011-expected.txt: >+ Replace the parsing warning messages by error messages. >+ >+ * platform/ios/svg/custom/preserve-aspect-ratio-syntax-expected.txt: >+ Report error messages if a SVGPreserveAspectRatio parsing error happens. >+ >+ * platform/ios/svg/custom/viewbox-syntax-expected.txt: >+ * platform/ios/svg/hixie/error/010-expected.txt: >+ * platform/ios/svg/hixie/error/011-expected.txt: >+ * platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.txt: >+ * platform/mac/svg/custom/viewbox-syntax-expected.txt: >+ * platform/mac/svg/hixie/error/010-expected.txt: >+ * platform/mac/svg/hixie/error/011-expected.txt: >+ * platform/win/svg/custom/viewbox-syntax-expected.txt: >+ * platform/win/svg/hixie/error/010-expected.txt: >+ * platform/win/svg/hixie/error/011-expected.txt: >+ * platform/wincairo/svg/custom/viewbox-syntax-expected.txt: >+ * platform/wpe/svg/custom/viewbox-syntax-expected.txt: >+ * platform/wpe/svg/hixie/error/010-expected.txt: >+ * platform/wpe/svg/hixie/error/011-expected.txt: >+ Replace the parsing warning messages by error messages. >+ >+ * svg/dom/length-list-parser-expected.txt: >+ SVGLengthList was treating the leading spaces in the attribute value as >+ an error. >+ >+ * svg/dom/viewspec-parser-1-expected.txt: >+ * svg/dom/viewspec-parser-1.html: >+ Extra text at the end of svgView attribute value was not treated as an >+ error. >+ >+ * svg/hixie/error/010-expected.txt: >+ * svg/hixie/error/011-expected.txt: >+ Replace the parsing warning messages by error messages. >+ > 2019-05-15 Youenn Fablet <youenn@apple.com> > > getUserMedia sandbox extensions should not be revoked when a getUserMedia allowed request is being processed >diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog >index 7e0e47bbd614647712d2979b98782f63f1943ecb..ff76e3d79ab53ec8377da4746434c498269b0952 100644 >--- a/LayoutTests/imported/w3c/ChangeLog >+++ b/LayoutTests/imported/w3c/ChangeLog >@@ -1,3 +1,14 @@ >+2019-05-15 Said Abou-Hallawa <sabouhallawa@apple.com> >+ >+ Unify the parsing of SVGList super classes >+ https://bugs.webkit.org/show_bug.cgi?id=197831 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * web-platform-tests/html/syntax/parsing/html5lib_tests11-expected.txt: >+ Report error messages if a SVGPreserveAspectRatio or SVGZoomAndPan parsing >+ error happens. >+ > 2019-05-14 Oriol Brufau <obrufau@igalia.com> > > [css-grid] Update grid when changing auto repeat type >diff --git a/LayoutTests/html5lib/generated/run-tests11-data-expected.txt b/LayoutTests/html5lib/generated/run-tests11-data-expected.txt >index 176b5c07c78b1e10063570e5e65202586de804a8..4e4fbc020dbd45ca3028a5e95fa1dabc705f900c 100644 >--- a/LayoutTests/html5lib/generated/run-tests11-data-expected.txt >+++ b/LayoutTests/html5lib/generated/run-tests11-data-expected.txt >@@ -1,4 +1,10 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="" >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="" >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute preserveAspectRatio="" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="" >+CONSOLE MESSAGE: line 1: Error: Unrecognized enumerated value for <svg> attribute zoomAndPan="" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute preserveAspectRatio="" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="" >+CONSOLE MESSAGE: line 1: Error: Unrecognized enumerated value for <svg> attribute zoomAndPan="" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute preserveAspectRatio="" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="" >+CONSOLE MESSAGE: line 1: Error: Unrecognized enumerated value for <svg> attribute zoomAndPan="" > ../resources/tests11.dat: PASS >diff --git a/LayoutTests/html5lib/generated/run-tests11-write-expected.txt b/LayoutTests/html5lib/generated/run-tests11-write-expected.txt >index 9ac682ae92d7dcd14bbc9acc98eb36b84b65eecc..a89309cb322645079eeaa9b0b561c0d320423c93 100644 >--- a/LayoutTests/html5lib/generated/run-tests11-write-expected.txt >+++ b/LayoutTests/html5lib/generated/run-tests11-write-expected.txt >@@ -1,4 +1,10 @@ >-CONSOLE MESSAGE: line 168: Warning: Problem parsing viewBox="" >-CONSOLE MESSAGE: line 168: Warning: Problem parsing viewBox="" >-CONSOLE MESSAGE: line 168: Warning: Problem parsing viewBox="" >+CONSOLE MESSAGE: line 168: Error: Invalid value for <svg> attribute preserveAspectRatio="" >+CONSOLE MESSAGE: line 168: Error: Invalid value for <svg> attribute viewBox="" >+CONSOLE MESSAGE: line 168: Error: Unrecognized enumerated value for <svg> attribute zoomAndPan="" >+CONSOLE MESSAGE: line 168: Error: Invalid value for <svg> attribute preserveAspectRatio="" >+CONSOLE MESSAGE: line 168: Error: Invalid value for <svg> attribute viewBox="" >+CONSOLE MESSAGE: line 168: Error: Unrecognized enumerated value for <svg> attribute zoomAndPan="" >+CONSOLE MESSAGE: line 168: Error: Invalid value for <svg> attribute preserveAspectRatio="" >+CONSOLE MESSAGE: line 168: Error: Invalid value for <svg> attribute viewBox="" >+CONSOLE MESSAGE: line 168: Error: Unrecognized enumerated value for <svg> attribute zoomAndPan="" > ../resources/tests11.dat: PASS >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests11-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests11-expected.txt >index 5f30fc8d042c733e49586bc9e8ec6cf96915c8ef..ae9072828bd36aff2ea7fcc62dc51791e3a9246f 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests11-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests11-expected.txt >@@ -1,6 +1,12 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="" >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="" >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute preserveAspectRatio="" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="" >+CONSOLE MESSAGE: line 1: Error: Unrecognized enumerated value for <svg> attribute zoomAndPan="" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute preserveAspectRatio="" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="" >+CONSOLE MESSAGE: line 1: Error: Unrecognized enumerated value for <svg> attribute zoomAndPan="" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute preserveAspectRatio="" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="" >+CONSOLE MESSAGE: line 1: Error: Unrecognized enumerated value for <svg> attribute zoomAndPan="" > html5lib Parser Test > > >diff --git a/LayoutTests/platform/gtk/svg/custom/viewbox-syntax-expected.txt b/LayoutTests/platform/gtk/svg/custom/viewbox-syntax-expected.txt >index e0ddef53677bd1d3b0bfa25aaaa44b4b0d9fb95e..4bfbeb2c7b279a2bdd23c833015d1ada83b9eff0 100644 >--- a/LayoutTests/platform/gtk/svg/custom/viewbox-syntax-expected.txt >+++ b/LayoutTests/platform/gtk/svg/custom/viewbox-syntax-expected.txt >@@ -1,13 +1,13 @@ >-CONSOLE MESSAGE: line 20: Warning: Problem parsing viewBox="0" >-CONSOLE MESSAGE: line 23: Warning: Problem parsing viewBox="0 0" >-CONSOLE MESSAGE: line 26: Warning: Problem parsing viewBox="0 0 30" >-CONSOLE MESSAGE: line 29: Warning: Problem parsing viewBox="0 0 30 40 50" >-CONSOLE MESSAGE: line 32: Warning: Problem parsing viewBox="0 0 30 40," >-CONSOLE MESSAGE: line 35: Warning: Problem parsing viewBox=",0 0 30 40" >-CONSOLE MESSAGE: line 38: Error: A negative value for ViewBox width is not allowed >-CONSOLE MESSAGE: line 41: Error: A negative value for ViewBox height is not allowed >-CONSOLE MESSAGE: line 44: Warning: Problem parsing viewBox="0 0 30, , 40" >-CONSOLE MESSAGE: line 47: Warning: Problem parsing viewBox="0 0 30% 40" >+CONSOLE MESSAGE: line 20: Error: Invalid value for <svg> attribute viewBox="0" >+CONSOLE MESSAGE: line 23: Error: Invalid value for <svg> attribute viewBox="0 0" >+CONSOLE MESSAGE: line 26: Error: Invalid value for <svg> attribute viewBox="0 0 30" >+CONSOLE MESSAGE: line 29: Error: Invalid value for <svg> attribute viewBox="0 0 30 40 50" >+CONSOLE MESSAGE: line 32: Error: Invalid value for <svg> attribute viewBox="0 0 30 40," >+CONSOLE MESSAGE: line 35: Error: Invalid value for <svg> attribute viewBox=",0 0 30 40" >+CONSOLE MESSAGE: line 38: Error: Invalid negative value for <svg> attribute viewBox="0 0 -30 40" >+CONSOLE MESSAGE: line 41: Error: Invalid negative value for <svg> attribute viewBox="0 0 30 -40" >+CONSOLE MESSAGE: line 44: Error: Invalid value for <svg> attribute viewBox="0 0 30, , 40" >+CONSOLE MESSAGE: line 47: Error: Invalid value for <svg> attribute viewBox="0 0 30% 40" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/gtk/svg/hixie/error/010-expected.txt b/LayoutTests/platform/gtk/svg/hixie/error/010-expected.txt >index b7ad4f967d1c013c7800f7a0b46bd1fa70d494d8..dd2070539e16d9e83f1325c90c880af8ff77595c 100644 >--- a/LayoutTests/platform/gtk/svg/hixie/error/010-expected.txt >+++ b/LayoutTests/platform/gtk/svg/hixie/error/010-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="0 0 1 1 1" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="0 0 1 1 1" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/gtk/svg/hixie/error/011-expected.txt b/LayoutTests/platform/gtk/svg/hixie/error/011-expected.txt >index a5d8be7846aa84d58b473b851895a95db90c4de7..9d09fc6816e9415ece6249d6fd26b367dbe6097c 100644 >--- a/LayoutTests/platform/gtk/svg/hixie/error/011-expected.txt >+++ b/LayoutTests/platform/gtk/svg/hixie/error/011-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="0 0,, 1 1" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="0 0,, 1 1" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/ios/svg/custom/preserve-aspect-ratio-syntax-expected.txt b/LayoutTests/platform/ios/svg/custom/preserve-aspect-ratio-syntax-expected.txt >index 7378a37bab831cbd48c1a78745a7a22fd5d0a94b..e237ab3a9d1e118c70aa536cca487460dd7f2690 100644 >--- a/LayoutTests/platform/ios/svg/custom/preserve-aspect-ratio-syntax-expected.txt >+++ b/LayoutTests/platform/ios/svg/custom/preserve-aspect-ratio-syntax-expected.txt >@@ -1,3 +1,8 @@ >+CONSOLE MESSAGE: line 23: Error: Invalid value for <svg> attribute preserveAspectRatio="defer meet" >+CONSOLE MESSAGE: line 26: Error: Invalid value for <svg> attribute preserveAspectRatio="defer xMidYMid meet a" >+CONSOLE MESSAGE: line 29: Error: Invalid value for <svg> attribute preserveAspectRatio="defer 1 xMidYMid meet" >+CONSOLE MESSAGE: line 32: Error: Invalid value for <svg> attribute preserveAspectRatio="defer , xMidYMid meet" >+CONSOLE MESSAGE: line 35: Error: Invalid value for <svg> attribute preserveAspectRatio="" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/ios/svg/custom/viewbox-syntax-expected.txt b/LayoutTests/platform/ios/svg/custom/viewbox-syntax-expected.txt >index c9b1a25acf21ca90057dcc3a748b3b9efe502da9..93ae5a33b284ce3ffbb58fbdfd12566c4581a55f 100644 >--- a/LayoutTests/platform/ios/svg/custom/viewbox-syntax-expected.txt >+++ b/LayoutTests/platform/ios/svg/custom/viewbox-syntax-expected.txt >@@ -1,13 +1,13 @@ >-CONSOLE MESSAGE: line 20: Warning: Problem parsing viewBox="0" >-CONSOLE MESSAGE: line 23: Warning: Problem parsing viewBox="0 0" >-CONSOLE MESSAGE: line 26: Warning: Problem parsing viewBox="0 0 30" >-CONSOLE MESSAGE: line 29: Warning: Problem parsing viewBox="0 0 30 40 50" >-CONSOLE MESSAGE: line 32: Warning: Problem parsing viewBox="0 0 30 40," >-CONSOLE MESSAGE: line 35: Warning: Problem parsing viewBox=",0 0 30 40" >-CONSOLE MESSAGE: line 38: Error: A negative value for ViewBox width is not allowed >-CONSOLE MESSAGE: line 41: Error: A negative value for ViewBox height is not allowed >-CONSOLE MESSAGE: line 44: Warning: Problem parsing viewBox="0 0 30, , 40" >-CONSOLE MESSAGE: line 47: Warning: Problem parsing viewBox="0 0 30% 40" >+CONSOLE MESSAGE: line 20: Error: Invalid value for <svg> attribute viewBox="0" >+CONSOLE MESSAGE: line 23: Error: Invalid value for <svg> attribute viewBox="0 0" >+CONSOLE MESSAGE: line 26: Error: Invalid value for <svg> attribute viewBox="0 0 30" >+CONSOLE MESSAGE: line 29: Error: Invalid value for <svg> attribute viewBox="0 0 30 40 50" >+CONSOLE MESSAGE: line 32: Error: Invalid value for <svg> attribute viewBox="0 0 30 40," >+CONSOLE MESSAGE: line 35: Error: Invalid value for <svg> attribute viewBox=",0 0 30 40" >+CONSOLE MESSAGE: line 38: Error: Invalid negative value for <svg> attribute viewBox="0 0 -30 40" >+CONSOLE MESSAGE: line 41: Error: Invalid negative value for <svg> attribute viewBox="0 0 30 -40" >+CONSOLE MESSAGE: line 44: Error: Invalid value for <svg> attribute viewBox="0 0 30, , 40" >+CONSOLE MESSAGE: line 47: Error: Invalid value for <svg> attribute viewBox="0 0 30% 40" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/ios/svg/hixie/error/010-expected.txt b/LayoutTests/platform/ios/svg/hixie/error/010-expected.txt >index 92bcc39fa7348cb3500b91538cd792afbd4e3a49..458ac40cebeafe3f8582a91d56c32a6149247ce6 100644 >--- a/LayoutTests/platform/ios/svg/hixie/error/010-expected.txt >+++ b/LayoutTests/platform/ios/svg/hixie/error/010-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="0 0 1 1 1" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="0 0 1 1 1" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/ios/svg/hixie/error/011-expected.txt b/LayoutTests/platform/ios/svg/hixie/error/011-expected.txt >index fbf48c0a35490f324819be0c7873efa607d8d4a2..76df56ffafcd510acb27bdd790bec2371c1d504d 100644 >--- a/LayoutTests/platform/ios/svg/hixie/error/011-expected.txt >+++ b/LayoutTests/platform/ios/svg/hixie/error/011-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="0 0,, 1 1" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="0 0,, 1 1" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.txt b/LayoutTests/platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.txt >index 4a1f34a7cc112b6c274bcb004edbefc117aea998..ac91f9618f1abb0613343ac6200c41e03d4ff51d 100644 >--- a/LayoutTests/platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.txt >+++ b/LayoutTests/platform/mac/svg/custom/preserve-aspect-ratio-syntax-expected.txt >@@ -1,3 +1,8 @@ >+CONSOLE MESSAGE: line 23: Error: Invalid value for <svg> attribute preserveAspectRatio="defer meet" >+CONSOLE MESSAGE: line 26: Error: Invalid value for <svg> attribute preserveAspectRatio="defer xMidYMid meet a" >+CONSOLE MESSAGE: line 29: Error: Invalid value for <svg> attribute preserveAspectRatio="defer 1 xMidYMid meet" >+CONSOLE MESSAGE: line 32: Error: Invalid value for <svg> attribute preserveAspectRatio="defer , xMidYMid meet" >+CONSOLE MESSAGE: line 35: Error: Invalid value for <svg> attribute preserveAspectRatio="" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/mac/svg/custom/viewbox-syntax-expected.txt b/LayoutTests/platform/mac/svg/custom/viewbox-syntax-expected.txt >index 899afcef73be684197908acb5d8abcce0380a8c0..2bcbf8e653428cf1fc3e9912bf25a3cad0469ad2 100644 >--- a/LayoutTests/platform/mac/svg/custom/viewbox-syntax-expected.txt >+++ b/LayoutTests/platform/mac/svg/custom/viewbox-syntax-expected.txt >@@ -1,13 +1,13 @@ >-CONSOLE MESSAGE: line 20: Warning: Problem parsing viewBox="0" >-CONSOLE MESSAGE: line 23: Warning: Problem parsing viewBox="0 0" >-CONSOLE MESSAGE: line 26: Warning: Problem parsing viewBox="0 0 30" >-CONSOLE MESSAGE: line 29: Warning: Problem parsing viewBox="0 0 30 40 50" >-CONSOLE MESSAGE: line 32: Warning: Problem parsing viewBox="0 0 30 40," >-CONSOLE MESSAGE: line 35: Warning: Problem parsing viewBox=",0 0 30 40" >-CONSOLE MESSAGE: line 38: Error: A negative value for ViewBox width is not allowed >-CONSOLE MESSAGE: line 41: Error: A negative value for ViewBox height is not allowed >-CONSOLE MESSAGE: line 44: Warning: Problem parsing viewBox="0 0 30, , 40" >-CONSOLE MESSAGE: line 47: Warning: Problem parsing viewBox="0 0 30% 40" >+CONSOLE MESSAGE: line 20: Error: Invalid value for <svg> attribute viewBox="0" >+CONSOLE MESSAGE: line 23: Error: Invalid value for <svg> attribute viewBox="0 0" >+CONSOLE MESSAGE: line 26: Error: Invalid value for <svg> attribute viewBox="0 0 30" >+CONSOLE MESSAGE: line 29: Error: Invalid value for <svg> attribute viewBox="0 0 30 40 50" >+CONSOLE MESSAGE: line 32: Error: Invalid value for <svg> attribute viewBox="0 0 30 40," >+CONSOLE MESSAGE: line 35: Error: Invalid value for <svg> attribute viewBox=",0 0 30 40" >+CONSOLE MESSAGE: line 38: Error: Invalid negative value for <svg> attribute viewBox="0 0 -30 40" >+CONSOLE MESSAGE: line 41: Error: Invalid negative value for <svg> attribute viewBox="0 0 30 -40" >+CONSOLE MESSAGE: line 44: Error: Invalid value for <svg> attribute viewBox="0 0 30, , 40" >+CONSOLE MESSAGE: line 47: Error: Invalid value for <svg> attribute viewBox="0 0 30% 40" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/mac/svg/hixie/error/010-expected.txt b/LayoutTests/platform/mac/svg/hixie/error/010-expected.txt >index 92bcc39fa7348cb3500b91538cd792afbd4e3a49..458ac40cebeafe3f8582a91d56c32a6149247ce6 100644 >--- a/LayoutTests/platform/mac/svg/hixie/error/010-expected.txt >+++ b/LayoutTests/platform/mac/svg/hixie/error/010-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="0 0 1 1 1" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="0 0 1 1 1" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/mac/svg/hixie/error/011-expected.txt b/LayoutTests/platform/mac/svg/hixie/error/011-expected.txt >index fbf48c0a35490f324819be0c7873efa607d8d4a2..76df56ffafcd510acb27bdd790bec2371c1d504d 100644 >--- a/LayoutTests/platform/mac/svg/hixie/error/011-expected.txt >+++ b/LayoutTests/platform/mac/svg/hixie/error/011-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="0 0,, 1 1" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="0 0,, 1 1" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/win/svg/custom/viewbox-syntax-expected.txt b/LayoutTests/platform/win/svg/custom/viewbox-syntax-expected.txt >index 626cd6a946a259a69b94bd9030e32e1a2647da47..f994178f8dce78f1a74af39e04d7f33a6f82ec32 100644 >--- a/LayoutTests/platform/win/svg/custom/viewbox-syntax-expected.txt >+++ b/LayoutTests/platform/win/svg/custom/viewbox-syntax-expected.txt >@@ -1,13 +1,13 @@ >-CONSOLE MESSAGE: line 20: Warning: Problem parsing viewBox="0" >-CONSOLE MESSAGE: line 23: Warning: Problem parsing viewBox="0 0" >-CONSOLE MESSAGE: line 26: Warning: Problem parsing viewBox="0 0 30" >-CONSOLE MESSAGE: line 29: Warning: Problem parsing viewBox="0 0 30 40 50" >-CONSOLE MESSAGE: line 32: Warning: Problem parsing viewBox="0 0 30 40," >-CONSOLE MESSAGE: line 35: Warning: Problem parsing viewBox=",0 0 30 40" >-CONSOLE MESSAGE: line 38: Error: A negative value for ViewBox width is not allowed >-CONSOLE MESSAGE: line 41: Error: A negative value for ViewBox height is not allowed >-CONSOLE MESSAGE: line 44: Warning: Problem parsing viewBox="0 0 30, , 40" >-CONSOLE MESSAGE: line 47: Warning: Problem parsing viewBox="0 0 30% 40" >+CONSOLE MESSAGE: line 20: Error: Invalid value for <svg> attribute viewBox="0" >+CONSOLE MESSAGE: line 23: Error: Invalid value for <svg> attribute viewBox="0 0" >+CONSOLE MESSAGE: line 26: Error: Invalid value for <svg> attribute viewBox="0 0 30" >+CONSOLE MESSAGE: line 29: Error: Invalid value for <svg> attribute viewBox="0 0 30 40 50" >+CONSOLE MESSAGE: line 32: Error: Invalid value for <svg> attribute viewBox="0 0 30 40," >+CONSOLE MESSAGE: line 35: Error: Invalid value for <svg> attribute viewBox=",0 0 30 40" >+CONSOLE MESSAGE: line 38: Error: Invalid negative value for <svg> attribute viewBox="0 0 -30 40" >+CONSOLE MESSAGE: line 41: Error: Invalid negative value for <svg> attribute viewBox="0 0 30 -40" >+CONSOLE MESSAGE: line 44: Error: Invalid value for <svg> attribute viewBox="0 0 30, , 40" >+CONSOLE MESSAGE: line 47: Error: Invalid value for <svg> attribute viewBox="0 0 30% 40" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/win/svg/hixie/error/010-expected.txt b/LayoutTests/platform/win/svg/hixie/error/010-expected.txt >index b7ad4f967d1c013c7800f7a0b46bd1fa70d494d8..dd2070539e16d9e83f1325c90c880af8ff77595c 100644 >--- a/LayoutTests/platform/win/svg/hixie/error/010-expected.txt >+++ b/LayoutTests/platform/win/svg/hixie/error/010-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="0 0 1 1 1" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="0 0 1 1 1" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/win/svg/hixie/error/011-expected.txt b/LayoutTests/platform/win/svg/hixie/error/011-expected.txt >index a5d8be7846aa84d58b473b851895a95db90c4de7..9d09fc6816e9415ece6249d6fd26b367dbe6097c 100644 >--- a/LayoutTests/platform/win/svg/hixie/error/011-expected.txt >+++ b/LayoutTests/platform/win/svg/hixie/error/011-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="0 0,, 1 1" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="0 0,, 1 1" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/wincairo/svg/custom/viewbox-syntax-expected.txt b/LayoutTests/platform/wincairo/svg/custom/viewbox-syntax-expected.txt >index d81325f8aa74ef0e33124b9c994599209bd9d04a..5168c075c303090ad3f5820539d478b618cb4fde 100644 >--- a/LayoutTests/platform/wincairo/svg/custom/viewbox-syntax-expected.txt >+++ b/LayoutTests/platform/wincairo/svg/custom/viewbox-syntax-expected.txt >@@ -1,13 +1,13 @@ >-CONSOLE MESSAGE: line 20: Warning: Problem parsing viewBox="0" >-CONSOLE MESSAGE: line 23: Warning: Problem parsing viewBox="0 0" >-CONSOLE MESSAGE: line 26: Warning: Problem parsing viewBox="0 0 30" >-CONSOLE MESSAGE: line 29: Warning: Problem parsing viewBox="0 0 30 40 50" >-CONSOLE MESSAGE: line 32: Warning: Problem parsing viewBox="0 0 30 40," >-CONSOLE MESSAGE: line 35: Warning: Problem parsing viewBox=",0 0 30 40" >-CONSOLE MESSAGE: line 38: Error: A negative value for ViewBox width is not allowed >-CONSOLE MESSAGE: line 41: Error: A negative value for ViewBox height is not allowed >-CONSOLE MESSAGE: line 44: Warning: Problem parsing viewBox="0 0 30, , 40" >-CONSOLE MESSAGE: line 47: Warning: Problem parsing viewBox="0 0 30% 40" >+CONSOLE MESSAGE: line 20: Error: Invalid value for <svg> attribute viewBox="0" >+CONSOLE MESSAGE: line 23: Error: Invalid value for <svg> attribute viewBox="0 0" >+CONSOLE MESSAGE: line 26: Error: Invalid value for <svg> attribute viewBox="0 0 30" >+CONSOLE MESSAGE: line 29: Error: Invalid value for <svg> attribute viewBox="0 0 30 40 50" >+CONSOLE MESSAGE: line 32: Error: Invalid value for <svg> attribute viewBox="0 0 30 40," >+CONSOLE MESSAGE: line 35: Error: Invalid value for <svg> attribute viewBox=",0 0 30 40" >+CONSOLE MESSAGE: line 38: Error: Invalid negative value for <svg> attribute viewBox="0 0 -30 40" >+CONSOLE MESSAGE: line 41: Error: Invalid negative value for <svg> attribute viewBox="0 0 30 -40" >+CONSOLE MESSAGE: line 44: Error: Invalid value for <svg> attribute viewBox="0 0 30, , 40" >+CONSOLE MESSAGE: line 47: Error: Invalid value for <svg> attribute viewBox="0 0 30% 40" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/wpe/svg/custom/viewbox-syntax-expected.txt b/LayoutTests/platform/wpe/svg/custom/viewbox-syntax-expected.txt >index 2f92ff2e37fa3301390a94a826d0be9eb4e870c9..f8d32e39e0e17b72699fe498896d03bda13b8336 100644 >--- a/LayoutTests/platform/wpe/svg/custom/viewbox-syntax-expected.txt >+++ b/LayoutTests/platform/wpe/svg/custom/viewbox-syntax-expected.txt >@@ -1,13 +1,13 @@ >-CONSOLE MESSAGE: line 20: Warning: Problem parsing viewBox="0" >-CONSOLE MESSAGE: line 23: Warning: Problem parsing viewBox="0 0" >-CONSOLE MESSAGE: line 26: Warning: Problem parsing viewBox="0 0 30" >-CONSOLE MESSAGE: line 29: Warning: Problem parsing viewBox="0 0 30 40 50" >-CONSOLE MESSAGE: line 32: Warning: Problem parsing viewBox="0 0 30 40," >-CONSOLE MESSAGE: line 35: Warning: Problem parsing viewBox=",0 0 30 40" >-CONSOLE MESSAGE: line 38: Error: A negative value for ViewBox width is not allowed >-CONSOLE MESSAGE: line 41: Error: A negative value for ViewBox height is not allowed >-CONSOLE MESSAGE: line 44: Warning: Problem parsing viewBox="0 0 30, , 40" >-CONSOLE MESSAGE: line 47: Warning: Problem parsing viewBox="0 0 30% 40" >+CONSOLE MESSAGE: line 20: Error: Invalid value for <svg> attribute viewBox="0" >+CONSOLE MESSAGE: line 23: Error: Invalid value for <svg> attribute viewBox="0 0" >+CONSOLE MESSAGE: line 26: Error: Invalid value for <svg> attribute viewBox="0 0 30" >+CONSOLE MESSAGE: line 29: Error: Invalid value for <svg> attribute viewBox="0 0 30 40 50" >+CONSOLE MESSAGE: line 32: Error: Invalid value for <svg> attribute viewBox="0 0 30 40," >+CONSOLE MESSAGE: line 35: Error: Invalid value for <svg> attribute viewBox=",0 0 30 40" >+CONSOLE MESSAGE: line 38: Error: Invalid negative value for <svg> attribute viewBox="0 0 -30 40" >+CONSOLE MESSAGE: line 41: Error: Invalid negative value for <svg> attribute viewBox="0 0 30 -40" >+CONSOLE MESSAGE: line 44: Error: Invalid value for <svg> attribute viewBox="0 0 30, , 40" >+CONSOLE MESSAGE: line 47: Error: Invalid value for <svg> attribute viewBox="0 0 30% 40" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/wpe/svg/hixie/error/010-expected.txt b/LayoutTests/platform/wpe/svg/hixie/error/010-expected.txt >index b7ad4f967d1c013c7800f7a0b46bd1fa70d494d8..dd2070539e16d9e83f1325c90c880af8ff77595c 100644 >--- a/LayoutTests/platform/wpe/svg/hixie/error/010-expected.txt >+++ b/LayoutTests/platform/wpe/svg/hixie/error/010-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="0 0 1 1 1" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="0 0 1 1 1" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/wpe/svg/hixie/error/011-expected.txt b/LayoutTests/platform/wpe/svg/hixie/error/011-expected.txt >index a5d8be7846aa84d58b473b851895a95db90c4de7..9d09fc6816e9415ece6249d6fd26b367dbe6097c 100644 >--- a/LayoutTests/platform/wpe/svg/hixie/error/011-expected.txt >+++ b/LayoutTests/platform/wpe/svg/hixie/error/011-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="0 0,, 1 1" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="0 0,, 1 1" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/svg/dom/length-list-parser-expected.txt b/LayoutTests/svg/dom/length-list-parser-expected.txt >index eef063076bd4de61794511937a61f0165507b7ba..c3082db1c6f32f768f19b901c75019431c8aa96b 100644 >--- a/LayoutTests/svg/dom/length-list-parser-expected.txt >+++ b/LayoutTests/svg/dom/length-list-parser-expected.txt >@@ -5,8 +5,10 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > > Parsed as 1 length(s) [ 8.847 ]: 8.847 > Parsed as 1 length(s) [ 8.62569e+6 ]: 8625686 3.0-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001, 90,e4997..,782-4326e. -0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013e,+e9 e 4829.,063721-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e6 072 >+Parsed as 8 length(s) [ 28, -8, 0, 47, 4, 0, 35, 684 ]: 28 -8 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,47 04,-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001993,35 +684 + 159e +.3-e0+,812-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001728-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014+,--1-26e666460 > Parsed as 1 length(s) [ 61822 ]: 61822,15-00.166.7 > Parsed as 2 length(s) [ 2, 0.5 ]: 2 .5,658-7 e ,8477553 >+Parsed as 1 length(s) [ 2183 ]: 2183 9-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191,59-- 70478.,566964784 e1-53 847e0.6e34805-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 975 922e,4 +e0e-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 . > Parsed as 3 length(s) [ 8, 2, 589 ]: 8 2 589 -45e58 -4 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e58-++689.-98-,42 94564.,967-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011+ ,9+6- .765+-87 e. 68 9452182-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016.. 1 + > Parsed as 1 length(s) [ 1 ]: 1,.,+.833+.004 2-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+.9- 8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.7980-555-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-198 50 > Parsed as 1 length(s) [ 564281 ]: 564281 0ee51+ e 378584833 ,.141 e8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-53. 88530-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 8.-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018.847e28886-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e85 .-1- >@@ -14,6 +16,7 @@ Parsed as 3 length(s) [ 0, 9, 367 ]: -0.0000000000000000000000000000000000000000 > Parsed as 4 length(s) [ 4, 0, 35, 684 ]: 04,-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001993,35 +684 + 159e +.3-e0+,812-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001728-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014+,--1-26e666460-79.5-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169603-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010641,,572-960 1-9 289 > Parsed as 1 length(s) [ 61822 ]: 61822,15-00.166.7 > Parsed as 2 length(s) [ 2, 0.5 ]: 2 .5,658-7 e ,8477553 >+Parsed as 1 length(s) [ 2183 ]: 2183 9-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191,59-- 70478.,566964784 e1-53 847e0.6e34805-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 975 922e,4 +e0e-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 . > Parsed as 3 length(s) [ 8, 2, 589 ]: 8 2 589 -45e58 -4 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e58-++689.-98-,42 94564.,967-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011+ ,9+6- .765+-87 e. 68 9452182-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016.. 1 + > Parsed as 1 length(s) [ 1 ]: 1,.,+.833+.004 2-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+.9- 8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.7980-555-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-198 50 > Parsed as 1 length(s) [ 564281 ]: 564281 0ee51+ e 378584833 ,.141 e8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-53. 88530-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 8.-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018.847e28886-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e85 .-1- >@@ -21,6 +24,7 @@ Parsed as 3 length(s) [ 0, 9, 367 ]: -0.0000000000000000000000000000000000000000 > Parsed as 4 length(s) [ 4, 0, 35, 684 ]: 04,-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001993,35 +684 + 159e +.3-e0+,812-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001728-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014+,--1-26e666460-79.5-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169603-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010641,,572-960 1-9 289 > Parsed as 1 length(s) [ 61822 ]: 61822,15-00.166.7 > Parsed as 2 length(s) [ 2, 0.5 ]: 2 .5,658-7 e ,8477553 >+Parsed as 1 length(s) [ 2183 ]: 2183 9-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191,59-- 70478.,566964784 e1-53 847e0.6e34805-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 975 922e,4 +e0e-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 . > Parsed as 3 length(s) [ 8, 2, 589 ]: 8 2 589 -45e58 -4 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e58-++689.-98-,42 94564.,967-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011+ ,9+6- .765+-87 e. 68 9452182-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016.. 1 + > Parsed as 1 length(s) [ 1 ]: 1,.,+.833+.004 2-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+.9- 8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.7980-555-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-198 50 > Parsed as 1 length(s) [ 564281 ]: 564281 0ee51+ e 378584833 ,.141 e8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-53. 88530-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 8.-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018.847e28886-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e85 .-1- >@@ -28,6 +32,7 @@ Parsed as 3 length(s) [ 0, 9, 367 ]: -0.0000000000000000000000000000000000000000 > Parsed as 4 length(s) [ 4, 0, 35, 684 ]: 04,-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001993,35 +684 + 159e +.3-e0+,812-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001728-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014+,--1-26e666460-79.5-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169603-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010641,,572-960 1-9 289 > Parsed as 1 length(s) [ 61822 ]: 61822,15-00.166.7 > Parsed as 2 length(s) [ 2, 0.5 ]: 2 .5,658-7 e ,8477553 >+Parsed as 1 length(s) [ 2183 ]: 2183 9-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191,59-- 70478.,566964784 e1-53 847e0.6e34805-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 975 922e,4 +e0e-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 . > Parsed as 3 length(s) [ 8, 2, 589 ]: 8 2 589 -45e58 -4 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e58-++689.-98-,42 94564.,967-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011+ ,9+6- .765+-87 e. 68 9452182-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016.. 1 + > Parsed as 1 length(s) [ 1 ]: 1,.,+.833+.004 2-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+.9- 8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.7980-555-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-198 50 > Parsed as 1 length(s) [ 564281 ]: 564281 0ee51+ e 378584833 ,.141 e8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-53. 88530-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 8.-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018.847e28886-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e85 .-1- >@@ -35,6 +40,7 @@ Parsed as 3 length(s) [ 0, 9, 367 ]: -0.0000000000000000000000000000000000000000 > Parsed as 4 length(s) [ 4, 0, 35, 684 ]: 04,-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001993,35 +684 + 159e +.3-e0+,812-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001728-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014+,--1-26e666460-79.5-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169603-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010641,,572-960 1-9 289 > Parsed as 1 length(s) [ 61822 ]: 61822,15-00.166.7 > Parsed as 2 length(s) [ 2, 0.5 ]: 2 .5,658-7 e ,8477553 >+Parsed as 1 length(s) [ 2183 ]: 2183 9-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191,59-- 70478.,566964784 e1-53 847e0.6e34805-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 975 922e,4 +e0e-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 . > Parsed as 3 length(s) [ 8, 2, 589 ]: 8 2 589 -45e58 -4 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e58-++689.-98-,42 94564.,967-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011+ ,9+6- .765+-87 e. 68 9452182-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016.. 1 + > Parsed as 1 length(s) [ 1 ]: 1,.,+.833+.004 2-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+.9- 8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.7980-555-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-198 50 > Parsed as 1 length(s) [ 564281 ]: 564281 0ee51+ e 378584833 ,.141 e8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-53. 88530-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 8.-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018.847e28886-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e85 .-1- >@@ -42,6 +48,7 @@ Parsed as 3 length(s) [ 0, 9, 367 ]: -0.0000000000000000000000000000000000000000 > Parsed as 4 length(s) [ 4, 0, 35, 684 ]: 04,-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001993,35 +684 + 159e +.3-e0+,812-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001728-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014+,--1-26e666460-79.5-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169603-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010641,,572-960 1-9 289 > Parsed as 1 length(s) [ 61822 ]: 61822,15-00.166.7 > Parsed as 2 length(s) [ 2, 0.5 ]: 2 .5,658-7 e ,8477553 >+Parsed as 1 length(s) [ 2183 ]: 2183 9-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191,59-- 70478.,566964784 e1-53 847e0.6e34805-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 975 922e,4 +e0e-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 . > Parsed as 3 length(s) [ 8, 2, 589 ]: 8 2 589 -45e58 -4 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e58-++689.-98-,42 94564.,967-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011+ ,9+6- .765+-87 e. 68 9452182-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016.. 1 + > Parsed as 1 length(s) [ 1 ]: 1,.,+.833+.004 2-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+.9- 8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.7980-555-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-198 50 > Parsed as 1 length(s) [ 564281 ]: 564281 0ee51+ e 378584833 ,.141 e8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-53. 88530-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 8.-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018.847e28886-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e85 .-1- >@@ -49,6 +56,7 @@ Parsed as 3 length(s) [ 0, 9, 367 ]: -0.0000000000000000000000000000000000000000 > Parsed as 4 length(s) [ 4, 0, 35, 684 ]: 04,-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001993,35 +684 + 159e +.3-e0+,812-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001728-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014+,--1-26e666460-79.5-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169603-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010641,,572-960 1-9 289 > Parsed as 1 length(s) [ 61822 ]: 61822,15-00.166.7 > Parsed as 2 length(s) [ 2, 0.5 ]: 2 .5,658-7 e ,8477553 >+Parsed as 1 length(s) [ 2183 ]: 2183 9-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191,59-- 70478.,566964784 e1-53 847e0.6e34805-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 975 922e,4 +e0e-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 . > Parsed as 3 length(s) [ 8, 2, 589 ]: 8 2 589 -45e58 -4 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e58-++689.-98-,42 94564.,967-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011+ ,9+6- .765+-87 e. 68 9452182-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016.. 1 + > Parsed as 1 length(s) [ 1 ]: 1,.,+.833+.004 2-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+.9- 8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.7980-555-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-198 50 > Parsed as 1 length(s) [ 564281 ]: 564281 0ee51+ e 378584833 ,.141 e8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-53. 88530-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 8.-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018.847e28886-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e85 .-1- >@@ -56,6 +64,7 @@ Parsed as 3 length(s) [ 0, 9, 367 ]: -0.0000000000000000000000000000000000000000 > Parsed as 4 length(s) [ 4, 0, 35, 684 ]: 04,-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001993,35 +684 + 159e +.3-e0+,812-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001728-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014+,--1-26e666460-79.5-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169603-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010641,,572-960 1-9 289 > Parsed as 1 length(s) [ 61822 ]: 61822,15-00.166.7 > Parsed as 2 length(s) [ 2, 0.5 ]: 2 .5,658-7 e ,8477553 >+Parsed as 1 length(s) [ 2183 ]: 2183 9-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191,59-- 70478.,566964784 e1-53 847e0.6e34805-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 975 922e,4 +e0e-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 . > Parsed as 3 length(s) [ 8, 2, 589 ]: 8 2 589 -45e58 -4 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e58-++689.-98-,42 94564.,967-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011+ ,9+6- .765+-87 e. 68 9452182-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016.. 1 + > Parsed as 1 length(s) [ 1 ]: 1,.,+.833+.004 2-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+.9- 8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.7980-555-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-198 50 > Parsed as 1 length(s) [ 564281 ]: 564281 0ee51+ e 378584833 ,.141 e8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-53. 88530-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 8.-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018.847e28886-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e85 .-1- >@@ -63,6 +72,7 @@ Parsed as 3 length(s) [ 0, 9, 367 ]: -0.0000000000000000000000000000000000000000 > Parsed as 4 length(s) [ 4, 0, 35, 684 ]: 04,-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001993,35 +684 + 159e +.3-e0+,812-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001728-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014+,--1-26e666460-79.5-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169603-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010641,,572-960 1-9 289 > Parsed as 1 length(s) [ 61822 ]: 61822,15-00.166.7 > Parsed as 2 length(s) [ 2, 0.5 ]: 2 .5,658-7 e ,8477553 >+Parsed as 1 length(s) [ 2183 ]: 2183 9-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191,59-- 70478.,566964784 e1-53 847e0.6e34805-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 975 922e,4 +e0e-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 . > Parsed as 3 length(s) [ 8, 2, 589 ]: 8 2 589 -45e58 -4 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e58-++689.-98-,42 94564.,967-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011+ ,9+6- .765+-87 e. 68 9452182-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016.. 1 + > Parsed as 1 length(s) [ 1 ]: 1,.,+.833+.004 2-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+.9- 8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.7980-555-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-198 50 > Parsed as 1 length(s) [ 564281 ]: 564281 0ee51+ e 378584833 ,.141 e8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-53. 88530-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 8.-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018.847e28886-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e85 .-1- >@@ -70,6 +80,7 @@ Parsed as 3 length(s) [ 0, 9, 367 ]: -0.0000000000000000000000000000000000000000 > Parsed as 4 length(s) [ 4, 0, 35, 684 ]: 04,-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001993,35 +684 + 159e +.3-e0+,812-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001728-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014+,--1-26e666460-79.5-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169603-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010641,,572-960 1-9 289 > Parsed as 1 length(s) [ 61822 ]: 61822,15-00.166.7 > Parsed as 2 length(s) [ 2, 0.5 ]: 2 .5,658-7 e ,8477553 >+Parsed as 1 length(s) [ 2183 ]: 2183 9-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191,59-- 70478.,566964784 e1-53 847e0.6e34805-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 975 922e,4 +e0e-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 . > Parsed as 3 length(s) [ 8, 2, 589 ]: 8 2 589 -45e58 -4 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e58-++689.-98-,42 94564.,967-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011+ ,9+6- .765+-87 e. 68 9452182-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016.. 1 + > Parsed as 1 length(s) [ 1 ]: 1,.,+.833+.004 2-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+.9- 8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.7980-555-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-198 50 > Parsed as 1 length(s) [ 564281 ]: 564281 0ee51+ e 378584833 ,.141 e8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-53. 88530-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 8.-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018.847e28886-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e85 .-1- >@@ -77,6 +88,7 @@ Parsed as 3 length(s) [ 0, 9, 367 ]: -0.0000000000000000000000000000000000000000 > Parsed as 4 length(s) [ 4, 0, 35, 684 ]: 04,-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001993,35 +684 + 159e +.3-e0+,812-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001728-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014+,--1-26e666460-79.5-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169603-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010641,,572-960 1-9 289 > Parsed as 1 length(s) [ 61822 ]: 61822,15-00.166.7 > Parsed as 2 length(s) [ 2, 0.5 ]: 2 .5,658-7 e ,8477553 >+Parsed as 1 length(s) [ 2183 ]: 2183 9-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191,59-- 70478.,566964784 e1-53 847e0.6e34805-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 975 922e,4 +e0e-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 . > Parsed as 3 length(s) [ 8, 2, 589 ]: 8 2 589 -45e58 -4 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e58-++689.-98-,42 94564.,967-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011+ ,9+6- .765+-87 e. 68 9452182-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016.. 1 + > Parsed as 1 length(s) [ 1 ]: 1,.,+.833+.004 2-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+.9- 8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.7980-555-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-198 50 > Parsed as 1 length(s) [ 564281 ]: 564281 0ee51+ e 378584833 ,.141 e8-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-53. 88530-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010 8.-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018.847e28886-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e85 .-1- >@@ -84,6 +96,7 @@ Parsed as 3 length(s) [ 0, 9, 367 ]: -0.0000000000000000000000000000000000000000 > Parsed as 4 length(s) [ 4, 0, 35, 684 ]: 04,-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001993,35 +684 + 159e +.3-e0+,812-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001728-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014+,--1-26e666460-79.5-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169603-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010641,,572-960 1-9 289 > Parsed as 1 length(s) [ 61822 ]: 61822,15-00.166.7 > Parsed as 2 length(s) [ 2, 0.5 ]: 2 .5,658-7 e ,8477553 >+Parsed as 1 length(s) [ 2183 ]: 2183 9-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191,59-- 70478.,566964784 e1-53 847e0.6e34805-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 975 922e,4 +e0e-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 . > Parsed as 3 length(s) [ 8, 2, 589 ]: 8 2 589 -45e58 -4 -0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e58-++689.-98-,42 94564.,967-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011+ ,9+6- .765+-87 e. 68 9452182-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016.. 1 + > PASS successfullyParsed is true > >diff --git a/LayoutTests/svg/dom/viewspec-parser-1-expected.txt b/LayoutTests/svg/dom/viewspec-parser-1-expected.txt >index d442f1bf9111d3bd728a57af158aebb6a524151c..93d3c64de7afda3b4bd21a3e23b5e3eda932dc7e 100644 >--- a/LayoutTests/svg/dom/viewspec-parser-1-expected.txt >+++ b/LayoutTests/svg/dom/viewspec-parser-1-expected.txt >@@ -6,8 +6,8 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > Loaded: resources/viewspec-target.svg# > Parsed: [initial view] from: [initial view] > >-Loaded: resources/viewspec-target.svg#svgView(viewBox(0,0,200,200))) >-Parsed: svgView(viewBox(0 0 200 200)) from: svgView(viewBox(0,0,200,200))) >+Loaded: resources/viewspec-target.svg#svgView(viewBox(0,0,200,200)) >+Parsed: svgView(viewBox(0 0 200 200)) from: svgView(viewBox(0,0,200,200)) > > Loaded: resources/viewspec-target.svg#svgView(preserveAspectRatio(xMaxYMin slice)) > Parsed: svgView(preserveAspectRatio(xMaxYMin slice)) from: svgView(preserveAspectRatio(xMaxYMin slice)) >diff --git a/LayoutTests/svg/dom/viewspec-parser-1.html b/LayoutTests/svg/dom/viewspec-parser-1.html >index 5b17d75921288e1c0a0e671d55f24fab674370af..62173e62f3cd433c2afa19b4cce35a85ab2620a1 100644 >--- a/LayoutTests/svg/dom/viewspec-parser-1.html >+++ b/LayoutTests/svg/dom/viewspec-parser-1.html >@@ -18,7 +18,7 @@ > }; > > var tests = [ >- "svgView(viewBox(0,0,200,200)))", >+ "svgView(viewBox(0,0,200,200))", > "svgView(preserveAspectRatio(xMaxYMin slice))", > "svgView(preserveAspectRatio(xMaxYMin))", > "svgView(viewBox(1,2,3,4);preserveAspectRatio(xMaxYMin))", >diff --git a/LayoutTests/svg/hixie/error/010-expected.txt b/LayoutTests/svg/hixie/error/010-expected.txt >index f7d359b91db953d522a669cdb993f947294845a7..49018244e664210d177b448e342626ecd49e7ca7 100644 >--- a/LayoutTests/svg/hixie/error/010-expected.txt >+++ b/LayoutTests/svg/hixie/error/010-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="0 0 1 1 1" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="0 0 1 1 1" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/svg/hixie/error/011-expected.txt b/LayoutTests/svg/hixie/error/011-expected.txt >index 7c241b6462071415c1d03828c055a4e39287c281..cacec5f8cbd532dba6684617bfc8a6be4a4518ec 100644 >--- a/LayoutTests/svg/hixie/error/011-expected.txt >+++ b/LayoutTests/svg/hixie/error/011-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox="0 0,, 1 1" >+CONSOLE MESSAGE: line 1: Error: Invalid value for <svg> attribute viewBox="0 0,, 1 1" > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 197831
:
369700
|
369708
|
369711
|
369714
|
369715
|
369717
|
369953
|
369959
|
369962
|
369963
|
369966
|
369968
|
370017
|
370027
|
370041
|
370052
|
370323