summaryrefslogtreecommitdiffstats
path: root/layout/style/LayerAnimationInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'layout/style/LayerAnimationInfo.cpp')
-rw-r--r--layout/style/LayerAnimationInfo.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/layout/style/LayerAnimationInfo.cpp b/layout/style/LayerAnimationInfo.cpp
new file mode 100644
index 000000000..8a119512b
--- /dev/null
+++ b/layout/style/LayerAnimationInfo.cpp
@@ -0,0 +1,53 @@
+/* vim: set shiftwidth=2 tabstop=8 autoindent cindent expandtab: */
+/* 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 "LayerAnimationInfo.h"
+
+#include "nsCSSProps.h" // For nsCSSProps::PropHasFlags
+
+namespace mozilla {
+
+/* static */ const LayerAnimationInfo::Record LayerAnimationInfo::sRecords[] =
+ { { eCSSProperty_transform,
+ nsDisplayItem::TYPE_TRANSFORM,
+ nsChangeHint_UpdateTransformLayer },
+ { eCSSProperty_opacity,
+ nsDisplayItem::TYPE_OPACITY,
+ nsChangeHint_UpdateOpacityLayer } };
+
+#ifdef DEBUG
+/* static */ void
+LayerAnimationInfo::Initialize()
+{
+ for (const Record& record : sRecords) {
+ MOZ_ASSERT(nsCSSProps::PropHasFlags(record.mProperty,
+ CSS_PROPERTY_CAN_ANIMATE_ON_COMPOSITOR),
+ "CSS property with entry in LayerAnimation::sRecords does not "
+ "have the CSS_PROPERTY_CAN_ANIMATE_ON_COMPOSITOR flag");
+ }
+
+ // Check that every property with the flag for animating on the
+ // compositor has an entry in LayerAnimationInfo::sRecords.
+ for (nsCSSPropertyID prop = nsCSSPropertyID(0);
+ prop < eCSSProperty_COUNT;
+ prop = nsCSSPropertyID(prop + 1)) {
+ if (nsCSSProps::PropHasFlags(prop,
+ CSS_PROPERTY_CAN_ANIMATE_ON_COMPOSITOR)) {
+ bool found = false;
+ for (const Record& record : sRecords) {
+ if (record.mProperty == prop) {
+ found = true;
+ break;
+ }
+ }
+ MOZ_ASSERT(found,
+ "CSS property with the CSS_PROPERTY_CAN_ANIMATE_ON_COMPOSITOR "
+ "flag does not have an entry in LayerAnimationInfo::sRecords");
+ }
+ }
+}
+#endif
+
+} // namespace mozilla