Commit Graph

194 Commits

Author SHA1 Message Date
Hiroyuki Ikezoe
acfc03e08a Bug 1298755 - Part 2: Drop ResetWinsInCascade in KeyframeEffect::SetTarget() since it has no effect. r=birtles
The purpose of ResetWinsInCascade() in SetTarget() ensures that
RequestRestyle(Layer) is invoked for the new target in the case when
composite order or CSS cascading or order is changed due to chaging target
element, but RequestRestyle(Layer) will be called right after setting
the new target in SetTarget() explicitly.

MozReview-Commit-ID: 1cFJCAEEroP
2016-08-31 13:58:05 +09:00
Takashi Kawanaka
3db748048c Bug 1291061 - Pass const StyleAnimationValue& to CreateStyleContextForAnimationValue r=birtles
MozReview-Commit-ID: 6PJzBBWSgwQ
2016-08-27 15:27:38 +09:00
Boris Chiou
b5fe9f732c Bug 1049975 - Part 9: Implement writable Animation effect. r=birtles
MozReview-Commit-ID: 1dwHpcYJto3
2016-07-13 18:44:19 +08:00
Boris Chiou
d47a637f93 Bug 1049975 - Part 5: Move timing related code into AnimationEffectReadOnly. r=birtles
Move the mTiming, mAnimation, and the implementaion of timing into
AnimationEffectReadOnly.

MozReview-Commit-ID: EZhlbphVvCo
2016-07-25 18:27:33 +08:00
Brian Birtles
b95d814ea1 Bug 1286476 part 2 - Respect the playback rate when calculating phase boundaries; r=hiro
This implements the spec change in 21de090dac

The spec change refers to a binary 'animation direction' flag. Instead of that,
however, we just pass the playback rate along and use it inside
GetComputedTimingAt since this seems simpler.

Also, this patch moves the implementation of
KeyframeEffectReadOnly::GetComputedTiming from the header file into the .cpp
file. This is because with this change, GetComputedTiming needs to call
mAnimation->PlaybackRate() and so mozilla::dom::Animation needs to be a complete
type. However, simply including Animation.h doesn't work because of a cyclic
dependency between KeyframeEffect.h and Animation.h. We might be able to fix
this later but since yet-to-land bug 1049975 moves this code around a lot, I'd
rather not touch it too much just now.

MozReview-Commit-ID: 1h6XRh4xmfI
2016-08-17 08:28:41 +09:00
Wes Kocher
c7a7ed3ee4 Backed out 3 changesets (bug 1286476) for frequent windows wpt failures in phases-and-states.html CLOSED TREE
Backed out changeset 53bbfa02d45d (bug 1286476)
Backed out changeset 3947ab570883 (bug 1286476)
Backed out changeset ffd8c37eb695 (bug 1286476)
2016-08-17 10:41:46 -07:00
Brian Birtles
af36ab2fce Bug 1286476 part 2 - Respect the playback rate when calculating phase boundaries; r=hiro
This implements the spec change in 21de090dac

The spec change refers to a binary 'animation direction' flag. Instead of that,
however, we just pass the playback rate along and use it inside
GetComputedTimingAt since this seems simpler.

Also, this patch moves the implementation of
KeyframeEffectReadOnly::GetComputedTiming from the header file into the .cpp
file. This is because with this change, GetComputedTiming needs to call
mAnimation->PlaybackRate() and so mozilla::dom::Animation needs to be a complete
type. However, simply including Animation.h doesn't work because of a cyclic
dependency between KeyframeEffect.h and Animation.h. We might be able to fix
this later but since yet-to-land bug 1049975 moves this code around a lot, I'd
rather not touch it too much just now.

MozReview-Commit-ID: 1h6XRh4xmfI
2016-08-17 08:28:41 +09:00
Jonathan Chan
fafebb61e5 Bug 1293739 - Part 2: Rename nsCSSPropertySet to nsCSSPropertyIDSet. r=dholbert
The previous patch in this series renamed nsCSSProperty to nsCSSPropertyID.
This patch renames nsCSSPropertySet to nsCSSPropertyIDSet accordingly.

