diff --git a/dom/animation/test/mochitest.ini b/dom/animation/test/mochitest.ini index fff62ac7c9..ecdb674fe1 100644 --- a/dom/animation/test/mochitest.ini +++ b/dom/animation/test/mochitest.ini @@ -2,6 +2,7 @@ prefs = dom.animations-api.compositing.enabled=true dom.animations-api.core.enabled=true + dom.animations-api.getAnimations.enabled=true dom.animations-api.implicit-keyframes.enabled=true dom.animations-api.timelines.enabled=true # Support files for chrome tests that we want to load over HTTP need diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp index 43f11c0313..1c3e7a421f 100644 --- a/dom/base/nsDocument.cpp +++ b/dom/base/nsDocument.cpp @@ -2941,6 +2941,15 @@ nsDocument::AreWebAnimationsImplicitKeyframesEnabled(JSContext* /*unused*/, JSOb Preferences::GetBool("dom.animations-api.implicit-keyframes.enabled"); } +bool +nsDocument::IsWebAnimationsGetAnimationsEnabled(JSContext* /*unused*/, JSObject* /*unused*/) +{ + MOZ_ASSERT(NS_IsMainThread()); + + return nsContentUtils::IsCallerChrome() || + Preferences::GetBool("dom.animations-api.getAnimations.enabled"); +} + DocumentTimeline* nsDocument::Timeline() { diff --git a/dom/base/nsDocument.h b/dom/base/nsDocument.h index f544166c20..010f95ae25 100644 --- a/dom/base/nsDocument.h +++ b/dom/base/nsDocument.h @@ -435,6 +435,7 @@ public: static bool IsWebAnimationsEnabled(JSContext* aCx, JSObject* aObject); static bool AreWebAnimationsImplicitKeyframesEnabled(JSContext* aCx, JSObject* aObject); static bool AreWebAnimationsTimelinesEnabled(JSContext* aCx, JSObject* aObject); + static bool IsWebAnimationsGetAnimationsEnabled(JSContext* aCx, JSObject* aObject); virtual mozilla::dom::DocumentTimeline* Timeline() override; virtual void GetAnimations( diff --git a/dom/webidl/Animatable.webidl b/dom/webidl/Animatable.webidl index 4c1396c995..decc139602 100644 --- a/dom/webidl/Animatable.webidl +++ b/dom/webidl/Animatable.webidl @@ -23,6 +23,6 @@ interface Animatable { [Func="nsDocument::IsElementAnimateEnabled", Throws] Animation animate(object? keyframes, optional UnrestrictedDoubleOrKeyframeAnimationOptions options); - [Func="nsDocument::IsWebAnimationsEnabled"] + [Func="nsDocument::IsWebAnimationsGetAnimationsEnabled"] sequence getAnimations(optional AnimationFilter filter); }; diff --git a/dom/webidl/CSSPseudoElement.webidl b/dom/webidl/CSSPseudoElement.webidl index 96d191e3af..250bef03c5 100644 --- a/dom/webidl/CSSPseudoElement.webidl +++ b/dom/webidl/CSSPseudoElement.webidl @@ -15,7 +15,7 @@ // this interface. // What we implement here is a minimal subset of the two definitions which we // ship behind a pref until the specification issues have been resolved. -[Func="nsDocument::IsWebAnimationsEnabled"] +[Func="nsDocument::IsWebAnimationsGetAnimationsEnabled"] interface CSSPseudoElement { readonly attribute DOMString type; readonly attribute Element parentElement; diff --git a/dom/webidl/Document.webidl b/dom/webidl/Document.webidl index 46db008763..2ade9a2c9b 100644 --- a/dom/webidl/Document.webidl +++ b/dom/webidl/Document.webidl @@ -314,7 +314,7 @@ partial interface Document { partial interface Document { [Func="nsDocument::AreWebAnimationsTimelinesEnabled"] readonly attribute DocumentTimeline timeline; - [Func="nsDocument::IsWebAnimationsEnabled"] + [Func="nsDocument::IsWebAnimationsGetAnimationsEnabled"] sequence getAnimations(); }; diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index b8cb114580..ae7f156775 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -2710,17 +2710,16 @@ pref("layout.idle_period.required_quiescent_frames", 2); pref("layout.idle_period.time_limit", 1); // Is support for the Web Animations API enabled? -// Before enabling this by default, make sure also CSSPseudoElement interface -// has been spec'ed properly, or we should add a separate pref for -// CSSPseudoElement interface. See Bug 1174575 for further details. #ifdef RELEASE_OR_BETA pref("dom.animations-api.core.enabled", false); #else pref("dom.animations-api.core.enabled", true); #endif + pref("dom.animations-api.timelines.enabled", false); pref("dom.animations-api.implicit-keyframes.enabled", false); pref("dom.animations-api.compositing.enabled", false); +pref("dom.animations-api.getAnimations.enabled", false); // Is support for the Element.animate() function (a subset of the Web Animations // API) enabled?