| Index: third_party/WebKit/Source/core/svg/SVGSVGElement.cpp
|
| diff --git a/third_party/WebKit/Source/core/svg/SVGSVGElement.cpp b/third_party/WebKit/Source/core/svg/SVGSVGElement.cpp
|
| index 6e7ed43b997b1079d1b84a0118bdb129dc68c824..536616ea1199160c9f42ca5f71d95caecd71e674 100644
|
| --- a/third_party/WebKit/Source/core/svg/SVGSVGElement.cpp
|
| +++ b/third_party/WebKit/Source/core/svg/SVGSVGElement.cpp
|
| @@ -69,6 +69,7 @@ inline SVGSVGElement::SVGSVGElement(Document& doc)
|
| , m_useCurrentView(false)
|
| , m_timeContainer(SMILTimeContainer::create(*this))
|
| , m_translation(SVGPoint::create())
|
| + , m_currentScale(1)
|
| {
|
| m_width->setDefaultValueAsString("100%");
|
| m_height->setDefaultValueAsString("100%");
|
| @@ -118,16 +119,7 @@ float SVGSVGElement::currentScale() const
|
| if (!inDocument() || !isOutermostSVGSVGElement())
|
| return 1;
|
|
|
| - LocalFrame* frame = document().frame();
|
| - if (!frame)
|
| - return 1;
|
| -
|
| - const FrameTree& frameTree = frame->tree();
|
| -
|
| - // The behaviour of currentScale() is undefined, when we're dealing with non-standalone SVG documents.
|
| - // If the svg is embedded, the scaling is handled by the host layoutObject, so when asking from inside
|
| - // the SVG document, a scale value of 1 seems reasonable, as it doesn't know anything about the parent scale.
|
| - return frameTree.parent() ? 1 : frame->pageZoomFactor();
|
| + return m_currentScale;
|
| }
|
|
|
| void SVGSVGElement::setCurrentScale(float scale)
|
| @@ -136,19 +128,8 @@ void SVGSVGElement::setCurrentScale(float scale)
|
| if (!inDocument() || !isOutermostSVGSVGElement())
|
| return;
|
|
|
| - LocalFrame* frame = document().frame();
|
| - if (!frame)
|
| - return;
|
| -
|
| - const FrameTree& frameTree = frame->tree();
|
| -
|
| - // The behaviour of setCurrentScale() is undefined, when we're dealing with non-standalone SVG documents.
|
| - // We choose the ignore this call, it's pretty useless to support calling setCurrentScale() from within
|
| - // an embedded SVG document, for the same reasons as in currentScale() - needs resolution by SVG WG.
|
| - if (frameTree.parent())
|
| - return;
|
| -
|
| - frame->setPageZoomFactor(scale);
|
| + m_currentScale = scale;
|
| + updateUserTransform();
|
| }
|
|
|
| class SVGCurrentTranslateTearOff : public SVGPointTearOff {
|
| @@ -161,7 +142,7 @@ public:
|
| void commitChange() override
|
| {
|
| ASSERT(contextElement());
|
| - toSVGSVGElement(contextElement())->updateCurrentTranslate();
|
| + toSVGSVGElement(contextElement())->updateUserTransform();
|
| }
|
|
|
| private:
|
| @@ -179,10 +160,10 @@ PassRefPtrWillBeRawPtr<SVGPointTearOff> SVGSVGElement::currentTranslateFromJavas
|
| void SVGSVGElement::setCurrentTranslate(const FloatPoint& point)
|
| {
|
| m_translation->setValue(point);
|
| - updateCurrentTranslate();
|
| + updateUserTransform();
|
| }
|
|
|
| -void SVGSVGElement::updateCurrentTranslate()
|
| +void SVGSVGElement::updateUserTransform()
|
| {
|
| if (LayoutObject* object = layoutObject())
|
| object->setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReason::Unknown);
|
|
|