This patch is generated by the following commands (note: if you're running
using OS X's sed, which accepts slightly different flags, you'll have to
specify an actual backup suffix in -i, or use gsed from Homebrew):

  hg stat -c \
  | cut -c 3-  \
  | tr '\n' '\0' \
  | xargs -0 -P 8 gsed --follow-symlinks 's/\bnsCSSPropertySet\b/nsCSSPropertyIDSet/g' -i''

Then:

  hg mv layout/style/nsCSSPropertySet.h layout/style/nsCSSPropertyIDSet.h

... and finally, manually renaming nsCSSPropertySet in the include guard in
nsCSSPropertyIDSet.h.

MozReview-Commit-ID: ASUNs7FWbKP
2016-08-09 16:28:21 -07:00
Jonathan Chan
23ccd0531f Bug 1293739 - Part 1: Rename nsCSSProperty to nsCSSPropertyID. r=dholbert
This patch is generated by the following commands (note: if you're running
using OS X's sed, which accepts slightly different flags, you'll have to
specify an actual backup suffix in -i, or use gsed from Homebrew):

  hg stat -c \
  | cut -c 3-  \
  | tr '\n' '\0' \
  | xargs -0 -P 8 gsed --follow-symlinks 's/\bnsCSSProperty\b/nsCSSPropertyID/g' -i''

Then:

  hg mv layout/style/nsCSSProperty.h layout/style/nsCSSPropertyID.h

... and finally, manually renaming nsCSSProperty in the include guard in
nsCSSProperty.h.

MozReview-Commit-ID: ZV6jyvmLfA
2016-08-09 16:28:19 -07:00
Hiroyuki Ikezoe
dfa69b46d2 Bug 1287725 - Drop KeyframeEffectReadOnly::HasAnimationOfProperties and nsLayoutUtils::HasCurrentAnimationsForProperties. r=birtles
MozReview-Commit-ID: K33ga7KpLIo
2016-07-26 06:44:11 +09:00
Hiroyuki Ikezoe
79111f2b63 Bug 1288586 - Don't calculate style difference if there are no properties change. r=birtles
We don't actually need to re-calculate if the updated properties are the
same as the old one. This change avoids problematic nested calls of
nsStyleSet::GetContext() in particular cases.

MozReview-Commit-ID: JksiTGX57Fy
2016-07-22 15:17:37 +09:00
Brian Birtles
35cc6f3447 Bug 1277456 part 6 - Use the composed document of the target effect (if any) when computing keyframe values; r=hiro
Previously, when fetching an nsPresShell, we would look up the current realm
document and get the pres shell for it. This patch makes us call GetPresShell()
which uses GetRenderedDocument() which corresponds to the composed document of
the target effect which seems more consistent since it is the target effect we
will use as context for computing CSS values (as required by [1]).

[1] https://w3c.github.io/web-animations/#calculating-computed-keyframes

MozReview-Commit-ID: 9S55041rfTp
2016-07-13 13:22:25 +09:00
Brian Birtles
785933548f Bug 1277456 part 5 - Pass the document associated with an AnimationEffectTiming/KeyframeEffect object to KeyframeUtils as the context to use when parsing CSS properties; r=hiro
Note that when we actually compute values, we will use the composed document of
the target element (see the next patch in this series).

MozReview-Commit-ID: 8Pp3y19pltP
2016-07-13 13:22:25 +09:00
Hiroyuki Ikezoe
afb064adfe Bug 1278485 - Part 1: Limit y1 and y2 control points for cubic-bezier to avoid overflows. r=birtles
MozReview-Commit-ID: Bls260r7Sqn
2016-07-12 16:24:42 +09:00
Hiroyuki Ikezoe
fce21e48f1 Bug 1279403 - Part 2: Set NS_FRAME_MAY_BE_TRANSFORMED bit if the target nsIFrame has transform when setting target or keyframes. r=birtles
MozReview-Commit-ID: InQyXpENsSY
2016-07-11 08:29:14 +09:00
Hiroyuki Ikezoe
fe0c87b94d Bug 1278136 - Part 0: Clean up frame->StyleDisplay()->BackfaceIsHidden() usage. r=mattwoodrow
We already have a wrapper named nsIFrame::BackfaceIsHidden().

