New issue
Advanced search Search tips

Issue 641437 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Feature



Sign in to add a comment

SMIL: Separate interval resolution from value computation/updating

Project Member Reported by f...@opera.com, Aug 26 2016

Issue description

SVGSMILElement::progress contains both the logic to update intervals and animated values (and send events for the former.) This makes for a somewhat complicated model when it comes computing and applying animated values (and arguably resolving dependent intervals too.)

Instead split progress into two - one part that updates intervals, and one that updates animated values.

In extension this should open up for making (dependent) intervals resolution synchronous (ATM it runs on a "timer" which makes the timing logic somewhat convoluted.) Other synergies are likely to be found in the future.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Aug 27 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c4f7094a1f713541aab18286d664f8dae1826eba

commit c4f7094a1f713541aab18286d664f8dae1826eba
Author: fs <fs@opera.com>
Date: Sat Aug 27 15:42:43 2016

Hoist updateAnimation() calls from SVGSMILElement::progress

The updateAnimation() calls in SVGSMILElement::progress() corresponds
to the timed element contributing to the animation "sandwich", so it's
trivial to hoist it out into the caller. Well there, the |resultElement|
logic can be replaced with a vector onto contributing timed elements are
appended. When all contributing timed elements are collected the value
is computed.

BUG=641437

