Bug 1304805 - Make spacing, iteration composite and effect composite work if the caller is chrome.
MozReview-Commit-ID: 30BOUA8QPh8
--- a/dom/animation/AnimationUtils.cpp
+++ b/dom/animation/AnimationUtils.cpp
@@ -1,16 +1,17 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "AnimationUtils.h"
+#include "nsContentUtils.h" // For nsContentUtils::IsCallerChrome
#include "nsDebug.h"
#include "nsIAtom.h"
#include "nsIContent.h"
#include "nsIDocument.h"
#include "nsGlobalWindow.h"
#include "nsString.h"
#include "xpcpublic.h" // For xpc::NativeGlobal
#include "mozilla/Preferences.h"
@@ -58,23 +59,23 @@ AnimationUtils::IsOffscreenThrottlingEna
Preferences::AddBoolVarCache(&sOffscreenThrottlingEnabled,
"dom.animations.offscreen-throttling");
}
return sOffscreenThrottlingEnabled;
}
/* static */ bool
-AnimationUtils::IsCoreAPIEnabled()
+AnimationUtils::IsCoreAPIEnabledForCaller()
{
static bool sCoreAPIEnabled;
static bool sPrefCached = false;
if (!sPrefCached) {
sPrefCached = true;
Preferences::AddBoolVarCache(&sCoreAPIEnabled,
"dom.animations-api.core.enabled");
}
- return sCoreAPIEnabled;
+ return sCoreAPIEnabled || nsContentUtils::IsCallerChrome();
}
} // namespace mozilla
--- a/dom/animation/AnimationUtils.h
+++ b/dom/animation/AnimationUtils.h
@@ -58,17 +58,17 @@ public:
/**
* Checks if offscreen animation throttling is enabled.
*/
static bool
IsOffscreenThrottlingEnabled();
/**
* Returns true if the preference to enable the core Web Animations API is
- * true.
+ * true or the caller is chrome.
*/
static bool
- IsCoreAPIEnabled();
+ IsCoreAPIEnabledForCaller();
};
} // namespace mozilla
#endif
--- a/dom/animation/KeyframeEffect.cpp
+++ b/dom/animation/KeyframeEffect.cpp
@@ -127,17 +127,17 @@ KeyframeEffect::SetTarget(const Nullable
}
void
KeyframeEffect::SetIterationComposite(
const IterationCompositeOperation& aIterationComposite)
{
// Ignore iterationComposite if the Web Animations API is not enabled,
// then the default value 'Replace' will be used.
- if (!AnimationUtils::IsCoreAPIEnabled()) {
+ if (!AnimationUtils::IsCoreAPIEnabledForCaller()) {
return;
}
if (mEffectOptions.mIterationComposite == aIterationComposite) {
return;
}
if (mAnimation && mAnimation->IsRelevant()) {
--- a/dom/animation/KeyframeEffectParams.cpp
+++ b/dom/animation/KeyframeEffectParams.cpp
@@ -110,17 +110,17 @@ KeyframeEffectParams::ParseSpacing(const
nsCSSPropertyID& aPacedProperty,
nsAString& aInvalidPacedProperty,
ErrorResult& aRv)
{
aInvalidPacedProperty.Truncate();
// Ignore spacing if the core API is not enabled since it is not yet ready to
// ship.
- if (!AnimationUtils::IsCoreAPIEnabled()) {
+ if (!AnimationUtils::IsCoreAPIEnabledForCaller()) {
aSpacingMode = SpacingMode::distribute;
return;
}
// Parse spacing.
// distribute | paced({ident})
// https://w3c.github.io/web-animations/#dom-keyframeeffectreadonly-spacing
// 1. distribute spacing.
--- a/dom/animation/KeyframeEffectReadOnly.cpp
+++ b/dom/animation/KeyframeEffectReadOnly.cpp
@@ -507,17 +507,17 @@ KeyframeEffectParamsFromUnion(const Opti
KeyframeEffectOptionsFromUnion(aOptions);
KeyframeEffectParams::ParseSpacing(options.mSpacing,
result.mSpacingMode,
result.mPacedProperty,
aInvalidPacedProperty,
aRv);
// Ignore iterationComposite if the Web Animations API is not enabled,
// then the default value 'Replace' will be used.
- if (AnimationUtils::IsCoreAPIEnabled()) {
+ if (AnimationUtils::IsCoreAPIEnabledForCaller()) {
result.mIterationComposite = options.mIterationComposite;
}
}
return result;
}
/* static */ Maybe<OwningAnimationTarget>
KeyframeEffectReadOnly::ConvertTarget(