diff --git a/dom/animation/AnimValuesStyleRule.cpp b/dom/animation/AnimValuesStyleRule.cpp
index ead9a25301b3..e3af401183b9 100644
--- a/dom/animation/AnimValuesStyleRule.cpp
+++ b/dom/animation/AnimValuesStyleRule.cpp
@@ -67,7 +67,7 @@ AnimValuesStyleRule::AddValue(nsCSSPropertyID aProperty,
{
MOZ_ASSERT(aProperty != eCSSProperty_UNKNOWN,
"Unexpected css property");
- mAnimationValues.Put(aProperty, Move(aValue));
+ mAnimationValues.Put(aProperty, aValue);
mStyleBits |=
nsCachedStyleData::GetBitForSID(nsCSSProps::kSIDTable[aProperty]);
}
diff --git a/dom/events/EventListenerManager.cpp b/dom/events/EventListenerManager.cpp
index c52ab7a52625..29c875660618 100644
--- a/dom/events/EventListenerManager.cpp
+++ b/dom/events/EventListenerManager.cpp
@@ -1314,9 +1314,10 @@ EventListenerManager::HandleEventInternal(nsPresContext* aPresContext,
// If we didn't find any matching listeners, and our event has a legacy
// version, we'll now switch to looking for that legacy version and we'll
// recheck our listeners.
- if (hasListenerForCurrentGroup || usingLegacyMessage) {
- // (No need to recheck listeners, because we already found a match, or we
- // already rechecked them.)
+ if (hasListenerForCurrentGroup ||
+ usingLegacyMessage || !aEvent->IsTrusted()) {
+ // No need to recheck listeners, because we already found a match, we
+ // already rechecked them, or it is not a trusted event.
break;
}
EventMessage legacyEventMessage = GetLegacyEventMessage(eventMessage);
diff --git a/dom/events/test/mochitest.ini b/dom/events/test/mochitest.ini
index ac1b36a14d80..797568b11411 100644
--- a/dom/events/test/mochitest.ini
+++ b/dom/events/test/mochitest.ini
@@ -173,3 +173,4 @@ skip-if = toolkit == 'android' #CRASH_DUMP, RANDOM
[test_bug1305458.html]
[test_bug1298970.html]
[test_bug1304044.html]
+[test_bug1332699.html]
diff --git a/dom/events/test/test_bug1332699.html b/dom/events/test/test_bug1332699.html
new file mode 100644
index 000000000000..82bf5dff2bed
--- /dev/null
+++ b/dom/events/test/test_bug1332699.html
@@ -0,0 +1,37 @@
+
+
+
Test for bug 1332699
+
+
+
+
+
+
diff --git a/gfx/tests/crashtests/crashtests.list b/gfx/tests/crashtests/crashtests.list
index 26c7d127b567..7e9a3a2fa94d 100644
--- a/gfx/tests/crashtests/crashtests.list
+++ b/gfx/tests/crashtests/crashtests.list
@@ -107,7 +107,7 @@ asserts-if(stylo,1) load 766452-1.html # bug 1324700
load 766452-2.html
load 768079-1.html
asserts-if(stylo,2) load 783041-1.html # bug 1324661
-asserts-if(stylo,2) load 783041-2.html # bug 1324661
+asserts-if(stylo,2-4) load 783041-2.html # bug 1324661
asserts-if(stylo,3) load 783041-3.html # bug 1324671
asserts-if(stylo,2) load 783041-4.html # bug 1324661
load 798853.html # bug 868792
diff --git a/image/test/reftest/gif/reftest-stylo.list b/image/test/reftest/gif/reftest-stylo.list
index 2d1e48e3b5f7..477fe9b8a30f 100644
--- a/image/test/reftest/gif/reftest-stylo.list
+++ b/image/test/reftest/gif/reftest-stylo.list
@@ -18,7 +18,7 @@ fails == small-background-size-2.gif small-background-size-2.gif
random == delaytest.html?transparent-animation.gif delaytest.html?transparent-animation.gif
# test for bug 641198
-fails == test_bug641198.html test_bug641198.html
+== test_bug641198.html test_bug641198.html
# Bug 1062886: a gif with a single color and an offset
fails == one-color-offset.gif one-color-offset.gif
diff --git a/layout/reftests/bidi/reftest-stylo.list b/layout/reftests/bidi/reftest-stylo.list
index 6c13953ebb54..b0423a108bf6 100644
--- a/layout/reftests/bidi/reftest-stylo.list
+++ b/layout/reftests/bidi/reftest-stylo.list
@@ -79,7 +79,7 @@ fails == 263359-4.html 263359-4.html
fails == 267459-1.html 267459-1.html
fails == 267459-2.html 267459-2.html
== 299065-1.html 299065-1.html
-== 305643-1.html 305643-1.html
+# == 305643-1.html 305643-1.html
fails asserts-if(stylo,7) == 332655-1.html 332655-1.html # bug 1335314
fails asserts-if(stylo,7) == 332655-2.html 332655-2.html # bug 1335314
fails == 381279-1.html 381279-1.html
diff --git a/layout/reftests/bugs/reftest-stylo.list b/layout/reftests/bugs/reftest-stylo.list
index 31c4778a1b06..4a77fc8bfa9d 100644
--- a/layout/reftests/bugs/reftest-stylo.list
+++ b/layout/reftests/bugs/reftest-stylo.list
@@ -99,7 +99,7 @@ fails == 97777-2.html 97777-2.html
# == 99850-1b.html 99850-1b.html # bug 1337695
fails == 99850-1c.html 99850-1c.html
# == 99850-1d.html 99850-1d.html # bug 1337695
-asserts-if(stylo,8) == 105030-1.html 105030-1.html # bug 1324661
+asserts-if(stylo,6-8) == 105030-1.html 105030-1.html # bug 1324661
== 109735-1.html 109735-1.html
== 116882-1.html 116882-1.html
== 120834-1a.html 120834-1a.html
@@ -659,9 +659,9 @@ fails == 372768-1.html 372768-1.html
fails == 373295-1.html 373295-1.html
fails == 373298-1.html 373298-1.html
== 373381-1.html 373381-1.html
-fails == 373381-2.html 373381-2.html
+== 373381-2.html 373381-2.html
fails-if(Android) random-if(d2d) == 373381-3.html 373381-3.html
-fails == 373381-4.html 373381-4.html
+== 373381-4.html 373381-4.html
== 373383-1.html 373383-1.html
fails == 373433-1.html 373433-1.html
== 373533-1.xhtml 373533-1.xhtml
@@ -671,7 +671,7 @@ fails == 373433-1.html 373433-1.html
== 374038-2.xul 374038-2.xul
random-if(d2d) == 374719-1.xul 374719-1.xul
== 374927-1.html 374927-1.html
-fails == 375508-1.html 375508-1.html
+== 375508-1.html 375508-1.html
== 375716-1.html 375716-1.html
asserts-if(stylo,6) == 375827-1.html 375827-1.html # bug 1324661
fails == 376375-1.html 376375-1.html
@@ -1031,15 +1031,15 @@ fails-if(Android) == 424074-1.xul 424074-1.xul
random-if(gtkWidget) == 424074-1-ref2.xul 424074-1-ref2.xul
== 424236-1.html 424236-1.html
== 424236-2.html 424236-2.html
-fails == 424236-3.html 424236-3.html
+== 424236-3.html 424236-3.html
== 424236-4.html 424236-4.html
-fails == 424236-5.html 424236-5.html
+== 424236-5.html 424236-5.html
== 424236-6.html 424236-6.html
== 424236-7.html 424236-7.html
-fails == 424236-8.html 424236-8.html
-fails == 424236-9.html 424236-9.html
+== 424236-8.html 424236-8.html
+== 424236-9.html 424236-9.html
== 424236-10.html 424236-10.html
-fails == 424236-11.html 424236-11.html
+== 424236-11.html 424236-11.html
asserts-if(stylo,4) == 424434-1.html 424434-1.html # bug 1324661
fails asserts-if(stylo,4) == 424465-1.html 424465-1.html # bug 1324661
== 424631-1.html 424631-1.html
@@ -1431,7 +1431,7 @@ fails HTTP(..) == 518172-1a.html 518172-1a.html
fails == 518172-1b.html 518172-1b.html
fails HTTP(..) == 518172-2a.html 518172-2a.html
fails == 518172-2b.html 518172-2b.html
-fails == 520421-1.html 520421-1.html
+== 520421-1.html 520421-1.html
== 520563-1.xhtml 520563-1.xhtml
fails == 521525-1.html 521525-1.html
== 521525-2.html 521525-2.html
@@ -1939,7 +1939,7 @@ fails == 1174332-1.html 1174332-1.html
== 1179078-1.html 1179078-1.html
== 1179288-1.html 1179288-1.html
== 1190635-1.html 1190635-1.html
-fails == 1202512-1.html 1202512-1.html
+== 1202512-1.html 1202512-1.html
fails == 1202512-2.html 1202512-2.html
== 1207326-1.html 1207326-1.html
== 1209603-1.html 1209603-1.html
diff --git a/layout/reftests/flexbox/reftest-stylo.list b/layout/reftests/flexbox/reftest-stylo.list
index 433fed77d1a9..98ef5ae614d9 100644
--- a/layout/reftests/flexbox/reftest-stylo.list
+++ b/layout/reftests/flexbox/reftest-stylo.list
@@ -34,8 +34,8 @@ fails == flexbox-box-sizing-on-items-vert-1b.html flexbox-box-sizing-on-items-ve
== flexbox-dyn-changeFrameWidth-2.xhtml flexbox-dyn-changeFrameWidth-2.xhtml
== flexbox-dyn-changeFrameWidth-3.xhtml flexbox-dyn-changeFrameWidth-3.xhtml
== flexbox-dyn-changeFrameWidth-4.xhtml flexbox-dyn-changeFrameWidth-4.xhtml
-fails == flexbox-dyn-changeOrder-1a.html flexbox-dyn-changeOrder-1a.html
-fails == flexbox-dyn-changeOrder-1b.html flexbox-dyn-changeOrder-1b.html
+== flexbox-dyn-changeOrder-1a.html flexbox-dyn-changeOrder-1a.html
+== flexbox-dyn-changeOrder-1b.html flexbox-dyn-changeOrder-1b.html
== flexbox-dyn-changePadding-1a.xhtml flexbox-dyn-changePadding-1a.xhtml
== flexbox-dyn-changePadding-1b.xhtml flexbox-dyn-changePadding-1b.xhtml
diff --git a/layout/reftests/forms/input/checkbox/reftest-stylo.list b/layout/reftests/forms/input/checkbox/reftest-stylo.list
index fbf323bc16f0..4fc7027374d9 100644
--- a/layout/reftests/forms/input/checkbox/reftest-stylo.list
+++ b/layout/reftests/forms/input/checkbox/reftest-stylo.list
@@ -4,7 +4,7 @@ fails-if(Android) == radio-stretched.html radio-stretched.html
# == checked.html checked.html
== checked-native.html checked-native.html
# == checked.html checked.html
-fails == checked-notref.html checked-notref.html
+# == checked-notref.html checked-notref.html
== checked-native.html checked-native.html
== checked-native-notref.html checked-native-notref.html
# == indeterminate-checked.html indeterminate-checked.html
diff --git a/layout/reftests/forms/input/radio/reftest-stylo.list b/layout/reftests/forms/input/radio/reftest-stylo.list
index f9ae30233cdb..9d400c092997 100644
--- a/layout/reftests/forms/input/radio/reftest-stylo.list
+++ b/layout/reftests/forms/input/radio/reftest-stylo.list
@@ -3,7 +3,7 @@
# == checked.html checked.html
== checked-native.html checked-native.html
# == checked.html checked.html
-fails == checked-notref.html checked-notref.html
+# == checked-notref.html checked-notref.html
== checked-native.html checked-native.html
== checked-native-notref.html checked-native-notref.html
skip-if(!gtkWidget) == gtk-theme-width-height.html gtk-theme-width-height.html
diff --git a/layout/reftests/image/reftest-stylo.list b/layout/reftests/image/reftest-stylo.list
index 6fff09d58554..387ea9b8e7c4 100644
--- a/layout/reftests/image/reftest-stylo.list
+++ b/layout/reftests/image/reftest-stylo.list
@@ -18,7 +18,7 @@ test-pref(layout.css.object-fit-and-position.enabled,true) == image-object-fit-d
fails test-pref(layout.css.object-fit-and-position.enabled,true) == image-object-fit-with-background-2.html image-object-fit-with-background-2.html
# test-pref(layout.css.object-fit-and-position.enabled,true) == image-object-position-dyn-1.html image-object-position-dyn-1.html
# fails test-pref(layout.css.object-fit-and-position.enabled,true) == image-object-position-with-background-1.html image-object-position-with-background-1.html
-fails == image-object-position-with-background-2.html image-object-position-with-background-2.html
+== image-object-position-with-background-2.html image-object-position-with-background-2.html
# Tests for image-orientation used with 'from-image' (note that all
# image-orientation tests are fuzzy because the JPEG images do not perfectly
diff --git a/layout/reftests/invalidation/reftest-stylo.list b/layout/reftests/invalidation/reftest-stylo.list
index 592aa97d1534..48e456f58c8c 100644
--- a/layout/reftests/invalidation/reftest-stylo.list
+++ b/layout/reftests/invalidation/reftest-stylo.list
@@ -78,7 +78,7 @@ fails pref(layers.single-tile.enabled,false) == fast-scrolling.html fast-scrolli
== background-position-2f.html background-position-2f.html
== zero-opacity-animation.html zero-opacity-animation.html
== zero-opacity-text.html zero-opacity-text.html
-fails == negative-w-component.html negative-w-component.html
+== negative-w-component.html negative-w-component.html
fails == mask-invalidation-1a.html mask-invalidation-1a.html
fails == mask-invalidation-1b.html mask-invalidation-1b.html
diff --git a/layout/reftests/outline/reftest-stylo.list b/layout/reftests/outline/reftest-stylo.list
index 6339f413ef1e..f4de92449102 100644
--- a/layout/reftests/outline/reftest-stylo.list
+++ b/layout/reftests/outline/reftest-stylo.list
@@ -7,7 +7,7 @@
== outline-overflow-block-float.html outline-overflow-block-float.html
== outline-overflow-inlineblock-abspos.html outline-overflow-inlineblock-abspos.html
== outline-overflow-inlineblock-float.html outline-overflow-inlineblock-float.html
-fails == outline-auto-001.html outline-auto-001.html
-fails pref(layout.css.outline-style-auto.enabled,false) == outline-auto-001.html outline-auto-001.html
+== outline-auto-001.html outline-auto-001.html
+pref(layout.css.outline-style-auto.enabled,false) == outline-auto-001.html outline-auto-001.html
== outline-initial-1a.html outline-initial-1a.html
== outline-initial-1b.html outline-initial-1b.html
diff --git a/layout/reftests/reftest-sanity/reftest-stylo.list b/layout/reftests/reftest-sanity/reftest-stylo.list
index 3ba472352813..a6e9fd0e300b 100644
--- a/layout/reftests/reftest-sanity/reftest-stylo.list
+++ b/layout/reftests/reftest-sanity/reftest-stylo.list
@@ -187,7 +187,7 @@ fails == reftest-opaque-layer-fail.html reftest-opaque-layer-fail.html
# reftest-opaque-layer and reftest-wait
fails == reftest-opaque-layer-wait-pass.html reftest-opaque-layer-wait-pass.html
-fails == reftest-opaque-layer-wait-pass.html reftest-opaque-layer-wait-pass.html
+# == reftest-opaque-layer-wait-pass.html reftest-opaque-layer-wait-pass.html
fails == reftest-opaque-layer-wait-fail.html reftest-opaque-layer-wait-fail.html
fails == reftest-opaque-layer-wait-fail.html reftest-opaque-layer-wait-fail.html
diff --git a/layout/reftests/text-shadow/reftest-stylo.list b/layout/reftests/text-shadow/reftest-stylo.list
index 3a3bd9c9418f..dedfbfaff156 100644
--- a/layout/reftests/text-shadow/reftest-stylo.list
+++ b/layout/reftests/text-shadow/reftest-stylo.list
@@ -38,4 +38,4 @@ needs-focus == text-shadow-selected-2.html text-shadow-selected-2.html
needs-focus == text-shadow-on-selection-1.html text-shadow-on-selection-1.html
needs-focus == text-shadow-on-selection-2.html text-shadow-on-selection-2.html
-fails == overflow-decoration.html overflow-decoration.html
+== overflow-decoration.html overflow-decoration.html
diff --git a/layout/reftests/w3c-css/submitted/images3/reftest-stylo.list b/layout/reftests/w3c-css/submitted/images3/reftest-stylo.list
index 4c0aeb12f0ee..01131d99f048 100644
--- a/layout/reftests/w3c-css/submitted/images3/reftest-stylo.list
+++ b/layout/reftests/w3c-css/submitted/images3/reftest-stylo.list
@@ -12,9 +12,9 @@ fails == object-fit-fill-png-002i.html object-fit-fill-png-002i.html
# fails == object-fit-fill-png-002o.html object-fit-fill-png-002o.html
fails == object-fit-fill-png-002p.html object-fit-fill-png-002p.html
fails == object-fit-contain-png-001c.html object-fit-contain-png-001c.html
-fails == object-fit-contain-png-001e.html object-fit-contain-png-001e.html
+# fails == object-fit-contain-png-001e.html object-fit-contain-png-001e.html
fails == object-fit-contain-png-001i.html object-fit-contain-png-001i.html
-fails == object-fit-contain-png-001o.html object-fit-contain-png-001o.html
+# fails == object-fit-contain-png-001o.html object-fit-contain-png-001o.html
fails == object-fit-contain-png-001p.html object-fit-contain-png-001p.html
fails == object-fit-contain-png-002c.html object-fit-contain-png-002c.html
# fails == object-fit-contain-png-002e.html object-fit-contain-png-002e.html
@@ -22,172 +22,172 @@ fails == object-fit-contain-png-002i.html object-fit-contain-png-002i.html
# fails == object-fit-contain-png-002o.html object-fit-contain-png-002o.html
fails == object-fit-contain-png-002p.html object-fit-contain-png-002p.html
fails == object-fit-cover-png-001c.html object-fit-cover-png-001c.html
-fails == object-fit-cover-png-001e.html object-fit-cover-png-001e.html
+# fails == object-fit-cover-png-001e.html object-fit-cover-png-001e.html
fails == object-fit-cover-png-001i.html object-fit-cover-png-001i.html
-fails == object-fit-cover-png-001o.html object-fit-cover-png-001o.html
+# fails == object-fit-cover-png-001o.html object-fit-cover-png-001o.html
fails == object-fit-cover-png-001p.html object-fit-cover-png-001p.html
fails == object-fit-cover-png-002c.html object-fit-cover-png-002c.html
-fails == object-fit-cover-png-002e.html object-fit-cover-png-002e.html
+# fails == object-fit-cover-png-002e.html object-fit-cover-png-002e.html
fails == object-fit-cover-png-002i.html object-fit-cover-png-002i.html
-fails == object-fit-cover-png-002o.html object-fit-cover-png-002o.html
+# fails == object-fit-cover-png-002o.html object-fit-cover-png-002o.html
fails == object-fit-cover-png-002p.html object-fit-cover-png-002p.html
-fails == object-fit-none-png-001c.html object-fit-none-png-001c.html
-fails == object-fit-none-png-001e.html object-fit-none-png-001e.html
-fails == object-fit-none-png-001i.html object-fit-none-png-001i.html
-fails == object-fit-none-png-001o.html object-fit-none-png-001o.html
+== object-fit-none-png-001c.html object-fit-none-png-001c.html
+# == object-fit-none-png-001e.html object-fit-none-png-001e.html
+== object-fit-none-png-001i.html object-fit-none-png-001i.html
+# == object-fit-none-png-001o.html object-fit-none-png-001o.html
fails == object-fit-none-png-001p.html object-fit-none-png-001p.html
-fails == object-fit-none-png-002c.html object-fit-none-png-002c.html
-fails == object-fit-none-png-002e.html object-fit-none-png-002e.html
-fails == object-fit-none-png-002i.html object-fit-none-png-002i.html
-fails == object-fit-none-png-002o.html object-fit-none-png-002o.html
+== object-fit-none-png-002c.html object-fit-none-png-002c.html
+# == object-fit-none-png-002e.html object-fit-none-png-002e.html
+== object-fit-none-png-002i.html object-fit-none-png-002i.html
+# == object-fit-none-png-002o.html object-fit-none-png-002o.html
fails == object-fit-none-png-002p.html object-fit-none-png-002p.html
-fails == object-fit-scale-down-png-001c.html object-fit-scale-down-png-001c.html
-fails == object-fit-scale-down-png-001e.html object-fit-scale-down-png-001e.html
-fails == object-fit-scale-down-png-001i.html object-fit-scale-down-png-001i.html
-fails == object-fit-scale-down-png-001o.html object-fit-scale-down-png-001o.html
+== object-fit-scale-down-png-001c.html object-fit-scale-down-png-001c.html
+# == object-fit-scale-down-png-001e.html object-fit-scale-down-png-001e.html
+== object-fit-scale-down-png-001i.html object-fit-scale-down-png-001i.html
+# == object-fit-scale-down-png-001o.html object-fit-scale-down-png-001o.html
fails == object-fit-scale-down-png-001p.html object-fit-scale-down-png-001p.html
-fails == object-fit-scale-down-png-002c.html object-fit-scale-down-png-002c.html
-fails == object-fit-scale-down-png-002e.html object-fit-scale-down-png-002e.html
-fails == object-fit-scale-down-png-002i.html object-fit-scale-down-png-002i.html
-fails == object-fit-scale-down-png-002o.html object-fit-scale-down-png-002o.html
+== object-fit-scale-down-png-002c.html object-fit-scale-down-png-002c.html
+# == object-fit-scale-down-png-002e.html object-fit-scale-down-png-002e.html
+== object-fit-scale-down-png-002i.html object-fit-scale-down-png-002i.html
+# == object-fit-scale-down-png-002o.html object-fit-scale-down-png-002o.html
fails == object-fit-scale-down-png-002p.html object-fit-scale-down-png-002p.html
# Tests for 'object-fit' / 'object-position' with an SVG image
-fails == object-fit-fill-svg-001e.html object-fit-fill-svg-001e.html
-fails == object-fit-fill-svg-001i.html object-fit-fill-svg-001i.html
-fails == object-fit-fill-svg-001o.html object-fit-fill-svg-001o.html
+== object-fit-fill-svg-001e.html object-fit-fill-svg-001e.html
+== object-fit-fill-svg-001i.html object-fit-fill-svg-001i.html
+== object-fit-fill-svg-001o.html object-fit-fill-svg-001o.html
fails == object-fit-fill-svg-001p.html object-fit-fill-svg-001p.html
-fails == object-fit-fill-svg-002e.html object-fit-fill-svg-002e.html
-fails == object-fit-fill-svg-002i.html object-fit-fill-svg-002i.html
-fails == object-fit-fill-svg-002o.html object-fit-fill-svg-002o.html
+== object-fit-fill-svg-002e.html object-fit-fill-svg-002e.html
+== object-fit-fill-svg-002i.html object-fit-fill-svg-002i.html
+== object-fit-fill-svg-002o.html object-fit-fill-svg-002o.html
fails == object-fit-fill-svg-002p.html object-fit-fill-svg-002p.html
-fails == object-fit-fill-svg-003e.html object-fit-fill-svg-003e.html
-fails == object-fit-fill-svg-003i.html object-fit-fill-svg-003i.html
-fails == object-fit-fill-svg-003o.html object-fit-fill-svg-003o.html
+== object-fit-fill-svg-003e.html object-fit-fill-svg-003e.html
+== object-fit-fill-svg-003i.html object-fit-fill-svg-003i.html
+== object-fit-fill-svg-003o.html object-fit-fill-svg-003o.html
fails == object-fit-fill-svg-003p.html object-fit-fill-svg-003p.html
-fails == object-fit-fill-svg-004e.html object-fit-fill-svg-004e.html
-fails == object-fit-fill-svg-004i.html object-fit-fill-svg-004i.html
-fails == object-fit-fill-svg-004o.html object-fit-fill-svg-004o.html
+== object-fit-fill-svg-004e.html object-fit-fill-svg-004e.html
+== object-fit-fill-svg-004i.html object-fit-fill-svg-004i.html
+== object-fit-fill-svg-004o.html object-fit-fill-svg-004o.html
fails == object-fit-fill-svg-004p.html object-fit-fill-svg-004p.html
-fails == object-fit-fill-svg-005e.html object-fit-fill-svg-005e.html
-fails == object-fit-fill-svg-005i.html object-fit-fill-svg-005i.html
-fails == object-fit-fill-svg-005o.html object-fit-fill-svg-005o.html
+== object-fit-fill-svg-005e.html object-fit-fill-svg-005e.html
+== object-fit-fill-svg-005i.html object-fit-fill-svg-005i.html
+== object-fit-fill-svg-005o.html object-fit-fill-svg-005o.html
fails == object-fit-fill-svg-005p.html object-fit-fill-svg-005p.html
-fails == object-fit-fill-svg-006e.html object-fit-fill-svg-006e.html
-fails == object-fit-fill-svg-006i.html object-fit-fill-svg-006i.html
-fails == object-fit-fill-svg-006o.html object-fit-fill-svg-006o.html
+== object-fit-fill-svg-006e.html object-fit-fill-svg-006e.html
+== object-fit-fill-svg-006i.html object-fit-fill-svg-006i.html
+== object-fit-fill-svg-006o.html object-fit-fill-svg-006o.html
fails == object-fit-fill-svg-006p.html object-fit-fill-svg-006p.html
-fails == object-fit-contain-svg-001e.html object-fit-contain-svg-001e.html
-fails == object-fit-contain-svg-001i.html object-fit-contain-svg-001i.html
-fails == object-fit-contain-svg-001o.html object-fit-contain-svg-001o.html
+== object-fit-contain-svg-001e.html object-fit-contain-svg-001e.html
+== object-fit-contain-svg-001i.html object-fit-contain-svg-001i.html
+== object-fit-contain-svg-001o.html object-fit-contain-svg-001o.html
fails == object-fit-contain-svg-001p.html object-fit-contain-svg-001p.html
-fails == object-fit-contain-svg-002e.html object-fit-contain-svg-002e.html
-fails == object-fit-contain-svg-002i.html object-fit-contain-svg-002i.html
-fails == object-fit-contain-svg-002o.html object-fit-contain-svg-002o.html
+== object-fit-contain-svg-002e.html object-fit-contain-svg-002e.html
+== object-fit-contain-svg-002i.html object-fit-contain-svg-002i.html
+== object-fit-contain-svg-002o.html object-fit-contain-svg-002o.html
fails == object-fit-contain-svg-002p.html object-fit-contain-svg-002p.html
-fails == object-fit-contain-svg-003e.html object-fit-contain-svg-003e.html
-fails == object-fit-contain-svg-003i.html object-fit-contain-svg-003i.html
-fails == object-fit-contain-svg-003o.html object-fit-contain-svg-003o.html
+== object-fit-contain-svg-003e.html object-fit-contain-svg-003e.html
+== object-fit-contain-svg-003i.html object-fit-contain-svg-003i.html
+== object-fit-contain-svg-003o.html object-fit-contain-svg-003o.html
fails == object-fit-contain-svg-003p.html object-fit-contain-svg-003p.html
-fails == object-fit-contain-svg-004e.html object-fit-contain-svg-004e.html
-fails == object-fit-contain-svg-004i.html object-fit-contain-svg-004i.html
-fails == object-fit-contain-svg-004o.html object-fit-contain-svg-004o.html
+== object-fit-contain-svg-004e.html object-fit-contain-svg-004e.html
+== object-fit-contain-svg-004i.html object-fit-contain-svg-004i.html
+== object-fit-contain-svg-004o.html object-fit-contain-svg-004o.html
fails == object-fit-contain-svg-004p.html object-fit-contain-svg-004p.html
-fails == object-fit-contain-svg-005e.html object-fit-contain-svg-005e.html
-fails == object-fit-contain-svg-005i.html object-fit-contain-svg-005i.html
-fails == object-fit-contain-svg-005o.html object-fit-contain-svg-005o.html
+== object-fit-contain-svg-005e.html object-fit-contain-svg-005e.html
+== object-fit-contain-svg-005i.html object-fit-contain-svg-005i.html
+== object-fit-contain-svg-005o.html object-fit-contain-svg-005o.html
fails == object-fit-contain-svg-005p.html object-fit-contain-svg-005p.html
-fails == object-fit-contain-svg-006e.html object-fit-contain-svg-006e.html
-fails == object-fit-contain-svg-006i.html object-fit-contain-svg-006i.html
-fails == object-fit-contain-svg-006o.html object-fit-contain-svg-006o.html
+== object-fit-contain-svg-006e.html object-fit-contain-svg-006e.html
+== object-fit-contain-svg-006i.html object-fit-contain-svg-006i.html
+== object-fit-contain-svg-006o.html object-fit-contain-svg-006o.html
fails == object-fit-contain-svg-006p.html object-fit-contain-svg-006p.html
-fails == object-fit-cover-svg-001e.html object-fit-cover-svg-001e.html
-fails == object-fit-cover-svg-001i.html object-fit-cover-svg-001i.html
-fails == object-fit-cover-svg-001o.html object-fit-cover-svg-001o.html
+== object-fit-cover-svg-001e.html object-fit-cover-svg-001e.html
+== object-fit-cover-svg-001i.html object-fit-cover-svg-001i.html
+== object-fit-cover-svg-001o.html object-fit-cover-svg-001o.html
fails == object-fit-cover-svg-001p.html object-fit-cover-svg-001p.html
-fails == object-fit-cover-svg-002e.html object-fit-cover-svg-002e.html
-fails == object-fit-cover-svg-002i.html object-fit-cover-svg-002i.html
-fails == object-fit-cover-svg-002o.html object-fit-cover-svg-002o.html
+== object-fit-cover-svg-002e.html object-fit-cover-svg-002e.html
+== object-fit-cover-svg-002i.html object-fit-cover-svg-002i.html
+== object-fit-cover-svg-002o.html object-fit-cover-svg-002o.html
fails == object-fit-cover-svg-002p.html object-fit-cover-svg-002p.html
-fails == object-fit-cover-svg-003e.html object-fit-cover-svg-003e.html
-fails == object-fit-cover-svg-003i.html object-fit-cover-svg-003i.html
-fails == object-fit-cover-svg-003o.html object-fit-cover-svg-003o.html
+== object-fit-cover-svg-003e.html object-fit-cover-svg-003e.html
+== object-fit-cover-svg-003i.html object-fit-cover-svg-003i.html
+== object-fit-cover-svg-003o.html object-fit-cover-svg-003o.html
fails == object-fit-cover-svg-003p.html object-fit-cover-svg-003p.html
-fails == object-fit-cover-svg-004e.html object-fit-cover-svg-004e.html
-fails == object-fit-cover-svg-004i.html object-fit-cover-svg-004i.html
-fails == object-fit-cover-svg-004o.html object-fit-cover-svg-004o.html
+== object-fit-cover-svg-004e.html object-fit-cover-svg-004e.html
+== object-fit-cover-svg-004i.html object-fit-cover-svg-004i.html
+== object-fit-cover-svg-004o.html object-fit-cover-svg-004o.html
fails == object-fit-cover-svg-004p.html object-fit-cover-svg-004p.html
-fails == object-fit-cover-svg-005e.html object-fit-cover-svg-005e.html
-fails == object-fit-cover-svg-005i.html object-fit-cover-svg-005i.html
-fails == object-fit-cover-svg-005o.html object-fit-cover-svg-005o.html
+== object-fit-cover-svg-005e.html object-fit-cover-svg-005e.html
+== object-fit-cover-svg-005i.html object-fit-cover-svg-005i.html
+== object-fit-cover-svg-005o.html object-fit-cover-svg-005o.html
fails == object-fit-cover-svg-005p.html object-fit-cover-svg-005p.html
-fails == object-fit-cover-svg-006e.html object-fit-cover-svg-006e.html
-fails == object-fit-cover-svg-006i.html object-fit-cover-svg-006i.html
-fails == object-fit-cover-svg-006o.html object-fit-cover-svg-006o.html
+== object-fit-cover-svg-006e.html object-fit-cover-svg-006e.html
+== object-fit-cover-svg-006i.html object-fit-cover-svg-006i.html
+== object-fit-cover-svg-006o.html object-fit-cover-svg-006o.html
fails == object-fit-cover-svg-006p.html object-fit-cover-svg-006p.html
-fails == object-fit-none-svg-001e.html object-fit-none-svg-001e.html
-fails == object-fit-none-svg-001i.html object-fit-none-svg-001i.html
-fails == object-fit-none-svg-001o.html object-fit-none-svg-001o.html
+== object-fit-none-svg-001e.html object-fit-none-svg-001e.html
+== object-fit-none-svg-001i.html object-fit-none-svg-001i.html
+== object-fit-none-svg-001o.html object-fit-none-svg-001o.html
fails == object-fit-none-svg-001p.html object-fit-none-svg-001p.html
-fails == object-fit-none-svg-002e.html object-fit-none-svg-002e.html
-fails == object-fit-none-svg-002i.html object-fit-none-svg-002i.html
-fails == object-fit-none-svg-002o.html object-fit-none-svg-002o.html
+== object-fit-none-svg-002e.html object-fit-none-svg-002e.html
+== object-fit-none-svg-002i.html object-fit-none-svg-002i.html
+== object-fit-none-svg-002o.html object-fit-none-svg-002o.html
fails == object-fit-none-svg-002p.html object-fit-none-svg-002p.html
-fails == object-fit-none-svg-003e.html object-fit-none-svg-003e.html
-fails == object-fit-none-svg-003i.html object-fit-none-svg-003i.html
-fails == object-fit-none-svg-003o.html object-fit-none-svg-003o.html
+== object-fit-none-svg-003e.html object-fit-none-svg-003e.html
+== object-fit-none-svg-003i.html object-fit-none-svg-003i.html
+== object-fit-none-svg-003o.html object-fit-none-svg-003o.html
fails == object-fit-none-svg-003p.html object-fit-none-svg-003p.html
-fails == object-fit-none-svg-004e.html object-fit-none-svg-004e.html
-fails == object-fit-none-svg-004i.html object-fit-none-svg-004i.html
-fails == object-fit-none-svg-004o.html object-fit-none-svg-004o.html
+== object-fit-none-svg-004e.html object-fit-none-svg-004e.html
+== object-fit-none-svg-004i.html object-fit-none-svg-004i.html
+== object-fit-none-svg-004o.html object-fit-none-svg-004o.html
fails == object-fit-none-svg-004p.html object-fit-none-svg-004p.html
-fails == object-fit-none-svg-005e.html object-fit-none-svg-005e.html
-fails == object-fit-none-svg-005i.html object-fit-none-svg-005i.html
-fails == object-fit-none-svg-005o.html object-fit-none-svg-005o.html
+== object-fit-none-svg-005e.html object-fit-none-svg-005e.html
+== object-fit-none-svg-005i.html object-fit-none-svg-005i.html
+== object-fit-none-svg-005o.html object-fit-none-svg-005o.html
fails == object-fit-none-svg-005p.html object-fit-none-svg-005p.html
-fails == object-fit-none-svg-006e.html object-fit-none-svg-006e.html
-fails == object-fit-none-svg-006i.html object-fit-none-svg-006i.html
-fails == object-fit-none-svg-006o.html object-fit-none-svg-006o.html
+== object-fit-none-svg-006e.html object-fit-none-svg-006e.html
+== object-fit-none-svg-006i.html object-fit-none-svg-006i.html
+== object-fit-none-svg-006o.html object-fit-none-svg-006o.html
fails == object-fit-none-svg-006p.html object-fit-none-svg-006p.html
-fails == object-fit-scale-down-svg-001e.html object-fit-scale-down-svg-001e.html
-fails == object-fit-scale-down-svg-001i.html object-fit-scale-down-svg-001i.html
-fails == object-fit-scale-down-svg-001o.html object-fit-scale-down-svg-001o.html
+== object-fit-scale-down-svg-001e.html object-fit-scale-down-svg-001e.html
+== object-fit-scale-down-svg-001i.html object-fit-scale-down-svg-001i.html
+== object-fit-scale-down-svg-001o.html object-fit-scale-down-svg-001o.html
fails == object-fit-scale-down-svg-001p.html object-fit-scale-down-svg-001p.html
-fails == object-fit-scale-down-svg-002e.html object-fit-scale-down-svg-002e.html
-fails == object-fit-scale-down-svg-002i.html object-fit-scale-down-svg-002i.html
-fails == object-fit-scale-down-svg-002o.html object-fit-scale-down-svg-002o.html
+== object-fit-scale-down-svg-002e.html object-fit-scale-down-svg-002e.html
+== object-fit-scale-down-svg-002i.html object-fit-scale-down-svg-002i.html
+== object-fit-scale-down-svg-002o.html object-fit-scale-down-svg-002o.html
fails == object-fit-scale-down-svg-002p.html object-fit-scale-down-svg-002p.html
-fails == object-fit-scale-down-svg-003e.html object-fit-scale-down-svg-003e.html
-fails == object-fit-scale-down-svg-003i.html object-fit-scale-down-svg-003i.html
-fails == object-fit-scale-down-svg-003o.html object-fit-scale-down-svg-003o.html
+== object-fit-scale-down-svg-003e.html object-fit-scale-down-svg-003e.html
+== object-fit-scale-down-svg-003i.html object-fit-scale-down-svg-003i.html
+== object-fit-scale-down-svg-003o.html object-fit-scale-down-svg-003o.html
fails == object-fit-scale-down-svg-003p.html object-fit-scale-down-svg-003p.html
-fails == object-fit-scale-down-svg-004e.html object-fit-scale-down-svg-004e.html
-fails == object-fit-scale-down-svg-004i.html object-fit-scale-down-svg-004i.html
-fails == object-fit-scale-down-svg-004o.html object-fit-scale-down-svg-004o.html
+== object-fit-scale-down-svg-004e.html object-fit-scale-down-svg-004e.html
+== object-fit-scale-down-svg-004i.html object-fit-scale-down-svg-004i.html
+# == object-fit-scale-down-svg-004o.html object-fit-scale-down-svg-004o.html
fails == object-fit-scale-down-svg-004p.html object-fit-scale-down-svg-004p.html
-fails == object-fit-scale-down-svg-005e.html object-fit-scale-down-svg-005e.html
-fails == object-fit-scale-down-svg-005i.html object-fit-scale-down-svg-005i.html
-fails == object-fit-scale-down-svg-005o.html object-fit-scale-down-svg-005o.html
+== object-fit-scale-down-svg-005e.html object-fit-scale-down-svg-005e.html
+== object-fit-scale-down-svg-005i.html object-fit-scale-down-svg-005i.html
+== object-fit-scale-down-svg-005o.html object-fit-scale-down-svg-005o.html
fails == object-fit-scale-down-svg-005p.html object-fit-scale-down-svg-005p.html
-fails == object-fit-scale-down-svg-006e.html object-fit-scale-down-svg-006e.html
-fails == object-fit-scale-down-svg-006i.html object-fit-scale-down-svg-006i.html
-fails == object-fit-scale-down-svg-006o.html object-fit-scale-down-svg-006o.html
+== object-fit-scale-down-svg-006e.html object-fit-scale-down-svg-006e.html
+== object-fit-scale-down-svg-006i.html object-fit-scale-down-svg-006i.html
+== object-fit-scale-down-svg-006o.html object-fit-scale-down-svg-006o.html
fails == object-fit-scale-down-svg-006p.html object-fit-scale-down-svg-006p.html
-fails == object-position-png-001c.html object-position-png-001c.html
+== object-position-png-001c.html object-position-png-001c.html
# fails == object-position-png-001e.html object-position-png-001e.html
-fails == object-position-png-001i.html object-position-png-001i.html
+== object-position-png-001i.html object-position-png-001i.html
# fails == object-position-png-001o.html object-position-png-001o.html
fails == object-position-png-001p.html object-position-png-001p.html
-fails == object-position-png-002c.html object-position-png-002c.html
+== object-position-png-002c.html object-position-png-002c.html
# fails == object-position-png-002e.html object-position-png-002e.html
-fails == object-position-png-002i.html object-position-png-002i.html
+== object-position-png-002i.html object-position-png-002i.html
# fails == object-position-png-002o.html object-position-png-002o.html
fails == object-position-png-002p.html object-position-png-002p.html
-fails == object-position-svg-001e.html object-position-svg-001e.html
-fails == object-position-svg-001i.html object-position-svg-001i.html
-fails == object-position-svg-001o.html object-position-svg-001o.html
+== object-position-svg-001e.html object-position-svg-001e.html
+== object-position-svg-001i.html object-position-svg-001i.html
+== object-position-svg-001o.html object-position-svg-001o.html
fails == object-position-svg-001p.html object-position-svg-001p.html
# fails == object-position-svg-002e.html object-position-svg-002e.html
-fails == object-position-svg-002i.html object-position-svg-002i.html
-fails == object-position-svg-002o.html object-position-svg-002o.html
+== object-position-svg-002i.html object-position-svg-002i.html
+== object-position-svg-002o.html object-position-svg-002o.html
fails == object-position-svg-002p.html object-position-svg-002p.html
diff --git a/layout/reftests/w3c-css/submitted/text-decor-3/reftest-stylo.list b/layout/reftests/w3c-css/submitted/text-decor-3/reftest-stylo.list
index 7e51c350f6c6..6a08f0a00abb 100644
--- a/layout/reftests/w3c-css/submitted/text-decor-3/reftest-stylo.list
+++ b/layout/reftests/w3c-css/submitted/text-decor-3/reftest-stylo.list
@@ -67,10 +67,10 @@ fails == ruby-text-decoration-01.html ruby-text-decoration-01.html
== text-emphasis-position-property-001a.html text-emphasis-position-property-001a.html
== text-emphasis-position-property-001b.html text-emphasis-position-property-001b.html
== text-emphasis-position-property-001c.html text-emphasis-position-property-001c.html
-fails == text-emphasis-position-property-002.html text-emphasis-position-property-002.html
-fails == text-emphasis-position-property-002a.html text-emphasis-position-property-002a.html
-fails == text-emphasis-position-property-002b.html text-emphasis-position-property-002b.html
-fails == text-emphasis-position-property-002c.html text-emphasis-position-property-002c.html
+== text-emphasis-position-property-002.html text-emphasis-position-property-002.html
+== text-emphasis-position-property-002a.html text-emphasis-position-property-002a.html
+== text-emphasis-position-property-002b.html text-emphasis-position-property-002b.html
+== text-emphasis-position-property-002c.html text-emphasis-position-property-002c.html
== text-emphasis-position-property-003.html text-emphasis-position-property-003.html
== text-emphasis-position-property-003a.html text-emphasis-position-property-003a.html
== text-emphasis-position-property-003b.html text-emphasis-position-property-003b.html
@@ -79,14 +79,14 @@ fails == text-emphasis-position-property-002c.html text-emphasis-position-proper
== text-emphasis-position-property-003e.html text-emphasis-position-property-003e.html
== text-emphasis-position-property-003f.html text-emphasis-position-property-003f.html
== text-emphasis-position-property-003g.html text-emphasis-position-property-003g.html
-fails == text-emphasis-position-property-004.html text-emphasis-position-property-004.html
-fails == text-emphasis-position-property-004a.html text-emphasis-position-property-004a.html
-fails == text-emphasis-position-property-004b.html text-emphasis-position-property-004b.html
-fails == text-emphasis-position-property-004c.html text-emphasis-position-property-004c.html
-fails == text-emphasis-position-property-004d.html text-emphasis-position-property-004d.html
-fails == text-emphasis-position-property-004e.html text-emphasis-position-property-004e.html
-fails == text-emphasis-position-property-004f.html text-emphasis-position-property-004f.html
-fails == text-emphasis-position-property-004g.html text-emphasis-position-property-004g.html
+== text-emphasis-position-property-004.html text-emphasis-position-property-004.html
+== text-emphasis-position-property-004a.html text-emphasis-position-property-004a.html
+== text-emphasis-position-property-004b.html text-emphasis-position-property-004b.html
+== text-emphasis-position-property-004c.html text-emphasis-position-property-004c.html
+== text-emphasis-position-property-004d.html text-emphasis-position-property-004d.html
+== text-emphasis-position-property-004e.html text-emphasis-position-property-004e.html
+== text-emphasis-position-property-004f.html text-emphasis-position-property-004f.html
+== text-emphasis-position-property-004g.html text-emphasis-position-property-004g.html
== text-emphasis-position-property-005.html text-emphasis-position-property-005.html
== text-emphasis-position-property-005a.html text-emphasis-position-property-005a.html
== text-emphasis-position-property-005b.html text-emphasis-position-property-005b.html
@@ -95,38 +95,38 @@ fails == text-emphasis-position-property-004g.html text-emphasis-position-proper
== text-emphasis-position-property-005e.html text-emphasis-position-property-005e.html
== text-emphasis-position-property-005f.html text-emphasis-position-property-005f.html
== text-emphasis-position-property-005g.html text-emphasis-position-property-005g.html
-fails == text-emphasis-position-property-006.html text-emphasis-position-property-006.html
-fails == text-emphasis-position-property-006a.html text-emphasis-position-property-006a.html
-fails == text-emphasis-position-property-006b.html text-emphasis-position-property-006b.html
-fails == text-emphasis-position-property-006c.html text-emphasis-position-property-006c.html
-fails == text-emphasis-position-property-006d.html text-emphasis-position-property-006d.html
-fails == text-emphasis-position-property-006e.html text-emphasis-position-property-006e.html
-fails == text-emphasis-position-property-006f.html text-emphasis-position-property-006f.html
-fails == text-emphasis-position-property-006g.html text-emphasis-position-property-006g.html
+== text-emphasis-position-property-006.html text-emphasis-position-property-006.html
+== text-emphasis-position-property-006a.html text-emphasis-position-property-006a.html
+== text-emphasis-position-property-006b.html text-emphasis-position-property-006b.html
+== text-emphasis-position-property-006c.html text-emphasis-position-property-006c.html
+== text-emphasis-position-property-006d.html text-emphasis-position-property-006d.html
+== text-emphasis-position-property-006e.html text-emphasis-position-property-006e.html
+== text-emphasis-position-property-006f.html text-emphasis-position-property-006f.html
+== text-emphasis-position-property-006g.html text-emphasis-position-property-006g.html
# END tests from support/generate-text-emphasis-position-property-tests.py
# START tests from support/generate-text-emphasis-ruby-tests.py
== text-emphasis-ruby-001.html text-emphasis-ruby-001.html
-fails == text-emphasis-ruby-002.html text-emphasis-ruby-002.html
+== text-emphasis-ruby-002.html text-emphasis-ruby-002.html
== text-emphasis-ruby-003.html text-emphasis-ruby-003.html
== text-emphasis-ruby-003a.html text-emphasis-ruby-003a.html
-fails == text-emphasis-ruby-004.html text-emphasis-ruby-004.html
-fails == text-emphasis-ruby-004a.html text-emphasis-ruby-004a.html
+== text-emphasis-ruby-004.html text-emphasis-ruby-004.html
+== text-emphasis-ruby-004a.html text-emphasis-ruby-004a.html
# END tests from support/generate-text-emphasis-ruby-tests.py
# text-emphasis line height
# START tests from support/generate-text-emphasis-line-height-tests.py
== text-emphasis-line-height-001a.html text-emphasis-line-height-001a.html
== text-emphasis-line-height-001b.html text-emphasis-line-height-001b.html
-fails == text-emphasis-line-height-002a.html text-emphasis-line-height-002a.html
-fails == text-emphasis-line-height-002b.html text-emphasis-line-height-002b.html
+== text-emphasis-line-height-002a.html text-emphasis-line-height-002a.html
+== text-emphasis-line-height-002b.html text-emphasis-line-height-002b.html
== text-emphasis-line-height-003a.html text-emphasis-line-height-003a.html
== text-emphasis-line-height-003b.html text-emphasis-line-height-003b.html
== text-emphasis-line-height-003c.html text-emphasis-line-height-003c.html
== text-emphasis-line-height-003d.html text-emphasis-line-height-003d.html
-fails == text-emphasis-line-height-004a.html text-emphasis-line-height-004a.html
-fails == text-emphasis-line-height-004b.html text-emphasis-line-height-004b.html
-fails == text-emphasis-line-height-004c.html text-emphasis-line-height-004c.html
-fails == text-emphasis-line-height-004d.html text-emphasis-line-height-004d.html
+== text-emphasis-line-height-004a.html text-emphasis-line-height-004a.html
+== text-emphasis-line-height-004b.html text-emphasis-line-height-004b.html
+== text-emphasis-line-height-004c.html text-emphasis-line-height-004c.html
+== text-emphasis-line-height-004d.html text-emphasis-line-height-004d.html
# END tests from support/generate-text-emphasis-line-height-tests.py
fails == text-emphasis-line-height-001z.html text-emphasis-line-height-001z.html
diff --git a/layout/reftests/z-index/reftest-stylo.list b/layout/reftests/z-index/reftest-stylo.list
index 9b5dc4654689..30d0d6ce416c 100644
--- a/layout/reftests/z-index/reftest-stylo.list
+++ b/layout/reftests/z-index/reftest-stylo.list
@@ -1,6 +1,6 @@
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
fails == 480053-1.html 480053-1.html
-fails == z-index-1.html z-index-1.html
+== z-index-1.html z-index-1.html
== stacking-context-yes.html stacking-context-yes.html
# == stacking-context-perspective.html stacking-context-perspective.html
== stacking-context-backface-visibility.html stacking-context-backface-visibility.html
diff --git a/services/sync/modules/engines/bookmarks.js b/services/sync/modules/engines/bookmarks.js
index 2a58c8f623c4..56acabaf0e4f 100644
--- a/services/sync/modules/engines/bookmarks.js
+++ b/services/sync/modules/engines/bookmarks.js
@@ -924,7 +924,8 @@ BookmarksTracker.prototype = {
this._log.debug("Restore succeeded: wiping server and other clients.");
this.engine.service.resetClient([this.name]);
this.engine.service.wipeServer([this.name]);
- this.engine.service.clientsEngine.sendCommand("wipeEngine", [this.name]);
+ this.engine.service.clientsEngine.sendCommand("wipeEngine", [this.name],
+ null, { reason: "bookmark-restore" });
break;
case "bookmarks-restore-failed":
this._log.debug("Tracking all items on failed import.");
diff --git a/services/sync/modules/engines/clients.js b/services/sync/modules/engines/clients.js
index f99a0440468b..0f220e43c272 100644
--- a/services/sync/modules/engines/clients.js
+++ b/services/sync/modules/engines/clients.js
@@ -489,7 +489,7 @@ ClientEngine.prototype = {
* @param args Array of arguments/data for command
* @param clientId Client to send command to
*/
- _sendCommandToClient: function sendCommandToClient(command, args, clientId, flowID = null) {
+ _sendCommandToClient(command, args, clientId, telemetryExtra) {
this._log.trace("Sending " + command + " to " + clientId);
let client = this._store._remoteClients[clientId];
@@ -503,18 +503,19 @@ ClientEngine.prototype = {
let action = {
command,
args,
- flowID: flowID || Utils.makeGUID(), // used for telemetry.
+ // We send the flowID to the other client so *it* can report it in its
+ // telemetry - we record it in ours below.
+ flowID: telemetryExtra.flowID,
};
if (this._addClientCommand(clientId, action)) {
this._log.trace(`Client ${clientId} got a new action`, [command, args]);
this._tracker.addChangedID(clientId);
- let deviceID;
try {
- deviceID = this.service.identity.hashedDeviceID(clientId);
+ telemetryExtra.deviceID = this.service.identity.hashedDeviceID(clientId);
} catch (_) {}
- this.service.recordTelemetryEvent("sendcommand", command, undefined,
- { flowID: action.flowID, deviceID });
+
+ this.service.recordTelemetryEvent("sendcommand", command, undefined, telemetryExtra);
} else {
this._log.trace(`Client ${clientId} got a duplicate action`, [command, args]);
}
@@ -599,7 +600,7 @@ ClientEngine.prototype = {
* A unique identifier used to track success for this operation across
* devices.
*/
- sendCommand: function sendCommand(command, args, clientId, flowID = null) {
+ sendCommand(command, args, clientId = null, telemetryExtra = {}) {
let commandData = this._commands[command];
// Don't send commands that we don't know about.
if (!commandData) {
@@ -612,12 +613,18 @@ ClientEngine.prototype = {
return;
}
+ // We allocate a "flowID" here, so it is used for each client.
+ telemetryExtra = Object.assign({}, telemetryExtra); // don't clobber the caller's object
+ if (!telemetryExtra.flowID) {
+ telemetryExtra.flowID = Utils.makeGUID();
+ }
+
if (clientId) {
- this._sendCommandToClient(command, args, clientId, flowID);
+ this._sendCommandToClient(command, args, clientId, telemetryExtra);
} else {
for (let [id, record] of Object.entries(this._store._remoteClients)) {
if (!record.stale) {
- this._sendCommandToClient(command, args, id, flowID);
+ this._sendCommandToClient(command, args, id, telemetryExtra);
}
}
}
diff --git a/services/sync/modules/service.js b/services/sync/modules/service.js
index 7422361c1c46..bac1c68cd230 100644
--- a/services/sync/modules/service.js
+++ b/services/sync/modules/service.js
@@ -1293,13 +1293,14 @@ Sync11Service.prototype = {
this.wipeServer(engines);
// Only wipe the engines provided.
+ let extra = { reason: "wipe-remote" };
if (engines) {
engines.forEach(function(e) {
- this.clientsEngine.sendCommand("wipeEngine", [e]);
+ this.clientsEngine.sendCommand("wipeEngine", [e], null, extra);
}, this);
} else {
// Tell the remote machines to wipe themselves.
- this.clientsEngine.sendCommand("wipeAll", []);
+ this.clientsEngine.sendCommand("wipeAll", [], null, extra);
}
// Make sure the changed clients get updated.
diff --git a/services/sync/tests/unit/test_clients_engine.js b/services/sync/tests/unit/test_clients_engine.js
index e0ada4207100..3d957445cafb 100644
--- a/services/sync/tests/unit/test_clients_engine.js
+++ b/services/sync/tests/unit/test_clients_engine.js
@@ -379,8 +379,9 @@ add_task(async function test_send_command() {
let action = "testCommand";
let args = ["foo", "bar"];
+ let extra = { flowID: "flowy" }
- engine._sendCommandToClient(action, args, remoteId);
+ engine._sendCommandToClient(action, args, remoteId, extra);
let newRecord = store._remoteClients[remoteId];
let clientCommands = engine._readCommands()[remoteId];
@@ -1426,6 +1427,88 @@ add_task(async function test_command_sync() {
}
});
+add_task(async function ensureSameFlowIDs() {
+ let events = []
+ let origRecordTelemetryEvent = Service.recordTelemetryEvent;
+ Service.recordTelemetryEvent = (object, method, value, extra) => {
+ events.push({ object, method, value, extra });
+ }
+
+ try {
+ // Setup 2 clients, send them a command, and ensure we get to events
+ // written, both with the same flowID.
+ let contents = {
+ meta: {global: {engines: {clients: {version: engine.version,
+ syncID: engine.syncID}}}},
+ clients: {},
+ crypto: {}
+ };
+ let server = serverForUsers({"foo": "password"}, contents);
+ await SyncTestingInfrastructure(server);
+
+ let remoteId = Utils.makeGUID();
+ let remoteId2 = Utils.makeGUID();
+
+ _("Create remote client record 1");
+ server.insertWBO("foo", "clients", new ServerWBO(remoteId, encryptPayload({
+ id: remoteId,
+ name: "Remote client",
+ type: "desktop",
+ commands: [],
+ version: "48",
+ protocols: ["1.5"]
+ }), Date.now() / 1000));
+
+ _("Create remote client record 2");
+ server.insertWBO("foo", "clients", new ServerWBO(remoteId2, encryptPayload({
+ id: remoteId2,
+ name: "Remote client 2",
+ type: "mobile",
+ commands: [],
+ version: "48",
+ protocols: ["1.5"]
+ }), Date.now() / 1000));
+
+ engine._sync();
+ engine.sendCommand("wipeAll", []);
+ engine._sync();
+ equal(events.length, 2);
+ // we don't know what the flowID is, but do know it should be the same.
+ equal(events[0].extra.flowID, events[1].extra.flowID);
+
+ // check it's correctly used when we specify a flow ID
+ events.length = 0;
+ let flowID = Utils.makeGUID();
+ engine.sendCommand("wipeAll", [], null, { flowID });
+ engine._sync();
+ equal(events.length, 2);
+ equal(events[0].extra.flowID, flowID);
+ equal(events[1].extra.flowID, flowID);
+
+ // and that it works when something else is in "extra"
+ events.length = 0;
+ engine.sendCommand("wipeAll", [], null, { reason: "testing" });
+ engine._sync();
+ equal(events.length, 2);
+ equal(events[0].extra.flowID, events[1].extra.flowID);
+ equal(events[0].extra.reason, "testing");
+ equal(events[1].extra.reason, "testing");
+
+ // and when both are specified.
+ events.length = 0;
+ engine.sendCommand("wipeAll", [], null, { reason: "testing", flowID });
+ engine._sync();
+ equal(events.length, 2);
+ equal(events[0].extra.flowID, flowID);
+ equal(events[1].extra.flowID, flowID);
+ equal(events[0].extra.reason, "testing");
+ equal(events[1].extra.reason, "testing");
+
+ } finally {
+ Service.recordTelemetryEvent = origRecordTelemetryEvent;
+ }
+});
+
function run_test() {
initTestLogging("Trace");
Log.repository.getLogger("Sync.Engine.Clients").level = Log.Level.Trace;