Bug 762303 - Unprefix CSS Transition properties and provide temporary aliases for -moz-transition and exposed subproperties. r=dbaron
authorEmmanuele Bassi <ebassi@mozilla.com>
Sun, 08 Jul 2012 21:25:10 -0400
changeset 98674 137f4655cf25
parent 98673 7f35b944aadd
child 98675 dfca0a052c47
push id23070
push useremorley@mozilla.com
push dateMon, 09 Jul 2012 11:38:56 +0000
treeherdermozilla-central@78e058c75a38 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdbaron
bugs762303
milestone16.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 762303 - Unprefix CSS Transition properties and provide temporary aliases for -moz-transition and exposed subproperties. r=dbaron
browser/base/content/tabbrowser.xml
dom/interfaces/css/nsIDOMCSS2Properties.idl
layout/base/tests/test_bug731777.html
layout/reftests/css-transitions/transitions-inline-already-wrapped-1.html
layout/reftests/css-transitions/transitions-inline-already-wrapped-2.html
layout/reftests/css-transitions/transitions-inline-rewrap-1.html
layout/reftests/css-transitions/transitions-inline-rewrap-2.html
layout/style/crashtests/605689-1.html
layout/style/crashtests/729126-1.html
layout/style/crashtests/729126-2.html
layout/style/nsCSSPropAliasList.h
layout/style/nsCSSPropList.h
layout/style/nsComputedDOMStyle.cpp
layout/style/test/property_database.js
layout/style/test/test_garbage_at_end_of_declarations.html
layout/style/test/test_shorthand_property_getters.html
layout/style/test/test_transitions.html
layout/style/test/test_transitions_and_zoom.html
layout/style/test/test_transitions_bug537151.html
layout/style/test/test_transitions_cancel_near_end.html
layout/style/test/test_transitions_computed_value_combinations.html
layout/style/test/test_transitions_computed_values.html
layout/style/test/test_transitions_dynamic_changes.html
layout/style/test/test_transitions_events.html
layout/style/test/test_transitions_per_property.html
layout/style/test/test_transitions_step_functions.html
layout/style/test/test_unclosed_parentheses.html
layout/style/test/test_units_time.html
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -2996,19 +2996,19 @@
               if (tabWidth > this._tabDefaultMaxWidth)
                 tabWidth = this._tabDefaultMaxWidth;
             }
             tabWidth += "px";
             for (let i = numPinned; i < tabs.length; i++) {
               let tab = tabs[i];
               tab.style.setProperty("max-width", tabWidth, "important");
               if (!isEndTab) { // keep tabs the same width
-                tab.style.MozTransition = "none";
+                tab.style.transition = "none";
                 tab.clientTop; // flush styles to skip animation; see bug 649247
-                tab.style.MozTransition = "";
+                tab.style.transition = "";
               }
             }
             this._hasTabTempMaxWidth = true;
             this.tabbrowser.addEventListener("mousemove", this, false);
             window.addEventListener("mouseout", this, false);
           }
         ]]></body>
       </method>
--- a/dom/interfaces/css/nsIDOMCSS2Properties.idl
+++ b/dom/interfaces/css/nsIDOMCSS2Properties.idl
@@ -9,17 +9,17 @@
  * The nsIDOMCSS2Properties interface is a datatype for additional
  * reflection of data already provided in nsIDOMCSSStyleDeclaration in
  * the Document Object Model.
  *
  * For more information on this interface please see
  * http://www.w3.org/TR/DOM-Level-2-Style
  */
 
-[builtinclass, scriptable, uuid(7775d662-0b71-4c9d-92c3-4d0a88a6729d)]
+[builtinclass, scriptable, uuid(492673d6-039b-4d94-a598-dbf82abc174f)]
 interface nsIDOMCSS2Properties : nsISupports
 {
            attribute DOMString        background;
                                         // raises(DOMException) on setting
 
            attribute DOMString        backgroundAttachment;
                                         // raises(DOMException) on setting
 
@@ -681,16 +681,31 @@ interface nsIDOMCSS2Properties : nsISupp
                                         // raises(DOMException) on setting
 
            attribute DOMString        MozTextDecorationLine;
                                         // raises(DOMException) on setting
 
            attribute DOMString        MozTextDecorationStyle;
                                         // raises(DOMException) on setting
 
+           attribute DOMString        transitionProperty;
+                                        // raises(DOMException) on setting
+
+           attribute DOMString        transitionDuration;
+                                        // raises(DOMException) on setting
+
+           attribute DOMString        transitionDelay;
+                                        // raises(DOMException) on setting
+
+           attribute DOMString        transitionTimingFunction;
+                                        // raises(DOMException) on setting
+
+           attribute DOMString        transition;
+                                        // raises(DOMException) on setting
+
            attribute DOMString        MozTransitionProperty;
                                         // raises(DOMException) on setting
 
            attribute DOMString        MozTransitionDuration;
                                         // raises(DOMException) on setting
 
            attribute DOMString        MozTransitionDelay;
                                         // raises(DOMException) on setting
--- a/layout/base/tests/test_bug731777.html
+++ b/layout/base/tests/test_bug731777.html
@@ -20,17 +20,17 @@
   #inner {
       margin: 0px;
       width: 480px;
       border: 2px solid blue;
       height: 220px;
       background-color: #844BCA;
       
       -moz-transform: rotateY(91deg) translateX(0px) translateZ(0px);
-      -moz-transition: 5s;
+      transition: 5s;
   }
     
   </style>
 </head>
 <body>
 <div id="container">
   <div id="inner"></div>
 </div>
--- a/layout/reftests/css-transitions/transitions-inline-already-wrapped-1.html
+++ b/layout/reftests/css-transitions/transitions-inline-already-wrapped-1.html
@@ -1,12 +1,12 @@
 <html class="reftest-wait">
 <title>Test for CSS transitions and re-wrapping of inlines</title>
 <style type="text/css">
