| Index: third_party/WebKit/Source/core/svg/SVGFEConvolveMatrixElement.cpp
|
| diff --git a/third_party/WebKit/Source/core/svg/SVGFEConvolveMatrixElement.cpp b/third_party/WebKit/Source/core/svg/SVGFEConvolveMatrixElement.cpp
|
| index dc04bafaf03f488cf0ca0e89bc14c8513ea9b64c..6653fb7f86656662df25424d54f52719ee51412e 100644
|
| --- a/third_party/WebKit/Source/core/svg/SVGFEConvolveMatrixElement.cpp
|
| +++ b/third_party/WebKit/Source/core/svg/SVGFEConvolveMatrixElement.cpp
|
| @@ -66,8 +66,7 @@ void SVGAnimatedOrder::setBaseValueAsString(const String& value, SVGParsingError
|
| ASSERT(contextElement());
|
| if (parseError == NoError && (firstInteger()->baseValue()->value() < 1 || secondInteger()->baseValue()->value() < 1)) {
|
| contextElement()->document().accessSVGExtensions().reportWarning(
|
| - "feConvolveMatrix: problem parsing order=\"" + value
|
| - + "\". Filtered element will not be displayed.");
|
| + "feConvolveMatrix: problem parsing order=\"" + value + "\".");
|
| }
|
| }
|
|
|
| @@ -166,36 +165,25 @@ PassRefPtrWillBeRawPtr<FilterEffect> SVGFEConvolveMatrixElement::build(SVGFilter
|
|
|
| int orderXValue = orderX()->currentValue()->value();
|
| int orderYValue = orderY()->currentValue()->value();
|
| - if (!hasAttribute(SVGNames::orderAttr)) {
|
| + if (!m_order->isSpecified()) {
|
| orderXValue = 3;
|
| orderYValue = 3;
|
| }
|
| - // Spec says order must be > 0. Bail if it is not.
|
| - if (orderXValue < 1 || orderYValue < 1)
|
| - return nullptr;
|
| - RefPtrWillBeRawPtr<SVGNumberList> kernelMatrix = this->m_kernelMatrix->currentValue();
|
| - size_t kernelMatrixSize = kernelMatrix->length();
|
| - // The spec says this is a requirement, and should bail out if fails
|
| - if (orderXValue * orderYValue != static_cast<int>(kernelMatrixSize))
|
| - return nullptr;
|
|
|
| int targetXValue = m_targetX->currentValue()->value();
|
| - int targetYValue = m_targetY->currentValue()->value();
|
| - if (hasAttribute(SVGNames::targetXAttr) && (targetXValue < 0 || targetXValue >= orderXValue))
|
| - return nullptr;
|
| // The spec says the default value is: targetX = floor ( orderX / 2 ))
|
| - if (!hasAttribute(SVGNames::targetXAttr))
|
| + if (!m_targetX->isSpecified())
|
| targetXValue = static_cast<int>(floorf(orderXValue / 2));
|
| - if (hasAttribute(SVGNames::targetYAttr) && (targetYValue < 0 || targetYValue >= orderYValue))
|
| - return nullptr;
|
| +
|
| + int targetYValue = m_targetY->currentValue()->value();
|
| // The spec says the default value is: targetY = floor ( orderY / 2 ))
|
| - if (!hasAttribute(SVGNames::targetYAttr))
|
| + if (!m_targetY->isSpecified())
|
| targetYValue = static_cast<int>(floorf(orderYValue / 2));
|
|
|
| float divisorValue = m_divisor->currentValue()->value();
|
| - if (hasAttribute(SVGNames::divisorAttr) && !divisorValue)
|
| - return nullptr;
|
| - if (!hasAttribute(SVGNames::divisorAttr)) {
|
| + if (!m_divisor->isSpecified()) {
|
| + RefPtrWillBeRawPtr<SVGNumberList> kernelMatrix = m_kernelMatrix->currentValue();
|
| + size_t kernelMatrixSize = kernelMatrix->length();
|
| for (size_t i = 0; i < kernelMatrixSize; ++i)
|
| divisorValue += kernelMatrix->at(i)->value();
|
| if (!divisorValue)
|
|
|