Review-Url: https://codereview.chromium.org/2283843002
Cr-Commit-Position: refs/heads/master@{#414937}

[modify] https://crrev.com/c4f7094a1f713541aab18286d664f8dae1826eba/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp
[modify] https://crrev.com/c4f7094a1f713541aab18286d664f8dae1826eba/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp
[modify] https://crrev.com/c4f7094a1f713541aab18286d664f8dae1826eba/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.h

Project Member

Comment 2 by bugdroid1@chromium.org, Aug 30 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/887b2bd70548734daaa7f1c13ed696612fc095d2

commit 887b2bd70548734daaa7f1c13ed696612fc095d2
Author: fs <fs@opera.com>
Date: Tue Aug 30 05:36:04 2016

Tidy up some loops in SMILTimeContainer::updateAnimations

Use for-range style loops and get rid of the local 'size' variable.
Also move the sort() call down after the early-out when there are no
animations to apply.

BUG=641437

Review-Url: https://codereview.chromium.org/2287973002
Cr-Commit-Position: refs/heads/master@{#415165}

[modify] https://crrev.com/887b2bd70548734daaa7f1c13ed696612fc095d2/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp

Project Member

Comment 3 by bugdroid1@chromium.org, Sep 30 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/40d243776ba93a704b64c372303594a4189984ac

commit 40d243776ba93a704b64c372303594a4189984ac
Author: fs <fs@opera.com>
Date: Fri Sep 30 19:46:13 2016

Fold bits of SVGAnimatedTypeAnimator into SVGAnimateElement

This folds non-property-construction methods from
SVGAnimatedTypeAnimator into SVGAnimateElement and gets rid of simple
forwarding methods. This leaves SVGAnimatedTypeAnimator as a property-
value factory.

BUG=641437

Review-Url: https://codereview.chromium.org/2387513002
Cr-Commit-Position: refs/heads/master@{#422188}

[modify] https://crrev.com/40d243776ba93a704b64c372303594a4189984ac/third_party/WebKit/Source/core/svg/SVGAnimateElement.cpp
[modify] https://crrev.com/40d243776ba93a704b64c372303594a4189984ac/third_party/WebKit/Source/core/svg/SVGAnimatedTypeAnimator.cpp
[modify] https://crrev.com/40d243776ba93a704b64c372303594a4189984ac/third_party/WebKit/Source/core/svg/SVGAnimatedTypeAnimator.h

Project Member

Comment 4 by bugdroid1@chromium.org, Oct 3 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7d339bf79eea750800d0957fc3acbe0f4c0da679

commit 7d339bf79eea750800d0957fc3acbe0f4c0da679
Author: fs <fs@opera.com>
Date: Mon Oct 03 17:20:46 2016

Push animation value 'inherit' handling into SVGAnimateElement

Handling of 'inherit' doesn't need to live on SVGAnimationElement,
because only SVGAnimateElement makes use of it. Move it down the
class structure and simplify.

Also refill/wrap comments in the files touched to 80 columns.

BUG=641437

Review-Url: https://codereview.chromium.org/2384013002
Cr-Commit-Position: refs/heads/master@{#422446}

[modify] https://crrev.com/7d339bf79eea750800d0957fc3acbe0f4c0da679/third_party/WebKit/Source/core/svg/SVGAnimateElement.cpp
[modify] https://crrev.com/7d339bf79eea750800d0957fc3acbe0f4c0da679/third_party/WebKit/Source/core/svg/SVGAnimateElement.h
[modify] https://crrev.com/7d339bf79eea750800d0957fc3acbe0f4c0da679/third_party/WebKit/Source/core/svg/SVGAnimationElement.cpp
[modify] https://crrev.com/7d339bf79eea750800d0957fc3acbe0f4c0da679/third_party/WebKit/Source/core/svg/SVGAnimationElement.h

Project Member

Comment 5 by bugdroid1@chromium.org, Oct 3 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/19f7c54a725c49bbc2bc683d1069c2217f302cb9

commit 19f7c54a725c49bbc2bc683d1069c2217f302cb9
Author: fs <fs@opera.com>
Date: Mon Oct 03 19:15:35 2016

Hoist target element null-checks out of SVGAnimateElement::calculate*

The calculateFromAndToValues, calculateFromAndByValues and
calculateDistance share a common entrypoint (startedActiveInterval), so
we can tighten this code-path a bit checking for a target element up
front. (No target element makes for pretty useless animations anyway...)
calculateAnimatedValue gets similar treatment in its updateAnimation
(sole) entrypoint.

Also refill comments to 80 columns in SVGAnimateMotionElement.cpp.

BUG=641437

Review-Url: https://codereview.chromium.org/2386013002
Cr-Commit-Position: refs/heads/master@{#422484}

[modify] https://crrev.com/19f7c54a725c49bbc2bc683d1069c2217f302cb9/third_party/WebKit/Source/core/svg/SVGAnimateElement.cpp
[modify] https://crrev.com/19f7c54a725c49bbc2bc683d1069c2217f302cb9/third_party/WebKit/Source/core/svg/SVGAnimateMotionElement.cpp
[modify] https://crrev.com/19f7c54a725c49bbc2bc683d1069c2217f302cb9/third_party/WebKit/Source/core/svg/SVGAnimationElement.cpp

Project Member

Comment 7 by bugdroid1@chromium.org, Oct 6 2016

Project Member

Comment 9 by bugdroid1@chromium.org, Oct 11 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1d1019a5021c6668d1195e34f2aa081eab2241c8

commit 1d1019a5021c6668d1195e34f2aa081eab2241c8
Author: fs <fs@opera.com>
Date: Tue Oct 11 08:14:06 2016

Push hasValidAttributeName/Type down into SVGAnimateElement

Introduce a new "validator" method for SVGSMILElements - hasValidTarget.
With this new method in place, the hasValidAttributeType and
hasValidAttributeName methods can be pushed down the hierarchy to where
they belong, namely SVGAnimateElement.
As a bonus, some conditions and assertions can be simplified.

BUG=641437

Review-Url: https://codereview.chromium.org/2408913002
Cr-Commit-Position: refs/heads/master@{#424389}

[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGAnimateElement.cpp
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGAnimateElement.h
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGAnimateMotionElement.cpp
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGAnimateMotionElement.h
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGAnimationElement.cpp
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGDiscardElement.cpp
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGDiscardElement.h
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.h

Project Member

Comment 10 by bugdroid1@chromium.org, Oct 11 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1d1019a5021c6668d1195e34f2aa081eab2241c8

commit 1d1019a5021c6668d1195e34f2aa081eab2241c8
Author: fs <fs@opera.com>
Date: Tue Oct 11 08:14:06 2016

Push hasValidAttributeName/Type down into SVGAnimateElement

Introduce a new "validator" method for SVGSMILElements - hasValidTarget.
With this new method in place, the hasValidAttributeType and
hasValidAttributeName methods can be pushed down the hierarchy to where
they belong, namely SVGAnimateElement.
As a bonus, some conditions and assertions can be simplified.

BUG=641437

Review-Url: https://codereview.chromium.org/2408913002
Cr-Commit-Position: refs/heads/master@{#424389}

[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGAnimateElement.cpp
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGAnimateElement.h
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGAnimateMotionElement.cpp
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGAnimateMotionElement.h
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGAnimationElement.cpp
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGDiscardElement.cpp
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/SVGDiscardElement.h
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp
[modify] https://crrev.com/1d1019a5021c6668d1195e34f2aa081eab2241c8/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.h

Project Member

Comment 11 by bugdroid1@chromium.org, Oct 27 2016

Labels: merge-merged-2840
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3e407a5549c3001e11be6f99e42ec5c484442339

commit 3e407a5549c3001e11be6f99e42ec5c484442339
Author: fs <fs@opera.com>
Date: Thu Oct 06 07:25:22 2016

Move handling of 'attributeType' to SVGAnimateElement

Another animation property that applies only to the SVGAnimateElement
part/subtree of the element hierarchy. Move it down for continued
"unlocking" of the structure.

BUG=641437

Review-Url: https://codereview.chromium.org/2391993006
Cr-Commit-Position: refs/heads/master@{#423467}

[modify] https://crrev.com/3e407a5549c3001e11be6f99e42ec5c484442339/third_party/WebKit/Source/core/svg/SVGAnimateElement.cpp
[modify] https://crrev.com/3e407a5549c3001e11be6f99e42ec5c484442339/third_party/WebKit/Source/core/svg/SVGAnimateElement.h
[modify] https://crrev.com/3e407a5549c3001e11be6f99e42ec5c484442339/third_party/WebKit/Source/core/svg/SVGAnimationElement.cpp
[modify] https://crrev.com/3e407a5549c3001e11be6f99e42ec5c484442339/third_party/WebKit/Source/core/svg/SVGAnimationElement.h

Comment 12 by dimu@google.com, Nov 4 2016

Labels: -merge-merged-2840
[Automated comment] removing mislabelled merge-merged-2840
Project Member

Comment 13 by bugdroid1@chromium.org, Nov 14 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2b7933079a764258e89426a1f81645076fc6910d

commit 2b7933079a764258e89426a1f81645076fc6910d
Author: fs <fs@opera.com>
Date: Mon Nov 14 11:46:59 2016

Refactor CSS property mapping for SMIL Animation

Currently the SMIL code relies on 'attributeName' mapping 1:1 to the
CSS property name. This would not work with for instance with
'gradientTransform', which is supposed to map to the 'transform'
property.

To support this, store a CSS property id in SVGAnimatedTypeAnimator, and
use the CSS property id stored in SVGAnimatedProperty to populate it when
possible (using the current method in other cases.)

While doing this, also remove the stored 'context element' from
SVGAnimatedTypeAnimator, since it's only used in the reset(...) method,
and hence can simply be passed as an argument.

Also cleanup the uses of a CSSPropertyID in SVGAnimateElement (the sole
user of SVGAnimatedTypeAnimator) by using the stored CSS property id.

Make SVGAnimateElement::shouldApplyAnimation return bool, and use the
data from the SVGAnimatedTypeAnimator instead to determine which
animation code-path to use.

BUG=369942,641437

Review-Url: https://codereview.chromium.org/2496583002
Cr-Commit-Position: refs/heads/master@{#431862}

[modify] https://crrev.com/2b7933079a764258e89426a1f81645076fc6910d/third_party/WebKit/Source/core/svg/SVGAnimateElement.cpp
[modify] https://crrev.com/2b7933079a764258e89426a1f81645076fc6910d/third_party/WebKit/Source/core/svg/SVGAnimateElement.h
[modify] https://crrev.com/2b7933079a764258e89426a1f81645076fc6910d/third_party/WebKit/Source/core/svg/SVGAnimatedTypeAnimator.cpp
[modify] https://crrev.com/2b7933079a764258e89426a1f81645076fc6910d/third_party/WebKit/Source/core/svg/SVGAnimatedTypeAnimator.h

Project Member

Comment 14 by bugdroid1@chromium.org, Dec 21 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d6b6ebf86773fcafd3ce6cdc6fe7ef7d14bae91e

commit d6b6ebf86773fcafd3ce6cdc6fe7ef7d14bae91e
Author: fs <fs@opera.com>
Date: Wed Dec 21 19:11:53 2016

Improve separation between "SMIL times" and timestamps

The 'elapsed' time does not need to be a SMILTime in general - it can
only be non-finite in the case where the document is not active, and
then the timeline should not be running/animations updated.
Thread the double value further from SMILTimeContainer down into
SVGSMILElement. Simplify some computations.

BUG=641437, 676137 

Review-Url: https://codereview.chromium.org/2592103002
Cr-Commit-Position: refs/heads/master@{#440171}

[modify] https://crrev.com/d6b6ebf86773fcafd3ce6cdc6fe7ef7d14bae91e/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp
[modify] https://crrev.com/d6b6ebf86773fcafd3ce6cdc6fe7ef7d14bae91e/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.h

Project Member

Comment 15 by bugdroid1@chromium.org, Dec 23 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/eaf764b300511979136eeed7907c1692bcc14a47

commit eaf764b300511979136eeed7907c1692bcc14a47
Author: fs <fs@opera.com>
Date: Fri Dec 23 10:24:47 2016

Fold SVGAnimatedTypeAnimator into SVGAnimateElement

This folds the functionality of SVGAnimatedTypeAnimator, mostly
verbatim, into SVGAnimateElement. Some methods are renamed, and a new
interface is defined, which allows <animateTransform> to be more
isolated from the rest of the <animate> implementation.
SVGAnimateElement::m_animatedProperty is renamed to m_animatedValue, and
SVGAnimatedTypeAnimator::m_animatedProperty is renamed to
m_targetProperty.
Dial down or remove some asserts in favor of other asserts.

BUG=641437

Review-Url: https://codereview.chromium.org/2595393002
Cr-Commit-Position: refs/heads/master@{#440613}

[modify] https://crrev.com/eaf764b300511979136eeed7907c1692bcc14a47/third_party/WebKit/Source/core/svg/BUILD.gn
[modify] https://crrev.com/eaf764b300511979136eeed7907c1692bcc14a47/third_party/WebKit/Source/core/svg/SVGAnimateElement.cpp
[modify] https://crrev.com/eaf764b300511979136eeed7907c1692bcc14a47/third_party/WebKit/Source/core/svg/SVGAnimateElement.h
[modify] https://crrev.com/eaf764b300511979136eeed7907c1692bcc14a47/third_party/WebKit/Source/core/svg/SVGAnimateTransformElement.cpp
[modify] https://crrev.com/eaf764b300511979136eeed7907c1692bcc14a47/third_party/WebKit/Source/core/svg/SVGAnimateTransformElement.h
[delete] https://crrev.com/c51fda8eb00536cc40b69efbdc38aadd60732fe8/third_party/WebKit/Source/core/svg/SVGAnimatedTypeAnimator.cpp
[delete] https://crrev.com/c51fda8eb00536cc40b69efbdc38aadd60732fe8/third_party/WebKit/Source/core/svg/SVGAnimatedTypeAnimator.h
[modify] https://crrev.com/eaf764b300511979136eeed7907c1692bcc14a47/third_party/WebKit/Source/core/svg/SVGAnimationElement.cpp

Project Member

Comment 16 by bugdroid1@chromium.org, Dec 26 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5795f556552fe3d6bcd19d8854ee97d223c96cbf

commit 5795f556552fe3d6bcd19d8854ee97d223c96cbf
Author: fs <fs@opera.com>
Date: Mon Dec 26 17:17:46 2016

Remove SVGAnimateElement::hasValidAttributeType

Incorporate said method into its only caller - hasValidTarget - and
override that one in SVGAnimateTransformElement instead.
Also fold animatedPropertyType() into hasValidTarget and get rid of
hasInvalidCSSAttributeType() in favor of "naked" access to the
underlying boolean flag.

BUG=641437

Review-Url: https://codereview.chromium.org/2599853003
Cr-Commit-Position: refs/heads/master@{#440716}

[modify] https://crrev.com/5795f556552fe3d6bcd19d8854ee97d223c96cbf/third_party/WebKit/Source/core/svg/SVGAnimateElement.cpp
[modify] https://crrev.com/5795f556552fe3d6bcd19d8854ee97d223c96cbf/third_party/WebKit/Source/core/svg/SVGAnimateElement.h
[modify] https://crrev.com/5795f556552fe3d6bcd19d8854ee97d223c96cbf/third_party/WebKit/Source/core/svg/SVGAnimateTransformElement.cpp
[modify] https://crrev.com/5795f556552fe3d6bcd19d8854ee97d223c96cbf/third_party/WebKit/Source/core/svg/SVGAnimateTransformElement.h

Project Member

Comment 17 by bugdroid1@chromium.org, Jan 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/de098e0d9aa37e1db404b86ba5bfb1992008719a

commit de098e0d9aa37e1db404b86ba5bfb1992008719a
Author: fs <fs@opera.com>
Date: Wed Jan 04 11:35:53 2017

Push attributeName handling down into SVGAnimateElement

SVGAnimateElement (and derived classes) is where 'attributeName' has any
meaning. Move setting/updating of the resolved 'attributeName' value
there. This allows setAttributeName to be devirtualized.
Storage is kept at the SVGSMILElement level because of how it's used at
schedule/unschedule time.

BUG=641437

Review-Url: https://codereview.chromium.org/2602423002
Cr-Commit-Position: refs/heads/master@{#441356}

[modify] https://crrev.com/de098e0d9aa37e1db404b86ba5bfb1992008719a/third_party/WebKit/Source/core/svg/SVGAnimateElement.cpp
[modify] https://crrev.com/de098e0d9aa37e1db404b86ba5bfb1992008719a/third_party/WebKit/Source/core/svg/SVGAnimateElement.h
[modify] https://crrev.com/de098e0d9aa37e1db404b86ba5bfb1992008719a/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp
[modify] https://crrev.com/de098e0d9aa37e1db404b86ba5bfb1992008719a/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.h

Project Member

Comment 18 by bugdroid1@chromium.org, Feb 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/08955414c3de2232b6d3f69bb0ceb5227af35f86

commit 08955414c3de2232b6d3f69bb0ceb5227af35f86
Author: fs <fs@opera.com>
Date: Fri Feb 24 17:29:25 2017

Tidy up event-/syncbase registration in SVGSMILElement

Move code for connect/disconnecting from event- and syncbase into the
Condition innerclass to improve readability.
Also make Condition::m_baseID and m_name be AtomicStrings (to avoid
casting and hashing all over the place), convert loops to range-syntax
and use references where it makes sense in related code-paths.

BUG=641437

Review-Url: https://codereview.chromium.org/2714643007
Cr-Commit-Position: refs/heads/master@{#452857}

[modify] https://crrev.com/08955414c3de2232b6d3f69bb0ceb5227af35f86/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp
[modify] https://crrev.com/08955414c3de2232b6d3f69bb0ceb5227af35f86/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.h

Project Member

Comment 19 by bugdroid1@chromium.org, Feb 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c4d290969dc798f99086633d30f20e794e314b4e

commit c4d290969dc798f99086633d30f20e794e314b4e
Author: fs <fs@opera.com>
Date: Fri Feb 24 17:30:47 2017

Remove 'begin'/'end' processing from SVGSMILElement::svgAttributeChanged

The svgAttributeChanged hook is (with one exception) used for attributes
that are part of the SVG DOM representation ("object model".) 'begin'
and 'end' are not. Move handling to SVGSMILElement::parseAttribute
instead.

BUG=641437

Review-Url: https://codereview.chromium.org/2719493002
Cr-Commit-Position: refs/heads/master@{#452858}

[modify] https://crrev.com/c4d290969dc798f99086633d30f20e794e314b4e/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp

Project Member

Comment 20 by bugdroid1@chromium.org, Feb 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d7d7475a474a473efc0b9578305e663653df052f

commit d7d7475a474a473efc0b9578305e663653df052f
Author: fs <fs@opera.com>
Date: Fri Feb 24 17:35:20 2017

Fold svgAttributeChanged into parseAttribute for SVGAnimateElement

This separation does not really give much in terms of benefits. Since
none of the SMIL-related attributes are exposed through SVG DOM, the
former method is always called after the latter. Move the code from the
former to the latter. This even avoids the attribute value lookup, for a
tiny perf gain...

BUG=641437

Review-Url: https://codereview.chromium.org/2706243012
Cr-Commit-Position: refs/heads/master@{#452861}

[modify] https://crrev.com/d7d7475a474a473efc0b9578305e663653df052f/third_party/WebKit/Source/core/svg/SVGAnimateElement.cpp
[modify] https://crrev.com/d7d7475a474a473efc0b9578305e663653df052f/third_party/WebKit/Source/core/svg/SVGAnimateElement.h

Project Member

Comment 21 by bugdroid1@chromium.org, Feb 27 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/901d1e45d6a0a49407a7e8936f6edf9b6124c260

commit 901d1e45d6a0a49407a7e8936f6edf9b6124c260
Author: fs <fs@opera.com>
Date: Mon Feb 27 16:33:16 2017

Tidy up instance time handling in SVGSMILElement

Merge the addBeginTime and addEndTime methods into a single method
addInstanceTime (that takes a BeginOrEnd argument.) Migrate callers to
the new method, getting rid of SVGSMILElement::handleConditionEvent in
the process.
Also inline some trivial functions in SVGAnimationElement.

BUG=641437

Review-Url: https://codereview.chromium.org/2712343004
Cr-Commit-Position: refs/heads/master@{#453233}

[modify] https://crrev.com/901d1e45d6a0a49407a7e8936f6edf9b6124c260/third_party/WebKit/Source/core/svg/SVGAnimationElement.cpp
[modify] https://crrev.com/901d1e45d6a0a49407a7e8936f6edf9b6124c260/third_party/WebKit/Source/core/svg/SVGAnimationElement.h
[modify] https://crrev.com/901d1e45d6a0a49407a7e8936f6edf9b6124c260/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp
[modify] https://crrev.com/901d1e45d6a0a49407a7e8936f6edf9b6124c260/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.h

Project Member

Comment 22 by bugdroid1@chromium.org, Mar 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5e556038ac16e5447b8a89daa293d3d2c4f3a288

commit 5e556038ac16e5447b8a89daa293d3d2c4f3a288
Author: fs <fs@opera.com>
Date: Thu Mar 09 08:38:11 2017

Store element reference for event-bases too

Rather than using the (obviously "racy") technique of looking up the
event-base element again when disconnecting from it, store the reference
on connect (sharing storage with the sync-base element since they are
mutual exclusive) and use it to disconnect properly.

BUG=641437

Review-Url: https://codereview.chromium.org/2739893002
Cr-Commit-Position: refs/heads/master@{#455699}

[modify] https://crrev.com/5e556038ac16e5447b8a89daa293d3d2c4f3a288/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp
[modify] https://crrev.com/5e556038ac16e5447b8a89daa293d3d2c4f3a288/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.h

Project Member

Comment 23 by bugdroid1@chromium.org, Mar 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c2aeb3453198b951cf00a6883783461d2752f29e

commit c2aeb3453198b951cf00a6883783461d2752f29e
Author: fs <fs@opera.com>
Date: Sat Mar 18 17:00:20 2017

Rework SMIL animation target invalidation

The invalidation of a timed/animation element's target "tuple" (element,
attribute name, attribute type) is somewhat complex.
Rework it to use two methods that can be overridden rather than having
overrides for each setTargetElement/setAttribute{Name,Type}. This allows
to get rid of complicated things like the checkInvalidCSSAttributeType()
in SVGAnimateElement. It should also make the code slightly easier to
reason about when it comes to what state gets invalidated where.

BUG=641437, 701128 

Review-Url: https://codereview.chromium.org/2746013007
Cr-Commit-Position: refs/heads/master@{#457972}

[modify] https://crrev.com/c2aeb3453198b951cf00a6883783461d2752f29e/third_party/WebKit/Source/core/svg/SVGAnimateElement.cpp
[modify] https://crrev.com/c2aeb3453198b951cf00a6883783461d2752f29e/third_party/WebKit/Source/core/svg/SVGAnimateElement.h
[modify] https://crrev.com/c2aeb3453198b951cf00a6883783461d2752f29e/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp
[modify] https://crrev.com/c2aeb3453198b951cf00a6883783461d2752f29e/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.h

Sign in to add a comment