-#test { -moz-transition: 5s color linear 200s; }
+#test { transition: 5s color linear 200s; }
 </style>
 <script type="text/javascript">
 
 window.onload = run;
 
 function run() {
   var test = document.getElementById("test");
   var unused = test.offsetWidth;
--- a/layout/reftests/css-transitions/transitions-inline-already-wrapped-2.html
+++ b/layout/reftests/css-transitions/transitions-inline-already-wrapped-2.html
@@ -1,12 +1,12 @@
 <html class="reftest-wait">
 <title>Test for CSS transitions and re-wrapping of inlines</title>
 <style type="text/css">
-#test { -moz-transition: 20ms color linear 0; }
+#test { transition: 20ms color linear 0; }
 </style>
 <script type="text/javascript">
 
 window.onload = run;
 
 function run() {
   var test = document.getElementById("test");
   var unused = test.offsetWidth;
--- a/layout/reftests/css-transitions/transitions-inline-rewrap-1.html
+++ b/layout/reftests/css-transitions/transitions-inline-rewrap-1.html
@@ -1,12 +1,12 @@
 <html class="reftest-wait">
 <title>Test for CSS transitions and re-wrapping of inlines</title>
 <style type="text/css">
-#test { -moz-transition: 5s color linear 200s; }
+#test { transition: 5s color linear 200s; }
 </style>
 <script type="text/javascript">
 
 window.onload = run;
 
 function run() {
   var test = document.getElementById("test");
   var unused = test.offsetWidth;
--- a/layout/reftests/css-transitions/transitions-inline-rewrap-2.html
+++ b/layout/reftests/css-transitions/transitions-inline-rewrap-2.html
@@ -1,12 +1,12 @@
 <html class="reftest-wait">
 <title>Test for CSS transitions and re-wrapping of inlines</title>
 <style type="text/css">
-#test { -moz-transition: 20ms color linear 0; }
+#test { transition: 20ms color linear 0; }
 </style>
 <script type="text/javascript">
 
 window.onload = run;
 
 function run() {
   var test = document.getElementById("test");
   var unused = test.offsetWidth;
--- a/layout/style/crashtests/605689-1.html
+++ b/layout/style/crashtests/605689-1.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <script>
 
 function boom()
 {
   var r = document.documentElement;
   r.style.display = "table-cell";
-  r.style.MozTransitionProperty = "x";
-  window.getComputedStyle(r).MozTransitionProperty;
+  r.style.transitionProperty = "x";
+  window.getComputedStyle(r).transitionProperty;
 }
 
 </script>
 <body onload="boom();"></body>
--- a/layout/style/crashtests/729126-1.html
+++ b/layout/style/crashtests/729126-1.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html>
 <html>
-<body style="-moz-transition-duration: 1ms"></body>
+<body style="transition-duration: 1ms"></body>
 <script>
 var body = document.body;
 /* flush */ getComputedStyle(body, "").background;
 body.style.background = 'url(none.png), repeat';
 /* flush */ getComputedStyle(body, "").background;
 </script>
 </html>
--- a/layout/style/crashtests/729126-2.html
+++ b/layout/style/crashtests/729126-2.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html>
 <html>
-<body style="background-size: cover; -moz-transition-duration: 1ms"></body>
+<body style="background-size: cover; transition-duration: 1ms"></body>
 <script>
 var body = document.body;
 /* flush */ getComputedStyle(body, "").backgroundSize;
 body.style.backgroundSize = 'contain';
 /* flush */ getComputedStyle(body, "").backgroundSize;
 </script>
 </html>
--- a/layout/style/nsCSSPropAliasList.h
+++ b/layout/style/nsCSSPropAliasList.h
@@ -37,16 +37,21 @@
 
 CSS_PROP_ALIAS(-moz-transform, transform, MozTransform, "")
 CSS_PROP_ALIAS(-moz-transform-origin, transform_origin, MozTransformOrigin, "")
 CSS_PROP_ALIAS(-moz-perspective-origin, perspective_origin, MozPerspectiveOrigin, "")
 CSS_PROP_ALIAS(-moz-perspective, perspective, MozPerspective, "")
 CSS_PROP_ALIAS(-moz-transform-style, transform_style, MozTransformStyle, "")
 CSS_PROP_ALIAS(-moz-backface-visibility, backface_visibility, MozBackfaceVisibility, "")
 CSS_PROP_ALIAS(-moz-border-image, border_image, MozBorderImage, "")
+CSS_PROP_ALIAS(-moz-transition, transition, MozTransition, "")
+CSS_PROP_ALIAS(-moz-transition-delay, transition_delay, MozTransitionDelay, "")
+CSS_PROP_ALIAS(-moz-transition-duration, transition_duration, MozTransitionDuration, "")
+CSS_PROP_ALIAS(-moz-transition-property, transition_property, MozTransitionProperty, "")
+CSS_PROP_ALIAS(-moz-transition-timing-function, transition_timing_function, MozTransitionTimingFunction, "")
 CSS_PROP_ALIAS(-moz-animation, animation, MozAnimation, "")
 CSS_PROP_ALIAS(-moz-animation-delay, animation_delay, MozAnimationDelay, "")
 CSS_PROP_ALIAS(-moz-animation-direction, animation_direction, MozAnimationDirection, "")
 CSS_PROP_ALIAS(-moz-animation-duration, animation_duration, MozAnimationDuration, "")
 CSS_PROP_ALIAS(-moz-animation-fill-mode, animation_fill_mode, MozAnimationFillMode, "")
 CSS_PROP_ALIAS(-moz-animation-iteration-count, animation_iteration_count, MozAnimationIterationCount, "")
 CSS_PROP_ALIAS(-moz-animation-name, animation_name, MozAnimationName, "")
 CSS_PROP_ALIAS(-moz-animation-play-state, animation_play_state, MozAnimationPlayState, "")
--- a/layout/style/nsCSSPropList.h
+++ b/layout/style/nsCSSPropList.h
@@ -2661,58 +2661,58 @@ CSS_PROP_POSITION(
     CSS_PROPERTY_PARSE_VALUE |
         CSS_PROPERTY_STORES_CALC,
     "",
     VARIANT_AHLP | VARIANT_CALC,
     nsnull,
     offsetof(nsStylePosition, mOffset),
     eStyleAnimType_Sides_Top)
 CSS_PROP_SHORTHAND(
-    -moz-transition,
+    transition,
     transition,
-    CSS_PROP_DOMPROP_PREFIXED(Transition),
+    Transition,
     CSS_PROPERTY_PARSE_FUNCTION,
     "")
 CSS_PROP_DISPLAY(
-    -moz-transition-delay,
+    transition-delay,
     transition_delay,
-    CSS_PROP_DOMPROP_PREFIXED(TransitionDelay),
+    TransitionDelay,
     CSS_PROPERTY_PARSE_VALUE_LIST |
         CSS_PROPERTY_VALUE_LIST_USES_COMMAS,
     "",
     VARIANT_TIME, // used by list parsing
     nsnull,
     CSS_PROP_NO_OFFSET,
     eStyleAnimType_None)
 CSS_PROP_DISPLAY(
-    -moz-transition-duration,
+    transition-duration,
     transition_duration,
-    CSS_PROP_DOMPROP_PREFIXED(TransitionDuration),
+    TransitionDuration,
     CSS_PROPERTY_PARSE_VALUE_LIST |
         CSS_PROPERTY_VALUE_LIST_USES_COMMAS,
     "",
     VARIANT_TIME, // used by list parsing
     nsnull,
     CSS_PROP_NO_OFFSET,
     eStyleAnimType_None)
 CSS_PROP_DISPLAY(
-    -moz-transition-property,
+    transition-property,
     transition_property,
-    CSS_PROP_DOMPROP_PREFIXED(TransitionProperty),
+    TransitionProperty,
     CSS_PROPERTY_PARSE_FUNCTION |
         CSS_PROPERTY_VALUE_LIST_USES_COMMAS,
     "",
     VARIANT_IDENTIFIER | VARIANT_NONE | VARIANT_ALL, // used only in shorthand
     nsnull,
     CSS_PROP_NO_OFFSET,
     eStyleAnimType_None)
 CSS_PROP_DISPLAY(
-    -moz-transition-timing-function,
+    transition-timing-function,
     transition_timing_function,
-    CSS_PROP_DOMPROP_PREFIXED(TransitionTimingFunction),
+    TransitionTimingFunction,
     CSS_PROPERTY_PARSE_VALUE_LIST |
         CSS_PROPERTY_VALUE_LIST_USES_COMMAS,
     "",
     VARIANT_KEYWORD | VARIANT_TIMING_FUNCTION, // used by list parsing
     kTransitionTimingFunctionKTable,
     CSS_PROP_NO_OFFSET,
     eStyleAnimType_None)
 CSS_PROP_TEXTRESET(
--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -4744,16 +4744,21 @@ nsComputedDOMStyle::GetQueryableProperty
     COMPUTED_STYLE_MAP_ENTRY_LAYOUT(text_indent,            TextIndent),
     COMPUTED_STYLE_MAP_ENTRY(text_overflow,                 TextOverflow),
     COMPUTED_STYLE_MAP_ENTRY(text_shadow,                   TextShadow),
     COMPUTED_STYLE_MAP_ENTRY(text_transform,                TextTransform),
     COMPUTED_STYLE_MAP_ENTRY_LAYOUT(top,                    Top),
     COMPUTED_STYLE_MAP_ENTRY_LAYOUT(transform,              Transform),
     COMPUTED_STYLE_MAP_ENTRY_LAYOUT(transform_origin,       TransformOrigin),
     COMPUTED_STYLE_MAP_ENTRY(transform_style,               TransformStyle),
+    //// COMPUTED_STYLE_MAP_ENTRY(transition,               Transition),
+    COMPUTED_STYLE_MAP_ENTRY(transition_delay,              TransitionDelay),
+    COMPUTED_STYLE_MAP_ENTRY(transition_duration,           TransitionDuration),
+    COMPUTED_STYLE_MAP_ENTRY(transition_property,           TransitionProperty),
+    COMPUTED_STYLE_MAP_ENTRY(transition_timing_function,    TransitionTimingFunction),
     COMPUTED_STYLE_MAP_ENTRY(unicode_bidi,                  UnicodeBidi),
     COMPUTED_STYLE_MAP_ENTRY_LAYOUT(vertical_align,         VerticalAlign),
     COMPUTED_STYLE_MAP_ENTRY(visibility,                    Visibility),
     COMPUTED_STYLE_MAP_ENTRY(white_space,                   WhiteSpace),
     // COMPUTED_STYLE_MAP_ENTRY(widows,                     Widows),
     COMPUTED_STYLE_MAP_ENTRY_LAYOUT(width,                  Width),
     COMPUTED_STYLE_MAP_ENTRY(word_break,                    WordBreak),
     COMPUTED_STYLE_MAP_ENTRY(word_spacing,                  WordSpacing),
@@ -4813,20 +4818,16 @@ nsComputedDOMStyle::GetQueryableProperty
     COMPUTED_STYLE_MAP_ENTRY(stack_sizing,                  StackSizing),
     COMPUTED_STYLE_MAP_ENTRY(_moz_tab_size,                 TabSize),
     COMPUTED_STYLE_MAP_ENTRY(text_align_last,               TextAlignLast),
     COMPUTED_STYLE_MAP_ENTRY(text_blink,                    MozTextBlink),
     COMPUTED_STYLE_MAP_ENTRY(text_decoration_color,         TextDecorationColor),
     COMPUTED_STYLE_MAP_ENTRY(text_decoration_line,          TextDecorationLine),
     COMPUTED_STYLE_MAP_ENTRY(text_decoration_style,         TextDecorationStyle),
     COMPUTED_STYLE_MAP_ENTRY(text_size_adjust,              TextSizeAdjust),
-    COMPUTED_STYLE_MAP_ENTRY(transition_delay,              TransitionDelay),
-    COMPUTED_STYLE_MAP_ENTRY(transition_duration,           TransitionDuration),
-    COMPUTED_STYLE_MAP_ENTRY(transition_property,           TransitionProperty),
-    COMPUTED_STYLE_MAP_ENTRY(transition_timing_function,    TransitionTimingFunction),
     COMPUTED_STYLE_MAP_ENTRY(user_focus,                    UserFocus),
     COMPUTED_STYLE_MAP_ENTRY(user_input,                    UserInput),
     COMPUTED_STYLE_MAP_ENTRY(user_modify,                   UserModify),
     COMPUTED_STYLE_MAP_ENTRY(user_select,                   UserSelect),
     COMPUTED_STYLE_MAP_ENTRY(_moz_window_shadow,            WindowShadow),
 
     /* ***************************** *\
      * Implementations of SVG styles *
--- a/layout/style/test/property_database.js
+++ b/layout/style/test/property_database.js
@@ -3138,51 +3138,51 @@ var gCSSProperties = {
 			"-moz-calc(-2px)",
 			"-moz-calc(50%)",
 			"-moz-calc(3*25px)",
 			"-moz-calc(25px*3)",
 			"-moz-calc(3*25px + 50%)",
 		],
 		invalid_values: []
 	},
-	"-moz-transition": {
-		domProp: "MozTransition",
+	"transition": {
+		domProp: "transition",
 		inherited: false,
 		type: CSS_TYPE_TRUE_SHORTHAND,
-		subproperties: [ "-moz-transition-property", "-moz-transition-duration", "-moz-transition-timing-function", "-moz-transition-delay" ],
+		subproperties: [ "transition-property", "transition-duration", "transition-timing-function", "transition-delay" ],
 		initial_values: [ "all 0s ease 0s", "all", "0s", "0s 0s", "ease" ],
 		other_values: [ "width 1s linear 2s", "width 1s 2s linear", "width linear 1s 2s", "linear width 1s 2s", "linear 1s width 2s", "linear 1s 2s width", "1s width linear 2s", "1s width 2s linear", "1s 2s width linear", "1s linear width 2s", "1s linear 2s width", "1s 2s linear width", "width linear 1s", "width 1s linear", "linear width 1s", "linear 1s width", "1s width linear", "1s linear width", "1s 2s width", "1s width 2s", "width 1s 2s", "1s 2s linear", "1s linear 2s", "linear 1s 2s", "width 1s", "1s width", "linear 1s", "1s linear", "1s 2s", "2s 1s", "width", "linear", "1s", "height", "2s", "ease-in-out", "2s ease-in", "opacity linear", "ease-out 2s", "2s color, 1s width, 500ms height linear, 1s opacity 4s cubic-bezier(0.0, 0.1, 1.0, 1.0)", "1s \\32width linear 2s", "1s -width linear 2s", "1s -\\32width linear 2s", "1s \\32 0width linear 2s", "1s -\\32 0width linear 2s", "1s \\2width linear 2s", "1s -\\2width linear 2s" ],
 		invalid_values: [ "2s, 1s width", "1s width, 2s", "2s all, 1s width", "1s width, 2s all", "1s width, 2s none", "2s none, 1s width", "2s inherit", "inherit 2s", "2s width, 1s inherit", "2s inherit, 1s width", "2s initial", "2s all, 1s width", "2s width, 1s all" ]
 	},
-	"-moz-transition-delay": {
-		domProp: "MozTransitionDelay",
+	"transition-delay": {
+		domProp: "transitionDelay",
 		inherited: false,
 		type: CSS_TYPE_LONGHAND,
 		initial_values: [ "0s", "0ms" ],
 		other_values: [ "1s", "250ms", "-100ms", "-1s", "1s, 250ms, 2.3s"],
 		invalid_values: [ "0", "0px" ]
 	},
-	"-moz-transition-duration": {
-		domProp: "MozTransitionDuration",
+	"transition-duration": {
+		domProp: "transitionDuration",
 		inherited: false,
 		type: CSS_TYPE_LONGHAND,
 		initial_values: [ "0s", "0ms" ],
 		other_values: [ "1s", "250ms", "-1ms", "-2s", "1s, 250ms, 2.3s"],
 		invalid_values: [ "0", "0px" ]
 	},
-	"-moz-transition-property": {
-		domProp: "MozTransitionProperty",
+	"transition-property": {
+		domProp: "transitionProperty",
 		inherited: false,
 		type: CSS_TYPE_LONGHAND,
 		initial_values: [ "all" ],
 		other_values: [ "none", "left", "top", "color", "width, height, opacity", "foobar", "auto", "\\32width", "-width", "-\\32width", "\\32 0width", "-\\32 0width", "\\2width", "-\\2width" ],
 		invalid_values: [ "none, none", "all, all", "color, none", "none, color", "all, color", "color, all", "inherit, color", "color, inherit", "initial, color", "color, initial", "none, color", "color, none", "all, color", "color, all" ]
 	},
-	"-moz-transition-timing-function": {
-		domProp: "MozTransitionTimingFunction",
+	"transition-timing-function": {
+		domProp: "transitionTimingFunction",
 		inherited: false,
 		type: CSS_TYPE_LONGHAND,
 		initial_values: [ "ease", "cubic-bezier(0.25, 0.1, 0.25, 1.0)" ],
 		other_values: [ "linear", "ease-in", "ease-out", "ease-in-out", "linear, ease-in, cubic-bezier(0.1, 0.2, 0.8, 0.9)", "cubic-bezier(0.5, 0.5, 0.5, 0.5)", "cubic-bezier(0.25, 1.5, 0.75, -0.5)", "step-start", "step-end", "steps(1)", "steps(2, start)", "steps(386)", "steps(3, end)" ],
 		invalid_values: [ "none", "auto", "cubic-bezier(0.25, 0.1, 0.25)", "cubic-bezier(0.25, 0.1, 0.25, 0.25, 1.0)", "cubic-bezier(-0.5, 0.5, 0.5, 0.5)", "cubic-bezier(1.5, 0.5, 0.5, 0.5)", "cubic-bezier(0.5, 0.5, -0.5, 0.5)", "cubic-bezier(0.5, 0.5, 1.5, 0.5)", "steps(2, step-end)", "steps(0)", "steps(-2)", "steps(0, step-end, 1)" ]
 	},
 	"unicode-bidi": {
 		domProp: "unicodeBidi",
--- a/layout/style/test/test_garbage_at_end_of_declarations.html
+++ b/layout/style/test/test_garbage_at_end_of_declarations.html
@@ -50,23 +50,23 @@ var gAllowsExtra = {
   "font": { "caption": true, "icon": true, "menu": true, "message-box": true,
             "small-caption": true, "status-bar": true },
   "voice-family": {},
 };
 
 /* These are the reverse of the above list; they're the unusual values
    that do allow extra keywords afterwards */
 var gAllowsExtraUnusual = {
-  "-moz-transition": { "all": true, "0s": true, "0s 0s": true, "ease": true,
-                       "1s 2s linear": true, "1s linear 2s": true,
-                       "linear 1s 2s": true, "linear 1s": true,
-                       "1s linear": true, "1s 2s": true, "2s 1s": true,
-                       "linear": true, "1s": true, "2s": true,
-                       "ease-in-out": true, "2s ease-in": true,
-                       "ease-out 2s": true },
+  "transition": { "all": true, "0s": true, "0s 0s": true, "ease": true,
+                  "1s 2s linear": true, "1s linear 2s": true,
+                  "linear 1s 2s": true, "linear 1s": true,
+                  "1s linear": true, "1s 2s": true, "2s 1s": true,
+                  "linear": true, "1s": true, "2s": true,
+                  "ease-in-out": true, "2s ease-in": true,
+                  "ease-out 2s": true },
   "animation": { "none": true, "0s": true, "ease": true,
                  "normal": true, "running": true, "1.0": true,
                  "1s 2s linear": true, "1s linear 2s": true,
                  "linear 1s 2s": true, "linear 1s": true,
                  "1s linear": true, "1s 2s": true, "2s 1s": true,
                  "linear": true, "1s": true, "2s": true,
                  "ease-in-out": true, "2s ease-in": true,
                  "ease-out 2s": true, "1s bounce, 2s": true,
--- a/layout/style/test/test_shorthand_property_getters.html
+++ b/layout/style/test/test_shorthand_property_getters.html
@@ -148,28 +148,28 @@ is(e.style.background, "", "should not h
 e.setAttribute("style", "background-clip: border-box, padding-box, border-box; background-origin: border-box, padding-box, padding-box; background-size: auto, auto, auto; background-color: blue; background-image: url(404.png), none, url(404-2.png); background-attachment: fixed, scroll, scroll; background-position: top left, center, 30px 50px, bottom; background-repeat: repeat-x, repeat, no-repeat");
 is(e.style.background, "", "should not have background shorthand (background-position too long)");
 e.setAttribute("style", "background-clip: border-box, padding-box, border-box; background-origin: border-box, padding-box, padding-box; background-size: auto, auto, auto; background-color: blue; background-image: url(404.png), none, url(404-2.png); background-attachment: fixed, scroll, scroll; background-position: top left, center, 30px 50px; background-repeat: repeat-x, repeat");
 is(e.style.background, "", "should not have background shorthand (background-repeat too short)");
 e.setAttribute("style", "background-clip: border-box, padding-box, border-box; background-origin: border-box, padding-box, padding-box; background-size: auto, auto, auto, auto; background-color: blue; background-image: url(404.png), none, url(404-2.png); background-attachment: fixed, scroll, scroll; background-position: top left, center, 30px 50px; background-repeat: repeat-x, repeat, no-repeat");
 is(e.style.background, "", "should not have background shorthand (background-size too long)");
 
 // Check that we only serialize transition when the lists are the same length.
-e.setAttribute("style", "-moz-transition-property: color, width; -moz-transition-duration: 1s, 200ms; -moz-transition-timing-function: ease-in, linear; -moz-transition-delay: 0s, 1s");
-isnot(e.style.MozTransition, "", "should have -moz-transition shorthand (lists same length)");
-e.setAttribute("style", "-moz-transition-property: color, width, left; -moz-transition-duration: 1s, 200ms; -moz-transition-timing-function: ease-in, linear; -moz-transition-delay: 0s, 1s");
-is(e.style.MozTransition, "", "should not have -moz-transition shorthand (lists different lengths)");
-e.setAttribute("style", "-moz-transition-property: all; -moz-transition-duration: 1s, 200ms; -moz-transition-timing-function: ease-in, linear; -moz-transition-delay: 0s, 1s");
-is(e.style.MozTransition, "", "should not have -moz-transition shorthand (lists different lengths)");
-e.setAttribute("style", "-moz-transition-property: color, width; -moz-transition-duration: 1s, 200ms, 300ms; -moz-transition-timing-function: ease-in, linear; -moz-transition-delay: 0s, 1s");
-is(e.style.MozTransition, "", "should not have -moz-transition shorthand (lists different lengths)");
-e.setAttribute("style", "-moz-transition-property: color, width; -moz-transition-duration: 1s, 200ms; -moz-transition-timing-function: ease-in, linear, ease-out; -moz-transition-delay: 0s, 1s");
-is(e.style.MozTransition, "", "should not have -moz-transition shorthand (lists different lengths)");
-e.setAttribute("style", "-moz-transition-property: color, width; -moz-transition-duration: 1s, 200ms; -moz-transition-timing-function: ease-in, linear; -moz-transition-delay: 0s, 1s, 0s");
-is(e.style.MozTransition, "", "should not have -moz-transition shorthand (lists different lengths)");
+e.setAttribute("style", "transition-property: color, width; transition-duration: 1s, 200ms; transition-timing-function: ease-in, linear; transition-delay: 0s, 1s");
+isnot(e.style.transition, "", "should have transition shorthand (lists same length)");
+e.setAttribute("style", "transition-property: color, width, left; transition-duration: 1s, 200ms; transition-timing-function: ease-in, linear; transition-delay: 0s, 1s");
+is(e.style.transition, "", "should not have transition shorthand (lists different lengths)");
+e.setAttribute("style", "transition-property: all; transition-duration: 1s, 200ms; transition-timing-function: ease-in, linear; transition-delay: 0s, 1s");
+is(e.style.transition, "", "should not have transition shorthand (lists different lengths)");
+e.setAttribute("style", "transition-property: color, width; transition-duration: 1s, 200ms, 300ms; transition-timing-function: ease-in, linear; transition-delay: 0s, 1s");
+is(e.style.transition, "", "should not have transition shorthand (lists different lengths)");
+e.setAttribute("style", "transition-property: color, width; transition-duration: 1s, 200ms; transition-timing-function: ease-in, linear, ease-out; transition-delay: 0s, 1s");
+is(e.style.transition, "", "should not have transition shorthand (lists different lengths)");
+e.setAttribute("style", "transition-property: color, width; transition-duration: 1s, 200ms; transition-timing-function: ease-in, linear; transition-delay: 0s, 1s, 0s");
+is(e.style.transition, "", "should not have transition shorthand (lists different lengths)");
 
 // Check that the 'border' shorthand resets 'border-image' and
 // '-moz-border-*-colors', but that other 'border-*' shorthands don't
 // (bug 482692).
 e.setAttribute("style", 'border-image: url("foo.png") 5 5 5 5 / 5 5 5 5 / 5 5 5 5 repeat repeat; border-left: medium solid green');
 is(e.style.cssText,
    'border-image: url("foo.png") 5 5 5 5 / 5 5 5 5 / 5 5 5 5 repeat repeat; border-left: medium solid green;',
    "border-left does NOT reset border-image");
--- a/layout/style/test/test_transitions.html
+++ b/layout/style/test/test_transitions.html
@@ -17,17 +17,17 @@ https://bugzilla.mozilla.org/show_bug.cg
   #display .before::before, #display .after::after {
     display: block;
     width: 0;
     text-indent: 0;
   }
   #display .before.started::before, #display .after.started::after {
     width: 100px;
     text-indent: 100px;
-    -moz-transition: 8s width ease-in-out, 8s text-indent ease-in-out;
+    transition: 8s width ease-in-out, 8s text-indent ease-in-out;
   }
   #display .before::before {
     content: "Before";
   }
   #display .after::after {
     content: "After";
   }
 
@@ -120,33 +120,33 @@ var div = document.getElementById("displ
 // Set up all the elements on which we are going to start transitions.
 
 // We have two reference elements to check the expected timing range.
 // They both have 8s linear transitions from 0 to 1000px.
 function make_reference_p() {
     var p = document.createElement("p");
     p.appendChild(document.createTextNode("reference"));
     p.style.textIndent = "0px";
-    p.style.MozTransition = "8s text-indent linear";
+    p.style.transition = "8s text-indent linear";
     div.appendChild(p);
     return p;
 }
 var earlyref = make_reference_p();
 var earlyrefcs = getComputedStyle(earlyref, "");
 
 // Test all timing functions using a set of 8-second transitions, which
 // we check at times 0, 2s, 4s, 6s, and 8s.
 var tftests = [];
 for (var tf in timingFunctions) {
     var p = document.createElement("p");
     var t = document.createTextNode("transition-timing-function: " + tf);
     p.appendChild(t);
     p.style.textIndent = "0px";
-    p.style.MozTransition = "8s text-indent linear";
-    p.style.MozTransitionTimingFunction = tf;
+    p.style.transition = "8s text-indent linear";
+    p.style.transitionTimingFunction = tf;
     div.appendChild(p);
     is(getComputedStyle(p, "").textIndent, "0px",
        "should be zero before changing value");
     tftests.push([ p, tf ]);
 }
 
 // Check that the timing function continues even when we restyle in the
 // middle.
@@ -154,17 +154,17 @@ var interrupt_tests = [];
 for each (var restyleParent in [true, false]) {
     for (var itime = 2; itime < 8; itime += 2) {
         var p = document.createElement("p");
         var t = document.createTextNode("interrupt on " +
                                         (restyleParent ? "parent" : "node itself") +
                                         " at " + itime + "s");
         p.appendChild(t);
         p.style.textIndent = "0px";
-        p.style.MozTransition = "8s text-indent cubic-bezier(0, 1, 1, 0)";
+        p.style.transition = "8s text-indent cubic-bezier(0, 1, 1, 0)";
         if (restyleParent) {
           var d = document.createElement("div");
           d.appendChild(p);
           div.appendChild(d);
         } else {
           div.appendChild(p);
         }
         is(getComputedStyle(p, "").textIndent, "0px",
@@ -181,48 +181,48 @@ for each (var restyleParent in [true, fa
 // with 'ease-out' timing function.
 var delay_tests = {};
 for (var d = -4; d <= 4; ++d) {
     var p = document.createElement("p");
     var delay = d + "s";
     var t = document.createTextNode("transition-delay: " + delay);
     p.appendChild(t);
     p.style.marginLeft = "0px";
-    p.style.MozTransition = "4s margin-left ease-out " + delay;
+    p.style.transition = "4s margin-left ease-out " + delay;
     div.appendChild(p);
     is(getComputedStyle(p, "").marginLeft, "0px",
        "should be zero before changing value");
     delay_tests[d] = p;
 }
 
 // Test transition-delay values of -4s through 4s on a 4s transition
 // with duration of zero.
 var delay_zero_tests = {};
 for (var d = -4; d <= 4; ++d) {
     var p = document.createElement("p");
     var delay = d + "s";
     var t = document.createTextNode("transition-delay: " + delay);
     p.appendChild(t);
     p.style.marginLeft = "0px";
-    p.style.MozTransition = "0s margin-left linear " + delay;
+    p.style.transition = "0s margin-left linear " + delay;
     div.appendChild(p);
     is(getComputedStyle(p, "").marginLeft, "0px",
        "should be zero before changing value");
     delay_zero_tests[d] = p;
 }
 
 // Test that changing the value on an already-running transition to the
 // value it currently happens to have resets the transition.
 function make_reset_test(transition, description)
 {
     var p = document.createElement("p");
     var t = document.createTextNode(description);
     p.appendChild(t);
     p.style.marginLeft = "0px";
-    p.style.MozTransition = transition;
+    p.style.transition = transition;
     div.appendChild(p);
     is(getComputedStyle(p, "").marginLeft, "0px",
        "should be zero before changing value");
     return p;
 }
 var reset_test = make_reset_test("4s margin-left ease-out 4s", "transition-delay reset to starting point");
 var reset_test_reference = make_reset_test("4s margin-left linear -3s", "reference for previous test (reset test)");
 
@@ -261,18 +261,18 @@ var descendant_tests = [
 for (var i in descendant_tests) {
     var test = descendant_tests[i];
     test.parentNode = document.createElement("div");
     test.childNode = document.createElement("p");
     test.parentNode.appendChild(test.childNode);
     test.childNode.appendChild(document.createTextNode(
         "parent with \"" + test.parent_transition + "\" and " +
         "child with \"" + test.child_transition + "\""));
-    test.parentNode.style.MozTransition = test.parent_transition;
-    test.childNode.style.MozTransition = test.child_transition;
+    test.parentNode.style.transition = test.parent_transition;
+    test.childNode.style.transition = test.child_transition;
     test.parentNode.style.textIndent = "50px"; // transition from 50 to 150
     test.parentNode.style.letterSpacing = "10px"; // transition from 10 to 5
     div.appendChild(test.parentNode);
     var parentCS = getComputedStyle(test.parentNode, "");
     var childCS = getComputedStyle(test.childNode, "");
     is(parentCS.textIndent, "50px",
        "parent text-indent should be 50px before changing");
     is(parentCS.letterSpacing, "10px",
@@ -285,36 +285,36 @@ for (var i in descendant_tests) {
 }
 
 // For all of these transitions, the transition for margin-left should
 // have a duration of 8s, and the default timing function (ease) and
 // delay (0).
 // This is because we're implementing the proposal in
 // http://lists.w3.org/Archives/Public/www-style/2009Aug/0109.html
 var number_tests = [
-  { style: "-moz-transition: 4s margin, 8s margin-left" },
-  { style: "-moz-transition: 4s margin-left, 8s margin" },
-  { style: "-moz-transition-property: margin-left; " +
-             "-moz-transition-duration: 8s, 2s" },
-  { style: "-moz-transition-property: margin-left, margin-left; " + 
-             "-moz-transition-duration: 2s, 8s" },
-  { style: "-moz-transition-property: margin-left, margin-left, margin-left; " +
-             "-moz-transition-duration: 8s, 2s" },
-  { style: "-moz-transition-property: margin-left; " +
-             "-moz-transition-duration: 8s, 16s" },
-  { style: "-moz-transition-property: margin-left, margin-left; " + 
-             "-moz-transition-duration: 16s, 8s" },
-  { style: "-moz-transition-property: margin-left, margin-left, margin-left; " +
-             "-moz-transition-duration: 8s, 16s" },
-  { style: "-moz-transition-property: text-indent,word-spacing,margin-left; " +
-             "-moz-transition-duration: 8s; " +
-             "-moz-transition-delay: 0, 8s" },
-  { style: "-moz-transition-property: text-indent,word-spacing,margin-left; " +
-             "-moz-transition-duration: 8s, 16s; " +
-             "-moz-transition-delay: 8s, 8s, 0, 8s, 8s, 8s" },
+  { style: "transition: 4s margin, 8s margin-left" },
+  { style: "transition: 4s margin-left, 8s margin" },
+  { style: "transition-property: margin-left; " +
+             "transition-duration: 8s, 2s" },
+  { style: "transition-property: margin-left, margin-left; " + 
+             "transition-duration: 2s, 8s" },
+  { style: "transition-property: margin-left, margin-left, margin-left; " +
+             "transition-duration: 8s, 2s" },
+  { style: "transition-property: margin-left; " +
+             "transition-duration: 8s, 16s" },
+  { style: "transition-property: margin-left, margin-left; " + 
+             "transition-duration: 16s, 8s" },
+  { style: "transition-property: margin-left, margin-left, margin-left; " +
+             "transition-duration: 8s, 16s" },
+  { style: "transition-property: text-indent,word-spacing,margin-left; " +
+             "transition-duration: 8s; " +
+             "transition-delay: 0, 8s" },
+  { style: "transition-property: text-indent,word-spacing,margin-left; " +
+             "transition-duration: 8s, 16s; " +
+             "transition-delay: 8s, 8s, 0, 8s, 8s, 8s" },
 ];
 
 for (var i in number_tests) {
     var test = number_tests[i];
     var p = document.createElement("p");
     p.setAttribute("style", test.style);
     var t = document.createTextNode(test.style);
     p.appendChild(t);
@@ -328,17 +328,17 @@ for (var i in number_tests) {
 // Test transitions that are also from-display:none, to-display:none, and
 // display:none throughout.
 var from_none_test, to_none_test, always_none_test;
 function make_display_test(initially_none, text)
 {
     var p = document.createElement("p");
     p.appendChild(document.createTextNode(text));
     p.style.textIndent = "0px";
-    p.style.MozTransition = "8s text-indent ease-in-out";
+    p.style.transition = "8s text-indent ease-in-out";
     if (initially_none)
         p.style.display = "none";
     div.appendChild(p);
     return p;
 }
 from_none_test   = make_display_test(true,  "transition from display:none");
 to_none_test     = make_display_test(false, "transition to display:none");
 always_none_test = make_display_test(true,  "transition always display:none");
--- a/layout/style/test/test_transitions_and_zoom.html
+++ b/layout/style/test/test_transitions_and_zoom.html
@@ -5,17 +5,17 @@ https://bugzilla.mozilla.org/show_bug.cg
 -->
 <head>
   <title>Test for Bug 583219</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <style type="text/css">
 
   #display {
-    -moz-transition: margin-left 1s linear;
+    transition: margin-left 1s linear;
   }
 
   </style>
 </head>
 <body>
 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=583219">Mozilla Bug 583219</a>
 <p id="display"></p>
 <pre id="test">
--- a/layout/style/test/test_transitions_bug537151.html
+++ b/layout/style/test/test_transitions_bug537151.html
@@ -5,17 +5,17 @@ https://bugzilla.mozilla.org/show_bug.cg
 -->
 <head>
   <title>Test for Bug 537151</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <style type="text/css">
 
   #display {
-    -moz-transition: margin-left 200ms;
+    transition: margin-left 200ms;
   }
 
   </style>
 </head>
 <body>
 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=537151">Mozilla Bug 537151</a>
 <p id="display">Paragraph</p>
 <pre id="test">
--- a/layout/style/test/test_transitions_cancel_near_end.html
+++ b/layout/style/test/test_transitions_cancel_near_end.html
@@ -7,17 +7,17 @@ https://bugzilla.mozilla.org/show_bug.cg
   <title>Test for Bug 613888</title>
   <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
   <style type="text/css">
     #animated-elements-container > span {
       color: black;
       background: white;
-      -moz-transition:
+      transition:
         color 10s ease-out,
         background 1s ease-out;
     }
     #animated-elements-container > span.another {
       color: white;
       background: black;
     }
   </style>
--- a/layout/style/test/test_transitions_computed_value_combinations.html
+++ b/layout/style/test/test_transitions_computed_value_combinations.html
@@ -33,44 +33,44 @@ function myrand()
                  Math.ceil(rand_state) == Math.floor(rand_state);
   return rand_state / 0x100000000; // return value in [0,1)
 }
 
 // We want to test a bunch of values for each property.
 // Each of these values will also have a "computed" property filled in
 // below, so that we ensure it always computes to the same value.
 var values = {
-  "-moz-transition-duration":
+  "transition-duration":
     [
       { lone: true,  specified: "-moz-initial" },
       { lone: false, specified: "2s" },
       { lone: false, specified: "0s" },
       { lone: false, specified: "430ms" },
       { lone: false, specified: "-1s" },
     ],
-  "-moz-transition-property":
+  "transition-property":
     [
       { lone: true,  specified: "-moz-initial" },
       { lone: true,  specified: "none" },
       { lone: true,  specified: "all" },
       { lone: false, specified: "color" },
       { lone: false, specified: "border-spacing" },
       // Make sure to test the "unknown property" case.
       { lone: false, specified: "unsupported-property" },
       { lone: false, specified: "-other-unsupported-property" },
     ],
-  "-moz-transition-timing-function":
+  "transition-timing-function":
     [
       { lone: true,  specified: "-moz-initial" },
       { lone: false, specified: "linear" },
       { lone: false, specified: "ease" },
       { lone: false, specified: "ease-in-out" },
       { lone: false, specified: "cubic-bezier(0, 0, 0.63, 1.00)" },
     ],
-  "-moz-transition-delay":
+  "transition-delay":
     [
       { lone: true,  specified: "-moz-initial" },
       { lone: false, specified: "2s" },
       { lone: false, specified: "0s" },
       { lone: false, specified: "430ms" },
       { lone: false, specified: "-1s" },
     ],
 };
--- a/layout/style/test/test_transitions_computed_values.html
+++ b/layout/style/test/test_transitions_computed_values.html
@@ -22,54 +22,54 @@ https://bugzilla.mozilla.org/show_bug.cg
  * computed value stays the same
  */
 
 var p = document.getElementById("content");
 var c = document.createElement("div");
 p.appendChild(c);
 var cs = getComputedStyle(c, "");
 
-p.style.MozTransitionProperty = "margin-left, margin-right";
-c.style.MozTransitionProperty = "inherit";
-is(cs.MozTransitionProperty, "margin-left, margin-right",
+p.style.transitionProperty = "margin-left, margin-right";
+c.style.transitionProperty = "inherit";
+is(cs.transitionProperty, "margin-left, margin-right",
    "computed style match with no other properties");
-c.style.MozTransitionDuration = "5s";
-is(cs.MozTransitionProperty, "margin-left, margin-right",
+c.style.transitionDuration = "5s";
+is(cs.transitionProperty, "margin-left, margin-right",
    "computed style match with shorter property");
-is(cs.MozTransitionDuration, "5s",
+is(cs.transitionDuration, "5s",
    "shorter property not extended");
-c.style.MozTransitionDuration = "5s, 4s, 3s, 2000ms";
-is(cs.MozTransitionProperty, "margin-left, margin-right",
+c.style.transitionDuration = "5s, 4s, 3s, 2000ms";
+is(cs.transitionProperty, "margin-left, margin-right",
    "computed style match with longer property");
-is(cs.MozTransitionDuration, "5s, 4s, 3s, 2s",
+is(cs.transitionDuration, "5s, 4s, 3s, 2s",
    "longer property computed correctly");
-p.style.MozTransitionProperty = "";
-c.style.MozTransitionProperty = "";
-c.style.MozTransitionDuration = "";
+p.style.transitionProperty = "";
+c.style.transitionProperty = "";
+c.style.transitionDuration = "";
 
 // and repeat the above set of tests with property and duration swapped
-p.style.MozTransitionDuration = "5s, 4s";
-c.style.MozTransitionDuration = "inherit";
-is(cs.MozTransitionDuration, "5s, 4s",
+p.style.transitionDuration = "5s, 4s";
+c.style.transitionDuration = "inherit";
+is(cs.transitionDuration, "5s, 4s",
    "computed style match with no other properties");
-c.style.MozTransitionProperty = "margin-left";
-is(cs.MozTransitionDuration, "5s, 4s",
+c.style.transitionProperty = "margin-left";
+is(cs.transitionDuration, "5s, 4s",
    "computed style match with shorter property");
-is(cs.MozTransitionProperty, "margin-left",
+is(cs.transitionProperty, "margin-left",
    "shorter property not extended");
-c.style.MozTransitionProperty =
+c.style.transitionProperty =
   "margin-left, margin-right, margin-top, margin-bottom";
-is(cs.MozTransitionDuration, "5s, 4s",
+is(cs.transitionDuration, "5s, 4s",
    "computed style match with longer property");
-is(cs.MozTransitionProperty,
+is(cs.transitionProperty,
    "margin-left, margin-right, margin-top, margin-bottom",
    "longer property computed correctly");
-p.style.MozTransitionDuration = "";
-c.style.MozTransitionDuration = "";
-c.style.MozTransitionProperty = "";
+p.style.transitionDuration = "";
+c.style.transitionDuration = "";
+c.style.transitionProperty = "";
 
 // And do the same pair of tests for animations:
 
 p.style.animationName = "bounce, roll";
 c.style.animationName = "inherit";
 is(cs.animationName, "bounce, roll",
    "computed style match with no other properties");
 c.style.animationDuration = "5s";
--- a/layout/style/test/test_transitions_dynamic_changes.html
+++ b/layout/style/test/test_transitions_dynamic_changes.html
@@ -14,44 +14,44 @@ https://bugzilla.mozilla.org/show_bug.cg
 <pre id="test">
 <script type="application/javascript">
 
 /** Test for Bug 525530 **/
 
 var p = document.getElementById("display");
 var cs = getComputedStyle(p, "");
 
-p.style.MozTransitionProperty = "all";
-p.style.MozTransitionDuration = "4s";
-p.style.MozTransitionDelay = "-2s";
-p.style.MozTransitionTimingFunction = "linear";
+p.style.transitionProperty = "all";
+p.style.transitionDuration = "4s";
+p.style.transitionDelay = "-2s";
+p.style.transitionTimingFunction = "linear";
 
 is(cs.textIndent, "100px", "initial value");
 
 p.style.textIndent = "0";
 is(cs.textIndent, "50px", "transition is halfway");
-p.style.MozTransitionDuration = "0s";
+p.style.transitionDuration = "0s";
 is(cs.textIndent, "50px", "changing duration doesn't change transitioning");
-p.style.MozTransitionDelay = "0s";
+p.style.transitionDelay = "0s";
 is(cs.textIndent, "50px", "changing delay doesn't change transitioning");
-p.style.MozTransitionProperty = "text-indent";
+p.style.transitionProperty = "text-indent";
 is(cs.textIndent, "50px",
    "irrelevant change to transition property doesn't change transitioning");
-p.style.MozTransitionProperty = "font";
+p.style.transitionProperty = "font";
 is(cs.textIndent, "0px",
    "relevant change to transition property does change transitioning");
 
 /** Test for Bug 522643 */
-p.style.MozTransitionDuration = "4s";
-p.style.MozTransitionDelay = "-2s";
-p.style.MozTransitionProperty = "text-indent";
+p.style.transitionDuration = "4s";
+p.style.transitionDelay = "-2s";
+p.style.transitionProperty = "text-indent";
 p.style.textIndent = "100px";
 is(cs.textIndent, "50px", "transition is halfway");
-p.style.MozTransitionDuration = "0s";
-p.style.MozTransitionDelay = "0s";
+p.style.transitionDuration = "0s";
+p.style.transitionDelay = "0s";
 is(cs.textIndent, "50px",
    "changing duration and delay doesn't change transitioning");
 p.style.textIndent = "0px";
 is(cs.textIndent, "0px",
    "changing property after changing duration and delay stops transition");
 
 </script>
 </pre>
--- a/layout/style/test/test_transitions_events.html
+++ b/layout/style/test/test_transitions_events.html
@@ -7,38 +7,38 @@ https://bugzilla.mozilla.org/show_bug.cg
   <title>Test for Bug 531585 (transitionend event)</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
 <style type="text/css">
 
 .bar { margin: 10px; }
 
-#one { -moz-transition-duration: 500ms; -moz-transition-property: all; }
-#two { -moz-transition: margin-left 1s; }
-#three { -moz-transition: margin 0.5s 0.25s; }
+#one { transition-duration: 500ms; transition-property: all; }
+#two { transition: margin-left 1s; }
+#three { transition: margin 0.5s 0.25s; }
 
 #four, #five, #six, #seven::before, #seven::after {
-  -moz-transition: 500ms color;
+  transition: 500ms color;
   border-color: black; /* don't derive from color */
   -moz-column-rule-color: black; /* don't derive from color */
   -moz-text-decoration-color: black; /* don't derive from color */
 }
 
 #four {
   /* give the reversing transition a long duration; the reversing will
      still be quick */
-  -moz-transition-duration: 30s;
-  -moz-transition-timing-function: cubic-bezier(0, 1, 1, 0);
+  transition-duration: 30s;
+  transition-timing-function: cubic-bezier(0, 1, 1, 0);
 }
 
 /* make sure we don't get events for the pseudo-elements */
 #seven::before, #seven::after {
   content: "x";
-  -moz-transition-duration: 50ms;
+  transition-duration: 50ms;
 }
 #seven[foo]::before, #seven[foo]::after { color: lime; }
 
 </style>
 <body>
 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=531585">Mozilla Bug 531585</a>
 <p id="display">
 
@@ -267,19 +267,19 @@ started_test();
 $("seven").setAttribute("foo", "bar");
 
 setTimeout(function() {
              if (cs("five") != "rgb(0, 255, 0)" &&
                  cs("six") != "rgb(0, 255, 0)") {
                // The transition hasn't finished already.
                did_stops = true;
              }
-             $("five").style.MozTransitionProperty = "margin-left";
-             $("six").style.MozTransitionDuration = "0s";
-             $("six").style.MozTransitionDelay = "0s";
+             $("five").style.transitionProperty = "margin-left";
+             $("six").style.transitionDuration = "0s";
+             $("six").style.transitionDelay = "0s";
              $("six").style.color = "blue";
            }, 100);
 function poll_start_reversal() {
   if (cs("four").color != "rgb(0, 0, 255)") {
     // The forward transition has started.
     $("four").style.color = "blue";
   } else {
     // The forward transition has not started yet.
--- a/layout/style/test/test_transitions_per_property.html
+++ b/layout/style/test/test_transitions_per_property.html
@@ -263,17 +263,17 @@ for (prop in supported_properties) {
 
 // Test that transitions don't do anything (i.e., aren't supported) on
 // the properties not in our test list above (and not transition
 // properties themselves).
 for (prop in gCSSProperties) {
   var info = gCSSProperties[prop];
   if (!(prop in supported_properties) &&
       info.type != CSS_TYPE_TRUE_SHORTHAND &&
-      !prop.match(/^-moz-transition-/) &&
+      !prop.match(/^transition-/) &&
       // FIXME (Bug 119078): THIS SHOULD REALLY NOT BE NEEDED!
       prop != "-moz-binding") {
 
     if ("prerequisites" in info) {
       var prereqs = info.prerequisites;
       for (var prereq in prereqs) {
         div.style.setProperty(prereq, prereqs[prereq], "");
       }
@@ -283,48 +283,48 @@ for (prop in gCSSProperties) {
     var all_computed = [];
     for (var idx in all_values) {
       var val = all_values[idx];
       div.style.setProperty(prop, val, "");
       all_computed.push(cs.getPropertyValue(prop));
     }
     div.style.removeProperty(prop);
 
-    div.style.setProperty("-moz-transition", prop + " 20s linear", "");
+    div.style.setProperty("transition", prop + " 20s linear", "");
     for (var i = 0; i < all_values.length; ++i) {
       for (var j = i + 1; j < all_values.length; ++j) {
         div.style.setProperty(prop, all_values[i], "");
         is(cs.getPropertyValue(prop), all_computed[i],
            "transitions not supported for property " + prop +
            " value " + all_values[i]);
         div.style.setProperty(prop, all_values[j], "");
         is(cs.getPropertyValue(prop), all_computed[j],
            "transitions not supported for property " + prop +
            " value " + all_values[j]);
       }
     }
 
-    div.style.removeProperty("-moz-transition");
+    div.style.removeProperty("transition");
     div.style.removeProperty(prop);
     if ("prerequisites" in info) {
       var prereqs = info.prerequisites;
       for (var prereq in prereqs) {
         div.style.removeProperty(prereq);
       }
     }
   }
 }
 
 // Do 4-second linear transitions with -1 second transition delay and
 // linear timing function so that we can expect the transition to be
 // one quarter of the way through the value space right after changing
 // the property.
-div.style.setProperty("-moz-transition-duration", "4s", "");
-div.style.setProperty("-moz-transition-delay", "-1s", "");
-div.style.setProperty("-moz-transition-timing-function", "linear", "");
+div.style.setProperty("transition-duration", "4s", "");
+div.style.setProperty("transition-delay", "-1s", "");
+div.style.setProperty("transition-timing-function", "linear", "");
 for (prop in supported_properties) {
   var tinfo = supported_properties[prop];
   var info = gCSSProperties[prop];
 
   isnot(info.type, CSS_TYPE_TRUE_SHORTHAND,
         prop + " must not be a shorthand");
   if ("prerequisites" in info) {
     var prereqs = info.prerequisites;
@@ -337,28 +337,28 @@ for (prop in supported_properties) {
     }
   }
 
   for (var idx in tinfo) {
     tinfo[idx](prop);
   }
 
   // Make sure to unset the property and stop transitions on it.
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.removeProperty(prop);
   cs.getPropertyValue(prop);
 
   if ("prerequisites" in info) {
     var prereqs = info.prerequisites;
     for (var prereq in prereqs) {
       div.style.removeProperty(prereq);
     }
   }
 }
-div.style.removeProperty("-moz-transition");
+div.style.removeProperty("transition");
 
 function get_distance(prop, v1, v2)
 {
   return SpecialPowers.DOMWindowUtils
            .computeAnimationDistance(div, prop, v1, v2);
 }
 
 function transform3D_enabled()
@@ -372,118 +372,118 @@ function check_distance(prop, start, qua
   var se = get_distance(prop, start, end);
   var qe = get_distance(prop, quarter, end);
 
   ok(Math.abs((sq * 4 - se) / se) < 0.0001, "property '" + prop + "': distance " + sq + " from start '" + start + "' to quarter '" + quarter + "' should be quarter distance " + se + " from start '" + start + "' to end '" + end + "'");
   ok(Math.abs((qe * 4 - se * 3) / se) < 0.0001, "property '" + prop + "': distance " + qe + " from quarter '" + quarter + "' to end '" + end + "' should be three quarters distance " + se + " from start '" + start + "' to end '" + end + "'");
 }
 
 function test_length_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "4px", "");
   is(cs.getPropertyValue(prop), "4px",
      "length-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "12px", "");
   is(cs.getPropertyValue(prop), "6px",
      "length-valued property " + prop + ": interpolation of lengths");
   check_distance(prop, "4px", "6px", "12px");
 }
 
 function test_length_clamped(prop) {
   test_length_clamped_or_unclamped(prop, true);
 }
 
 function test_length_unclamped(prop) {
   test_length_clamped_or_unclamped(prop, false);
 }
 
 function test_length_clamped_or_unclamped(prop, is_clamped) {
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "0px", "");
   is(cs.getPropertyValue(prop), "0px",
      "length-valued property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "100px", "");
   (is_clamped ? is : isnot)(cs.getPropertyValue(prop), "0px",
      "length-valued property " + prop + ": clamping of negatives");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 // Test using float values in the range [0, 1] (e.g. opacity)
 function test_float_zeroToOne_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "0.3", "");
   is(cs.getPropertyValue(prop), "0.3",
      "float-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "0.8", "");
   is(cs.getPropertyValue(prop), "0.425",
      "float-valued property " + prop + ": interpolation of floats");
   check_distance(prop, "0.3", "0.425", "0.8");
 }
 
 function test_float_zeroToOne_clamped(prop) {
   test_float_zeroToOne_clamped_or_unclamped(prop, true);
 }
 function test_float_zeroToOne_unclamped(prop) {
   test_float_zeroToOne_clamped_or_unclamped(prop, false);
 }
 
 function test_float_zeroToOne_clamped_or_unclamped(prop, is_clamped) {
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "0", "");
   is(cs.getPropertyValue(prop), "0",
      "float-valued property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "1", "");
   (is_clamped ? is : isnot)(cs.getPropertyValue(prop), "0",
      "float-valued property " + prop + ": clamping of negatives");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 // Test using float values in the range [1, infinity) (e.g. stroke-miterlimit)
 function test_float_aboveOne_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "1", "");
   is(cs.getPropertyValue(prop), "1",
      "float-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "2.1", "");
   is(cs.getPropertyValue(prop), "1.275",
      "float-valued property " + prop + ": interpolation of floats");
   check_distance(prop, "1", "1.275", "2.1");
 }
 
 function test_float_aboveOne_clamped(prop) {
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "1", "");
   is(cs.getPropertyValue(prop), "1",
      "float-valued property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "5", "");
   is(cs.getPropertyValue(prop), "1",
      "float-valued property " + prop + ": clamping of negatives");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_percent_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "25%", "");
   var av = cs.getPropertyValue(prop);
   var a = any_unit_to_num(av);
   div.style.setProperty(prop, "75%", "");
   var bv = cs.getPropertyValue(prop);
   var b = any_unit_to_num(bv);
   isnot(b, a, "different percentages (" + av + " and " + bv +
               ") should be different for " + prop);
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "25%", "");
   var res = cs.getPropertyValue(prop);
   is(any_unit_to_num(res) * 4, 3 * b + a,
      "percent-valued property " + prop + ": interpolation of percents: " +
      res + " should be a quarter of the way between " + bv + " and " + av);
   ok(has_num(res),
      "percent-valued property " + prop + ": percent computes to number");
   check_distance(prop, "25%", "37.5%", "75%");
@@ -493,29 +493,29 @@ function test_percent_clamped(prop) {
   test_percent_clamped_or_unclamped(prop, true);
 }
 
 function test_percent_unclamped(prop) {
   test_percent_clamped_or_unclamped(prop, false);
 }
 
 function test_percent_clamped_or_unclamped(prop, is_clamped) {
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "0%", "");
   var zero_val = cs.getPropertyValue(prop); // flushes too
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "150%", "");
   (is_clamped ? is : isnot)(cs.getPropertyValue(prop), zero_val,
      "percent-valued property " + prop + ": clamping of negatives");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_length_percent_calc_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "0%", "");
   var av = cs.getPropertyValue(prop);
   var a = any_unit_to_num(av);
   div.style.setProperty(prop, "100%", "");
   var bv = cs.getPropertyValue(prop);
   var b = any_unit_to_num(bv);
   div.style.setProperty(prop, "100px", "");
   var cv = cs.getPropertyValue(prop);
@@ -524,143 +524,143 @@ function test_length_percent_calc_transi
               ") should be different for " + prop);
 
   div.style.setProperty(prop, "50%", "");
   var v1v = cs.getPropertyValue(prop);
   is(any_unit_to_num(v1v) * 2, a + b,
      "computed value before transition for " + prop + ": '" +
      v1v + "' should be halfway " +
      "between '" + av + "' + and '" + bv + "'.");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "200px", "");
   var v2v = cs.getPropertyValue(prop);
   is(any_unit_to_num(v2v) * 8, 5*a + 3*b + 4*c,
      "interpolation between length and percent for " + prop + ": '"
      + v2v + "'");
 
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "-moz-calc(25% + 100px)", "");
   v1v = cs.getPropertyValue(prop);
   is(any_unit_to_num(v1v) * 4, b + 4*c,
      "computed value before transition for " + prop + ": '" + v1v + "'");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "75%", "");
   v2v = cs.getPropertyValue(prop);
   is(any_unit_to_num(v2v) * 8, 5*a + 3*b + 6*c,
      "interpolation between calc() and percent for " + prop + ": '" +
      v2v + "'");
 
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "150px", "");
   v1v = cs.getPropertyValue(prop);
   is(any_unit_to_num(v1v) * 2, c * 3,
      "computed value before transition for " + prop + ": '" + v1v + "'");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "-moz-calc(50% + 50px)", "");
   v2v = cs.getPropertyValue(prop);
   is(any_unit_to_num(v2v) * 8, 7 * a + b + 10*c,
      "interpolation between length and calc() for " + prop + ": '" +
      v2v + "'");
 
   check_distance(prop, "50%", "-moz-calc(37.5% + 50px)", "200px");
   check_distance(prop, "-moz-calc(25% + 100px)", "-moz-calc(37.5% + 75px)",
                        "75%");
   check_distance(prop, "150px", "-moz-calc(125px + 12.5%)",
                        "-moz-calc(50% + 50px)");
 }
 
 function test_color_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "rgb(255, 28, 0)", "");
   is(cs.getPropertyValue(prop), "rgb(255, 28, 0)",
      "color-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "rgb(75, 84, 128)", "");
   is(cs.getPropertyValue(prop), "rgb(210, 42, 32)",
      "color-valued property " + prop + ": interpolation of colors");
 
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "rgb(128, 64, 0)", "");
   (prop == "color" ? div.parentNode : div).style.
     setProperty("color", "rgb(0, 0, 128)", "");
   is(cs.getPropertyValue(prop), "rgb(128, 64, 0)",
      "color-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "currentColor", "");
   is(cs.getPropertyValue(prop), "rgb(96, 48, 32)",
      "color-valued property " + prop + ": interpolation of currentColor");
 
   check_distance(prop, "rgb(255, 28, 0)", "rgb(210, 42, 32)",
                        "rgb(75, 84, 128)");
   check_distance(prop, "rgb(128, 64, 0)", "rgb(96, 48, 32)", "currentColor");
 
   (prop == "color" ? div.parentNode : div).style.removeProperty("color");
 
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "rgb(0, 255, 0)", "");
   var vals = cs.getPropertyValue(prop).match(/rgb\(([^, ]*), ([^, ]*), ([^, ]*)\)/);
   is(vals.length, 4,
      "color-valued property " + prop + ": flush before clamping test (length)");
   is(vals[1], "0",
      "color-valued property " + prop + ": flush before clamping test (red)");
   is(vals[2], "255",
      "color-valued property " + prop + ": flush before clamping test (green)");
   is(vals[3], "0",
      "color-valued property " + prop + ": flush before clamping test (blue)");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "rgb(255, 0, 128)", "");
   // FIXME: Once we support non-sRGB colors, these tests will need fixing.
   vals = cs.getPropertyValue(prop).match(/rgb\(([^, ]*), ([^, ]*), ([^, ]*)\)/);
   is(vals.length, 4,
      "color-valued property " + prop + ": clamping of negatives (length)");
   is(vals[1], "0",
      "color-valued property " + prop + ": clamping of negatives (red)");
   is(vals[2], "255",
      "color-valued property " + prop + ": clamping of above-range (green)");
   is(vals[3], "0",
      "color-valued property " + prop + ": clamping of negatives (blue)");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_border_color_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "rgb(128, 64, 0)", "");
   div.style.setProperty("color", "rgb(0, 0, 128)", "");
   is(cs.getPropertyValue(prop), "rgb(128, 64, 0)",
      "color-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.removeProperty(prop);
   is(cs.getPropertyValue(prop), "rgb(96, 48, 32)",
      "color-valued property " + prop + ": interpolation of initial value");
 
   check_distance(prop, "rgb(128, 64, 0)", "rgb(96, 48, 32)", "-moz-initial");
 
   div.style.removeProperty("color");
 }
 
 function test_shadow_transition(prop) {
   var spreadStr = (prop == "box-shadow") ? " 0px" : "";
 
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "none", "");
   is(cs.getPropertyValue(prop), "none",
      "shadow-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "4px 8px 3px red", "");
   is(cs.getPropertyValue(prop), "rgba(255, 0, 0, 0.25) 1px 2px 0.75px" + spreadStr,
      "shadow-valued property " + prop + ": interpolation of shadows");
   check_distance(prop, "none", "rgba(255, 0, 0, 0.25) 1px 2px 0.75px",
                        "4px 8px 3px red");
 
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "#038000 4px 4px, 2px 2px blue", "");
   is(cs.getPropertyValue(prop), "rgb(3, 128, 0) 4px 4px 0px" + spreadStr + ", rgb(0, 0, 255) 2px 2px 0px" + spreadStr,
      "shadow-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "8px 8px 8px red", "");
   is(cs.getPropertyValue(prop), "rgb(66, 96, 0) 5px 5px 2px" + spreadStr + ", rgba(0, 0, 255, 0.75) 1.5px 1.5px 0px" + spreadStr,
      "shadow-valued property " + prop + ": interpolation of shadows");
   check_distance(prop, "#038000 4px 4px, 2px 2px blue",
                        "rgb(66, 96, 0) 5px 5px 2px, rgba(0, 0, 255, 0.75) 1.5px 1.5px 0px",
                        "8px 8px 8px red");
 
   if (prop == "box-shadow") {
@@ -683,63 +683,63 @@ function test_shadow_transition(prop) {
   div.style.setProperty(prop, "2px 2px 2px", "");
   is(cs.getPropertyValue(prop), defaultColor + "2px 2px 2px" + spreadStr,
      "shadow-valued property " + prop + ": non-interpolable cases");
   div.style.setProperty(prop, "6px 14px 10px", "");
   is(cs.getPropertyValue(prop), defaultColor + "3px 5px 4px" + spreadStr,
      "shadow-valued property " + prop + ": interpolation without color");
   check_distance(prop, "2px 2px 2px", "3px 5px 4px", "6px 14px 10px");
 
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "0px 0px 0px black", "");
   is(cs.getPropertyValue(prop), "rgb(0, 0, 0) 0px 0px 0px" + spreadStr,
      "shadow-valued property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "10px 10px 10px black", "");
   var vals = cs.getPropertyValue(prop).split(" ");
   is(vals.length, 6 + (prop == "box-shadow"), "unexpected number of values");
   is(vals.slice(0, 3).join(" "), "rgb(0, 0, 0)",
      "shadow-valued property " + prop + " (color): clamping of negatives");
   isnot(vals[3], "0px",
         "shadow-valued property " + prop + " (x): clamping of negatives");
   isnot(vals[4], "0px",
         "shadow-valued property " + prop + " (y): clamping of negatives");
   is(vals[5], "0px",
      "shadow-valued property " + prop + " (radius): clamping of negatives");
   if (prop == "box-shadow") {
-    div.style.setProperty("-moz-transition-property", "none", "");
+    div.style.setProperty("transition-property", "none", "");
     div.style.setProperty(prop, "0px 0px 0px 0px black", "");
     is(cs.getPropertyValue(prop), "rgb(0, 0, 0) 0px 0px 0px 0px",
        "shadow-valued property " + prop + ": flush before clamping test");
-    div.style.setProperty("-moz-transition-property", prop, "");
+    div.style.setProperty("transition-property", prop, "");
     div.style.setProperty(prop, "10px 10px 10px 10px black", "");
     var vals = cs.getPropertyValue(prop).split(" ");
     is(vals.length, 7, "unexpected number of values");
     is(vals.slice(0, 3).join(" "), "rgb(0, 0, 0)",
        "shadow-valued property " + prop + " (color): clamping of negatives");
     isnot(vals[3], "0px",
           "shadow-valued property " + prop + " (x): clamping of negatives");
     isnot(vals[4], "0px",
           "shadow-valued property " + prop + " (y): clamping of negatives");
     is(vals[5], "0px",
        "shadow-valued property " + prop + " (radius): clamping of negatives");
     isnot(vals[6], "0px",
           "shadow-valued property " + prop + " (spread): clamping of negatives");
   }
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_dasharray_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "3", "");
   is(cs.getPropertyValue(prop), "3",
      "dasharray-valued property " + prop +
      ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "15px", "");
   is(cs.getPropertyValue(prop), "6",
      "dasharray-valued property " + prop + ": interpolation of dasharray");
   check_distance(prop, "3", "6", "15px");
   div.style.setProperty(prop, "none", "");
   is(cs.getPropertyValue(prop), "none",
      "dasharray-valued property " + prop + ": non-interpolability of none");
   div.style.setProperty(prop, "6,8px,4,4", "");
@@ -765,231 +765,231 @@ function test_dasharray_transition(prop)
   div.style.setProperty(prop, "2,50%,6,10", "");
   is(cs.getPropertyValue(prop), "2, 50%, 6, 10",
      "dasharray-valued property " + prop + ": non-interpolability of mixed units");
   div.style.setProperty(prop, "6,30%,2,2", "");
   is(cs.getPropertyValue(prop), "3, 45%, 5, 8",
      "dasharray-valued property " + prop + ": interpolation of dasharray");
   check_distance(prop, "2,50%,6,10", "3, 45%, 5, 8", "6,30%,2,2");
 
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "0,0%", "");
   is(cs.getPropertyValue(prop), "0, 0%",
      "dasharray-valued property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "5, 25%", "");
   is(cs.getPropertyValue(prop), "0, 0%",
      "dasharray-valued property " + prop + ": clamping of negatives");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_radius_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
 
   // FIXME: Test a square for now, since we haven't updated to the spec
   // for vertical components being relative to the height.
   // Note: We use powers of two here so the floating-point math comes out
   // nicely.
   div.style.setProperty("width", "256px", "");
   div.style.setProperty("height", "256px", "");
   div.style.setProperty("border", "none", "");
   div.style.setProperty("padding", "0", "");
 
   div.style.setProperty(prop, "3px", "");
   is(cs.getPropertyValue(prop), "3px",
      "radius-valued property " + prop +
      ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "15px", "");
   is(cs.getPropertyValue(prop), "6px",
      "radius-valued property " + prop + ": interpolation of radius");
   check_distance(prop, "3px", "6px", "15px");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "12.5%", "");
   is(cs.getPropertyValue(prop), "32px",
      "radius-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "25%", "");
   is(cs.getPropertyValue(prop), "40px",
      "radius-valued property " + prop + ": interpolation of radius");
   check_distance(prop, "12.5%", "15.625%", "25%");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "3px 8px", "");
   is(cs.getPropertyValue(prop), "3px 8px",
      "radius-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "15px 12px", "");
   is(cs.getPropertyValue(prop), "6px 9px",
      "radius-valued property " + prop + ": interpolation of radius");
   check_distance(prop, "3px 8px", "6px 9px", "15px 12px");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "12.5% 6.25%", "");
   is(cs.getPropertyValue(prop), "32px 16px",
      "radius-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "25%", "");
   is(cs.getPropertyValue(prop), "40px 28px",
      "radius-valued property " + prop + ": interpolation of radius");
   check_distance(prop, "12.5% 6.25%", "15.625% 10.9375%", "25%");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "6.25% 12.5%", "");
   is(cs.getPropertyValue(prop), "16px 32px",
      "radius-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "64px 16px", "");
   is(cs.getPropertyValue(prop), "28px",
      "radius-valued property " + prop + ": interpolation of radius with mixed units");
   check_distance(prop, "6.25% 12.5%",
                  "-moz-calc(4.6875% + 16px) -moz-calc(9.375% + 4px)",
                  "64px 16px");
 
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "0px 0px", "");
   is(cs.getPropertyValue(prop), "0px",
      "radius-valued property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "10px 20px", "");
   is(cs.getPropertyValue(prop), "0px",
      "radius-valued property " + prop + ": clamping of negatives");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 
   test_length_percent_calc_transition(prop);
 
   div.style.removeProperty("width");
   div.style.removeProperty("height");
   div.style.removeProperty("border");
   div.style.removeProperty("padding");
 }
 
 function test_integer_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "4", "");
   is(cs.getPropertyValue(prop), "4",
      "integer-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "-14", "");
   is(cs.getPropertyValue(prop), "-1",
      "integer-valued property " + prop + ": interpolation of integers");
   check_distance(prop, "6", "1", "-14");
 
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "-4", "");
   is(cs.getPropertyValue(prop), "-4",
      "integer-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "8", "");
   is(cs.getPropertyValue(prop), "-1",
      "integer-valued property " + prop + ": interpolation of integers");
   check_distance(prop, "-4", "-1", "8");
 
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "0", "");
   is(cs.getPropertyValue(prop), "0",
      "integer-valued property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "100", "");
   isnot(cs.getPropertyValue(prop), "0",
         "integer-valued property " + prop + ": clamping of negatives");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_font_stretch(prop) {
   is(prop, "font-stretch", "only designed for one property");
 
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "normal", "");
   is(cs.getPropertyValue(prop), "normal",
      "font-stretch property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "ultra-expanded", "");
   is(cs.getPropertyValue(prop), "semi-expanded",
      "font-stretch property " + prop + ": interpolation of font-stretches");
   check_distance(prop, "normal", "semi-expanded", "ultra-expanded");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "expanded", "");
   is(cs.getPropertyValue(prop), "expanded",
      "font-stretch property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "extra-condensed", "");
   is(cs.getPropertyValue(prop), "normal",
      "font-stretch property " + prop + ": interpolation of font-stretches");
   check_distance(prop, "expanded", "semi-expanded", "condensed");
 
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "ultra-condensed", "");
   is(cs.getPropertyValue(prop), "ultra-condensed",
      "font-stretch property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "ultra-expanded", "");
   is(cs.getPropertyValue(prop), "ultra-condensed",
      "font-stretch property " + prop + ": clamping of values");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "ultra-expanded", "");
   is(cs.getPropertyValue(prop), "ultra-expanded",
      "font-stretch property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "ultra-condensed", "");
   is(cs.getPropertyValue(prop), "ultra-expanded",
      "font-stretch property " + prop + ": clamping of values");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_font_weight(prop) {
   is(prop, "font-weight", "only designed for one property");
 
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "normal", "");
   is(cs.getPropertyValue(prop), "400",
      "font-weight property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "900", "");
   is(cs.getPropertyValue(prop), "500",
      "font-weight property " + prop + ": interpolation of font-weights");
   check_distance(prop, "400", "500", "800");
 
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "900", "");
   is(cs.getPropertyValue(prop), "900",
      "font-weight property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "100", "");
   is(cs.getPropertyValue(prop), "700",
      "font-weight property " + prop + ": interpolation of font-weights");
   check_distance(prop, "900", "700", "100");
 
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "100", "");
   is(cs.getPropertyValue(prop), "100",
      "font-weight property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "900", "");
   is(cs.getPropertyValue(prop), "100",
      "font-weight property " + prop + ": clamping of values");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "900", "");
   is(cs.getPropertyValue(prop), "900",
      "font-weight property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "100", "");
   is(cs.getPropertyValue(prop), "900",
      "font-weight property " + prop + ": clamping of values");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_pos_integer_or_auto_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "4", "");
   is(cs.getPropertyValue(prop), "4",
      "integer-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "11", "");
   is(cs.getPropertyValue(prop), "5",
      "integer-valued property " + prop + ": interpolation of integers");
   check_distance(prop, "4", "6", "12");
   div.style.setProperty(prop, "auto", "");
   is(cs.getPropertyValue(prop), "auto",
      "integer-valued property " + prop + ": auto not interpolable");
   div.style.setProperty(prop, "8", "");
@@ -997,229 +997,229 @@ function test_pos_integer_or_auto_transi
      "integer-valued property " + prop + ": computed value before transition");
   div.style.setProperty(prop, "4", "");
   is(cs.getPropertyValue(prop), "7",
      "integer-valued property " + prop + ": interpolation of integers");
   check_distance(prop, "8", "7", "4");
 }
 
 function test_integer_at_least_one_clamping(prop) {
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "1", "");
   is(cs.getPropertyValue(prop), "1",
      "integer-valued property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "5", "");
   is(cs.getPropertyValue(prop), "1",
      "integer-valued property " + prop + ": clamping of negatives");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_length_pair_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "4px 6px", "");
   is(cs.getPropertyValue(prop), "4px 6px",
      "length-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "12px 10px", "");
   is(cs.getPropertyValue(prop), "6px 7px",
      "length-valued property " + prop + ": interpolation of lengths");
   check_distance(prop, "4px 6px", "6px 7px", "12px 10px");
 }
 
 function test_length_pair_transition_clamped(prop) {
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "0px 0px", "");
   is(cs.getPropertyValue(prop), "0px 0px",
      "length-valued property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "30px 50px", "");
   is(cs.getPropertyValue(prop), "0px 0px",
      "length-valued property " + prop + ": clamping of negatives");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_length_percent_pair_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "4px 50%", "");
   is(cs.getPropertyValue(prop), "4px 5px",
      "length-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "12px 70%", "");
   is(cs.getPropertyValue(prop), "6px 5.5px",
      "length-valued property " + prop + ": interpolation of lengths");
   check_distance(prop, "4px 50%", "6px 55%", "12px 70%");
 }
 
 function test_length_percent_pair_clamped(prop) {
   test_length_percent_pair_clamped_or_unclamped(prop, true);
 }
 
 function test_length_percent_pair_unclamped(prop) {
   test_length_percent_pair_clamped_or_unclamped(prop, false);
 }
 
 function test_length_percent_pair_clamped_or_unclamped(prop, is_clamped) {
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "0px 0%", "");
   is(cs.getPropertyValue(prop), "0px 0px",
      "length+percent-valued property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "30px 25%", "");
   (is_clamped ? is : isnot)(cs.getPropertyValue(prop), "0px 0px",
      "length+percent-valued property " + prop + ": clamping of negatives");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_rect_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "rect(4px, 16px, 12px, 6px)", "");
   is(cs.getPropertyValue(prop), "rect(4px, 16px, 12px, 6px)",
      "rect-valued property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "rect(0px, 4px, 4px, 2px)", "");
   is(cs.getPropertyValue(prop), "rect(3px, 13px, 10px, 5px)",
      "rect-valued property " + prop + ": interpolation of rects");
   check_distance(prop, "rect(4px, 16px, 12px, 6px)",
                        "rect(3px, 13px, 10px, 5px)",
                        "rect(0px, 4px, 4px, 2px)");
   if (prop == "clip") {
     div.style.setProperty(prop, "rect(0px, 6px, 4px, auto)", "");
     is(cs.getPropertyValue(prop), "rect(0px, 6px, 4px, auto)",
        "rect-valued property " + prop + ": can't interpolate auto components");
     div.style.setProperty(prop, "rect(0px, 6px, 4px, 2px)", "");
   }
   div.style.setProperty(prop, "auto", "");
   is(cs.getPropertyValue(prop), "auto",
      "rect-valued property " + prop + ": can't interpolate auto components");
 
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "rect(-10px, 30px, 0px, 0px)", "");
   var vals = cs.getPropertyValue(prop).match(/rect\(([^, ]*), ([^, ]*), ([^, ]*), ([^, ]*)\)/);
   is(vals.length, 5,
      "rect-valued property " + prop + ": flush before clamping test (length)");
   is(vals[1], "-10px",
      "rect-valued property " + prop + ": flush before clamping test (top)");
   is(vals[2], "30px",
      "rect-valued property " + prop + ": flush before clamping test (right)");
   is(vals[3], "0px",
      "rect-valued property " + prop + ": flush before clamping test (bottom)");
   is(vals[4], "0px",
      "rect-valued property " + prop + ": flush before clamping test (left)");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "rect(0px, 40px, 10px, 10px)", "");
   vals = cs.getPropertyValue(prop).match(/rect\(([^, ]*), ([^, ]*), ([^, ]*), ([^, ]*)\)/);
   is(vals.length, 5,
      "rect-valued property " + prop + ": clamping of negatives (length)");
   isnot(vals[1], "-10px",
      "rect-valued property " + prop + ": clamping of negatives (top)");
   isnot(vals[2], "30px",
      "rect-valued property " + prop + ": clamping of negatives (right)");
   isnot(vals[3], "0px",
      "rect-valued property " + prop + ": clamping of negatives (bottom)");
   isnot(vals[4], "0px",
      "rect-valued property " + prop + ": clamping of negatives (left)");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_visibility_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "visible", "");
   is(cs.getPropertyValue(prop), "visible",
      "visibility property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "hidden", "");
   is(cs.getPropertyValue(prop), "visible",
      "visibility property " + prop + ": interpolation of visibility");
   isnot(get_distance(prop, "visible", "hidden"), 0,
         "distance between visible and hidden should not be zero");
   is(get_distance(prop, "visible", "visible"), 0,
      "distance between visible and visible should not be zero");
   is(get_distance(prop, "hidden", "hidden"), 0,
      "distance between hidden and hidden should not be zero");
 
-  div.style.setProperty("-moz-transition-timing-function", FUNC_NEGATIVE, "");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-timing-function", FUNC_NEGATIVE, "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "visible", "");
   is(cs.getPropertyValue(prop), "visible",
      "visibility property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "hidden", "");
   is(cs.getPropertyValue(prop), "visible",
      "visibility property " + prop + ": clamping of negatives");
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "hidden", "");
   is(cs.getPropertyValue(prop), "hidden",
      "visibility property " + prop + ": flush before clamping test");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "visible", "");
   is(cs.getPropertyValue(prop), "hidden",
      "visibility property " + prop + ": clamping of negatives");
-  div.style.setProperty("-moz-transition-timing-function", "linear", "");
+  div.style.setProperty("transition-timing-function", "linear", "");
 }
 
 function test_background_size_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "50% 80%", "");
   is(cs.getPropertyValue(prop), "50% 80%",
      "property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "100% 100%", "");
   is(cs.getPropertyValue(prop), "62.5% 85%",
      "property " + prop + ": interpolation of percents");
   check_distance(prop, "50% 80%", "62.5% 85%", "100% 100%");
   div.style.setProperty(prop, "contain", "");
   is(cs.getPropertyValue(prop), "contain",
      "property " + prop + ": can't interpolate 'contain'");
   test_background_position_size_common(prop);
 }
 
 function test_background_position_transition(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "center 80%", "");
   is(cs.getPropertyValue(prop), "50% 80%",
      "property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "bottom right", "");
   is(cs.getPropertyValue(prop), "62.5% 85%",
      "property " + prop + ": interpolation of percents");
   check_distance(prop, "center 80%", "62.5% 85%", "bottom right");
   test_background_position_size_common(prop);
 }
 
 function test_background_position_size_common(prop) {
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "40% 0%", "");
   is(cs.getPropertyValue(prop), "40% 0%",
      "property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "0% 0%", "");
   is(cs.getPropertyValue(prop), "30% 0%",
      "property " + prop + ": interpolation of percentages");
   check_distance(prop, "40% 0%", "30% 0%", "0% 0%");
 
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "0% 40%", "");
   is(cs.getPropertyValue(prop), "0% 40%",
      "property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "0% 0%", "");
   is(cs.getPropertyValue(prop), "0% 30%",
      "property " + prop + ": interpolation of percentages");
   check_distance(prop, "0% 40%", "0% 30%", "0% 0%");
 
-  div.style.setProperty("-moz-transition-property", "none", "");
+  div.style.setProperty("transition-property", "none", "");
   div.style.setProperty(prop, "10px 40px", "");
   is(cs.getPropertyValue(prop), "10px 40px",
      "property " + prop + ": computed value before transition");
-  div.style.setProperty("-moz-transition-property", prop, "");
+  div.style.setProperty("transition-property", prop, "");
   div.style.setProperty(prop, "50px 0", "");
   is(cs.getPropertyValue(prop), "20px 30px",
      "property " + prop + ": interpolation of lengths");
   check_distance(prop, "10px 40px", "20px 30px", "50px 0");
   div.style.setProperty(prop, "10px 40px, 50px 50px, 30px 20px", "");
   is(cs.getPropertyValue(prop), "10px 40px, 50px 50px, 30px 20px",
      "property " + prop + ": computed value before transition");
   div.style.setProperty(prop, "50px 20px, 70px 50px, 30px 40px", "");
@@ -1584,20 +1584,20 @@ function test_transform_transition(prop)
     }
   }
 
   for (var i in tests) {
     var test = tests[i];
     if (test.requires_3d && !transform3D_enabled()) {
       continue;
     }
-    div.style.setProperty("-moz-transition-property", "none", "");
+    div.style.setProperty("transition-property", "none", "");
     div.style.setProperty(prop, test.start, "");
     cs.getPropertyValue(prop);
-    div.style.setProperty("-moz-transition-property", prop, "");
+    div.style.setProperty("transition-property", prop, "");
     div.style.setProperty(prop, test.end, "");
     var actual = cs.getPropertyValue(prop);
     if (!test.round_error_ok || actual == test.expected) {
       // In most cases, we'll get an exact match, but in some cases
       // there can be a small amount of rounding error.
       is(actual, test.expected,
          "interpolation of transitions: " + test.start + " to " + test.end);
     } else {
--- a/layout/style/test/test_transitions_step_functions.html
+++ b/layout/style/test/test_transitions_step_functions.html
@@ -6,17 +6,17 @@ https://bugzilla.mozilla.org/show_bug.cg
 <head>
   <title>Test for Bug 435441</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="animation_utils.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <style type="text/css">
 
   p.transition {
-    -moz-transition: margin-top 100s linear;
+    transition: margin-top 100s linear;
   }
 
   </style>
 </head>
 <body>
 <div id="display">
 
 </div>
@@ -28,18 +28,18 @@ https://bugzilla.mozilla.org/show_bug.cg
 var display = document.getElementById("display");
 
 function run_test(tf, percent, value)
 {
   var p = document.createElement("p");
   p.className = "transition";
   p.style.marginTop = "0px";
   // be this percent of the way through a 100s transition
-  p.style.MozTransitionDelay = (percent * -100) + "s";
-  p.style.MozTransitionTimingFunction = tf;
+  p.style.transitionDelay = (percent * -100) + "s";
+  p.style.transitionTimingFunction = tf;
   display.appendChild(p);
   var cs = getComputedStyle(p, "");
   var flush1 = cs.marginTop;
 
   p.style.marginTop = "1000px";
   var result = px_to_num(cs.marginTop) / 1000
 
   is(result, value, 100 * percent + "% of the way through " + tf);
--- a/layout/style/test/test_unclosed_parentheses.html
+++ b/layout/style/test/test_unclosed_parentheses.html
@@ -206,26 +206,26 @@ var declarations = [
   "content: attr(html|",
   "content: attr(html| ",
   "content: attr(html|href",
   "content: attr(html|href ",
   "content: attr(|",
   "content: attr(| ",
   "content: attr(|href",
   "content: attr(|href ",
-  "-moz-transition-timing-function: cubic-bezier(",
-  "-moz-transition-timing-function: cubic-bezier( ",
-  "-moz-transition-timing-function: cubic-bezier(0, 0, 1",
-  "-moz-transition-timing-function: cubic-bezier(0, 0, 1 ",
-  "-moz-transition-timing-function: cubic-bezier(0, 0, 1,",
-  "-moz-transition-timing-function: cubic-bezier(0, 0, 1, ",
-  "-moz-transition-timing-function: cubic-bezier(0, 0, 1, 1",
-  "-moz-transition-timing-function: cubic-bezier(0, 0, 1, 1 ",
-  "-moz-transition-timing-function: cubic-bezier(0, 0, 1, 1,",
-  "-moz-transition-timing-function: cubic-bezier(0, 0, 1, 1, ",
+  "transition-timing-function: cubic-bezier(",
+  "transition-timing-function: cubic-bezier( ",
+  "transition-timing-function: cubic-bezier(0, 0, 1",
+  "transition-timing-function: cubic-bezier(0, 0, 1 ",
+  "transition-timing-function: cubic-bezier(0, 0, 1,",
+  "transition-timing-function: cubic-bezier(0, 0, 1, ",
+  "transition-timing-function: cubic-bezier(0, 0, 1, 1",
+  "transition-timing-function: cubic-bezier(0, 0, 1, 1 ",
+  "transition-timing-function: cubic-bezier(0, 0, 1, 1,",
+  "transition-timing-function: cubic-bezier(0, 0, 1, 1, ",
   "border-top-width: -moz-calc(",
   "border-top-width: -moz-calc( ",
   "border-top-width: -moz-calc(2em",
   "border-top-width: -moz-calc(2em ",
   "border-top-width: -moz-calc(2em +",
   "border-top-width: -moz-calc(2em + ",
   "border-top-width: -moz-calc(2em *",
   "border-top-width: -moz-calc(2em * ",
--- a/layout/style/test/test_units_time.html
+++ b/layout/style/test/test_units_time.html
@@ -24,24 +24,24 @@
 var tests = {
   "3s": "3000ms",
   "500ms": "0.5s"
 };
 
 var p = document.getElementById("display");
 
 for (var test in tests) {
-  p.setAttribute("style", "-moz-transition-duration: " + test);
-  is(p.style.getPropertyValue("-moz-transition-duration"), test,
+  p.setAttribute("style", "transition-duration: " + test);
+  is(p.style.getPropertyValue("transition-duration"), test,
      test + " serializes to exactly itself");
   var equiv = tests[test];
   if (equiv) {
-    var cm1 = getComputedStyle(p, "").MozTransitionDuration;
-    p.style.MozTransitionDuration = equiv;
-    var cm2 = getComputedStyle(p, "").MozTransitionDuration;
+    var cm1 = getComputedStyle(p, "").transitionDuration;
+    p.style.transitionDuration = equiv;
+    var cm2 = getComputedStyle(p, "").transitionDuration;
     is(cm1, cm2, test + " should compute to the same as " + equiv);
   }
 }
 
 </script>
 </pre>
 </body>
 </html>