The default bug view has changed. See this FAQ.

Implement Webkit's CSS Animation proposal

RESOLVED FIXED in mozilla5

Status

()

Core
CSS Parsing and Computation
P4
enhancement
RESOLVED FIXED
9 years ago
2 months ago

People

(Reporter: zwol, Assigned: dbaron)

Tracking

(Depends on: 1 bug, {css3, dev-doc-complete})

Trunk
mozilla5
css3, dev-doc-complete
Points:
---
Dependency tree / graph
Bug Flags:
blocking1.9.2 -
wanted1.9.2 -

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: [css-animations], URL)

Attachments

(16 attachments, 12 obsolete attachments)

7.77 KB, patch
Details | Diff | Splinter Review
9.49 KB, patch
Details | Diff | Splinter Review
2.03 KB, patch
Details | Diff | Splinter Review
36.13 KB, patch
Details | Diff | Splinter Review
79.87 KB, patch
Details | Diff | Splinter Review
6.22 KB, patch
Details | Diff | Splinter Review
9.40 KB, patch
Details | Diff | Splinter Review
26.68 KB, patch
smaug
: review+
Details | Diff | Splinter Review
2.54 KB, patch
Details | Diff | Splinter Review
25.28 KB, patch
Details | Diff | Splinter Review
5.93 KB, patch
Details | Diff | Splinter Review
1.94 KB, patch
Details | Diff | Splinter Review
103.49 KB, patch
Details | Diff | Splinter Review
36.03 KB, patch
Details | Diff | Splinter Review
82.78 KB, patch
Details | Diff | Splinter Review
47.56 KB, patch
Details | Diff | Splinter Review
(Reporter)

Description

9 years ago
The Webkit team has proposed a CSS extension for explicit specification of animations: http://webkit.org/specs/CSSVisualEffects/CSSAnimation.html
It would be nice to implement this in Mozilla as well (using -webkit- names for
compatibility, until standardized).
OS: Linux → All
Hardware: PC → All
Version: unspecified → Trunk

Updated

9 years ago
Status: NEW → ASSIGNED

Updated

8 years ago
Flags: wanted1.9.2?
The draft spec has moved to w3.org, updating the bug's URL accordingly.
Flags: wanted1.9.2?
Flags: wanted1.9.2-
Flags: blocking1.9.2-
This is a mass change. Every comment has "assigned-to-new" in it.

I didn't look through the bugs, so I'm sorry if I change a bug which shouldn't be changed. But I guess these bugs are just bugs that were once assigned and people forgot to change the Status back when unassigning.
Status: ASSIGNED → NEW

Comment 3

7 years ago
How does this bug relate to columns support - CSS3 (MultiCol) as per https://developer.mozilla.org/en/Mozilla_CSS_support_chart?
(Assignee)

Comment 4

7 years ago
It doesn't.

Updated

6 years ago
Keywords: css3
Whiteboard: [css-animations]
Target Milestone: mozilla2.0 → ---
(Assignee)

Updated

6 years ago
Depends on: 636029
(Assignee)

Comment 5

6 years ago
http://hg.mozilla.org/users/dbaron_mozilla.com/patches/raw-file/8a3a30ec0d54/css-animations-properties is a patch to parse and compute the values of the animation-* properties.

