| Index: third_party/WebKit/Source/core/svg/graphics/SVGImage.h | 
| diff --git a/third_party/WebKit/Source/core/svg/graphics/SVGImage.h b/third_party/WebKit/Source/core/svg/graphics/SVGImage.h | 
| index ea98cf224aa79547f8541b11b5603b09fae1b47f..3de118dc6827ff866f6c5fe93f7564a3ed94fee0 100644 | 
| --- a/third_party/WebKit/Source/core/svg/graphics/SVGImage.h | 
| +++ b/third_party/WebKit/Source/core/svg/graphics/SVGImage.h | 
| @@ -83,10 +83,25 @@ public: | 
|  | 
| bool hasIntrinsicDimensions() const; | 
|  | 
| +    // While updating the image's animations the underlying ImageResource needs | 
| +    // to be kept alive and it should not trigger resetting of animations while | 
| +    // the update runs. This scope object takes care of the details. | 
| +    class UpdateAnimationScope { | 
| +        STACK_ALLOCATED(); | 
| +    public: | 
| +        explicit UpdateAnimationScope(SVGImage*); | 
| +        ~UpdateAnimationScope(); | 
| + | 
| +    private: | 
| +        SVGImage* m_image; | 
| +        Member<ImageObserver> m_imageObserver; | 
| +    }; | 
| + | 
| private: | 
| friend class AXLayoutObject; | 
| friend class SVGImageChromeClient; | 
| friend class SVGImageForContainer; | 
| +    friend class UpdateAnimationScope; | 
|  | 
| ~SVGImage() override; | 
|  | 
| @@ -113,6 +128,15 @@ private: | 
| void drawInternal(SkCanvas*, const SkPaint&, const FloatRect& fromRect, const FloatRect& toRect, RespectImageOrientationEnum, | 
| ImageClampingMode, const KURL&); | 
|  | 
| +    void enterNoResetAnimationsScope() | 
| +    { | 
| +        // No known need for supporting nested invocations. | 
| +        DCHECK(!m_updatingAnimations); | 
| +        m_updatingAnimations = true; | 
| +    } | 
| + | 
| +    void leaveNoResetAnimationScope(); | 
| + | 
| Persistent<SVGImageChromeClient> m_chromeClient; | 
| Persistent<Page> m_page; | 
|  | 
| @@ -123,6 +147,9 @@ private: | 
| // SVGImage. SVGImageForContainer carried the final image size, | 
| // also called concrete object size. | 
| IntSize m_intrinsicSize; | 
| + | 
| +    bool m_updatingAnimations; | 
| +    bool m_resetAnimationAfterUpdate; | 
| }; | 
|  | 
| DEFINE_IMAGE_TYPE_CASTS(SVGImage); | 
|  |