MozReview-Commit-ID: 5L49W6wtXs1
2016-07-08 13:01:31 +09:00
Brian Birtles
67c4c05a93 Bug 1279819 - Copy keyframes array before iterating over it; r=hiro
MozReview-Commit-ID: KMacnQcFx9f
2016-07-06 13:55:30 +09:00
Boris Chiou
7a1bc2e915 Bug 1283625 - Unlink timing object before nullifying it. r=birtles
MozReview-Commit-ID: 3eIAL77aDLV
2016-07-06 10:57:26 +08:00
Brian Birtles
44884adfcf Backed out changeset f182a6c18d75 (bug 1279819) 2016-07-06 09:09:55 +09:00
Brian Birtles
3d42612ac5 Bug 1279819 - Copy keyframes array before iterating over it; r=hiro
MozReview-Commit-ID: KMacnQcFx9f
2016-07-06 08:00:44 +09:00
Brian Birtles
c0772ba783 Bug 1283387 part 2 - Implement updated calculation of active time in after phase with negative end delay r=hiro
This implements the changes to the specified behavior from the following
changeset:

  a9ba51338e

It also updates test expectations based on the tests updated in part 1 of this
patch series.

MozReview-Commit-ID: HyJC8tHXLYc
2016-07-01 09:31:02 +09:00
Boris Chiou
3415286a61 Bug 1244590 - Part 9: Update spacing in SetTarget. r=birtles
Handle these cases:
1. When creating null-target effect whose spacing mode is "paced":
 - Fall back to distribute spacing. This case is already included by previous
   patches.

2. When setting a target to null:
 - Apply distribute spacing.

3. When style context is null.
 - Fall back to distribute spacing.

4. When setting a new valid target:
 - Use this new target as the context element and re-calculate the computed
   offsets. This case is already included by previous patches.

MozReview-Commit-ID: 1zhSOAylnZb
2016-05-11 15:34:58 +08:00
Boris Chiou
5453bd4d63 Bug 1244590 - Part 8: Rewrite GetStyleContext code. r=birtles
Do a simple refactor, so we can reuse the getter of nsStyleContext.

MozReview-Commit-ID: 4BQ7f8HuFns
2016-05-11 11:41:20 +08:00
Boris Chiou
1970294d62 Bug 1244590 - Part 7: Calculate paced spacing. r=birtles
Calculate the paced spacing for each Keyframes by the context element. Use the
algorithm in the spec.

MozReview-Commit-ID: HFWQwoKhKWt
2016-05-27 18:09:06 +08:00
Boris Chiou
8e092aad0e Bug 1244590 - Part 6: Refactor the calculation of StyleAnimationValue. r=birtles
We want to reuse the StyleAnimationValues of properties of each keyframe when
applying spacing and building animation property segments, so refactor this
part.

MozReview-Commit-ID: 8G56C3BU3FR
2016-05-25 17:10:53 +08:00
Boris Chiou
77927338f8 Bug 1244590 - Part 5: Make the default value of computed offsets be -1. r=birtles
When we apply paced spacing, we have to check if there are still null computed
offsets after applying paced spacing to paceable Keyframes because the
calculation of distance may be failed or some Keyframes are not paceable in
the specific range. Therefore, using -1 would be easier to check it.
Also, add a const, kComputedOffsetNotSet, to represent this invalid value.

MozReview-Commit-ID: GPhj7cdiX2W
2016-05-12 16:00:47 +08:00
Boris Chiou
582bc5aba9 Bug 1244590 - Part 4: Rewrite ApplyDistributeSpacing. r=birtles
Rename it to ApplySpacing, and let it handle both distribute and paced mode.