(There's still a lot more work here:  parsing @keyframes rules, and actually doing the animations.)
(Assignee)

Updated

6 years ago
Depends on: 577974
(Assignee)

Comment 6

6 years ago
Created attachment 523699 [details] [diff] [review]
patch 1: add new properties

Much like transitions.
Attachment #523699 - Flags: review?(bzbarsky)
(Assignee)

Comment 7

6 years ago
Created attachment 523700 [details] [diff] [review]
patch 2: share GetCSSParsingEnvironment
Attachment #523700 - Flags: review?(bzbarsky)
(Assignee)

Comment 8

6 years ago
Created attachment 523701 [details] [diff] [review]
patch 3: handle modifications coming from grandchildren of sheet better
Attachment #523701 - Flags: review?(bzbarsky)
(Assignee)

Comment 9

6 years ago
Created attachment 523702 [details] [diff] [review]
patch 4: fix style rule inherit macros
Attachment #523702 - Flags: review?(bzbarsky)
(Assignee)

Comment 10

6 years ago
Created attachment 523703 [details] [diff] [review]
patch 5: implement and parse @keyframes rules
Attachment #523703 - Flags: review?(bzbarsky)
(Assignee)

Comment 11

6 years ago
Created attachment 523704 [details] [diff] [review]
patch 6: cascade @keyframes rules

Much like @font-face rules.
Attachment #523704 - Flags: review?(bzbarsky)
(Assignee)

Comment 12

6 years ago
Created attachment 523705 [details] [diff] [review]
patch 7: move parts of transitions code into common base class to share with animation
Attachment #523705 - Flags: review?(bzbarsky)
(Assignee)

Comment 13

6 years ago
Created attachment 523706 [details] [diff] [review]
patch 8: make AddEmptyValue explicitly Infallible, and assume it is
Attachment #523706 - Flags: review?(bzbarsky)
(Assignee)

Comment 14

6 years ago
Patch 9 (doing the animation) is still to come; it works in simple cases, but needs a lot more tests, and probably a bunch of bug fixes to match.
(Assignee)

Comment 15

6 years ago
Comment on attachment 523699 [details] [diff] [review]
patch 1: add new properties

Actually, hold off on patch one.

I meant to stick in another patch before patch one to deal with the steps() function, and apply the steps() and step-end/step-start to transitions as well.  So hold
Attachment #523699 - Flags: review?(bzbarsky)
(Assignee)

Comment 16

6 years ago
Created attachment 523743 [details] [diff] [review]
patch 0: implement step-start, step-end, and steps()
Attachment #523743 - Flags: review?(bzbarsky)
(Assignee)

Comment 17

6 years ago
Created attachment 523744 [details] [diff] [review]
patch 1: add new properties
Attachment #523699 - Attachment is obsolete: true
Attachment #523744 - Flags: review?(bzbarsky)
(Assignee)

Comment 18

6 years ago
Created attachment 523745 [details] [diff] [review]
patch 7: move parts of transitions code into common base class to share with animation
Attachment #523705 - Attachment is obsolete: true
Attachment #523745 - Flags: review?(bzbarsky)
Attachment #523705 - Flags: review?(bzbarsky)
(Assignee)

Updated

6 years ago
Attachment #523744 - Attachment description: patch 2: add new properties → patch 1: add new properties
Keywords: dev-doc-needed
(Assignee)

Comment 19

6 years ago
Created attachment 523808 [details] [diff] [review]
patch 9: allow tests to take over control of refresh driver time and refreshes
Attachment #523808 - Flags: review?(bzbarsky)
(Assignee)

Comment 20

6 years ago
Created attachment 523809 [details] [diff] [review]
patch 10: copy some bits of test_transitions.html into a shared file
Attachment #523809 - Flags: review?(bzbarsky)
(Assignee)

Comment 21

6 years ago
Created attachment 523829 [details] [diff] [review]
patch 9: allow tests to take over control of refresh driver time and refreshes

Er, since refresh drivers are shared, I need a way to restore normalcy.
Attachment #523808 - Attachment is obsolete: true
Attachment #523829 - Flags: review?(bzbarsky)
Attachment #523808 - Flags: review?(bzbarsky)
(Assignee)

Updated

6 years ago
Assignee: nobody → dbaron
Priority: -- → P4

Updated

6 years ago
Status: NEW → ASSIGNED
(Assignee)

Comment 22

6 years ago
Created attachment 524497 [details] [diff] [review]
patch 11: implement and test animations of css animations
Attachment #524497 - Flags: review?(bzbarsky)
(Assignee)

Comment 23

6 years ago
Created attachment 524534 [details] [diff] [review]
patch 12: animation event structures

This adds animation events, which are almost the same as transition events except for a few names.
Attachment #524534 - Flags: review?(Olli.Pettay)
(Assignee)

Comment 24

6 years ago
Created attachment 524856 [details] [diff] [review]
patch 11: implement and test animations of css animations

With a slight tweak to end animations more promptly, since that makes more sense for events (although I explicitly don't test it in the animation test code).
Attachment #524497 - Attachment is obsolete: true
Attachment #524856 - Flags: review?(bzbarsky)
Attachment #524497 - Flags: review?(bzbarsky)
(Assignee)

Comment 25

6 years ago
Created attachment 524857 [details] [diff] [review]
patch 12: animation event structures

I missed a few pieces related to the events.
Attachment #524534 - Attachment is obsolete: true
Attachment #524857 - Flags: review?(Olli.Pettay)
Attachment #524534 - Flags: review?(Olli.Pettay)
Comment on attachment 524857 [details] [diff] [review]
patch 12: animation event structures


>+nsresult
>+NS_NewDOMAnimationEvent(nsIDOMEvent **aInstancePtrResult,
>+                        nsPresContext *aPresContext,
>+                        nsAnimationEvent *aEvent)
>+{
>+  nsDOMAnimationEvent *it = new nsDOMAnimationEvent(aPresContext, aEvent);
>+  if (!it) {
>+    return NS_ERROR_OUT_OF_MEMORY;
>+  }
new is infallible, so no need for OOM check.


>+ * The Original Code is nsDOMAnimationEvent.
>+ *
>+ * The Initial Developer of the Original Code is the Mozilla Foundation.
>+ * Portions created by the Initial Developer are Copyright (C) 2009
>+ * the Initial Developer. All Rights Reserved.
2009?


>+class nsDOMAnimationEvent : public nsDOMEvent,
>+                             public nsIDOMAnimationEvent
Nit, extra space before the second 'public'



>+{
>+public:
>+  nsDOMAnimationEvent(nsPresContext *aPresContext,
>+                       nsAnimationEvent *aEvent);
similar thing here
Attachment #524857 - Flags: review?(Olli.Pettay) → review+
(Assignee)

Comment 27

6 years ago
Created attachment 524895 [details] [diff] [review]
patch 11: implement and test animations of css animations

With some minor test updates (be a little stricter about the end boundary condition in one test -- I'd loosened it in the last revision instead of changing it as I probably should).
Attachment #524856 - Attachment is obsolete: true
Attachment #524895 - Flags: review?(bzbarsky)
Attachment #524856 - Flags: review?(bzbarsky)
(Assignee)

Comment 28

6 years ago
Created attachment 524896 [details] [diff] [review]
patch 13: fix layout-dependent computed style for pseudo-elements

Layout-dependent computed style was broken on pseudo-elements, as exposed by tests in the next patch.  This could perhaps use its own simple test (a very simple one could work), but I didn't bother since it is tested in the next patch.
Attachment #524896 - Flags: review?(bzbarsky)
(Assignee)

Comment 29

6 years ago
Created attachment 524897 [details] [diff] [review]
patch 14: fire animation events
Attachment #524897 - Flags: review?(bzbarsky)
Comment on attachment 524897 [details] [diff] [review]
patch 14: fire animation events

>diff --git a/layout/style/nsAnimationManager.h b/layout/style/nsAnimationManager.h
>--- a/layout/style/nsAnimationManager.h
>+++ b/layout/style/nsAnimationManager.h
>@@ -59,16 +62,38 @@ class nsAnimationManager : public mozill
> public:
>   nsAnimationManager(nsPresContext *aPresContext)
>     : mozilla::css::CommonAnimationManager(aPresContext),
>       mKeyframesListIsDirty(true)
>   {
>     mKeyframesRules.Init(16); // FIXME: make infallible!
>   }
> 
>+  struct AnimationEventInfo {
>+    nsCOMPtr<mozilla::dom::Element> mElement;

nsRefPtr, right?
(Assignee)

Comment 31

6 years ago
Some of these patches required a bit of merging with bug 577976 and perhaps other de-COM patches.  I have merged versions in my patch queue; will upload in a bit after testing.
(Assignee)

Comment 32

6 years ago
Created attachment 525035 [details] [diff] [review]
patch 2: share GetCSSParsingEnvironment
Attachment #523700 - Attachment is obsolete: true
Attachment #525035 - Flags: review?(bzbarsky)
Attachment #523700 - Flags: review?(bzbarsky)
(Assignee)

Comment 33

6 years ago
Created attachment 525036 [details] [diff] [review]
patch 4: fix style rule inherit macros
Attachment #523702 - Attachment is obsolete: true
Attachment #525036 - Flags: review?(bzbarsky)
Attachment #523702 - Flags: review?(bzbarsky)
(Assignee)

Comment 34

6 years ago
Created attachment 525037 [details] [diff] [review]
patch 5: implement and parse @keyframes rules
Attachment #523703 - Attachment is obsolete: true
Attachment #525037 - Flags: review?(bzbarsky)
Attachment #523703 - Flags: review?(bzbarsky)
(Assignee)

Comment 35

6 years ago
Created attachment 525038 [details] [diff] [review]
patch 11: implement and test animations of css animations
Attachment #524895 - Attachment is obsolete: true
Attachment #525038 - Flags: review?(bzbarsky)
Attachment #524895 - Flags: review?(bzbarsky)
(Assignee)

Comment 36

6 years ago
Created attachment 525042 [details] [diff] [review]
patch 7: move parts of transitions code into common base class to share with animation

CommonAnimationManager needs a virtual destructor to avoid leaking during pretty much any unit tests.
Attachment #523745 - Attachment is obsolete: true
Attachment #525042 - Flags: review?(bzbarsky)
Attachment #523745 - Flags: review?(bzbarsky)
Comment on attachment 525035 [details] [diff] [review]
patch 2: share GetCSSParsingEnvironment

>+  nsresult GetCSSParsingEnvironmentForRule(nsICSSRule* aRule,

This can be a static method, right?

r=me with that.

Also, can you please file a followup bug on me to change this method to not need to addref all those options?
Attachment #525035 - Flags: review?(bzbarsky) → review+
(Assignee)

Comment 38

6 years ago
(In reply to comment #37)
> >+  nsresult GetCSSParsingEnvironmentForRule(nsICSSRule* aRule,
> 
> This can be a static method, right?

right.

> Also, can you please file a followup bug on me to change this method to not
> need to addref all those options?

Filed bug 649163.
Comment on attachment 523701 [details] [diff] [review]
patch 3: handle modifications coming from grandchildren of sheet better

>-            sheet->SetModified(PR_FALSE);
>+            NS_ABORT_IF_FALSE(!sheet->IsModified(),
>+                              "should not get marked modified during parsing");

I believe this change is wrong (and the one in css::Loader).  In particular, parsing an @import rule will call css::Loader::LoadChildSheet which calls css::Loader::InsertChildSheet which calls nsCSSStyleSheet::AppendStyleSheet which calls DidDirty().  I'm somewhat surprised this abort wasn't hit in testing.....

We probably need to guard the DidDirty() call or the mDirty set in DidDirty() on mInner->mComplete.

Same for the quivalent CSSLoader code.

>+++ b/layout/style/nsCSSStyleSheet.cpp
> nsCSSStyleSheet::EnsureUniqueInner()
> {
>+  mDirty = PR_TRUE;

This is wrong too.  It will cause use to treat as non-dirty sheets that may well have been modified.  Say a sheet is modified and then GetItemAt is called on its .rules.  This change will cause mDirty to be set to false.  Then the css::Loader will think it can coalesce other sheets with this one based on URI (see the IsModified() check in Loader::CreateSheet), which is wrong.
Attachment #523701 - Flags: review?(bzbarsky) → review-
Er, ignore comment 39.  I misread the EnsureUniqueInner change.
Comment on attachment 523701 [details] [diff] [review]
patch 3: handle modifications coming from grandchildren of sheet better

r=me
Attachment #523701 - Flags: review- → review+
Comment on attachment 523743 [details] [diff] [review]
patch 0: implement step-start, step-end, and steps()

r=me
Attachment #523743 - Flags: review?(bzbarsky) → review+
Attachment #525036 - Flags: review?(bzbarsky) → review+
(Assignee)

Comment 43

6 years ago
Created attachment 525288 [details] [diff] [review]
patch 15: #ifdef the feature
Attachment #525288 - Flags: review?(bzbarsky)
(Assignee)

Comment 44

6 years ago
Created attachment 525293 [details] [diff] [review]
patch 5: implement and parse @keyframes rules

I noticed the StyleRule.h changes were a remnant of an earlier approach, so removed them.
Attachment #525037 - Attachment is obsolete: true
Attachment #525293 - Flags: review?(bzbarsky)
Attachment #525037 - Flags: review?(bzbarsky)
Comment on attachment 523744 [details] [diff] [review]
patch 1: add new properties

>+++ b/layout/style/nsCSSParser.cpp
>@@ -4474,18 +4488,22 @@ CSSParserImpl::ParseVariant(nsCSSValue& 

We should probably assert up front that the variant mask doesn't have both VARIANT_IDENTIFIER and VARIANT_IDENTIFIER_NO_INHERIT set.

>+  if (((aVariantMask &
>+        (VARIANT_IDENTIFIER | VARIANT_IDENTIFIER_NO_INHERIT)) != 0) &&
>+      (eCSSToken_Ident == tk->mType) &&
>+      ((aVariantMask & VARIANT_IDENTIFIER) != 0 ||
>+       !(tk->mIdent.LowerCaseEqualsLiteral("inherit") ||
>+         tk->mIdent.LowerCaseEqualsLiteral("initial")))) {

And then I think I would prefer that last clause after the tk->mType check to read:

  !((aVariantMask & VARIANT_IDENTIFIER_NO_INHERIT) &&
     (tk->mIdent.LowerCaseEqualsLiteral("inherit") ||
      tk->mIdent.LowerCaseEqualsLiteral("initial")))

but it's not a terribly strong preference.


>+CSSParserImpl::ParseAnimationOrTransitionShorthand(
>+  for (;;) { // loop over comma-separated transitions

"or animations"

>+    // whether a particular subproperty was specified for this transition

"or animation"

>+    for (;;) { // loop over values within a transition

"or animation"

>+      // check to see if we're at the end of one full transition definition

"or animation definition"

>+      // else, try to parse the next transition sub-property

"or animation sub-property"

>+    // We hit the end of the property or the end of one transition

"or animation"


>@@ -3873,16 +3894,331 @@ nsRuleNode::ComputeDisplayData(void* aSt
>+        case eCSSUnit_Enumerated:
>+          animation->SetIterationCount(NS_IEEEPositiveInfinity());

Could use an assert on the value of the enumeration there.

r=me with those nits.
Attachment #523744 - Flags: review?(bzbarsky) → review+
Comment on attachment 525293 [details] [diff] [review]
patch 5: implement and parse @keyframes rules

r=me with the comment nit I mentioned.
Attachment #525293 - Flags: review?(bzbarsky) → review+
Comment on attachment 523704 [details] [diff] [review]
patch 6: cascade @keyframes rules

>+++ b/layout/style/nsCSSRuleProcessor.cpp
>+// Append all the currently-active font face rules to aArray.  Return

s/font face/key frame/

r=me with that.
Attachment #523704 - Flags: review?(bzbarsky) → review+
Comment on attachment 525042 [details] [diff] [review]
patch 7: move parts of transitions code into common base class to share with animation

>+++ b/layout/style/AnimationCommon.cpp
>+  // Content nodes might outlive the transition manager.

s/transition/animation/

>+AnimValuesStyleRule::MapRuleInfoInto(nsRuleData* aRuleData)
>+    // Don't apply transitions to things inside of pseudo-elements.

"or animations"

r=me
Attachment #525042 - Flags: review?(bzbarsky) → review+
Comment on attachment 523706 [details] [diff] [review]
patch 8: make AddEmptyValue explicitly Infallible, and assume it is

Fix the comment about "non-null" too?

r=me
Attachment #523706 - Flags: review?(bzbarsky) → review+
Comment on attachment 523829 [details] [diff] [review]
patch 9: allow tests to take over control of refresh driver time and refreshes

r=me
Attachment #523829 - Flags: review?(bzbarsky) → review+
Comment on attachment 523809 [details] [diff] [review]
patch 10: copy some bits of test_transitions.html into a shared file

r=me
Attachment #523809 - Flags: review?(bzbarsky) → review+
Comment on attachment 524896 [details] [diff] [review]
patch 13: fix layout-dependent computed style for pseudo-elements

r=me
Attachment #524896 - Flags: review?(bzbarsky) → review+
Comment on attachment 525038 [details] [diff] [review]
patch 11: implement and test animations of css animations

>+++ b/layout/style/nsAnimationManager.cpp
>+ * Data about one animation (i.e., one of the values of
>+ * 'animation-name') animation running on an element.

s/animation running/running/

>+nsAnimationManager::BuildSegment(nsTArray<AnimationSegment,
>+                                   nsTArrayInfallibleAllocator>& aSegments,

InfallibleTArray, and same in the header.

r=me
Attachment #525038 - Flags: review?(bzbarsky) → review+
(Assignee)

Comment 54

6 years ago
I filed bug 649238 as a followup (to a FIXME in patch 11) on removing from the refresh driver more aggressively.
Comment on attachment 524897 [details] [diff] [review]
patch 14: fire animation events

r=bzbarsky
Attachment #524897 - Flags: review?(bzbarsky) → review+
Comment on attachment 525288 [details] [diff] [review]
patch 15: #ifdef the feature

r=me
Attachment #525288 - Flags: review?(bzbarsky) → review+
(Assignee)

Comment 57

6 years ago
https://hg.mozilla.org/mozilla-central/rev/6bf7649f64a6
https://hg.mozilla.org/mozilla-central/rev/0a0314bdf5c6
https://hg.mozilla.org/mozilla-central/rev/b579b02a57af
https://hg.mozilla.org/mozilla-central/rev/9e703bf91ff5
https://hg.mozilla.org/mozilla-central/rev/2597d6ff2793
https://hg.mozilla.org/mozilla-central/rev/f8dba37f4761
https://hg.mozilla.org/mozilla-central/rev/23d79d8f5eda
https://hg.mozilla.org/mozilla-central/rev/548241dd0c12
https://hg.mozilla.org/mozilla-central/rev/f4d2a9cb8e06
https://hg.mozilla.org/mozilla-central/rev/618c5d784dac
https://hg.mozilla.org/mozilla-central/rev/6ab8e5df08ec
https://hg.mozilla.org/mozilla-central/rev/1c17ed72040c
https://hg.mozilla.org/mozilla-central/rev/3a3c77941d26
https://hg.mozilla.org/mozilla-central/rev/6645b30313c5
https://hg.mozilla.org/mozilla-central/rev/37cc67bd29b0
https://hg.mozilla.org/mozilla-central/rev/5f6f0204b682
Status: ASSIGNED → RESOLVED
Last Resolved: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla2.2
(Assignee)

Comment 58

6 years ago
bustage fix for mac compiler:
http://hg.mozilla.org/mozilla-central/rev/a1ab5a4ed1f3
(Assignee)

Comment 59

6 years ago
(In reply to comment #58)
> bustage fix for mac compiler:
> http://hg.mozilla.org/mozilla-central/rev/a1ab5a4ed1f3

And I double-checked the mochitest log for the 32-bit Mac optimized run of test_value_computation.html (and some of the other related mochitests) to make sure the animation-iteration-count output looked as I expected it to.
(Assignee)

Comment 60

6 years ago
And, for the record, the error that the bustage fix in comment 58 was fixing was:

/var/folders/7I/7I253dv+HLesSBUBGCX08E+++TM/-Tmp-//ccFCi3BG.s:6479:non-relocatable subtraction expression, "LC14" minus "L00000000025$pb"
/var/folders/7I/7I253dv+HLesSBUBGCX08E+++TM/-Tmp-//ccFCi3BG.s:6479:symbol: "L00000000025$pb" can't be undefined in a subtraction expression
/var/folders/7I/7I253dv+HLesSBUBGCX08E+++TM/-Tmp-//ccFCi3BG.s:unknown:Undefined local symbol L00000000025$pb
make[7]: *** [nsComputedDOMStyle.o] Error 1

Updated

6 years ago
Depends on: 650469
Documentation has been written; a review would be appreciated:

https://developer.mozilla.org/en/CSS/CSS_animations

https://developer.mozilla.org/en/DOM/event/AnimationEvent
https://developer.mozilla.org/en/CSS/animation
https://developer.mozilla.org/en/CSS/animation-name
https://developer.mozilla.org/en/CSS/animation-duration
https://developer.mozilla.org/en/CSS/animation-timing-function
https://developer.mozilla.org/en/CSS/animation-iteration-count
https://developer.mozilla.org/en/CSS/animation-direction
https://developer.mozilla.org/en/CSS/animation-play-state
https://developer.mozilla.org/en/CSS/animation-delay
https://developer.mozilla.org/en/CSS/@keyframes

Links have also been added to Firefox 5 for developers and to the main CSS Reference index page.
Keywords: dev-doc-needed → dev-doc-complete

Updated

6 years ago
Depends on: 652976
Depends on: 765218
Blocks: 829369

Updated

3 years ago
See Also: → bug 978712
Depends on: 1332550
You need to log in before you can comment on or make changes to this bug.