Diff
Modified: releases/WebKitGTK/webkit-2.16/LayoutTests/ChangeLog (216410 => 216411)
--- releases/WebKitGTK/webkit-2.16/LayoutTests/ChangeLog 2017-05-08 13:44:59 UTC (rev 216410)
+++ releases/WebKitGTK/webkit-2.16/LayoutTests/ChangeLog 2017-05-08 13:54:49 UTC (rev 216411)
@@ -1,3 +1,18 @@
+2017-05-04 Antti Koivisto <an...@apple.com>
+
+ REGRESSION (Safari 10.1): When 'transition' contains -ms-transform, transform-origin is also transitioned
+ https://bugs.webkit.org/show_bug.cgi?id=171250
+ <rdar://problem/31827243>
+
+ Reviewed by Geoffrey Garen.
+
+ * transitions/transition-unknown-property-ignore-expected.txt: Added.
+ * transitions/transition-unknown-property-ignore.html: Added.
+ * transitions/transitions-parsing-expected.txt:
+ * transitions/transitions-parsing.html:
+
+ Update the roundtrip expectations for unknown properties. The new results match Blink and Gecko.
+
2017-05-04 Dave Hyatt <hy...@apple.com>
REGRESSION(STP): rgb() with calc() containing variables doesn't work
Added: releases/WebKitGTK/webkit-2.16/LayoutTests/transitions/transition-unknown-property-ignore-expected.txt (0 => 216411)
--- releases/WebKitGTK/webkit-2.16/LayoutTests/transitions/transition-unknown-property-ignore-expected.txt (rev 0)
+++ releases/WebKitGTK/webkit-2.16/LayoutTests/transitions/transition-unknown-property-ignore-expected.txt 2017-05-08 13:54:49 UTC (rev 216411)
@@ -0,0 +1,5 @@
+
+
+Transitioning properties:
+transform
+
Added: releases/WebKitGTK/webkit-2.16/LayoutTests/transitions/transition-unknown-property-ignore.html (0 => 216411)
--- releases/WebKitGTK/webkit-2.16/LayoutTests/transitions/transition-unknown-property-ignore.html (rev 0)
+++ releases/WebKitGTK/webkit-2.16/LayoutTests/transitions/transition-unknown-property-ignore.html 2017-05-08 13:54:49 UTC (rev 216411)
@@ -0,0 +1,44 @@
+<style type="text/css">
+.container {
+ transition: -ms-transform 0.1s ease, transform 0.1s ease;
+ transform-origin: 100% 100%;
+}
+
+.container-transform {
+ transform: scale3d(1.3, 1.3, 1);
+ transform-origin: 0% 0%;
+}
+
+.box {
+ width: 100px;
+ height: 100px;
+ background-color: red;
+}
+</style>
+
+<script type='text/_javascript_'>
+
+if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+}
+
+function test() {
+ document.querySelector(".container")._ontransitionend_ = (ev) => {
+ log.innerHTML += ev.propertyName +"<br>";
+ if (window.testRunner)
+ setTimeout(() => testRunner.notifyDone(), 0);
+ }
+ a.parentNode.classList.add('container-transform');
+}
+
+</script>
+
+<body _onload_="test()">
+<div class="container">
+<div id="a" class="box">
+</div>
+</div>
+<br><br>
+Transitioning properties:
+<div id=log></div>
Modified: releases/WebKitGTK/webkit-2.16/LayoutTests/transitions/transitions-parsing-expected.txt (216410 => 216411)
--- releases/WebKitGTK/webkit-2.16/LayoutTests/transitions/transitions-parsing-expected.txt 2017-05-08 13:44:59 UTC (rev 216410)
+++ releases/WebKitGTK/webkit-2.16/LayoutTests/transitions/transitions-parsing-expected.txt 2017-05-08 13:54:49 UTC (rev 216411)
@@ -46,17 +46,17 @@
PASS computedStyle.webkitTransitionProperty is 'font-size, all, color'
Invalid transition-property values.
PASS style.transitionProperty is 'solid, font-size'
-PASS computedStyle.transitionProperty is 'all'
+PASS computedStyle.transitionProperty is 'solid, font-size'
PASS style.webkitTransitionProperty is 'solid, font-size'
-PASS computedStyle.webkitTransitionProperty is 'all'
+PASS computedStyle.webkitTransitionProperty is 'solid, font-size'
PASS style.transitionProperty is 'solid, left'
-PASS computedStyle.transitionProperty is 'all'
+PASS computedStyle.transitionProperty is 'solid, left'
PASS style.webkitTransitionProperty is 'solid, left'
-PASS computedStyle.webkitTransitionProperty is 'all'
+PASS computedStyle.webkitTransitionProperty is 'solid, left'
PASS style.transitionProperty is 'solid'
-PASS computedStyle.transitionProperty is 'all'
+PASS computedStyle.transitionProperty is 'solid'
PASS style.webkitTransitionProperty is 'solid'
-PASS computedStyle.webkitTransitionProperty is 'all'
+PASS computedStyle.webkitTransitionProperty is 'solid'
PASS style.transitionProperty is ''
PASS computedStyle.transitionProperty is 'all'
PASS style.webkitTransitionProperty is ''
@@ -423,9 +423,9 @@
PASS style.webkitTransition is ''
PASS computedStyle.webkitTransition is 'all 0s ease 0s'
PASS style.transition is 'widthFoo'
-PASS computedStyle.transition is 'all 0s ease 0s'
+PASS computedStyle.transition is 'widthFoo 0s ease 0s'
PASS style.webkitTransition is 'widthFoo'
-PASS computedStyle.webkitTransition is 'all 0s ease 0s'
+PASS computedStyle.webkitTransition is 'widthFoo 0s ease 0s'
PASS style.transition is ''
PASS computedStyle.transition is 'all 0s ease 0s'
PASS style.webkitTransition is ''
Modified: releases/WebKitGTK/webkit-2.16/LayoutTests/transitions/transitions-parsing.html (216410 => 216411)
--- releases/WebKitGTK/webkit-2.16/LayoutTests/transitions/transitions-parsing.html 2017-05-08 13:44:59 UTC (rev 216410)
+++ releases/WebKitGTK/webkit-2.16/LayoutTests/transitions/transitions-parsing.html 2017-05-08 13:54:49 UTC (rev 216411)
@@ -90,21 +90,21 @@
style.transitionProperty = "solid, font-size";
shouldBe("style.transitionProperty", "'solid, font-size'");
-shouldBe("computedStyle.transitionProperty", "'all'");
+shouldBe("computedStyle.transitionProperty", "'solid, font-size'");
shouldBe("style.webkitTransitionProperty", "'solid, font-size'");
-shouldBe("computedStyle.webkitTransitionProperty", "'all'");
+shouldBe("computedStyle.webkitTransitionProperty", "'solid, font-size'");
style.transitionProperty = "solid, left";
shouldBe("style.transitionProperty", "'solid, left'");
-shouldBe("computedStyle.transitionProperty", "'all'");
+shouldBe("computedStyle.transitionProperty", "'solid, left'");
shouldBe("style.webkitTransitionProperty", "'solid, left'");
-shouldBe("computedStyle.webkitTransitionProperty", "'all'");
+shouldBe("computedStyle.webkitTransitionProperty", "'solid, left'");
style.transitionProperty = "solid";
shouldBe("style.transitionProperty", "'solid'");
-shouldBe("computedStyle.transitionProperty", "'all'");
+shouldBe("computedStyle.transitionProperty", "'solid'");
shouldBe("style.webkitTransitionProperty", "'solid'");
-shouldBe("computedStyle.webkitTransitionProperty", "'all'");
+shouldBe("computedStyle.webkitTransitionProperty", "'solid'");
style.transitionProperty = '';
@@ -668,9 +668,9 @@
style.transition = "widthFoo";
shouldBe("style.transition", "'widthFoo'");
-shouldBe("computedStyle.transition", "'all 0s ease 0s'");
+shouldBe("computedStyle.transition", "'widthFoo 0s ease 0s'");
shouldBe("style.webkitTransition", "'widthFoo'");
-shouldBe("computedStyle.webkitTransition", "'all 0s ease 0s'");
+shouldBe("computedStyle.webkitTransition", "'widthFoo 0s ease 0s'");
style.transition = '';
Modified: releases/WebKitGTK/webkit-2.16/Source/WebCore/ChangeLog (216410 => 216411)
--- releases/WebKitGTK/webkit-2.16/Source/WebCore/ChangeLog 2017-05-08 13:44:59 UTC (rev 216410)
+++ releases/WebKitGTK/webkit-2.16/Source/WebCore/ChangeLog 2017-05-08 13:54:49 UTC (rev 216411)
@@ -1,3 +1,36 @@
+2017-05-04 Antti Koivisto <an...@apple.com>
+
+ REGRESSION (Safari 10.1): When 'transition' contains -ms-transform, transform-origin is also transitioned
+ https://bugs.webkit.org/show_bug.cgi?id=171250
+ <rdar://problem/31827243>
+
+ Reviewed by Geoffrey Garen.
+
+ We were mapping unknown properties to 'all' animation. With this patch we ignore them instead.
+ The patch also implements roundtripping of unknown properties via CSSOM, matching Blink and Gecko.
+
+ Test: transitions/transition-unknown-property-ignore.html
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::createTransitionPropertyValue):
+
+ Return the correct name for unknown properties.
+
+ * css/CSSToStyleMap.cpp:
+ (WebCore::CSSToStyleMap::mapAnimationProperty):
+
+ Map any unknown property to AnimateUnknownProperty mode instead of falling back to the default of AnimateAll.
+ Save the unknown property name so we can roundtrip it properly.
+
+ * page/animation/CompositeAnimation.cpp:
+ (WebCore::CompositeAnimation::updateTransitions):
+
+ Ignore AnimateUnknownProperty like AnimateNone.
+
+ * platform/animation/Animation.h:
+ (WebCore::Animation::unknownProperty):
+ (WebCore::Animation::setUnknownProperty):
+
2017-05-04 Zalan Bujtas <za...@apple.com>
Should never hit layout while updating the render tree.
Modified: releases/WebKitGTK/webkit-2.16/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (216410 => 216411)
--- releases/WebKitGTK/webkit-2.16/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2017-05-08 13:44:59 UTC (rev 216410)
+++ releases/WebKitGTK/webkit-2.16/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2017-05-08 13:54:49 UTC (rev 216411)
@@ -1190,11 +1190,18 @@
static Ref<CSSValue> createTransitionPropertyValue(const Animation& animation)
{
- if (animation.animationMode() == Animation::AnimateNone)
+ switch (animation.animationMode()) {
+ case Animation::AnimateNone:
return CSSValuePool::singleton().createIdentifierValue(CSSValueNone);
- if (animation.animationMode() == Animation::AnimateAll)
+ case Animation::AnimateAll:
return CSSValuePool::singleton().createIdentifierValue(CSSValueAll);
- return CSSValuePool::singleton().createValue(getPropertyNameString(animation.property()), CSSPrimitiveValue::CSS_STRING);
+ case Animation::AnimateSingleProperty:
+ return CSSValuePool::singleton().createValue(getPropertyNameString(animation.property()), CSSPrimitiveValue::CSS_STRING);
+ case Animation::AnimateUnknownProperty:
+ return CSSValuePool::singleton().createValue(animation.unknownProperty(), CSSPrimitiveValue::CSS_STRING);
+ }
+ ASSERT_NOT_REACHED();
+ return CSSValuePool::singleton().createIdentifierValue(CSSValueNone);
}
static Ref<CSSValueList> transitionPropertyValue(const AnimationList* animationList)
Modified: releases/WebKitGTK/webkit-2.16/Source/WebCore/css/CSSToStyleMap.cpp (216410 => 216411)
--- releases/WebKitGTK/webkit-2.16/Source/WebCore/css/CSSToStyleMap.cpp 2017-05-08 13:44:59 UTC (rev 216410)
+++ releases/WebKitGTK/webkit-2.16/Source/WebCore/css/CSSToStyleMap.cpp 2017-05-08 13:54:49 UTC (rev 216411)
@@ -443,13 +443,21 @@
if (primitiveValue.valueID() == CSSValueAll) {
animation.setAnimationMode(Animation::AnimateAll);
animation.setProperty(CSSPropertyInvalid);
- } else if (primitiveValue.valueID() == CSSValueNone) {
+ return;
+ }
+ if (primitiveValue.valueID() == CSSValueNone) {
animation.setAnimationMode(Animation::AnimateNone);
animation.setProperty(CSSPropertyInvalid);
- } else if (primitiveValue.propertyID() != CSSPropertyInvalid) {
- animation.setAnimationMode(Animation::AnimateSingleProperty);
- animation.setProperty(primitiveValue.propertyID());
+ return;
}
+ if (primitiveValue.propertyID() == CSSPropertyInvalid) {
+ animation.setAnimationMode(Animation::AnimateUnknownProperty);
+ animation.setProperty(CSSPropertyInvalid);
+ animation.setUnknownProperty(primitiveValue.stringValue());
+ return;
+ }
+ animation.setAnimationMode(Animation::AnimateSingleProperty);
+ animation.setProperty(primitiveValue.propertyID());
}
void CSSToStyleMap::mapAnimationTimingFunction(Animation& animation, const CSSValue& value)
Modified: releases/WebKitGTK/webkit-2.16/Source/WebCore/page/animation/CompositeAnimation.cpp (216410 => 216411)
--- releases/WebKitGTK/webkit-2.16/Source/WebCore/page/animation/CompositeAnimation.cpp 2017-05-08 13:44:59 UTC (rev 216410)
+++ releases/WebKitGTK/webkit-2.16/Source/WebCore/page/animation/CompositeAnimation.cpp 2017-05-08 13:54:49 UTC (rev 216411)
@@ -97,7 +97,7 @@
bool isActiveTransition = !m_suspended && (animation.duration() || animation.delay() > 0);
Animation::AnimationMode mode = animation.animationMode();
- if (mode == Animation::AnimateNone)
+ if (mode == Animation::AnimateNone || mode == Animation::AnimateUnknownProperty)
continue;
CSSPropertyID prop = animation.property();
Modified: releases/WebKitGTK/webkit-2.16/Source/WebCore/platform/animation/Animation.h (216410 => 216411)
--- releases/WebKitGTK/webkit-2.16/Source/WebCore/platform/animation/Animation.h 2017-05-08 13:44:59 UTC (rev 216410)
+++ releases/WebKitGTK/webkit-2.16/Source/WebCore/platform/animation/Animation.h 2017-05-08 13:54:49 UTC (rev 216411)
@@ -109,7 +109,7 @@
double delay() const { return m_delay; }
- enum AnimationMode { AnimateAll, AnimateNone, AnimateSingleProperty };
+ enum AnimationMode { AnimateAll, AnimateNone, AnimateSingleProperty, AnimateUnknownProperty };
enum AnimationDirection {
AnimationDirectionNormal,
@@ -130,6 +130,7 @@
Style::ScopeOrdinal nameStyleScopeOrdinal() const { return m_nameStyleScopeOrdinal; }
EAnimPlayState playState() const { return static_cast<EAnimPlayState>(m_playState); }
CSSPropertyID property() const { return m_property; }
+ const String& unknownProperty() const { return m_unknownProperty; }
TimingFunction* timingFunction() const { return m_timingFunction.get(); }
AnimationMode animationMode() const { return m_mode; }
#if ENABLE(CSS_ANIMATIONS_LEVEL_2)
@@ -149,6 +150,7 @@
}
void setPlayState(EAnimPlayState d) { m_playState = d; m_playStateSet = true; }
void setProperty(CSSPropertyID t) { m_property = t; m_propertySet = true; }
+ void setUnknownProperty(const String& property) { m_unknownProperty = property; }
void setTimingFunction(RefPtr<TimingFunction>&& function) { m_timingFunction = WTFMove(function); m_timingFunctionSet = true; }
void setAnimationMode(AnimationMode mode) { m_mode = mode; }
#if ENABLE(CSS_ANIMATIONS_LEVEL_2)
@@ -176,6 +178,7 @@
String m_name;
Style::ScopeOrdinal m_nameStyleScopeOrdinal { Style::ScopeOrdinal::Element };
CSSPropertyID m_property;
+ String m_unknownProperty;
AnimationMode m_mode;
double m_iterationCount;
double m_delay;