MozReview-Commit-ID: 2kGA6LMHUsz
2016-05-10 17:40:53 +08:00
Boris Chiou
458e94fcc4 Bug 1244590 - Part 3: Parse spacing. r=birtles
We only support spacing mode from Web Animations API, so add a simple parser and
use it only from the API. In this patch, parse spacing mode from the constructor
and throw TypeError if we have any parse error.

MozReview-Commit-ID: 9H7g80IcZfZ
2016-05-13 16:38:25 +08:00
Boris Chiou
72a7803419 Bug 1244590 - Part 2: Retrieve KeyframeEffectOptions from constructor. r=birtles
MozReview-Commit-ID: DtkJ6eLj4tl
2016-05-05 18:50:16 +08:00
Boris Chiou
efa654bd9f Bug 1244590 - Part 1: Introduce KeyframeEffectParams. r=birtles
Add a new file, KeyframeEffectParams.h, and define the basic data
members nsString for the spacing mode.
Also, add one more argument, const KeyframeEffectParams&, to the
constructors of KeyframeEffect(ReadOnly).

MozReview-Commit-ID: I7LYlnv6LLb
2016-05-05 15:41:03 +08:00
Hiroyuki Ikezoe
d90403755d Bug 1166500 - Part 11: Add a preference for offscreen throttling. r=dbaron
MozReview-Commit-ID: AD34RTVZcxy
2016-05-24 12:57:43 +09:00
Hiroyuki Ikezoe
d0227c3b47 Bug 1166500 - Part 7: Throttle paint-only animations if the presShell is not active. r=dbaron 2016-05-24 12:57:43 +09:00
Hiroyuki Ikezoe
7747a7ba95 Bug 1166500 - Part 6: Throttle paint-only animations on element which is out of view. r=dbaron 2016-05-24 12:57:43 +09:00
Hiroyuki Ikezoe
ec367fed24 Bug 1166500 - Part 3: Add KeyframeEffectReadOnly::CanIgnoreIfNotVisible(). r=dbaron 2016-05-24 12:57:42 +09:00
Hiroyuki Ikezoe
20e4b18276 Bug 1166500 - Part 2: Calculate cumulative change hint. r=dbaron
In order to raise an assertion in CanIgnoreIfNotVisible() which will be
introduced in part 3 when the cumulative hint is not properly, we should skip
the calculation when mProperties is empty.
2016-05-24 12:57:42 +09:00
Hiroyuki Ikezoe
5c3ea8ae5a Bug 1268385 - Clear isRunningOnCompositor for script animations if associated nsIFrame is destroyed. r=birtles
MozReview-Commit-ID: 3tTkDtxkHcT
2016-05-16 16:25:46 +09:00
Brian Birtles
43944667cb Bug 1271904 - Rename KeyframeEffectReadOnly.getFrames() and KeyframeEffect.setFrames() to getKeyframes()/setKeyframes(); r=hiro, r=smaug
MozReview-Commit-ID: GwLLY39l1KE
2016-05-13 09:40:52 +09:00
Brian Birtles
a2a7cc275b Bug 1263488 - Make AnimValuesStyleRule re-use PropertyStyleAnimationValuePair; r=hiro
Rather than defining the same type redundantly but with a name that overlaps
with a struct in KeyframeEffect.h (that has a different type).

MozReview-Commit-ID: 3MbvXWL8XlL
2016-05-11 16:43:32 +09:00
Hiroyuki Ikezoe
c331292e58 Bug 1235002 - Skip requesting a restyle when mProperties is empty. r=birtles
The test case here does not check whether requesting restyles for empty
properties are skipped or not.  It just checks that whether restyles happen or
not because there is no way to check each request for restyles yet.

