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;