MozReview-Commit-ID: I5XMYfCTYU8
2016-05-09 12:33:52 +09:00
Hiroyuki Ikezoe
a3c90e540e Bug 1267937 - Part 1: Clear mProgressOnLastCompose once we are not in effect. r=birtles 2016-04-30 07:08:10 +09:00
Boris Chiou
e4faea3b76 Bug 1067769 - Part 12: Use Maybe<OwningAnimationTarget> in KeyframeEffect(ReadOnly) constructors. r=birtles
MozReview-Commit-ID: Euv76D6sIFX
2016-04-28 23:22:44 +08:00
Boris Chiou
cf44763390 Bug 1067769 - Part 11: Implement animation mutation observer while setting the target. r=birtles
MozReview-Commit-ID: EjgbslUwPKw
2016-04-28 23:22:43 +08:00
Boris Chiou
13535924b4 Bug 1067769 - Part 10: Implement SetTarget(). r=birtles
MozReview-Commit-ID: GW3Ujn5cbY3
2016-04-28 23:22:43 +08:00
Boris Chiou
8173f80600 Bug 1067769 - Part 9: Wrap RequestRestyle and UnregisterTarget. r=birtles
We will need to request a restyle and unregister the current target in
SetTarget(), and there are many duplicate code segments for them now, so wrap
them for reusing the code.

MozReview-Commit-ID: 33XoNspZme3
2016-04-28 23:22:43 +08:00
Boris Chiou
52bb26316f Bug 1067769 - Part 8: Add ConvertTarget function. r=birtles
Use ConvertTarget() to convert Nullabe<ElementOrCSSPseudoElement> into
Maybe<OwningAnimationTarget>, so SetTarget() can use it as well. The return type
of ConvertTarget is not Maybe<NonOwningAnimationTarget> because we need to
compare the return type with KeyframeEffectReadOnly::mTarget, so using the same
type would be easier to implement.

MozReview-Commit-ID: GskbydOMoo0
2016-04-28 23:22:43 +08:00
Boris Chiou
69b2c349c5 Bug 1067769 - Part 7: Define OwningAnimationTarget and use it. r=birtles
1. Define OwningAnimationTarget.
2. Replace the KeyframeEffectReadOnly::mTarget/mPseudoType members with
   a Maybe<OwningAnimationTarget> mTarget member.

MozReview-Commit-ID: 65qOoNyDRSy
2016-04-28 23:22:43 +08:00
Boris Chiou
e6d148eb3c Bug 1067769 - Part 5: Support setting KeyframeEffect.target webidl interface. r=smaug
MozReview-Commit-ID: 9494jdI97MT
2016-04-28 23:22:43 +08:00
Boris Chiou
c60664e3fb Bug 1067769 - Part 2: Support nullable target in KeyframeEffect(ReadOnly) constructor. r=birtles
We set a null target only from Web Animations API, so make sure
KeyframeEffectReadOnly::ConstructKeyframeEffect() can handle null target
properly.

MozReview-Commit-ID: D6PoV7PGFj3
2016-04-28 23:22:42 +08:00
Boris Chiou
590c0337e1 Bug 1067769 - Part 1: Avoid doing RequestRestyle and mutation batch for null target. r=birtles
We don't need to restyle if mTarget is nullptr, so skip it. For
nsAutoAnimationMutationBatch, we also skip it if mTarget is nullptr.

AnimationColletion, nsAnimationManager and nsTransitionManger are for
CSS Animations and CSS Transtions, so the effect should have an effective
target. Therefore, I think we don't have to revise them for
nsAutoAnimationMutationBatch.

MozReview-Commit-ID: Egzr1QVEa0v
2016-04-28 23:22:42 +08:00
Ryo Kato
57c2308f33 Bug 1244591 - Part 1: Implement KeyframeEffect.setFrames r=birtles,smaug
WebIDL referes to KeyframeEffect::SetFrames(), which is derived from
KeyframeEffectReadOnly::SetFrames() in terms of implementation.

In addition, make KeyframeEffectReadOnly::ConstructKeyframeEffect call
KeyframeEffectReadOnly::SetFrames() to simplify the code.

MozReview-Commit-ID: 7ASbtoN7Tnp
2016-04-09 15:33:34 +09:00