Changeset 141119 in webkit
- Timestamp:
- Jan 29, 2013 8:55:32 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r141115 r141119 1 2013-01-29 Alexis Menard <alexis@webkit.org> 2 3 Implement pseudoElement attribute on transition DOM events. 4 https://bugs.webkit.org/show_bug.cgi?id=107986 5 6 Reviewed by Julien Chaffraix. 7 8 Add new tests to cover the feature. 9 10 * fast/css-generated-content/pseudo-transition-event-expected.txt: Added. 11 * fast/css-generated-content/pseudo-transition-event.html: Added. 12 * fast/events/constructors/transition-event-constructor-expected.txt: 13 * fast/events/constructors/transition-event-constructor.html: 14 * fast/events/constructors/webkit-transition-event-constructor-expected.txt: 15 * fast/events/constructors/webkit-transition-event-constructor.html: 16 1 17 2013-01-29 Zan Dobersek <zdobersek@igalia.com> 2 18 -
trunk/LayoutTests/fast/events/constructors/transition-event-constructor-expected.txt
r140448 r141119 8 8 PASS new TransitionEvent('eventType').propertyName is "" 9 9 PASS new TransitionEvent('eventType').elapsedTime is 0 10 PASS new TransitionEvent('eventType').pseudoElement is "" 10 11 PASS new TransitionEvent('eventType', { bubbles: false }).bubbles is false 11 12 PASS new TransitionEvent('eventType', { bubbles: true }).bubbles is true … … 32 33 PASS new TransitionEvent('eventType', { elapsedTime: Infinity }).elapsedTime is Infinity 33 34 PASS new TransitionEvent('eventType', { elapsedTime: -Infinity }).elapsedTime is -Infinity 35 PASS new TransitionEvent('eventType', { pseudoElement: '::before' }).pseudoElement is "::before" 36 PASS new TransitionEvent('eventType', { pseudoElement: '' }).pseudoElement is "" 34 37 PASS new TransitionEvent('eventType', { elapsedTime: undefined }).elapsedTime is NaN 35 38 PASS new TransitionEvent('eventType', { elapsedTime: null }).elapsedTime is 0 … … 43 46 PASS new TransitionEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime is NaN 44 47 PASS new TransitionEvent('eventType', { elapsedTime: {valueOf: function () { return 123.45 } } }).elapsedTime is 123.45 45 PASS new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).bubbles is true 46 PASS new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).cancelable is true 47 PASS new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).propertyName is 'doremi' 48 PASS new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).elapsedTime is 123.45 48 PASS new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).bubbles is true 49 PASS new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).cancelable is true 50 PASS new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).propertyName is 'doremi' 51 PASS new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).elapsedTime is 123.45 52 PASS new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).pseudoElement is '::after' 49 53 PASS successfullyParsed is true 50 54 -
trunk/LayoutTests/fast/events/constructors/transition-event-constructor.html
r140448 r141119 14 14 shouldBeEqualToString("new TransitionEvent('eventType').propertyName", ""); 15 15 shouldBe("new TransitionEvent('eventType').elapsedTime", "0"); 16 shouldBeEqualToString("new TransitionEvent('eventType').pseudoElement", ""); 16 17 17 18 // bubbles is passed. … … 51 52 shouldBe("new TransitionEvent('eventType', { elapsedTime: -Infinity }).elapsedTime", "-Infinity"); 52 53 54 // pseudoElement is passed. 55 // Strings. 56 shouldBeEqualToString("new TransitionEvent('eventType', { pseudoElement: '::before' }).pseudoElement", "::before"); 57 shouldBeEqualToString("new TransitionEvent('eventType', { pseudoElement: '' }).pseudoElement", ""); 58 53 59 // Non-numeric values. 54 60 shouldBe("new TransitionEvent('eventType', { elapsedTime: undefined }).elapsedTime", "NaN"); … … 65 71 66 72 // All initializers are passed. 67 shouldBe("new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).bubbles", "true"); 68 shouldBe("new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).cancelable", "true"); 69 shouldBe("new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).propertyName", "'doremi'"); 70 shouldBe("new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).elapsedTime", "123.45"); 73 shouldBe("new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).bubbles", "true"); 74 shouldBe("new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).cancelable", "true"); 75 shouldBe("new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).propertyName", "'doremi'"); 76 shouldBe("new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).elapsedTime", "123.45"); 77 shouldBe("new TransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).pseudoElement", "'::after'"); 71 78 </script> 72 79 <script src="../../js/resources/js-test-post.js"></script> -
trunk/LayoutTests/fast/events/constructors/webkit-transition-event-constructor-expected.txt
r97225 r141119 8 8 PASS new WebKitTransitionEvent('eventType').propertyName is "" 9 9 PASS new WebKitTransitionEvent('eventType').elapsedTime is 0 10 PASS new WebKitTransitionEvent('eventType').pseudoElement is "" 10 11 PASS new WebKitTransitionEvent('eventType', { bubbles: false }).bubbles is false 11 12 PASS new WebKitTransitionEvent('eventType', { bubbles: true }).bubbles is true … … 32 33 PASS new WebKitTransitionEvent('eventType', { elapsedTime: Infinity }).elapsedTime is Infinity 33 34 PASS new WebKitTransitionEvent('eventType', { elapsedTime: -Infinity }).elapsedTime is -Infinity 35 PASS new WebKitTransitionEvent('eventType', { pseudoElement: '::before' }).pseudoElement is "::before" 36 PASS new WebKitTransitionEvent('eventType', { pseudoElement: '' }).pseudoElement is "" 34 37 PASS new WebKitTransitionEvent('eventType', { elapsedTime: undefined }).elapsedTime is NaN 35 38 PASS new WebKitTransitionEvent('eventType', { elapsedTime: null }).elapsedTime is 0 … … 43 46 PASS new WebKitTransitionEvent('eventType', { elapsedTime: {doremi: 123.45} }).elapsedTime is NaN 44 47 PASS new WebKitTransitionEvent('eventType', { elapsedTime: {valueOf: function () { return 123.45 } } }).elapsedTime is 123.45 45 PASS new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).bubbles is true 46 PASS new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).cancelable is true 47 PASS new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).propertyName is 'doremi' 48 PASS new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).elapsedTime is 123.45 48 PASS new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).bubbles is true 49 PASS new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).cancelable is true 50 PASS new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).propertyName is 'doremi' 51 PASS new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).elapsedTime is 123.45 52 PASS new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).pseudoElement is '::after' 49 53 PASS successfullyParsed is true 50 54 -
trunk/LayoutTests/fast/events/constructors/webkit-transition-event-constructor.html
r98407 r141119 14 14 shouldBeEqualToString("new WebKitTransitionEvent('eventType').propertyName", ""); 15 15 shouldBe("new WebKitTransitionEvent('eventType').elapsedTime", "0"); 16 shouldBeEqualToString("new WebKitTransitionEvent('eventType').pseudoElement", ""); 16 17 17 18 // bubbles is passed. … … 51 52 shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: -Infinity }).elapsedTime", "-Infinity"); 52 53 54 // pseudoElement is passed. 55 // Strings. 56 shouldBeEqualToString("new WebKitTransitionEvent('eventType', { pseudoElement: '::before' }).pseudoElement", "::before"); 57 shouldBeEqualToString("new WebKitTransitionEvent('eventType', { pseudoElement: '' }).pseudoElement", ""); 58 53 59 // Non-numeric values. 54 60 shouldBe("new WebKitTransitionEvent('eventType', { elapsedTime: undefined }).elapsedTime", "NaN"); … … 65 71 66 72 // All initializers are passed. 67 shouldBe("new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).bubbles", "true"); 68 shouldBe("new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).cancelable", "true"); 69 shouldBe("new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).propertyName", "'doremi'"); 70 shouldBe("new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45 }).elapsedTime", "123.45"); 73 shouldBe("new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).bubbles", "true"); 74 shouldBe("new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).cancelable", "true"); 75 shouldBe("new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).propertyName", "'doremi'"); 76 shouldBe("new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).elapsedTime", "123.45"); 77 shouldBe("new WebKitTransitionEvent('eventType', { bubbles: true, cancelable: true, propertyName: 'doremi', elapsedTime: 123.45, pseudoElement: '::after' }).pseudoElement", "'::after'"); 71 78 </script> 72 79 <script src="../../js/resources/js-test-post.js"></script> -
trunk/Source/WebCore/ChangeLog
r141114 r141119 1 2013-01-29 Alexis Menard <alexis@webkit.org> 2 3 Implement pseudoElement attribute on transition DOM events. 4 https://bugs.webkit.org/show_bug.cgi?id=107986 5 6 Reviewed by Julien Chaffraix. 7 8 Implement the pseudoElement attribute documented here : 9 http://dev.w3.org/csswg/css3-transitions/#transition-events. 10 This add a new attribute to the transition DOM event useful when 11 animating pseudo elements. As they are not accessible in JS, it's 12 very useful to get on which pseudo element the transition just ended. 13 This patch adds the new attribute on the IDLs of DOM transition events as well 14 as adding it to the C++ classes representing them. The event 15 dispatching code have been patched to change the target of the event 16 (we can't send the current target as it is the actual DOM 17 representation of the pseudo element). 18 19 Test: fast/css-generated-content/pseudo-transition-event.html 20 21 * dom/EventDispatcher.cpp: 22 (WebCore::eventTargetRespectingTargetRules): Change the target of the 23 event in the case of a pseudo element. We can't expose them through the 24 public interface so the target is the node they belong to. 25 (WebCore::EventDispatcher::ensureEventAncestors): 26 (WebCore::EventDispatcher::dispatchScopedEvent): 27 (WebCore::EventDispatcher::dispatchEvent): 28 (WebCore::EventDispatcher::dispatchEventPostProcess): 29 * dom/EventTarget.cpp: 30 (WebCore::createMatchingPrefixedEvent): 31 * dom/PseudoElement.cpp: 32 (WebCore::PseudoElement::pseudoElementNameForEvents): 33 (WebCore): 34 * dom/PseudoElement.h: 35 * dom/TransitionEvent.cpp: 36 (WebCore::TransitionEventInit::TransitionEventInit): 37 (WebCore::TransitionEvent::TransitionEvent): 38 (WebCore::TransitionEvent::pseudoElement): 39 (WebCore): 40 * dom/TransitionEvent.h: 41 (TransitionEventInit): 42 (WebCore::TransitionEvent::create): 43 (TransitionEvent): 44 * dom/TransitionEvent.idl: 45 * dom/WebKitTransitionEvent.cpp: 46 (WebCore::WebKitTransitionEventInit::WebKitTransitionEventInit): 47 (WebCore::WebKitTransitionEvent::WebKitTransitionEvent): 48 (WebCore::WebKitTransitionEvent::pseudoElement): 49 (WebCore): 50 * dom/WebKitTransitionEvent.h: 51 (WebKitTransitionEventInit): 52 (WebCore::WebKitTransitionEvent::create): 53 (WebKitTransitionEvent): 54 * dom/WebKitTransitionEvent.idl: 55 * page/animation/AnimationController.cpp: 56 (WebCore::AnimationControllerPrivate::fireEventsAndUpdateStyle): Pass 57 the pseudo element name when creating the Event objects. If the element 58 is not a pseudo element then the name will be empty which is what the 59 spec is telling to do. If the element is a pseudo element then the name 60 will be the pseudo element's name with "::" as a prefix. 61 1 62 2013-01-29 Allan Sandfeld Jensen <allan.jensen@digia.com> 2 63 -
trunk/Source/WebCore/dom/EventDispatcher.cpp
r139325 r141119 136 136 } 137 137 138 inline static EventTarget* eventTargetRespecting SVGTargetRules(Node* referenceNode)138 inline static EventTarget* eventTargetRespectingTargetRules(Node* referenceNode) 139 139 { 140 140 ASSERT(referenceNode); 141 142 if (referenceNode->isPseudoElement()) 143 return referenceNode->parentNode(); 141 144 142 145 #if ENABLE(SVG) … … 193 196 Node* node = walker.get(); 194 197 if (targetStack.isEmpty()) 195 targetStack.append(eventTargetRespecting SVGTargetRules(node));198 targetStack.append(eventTargetRespectingTargetRules(node)); 196 199 else if (walker.crossingInsertionPoint()) 197 200 targetStack.append(targetStack.last()); 198 m_ancestors.append(EventContext(node, eventTargetRespecting SVGTargetRules(node), targetStack.last()));201 m_ancestors.append(EventContext(node, eventTargetRespectingTargetRules(node), targetStack.last())); 199 202 if (!inDocument) 200 203 return; … … 213 216 { 214 217 // We need to set the target here because it can go away by the time we actually fire the event. 215 mediator->event()->setTarget(eventTargetRespecting SVGTargetRules(node));218 mediator->event()->setTarget(eventTargetRespectingTargetRules(node)); 216 219 ScopedEventQueue::instance()->enqueueEventDispatchMediator(mediator); 217 220 } … … 254 257 ChildNodesLazySnapshot::takeChildNodesLazySnapshot(); 255 258 256 event->setTarget(eventTargetRespecting SVGTargetRules(m_node.get()));259 event->setTarget(eventTargetRespectingTargetRules(m_node.get())); 257 260 ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden()); 258 261 ASSERT(event->target()); … … 340 343 inline void EventDispatcher::dispatchEventPostProcess(PassRefPtr<Event> event, void* preDispatchEventHandlerResult) 341 344 { 342 event->setTarget(eventTargetRespecting SVGTargetRules(m_node.get()));345 event->setTarget(eventTargetRespectingTargetRules(m_node.get())); 343 346 event->setCurrentTarget(0); 344 347 event->setEventPhase(0); -
trunk/Source/WebCore/dom/EventTarget.cpp
r139922 r141119 166 166 if (event->type() == eventNames().transitionendEvent) { 167 167 const WebKitTransitionEvent* transitionEvent = static_cast<const WebKitTransitionEvent*>(event); 168 RefPtr<Event> prefixedEvent = WebKitTransitionEvent::create(eventNames().webkitTransitionEndEvent, transitionEvent->propertyName(), transitionEvent->elapsedTime() );168 RefPtr<Event> prefixedEvent = WebKitTransitionEvent::create(eventNames().webkitTransitionEndEvent, transitionEvent->propertyName(), transitionEvent->elapsedTime(), transitionEvent->pseudoElement()); 169 169 prefixedEvent->setTarget(event->target()); 170 170 prefixedEvent->setCurrentTarget(event->currentTarget()); -
trunk/Source/WebCore/dom/PseudoElement.cpp
r140452 r141119 38 38 DEFINE_STATIC_LOCAL(QualifiedName, name, (nullAtom, "<pseudo>", nullAtom)); 39 39 return name; 40 } 41 42 String PseudoElement::pseudoElementNameForEvents(PseudoId pseudoId) 43 { 44 DEFINE_STATIC_LOCAL(const String, after, (ASCIILiteral("::after"))); 45 DEFINE_STATIC_LOCAL(const String, before, (ASCIILiteral("::before"))); 46 switch (pseudoId) { 47 case AFTER: 48 return after; 49 case BEFORE: 50 return before; 51 default: 52 return emptyString(); 53 } 40 54 } 41 55 -
trunk/Source/WebCore/dom/PseudoElement.h
r138832 r141119 49 49 virtual bool canContainRangeEndPoint() const OVERRIDE { return false; } 50 50 51 static String pseudoElementNameForEvents(PseudoId); 52 51 53 private: 52 54 PseudoElement(Element*, PseudoId); 53 54 using EventTarget::dispatchEvent;55 virtual bool dispatchEvent(PassRefPtr<Event>) OVERRIDE { return false; }56 55 57 56 virtual void didRecalcStyle(StyleChange) OVERRIDE; -
trunk/Source/WebCore/dom/TransitionEvent.cpp
r140448 r141119 35 35 36 36 TransitionEventInit::TransitionEventInit() 37 : propertyName() 38 , elapsedTime(0) 37 : elapsedTime(0) 39 38 { 40 39 } 41 40 42 41 TransitionEvent::TransitionEvent() 43 : m_propertyName() 44 , m_elapsedTime(0) 42 : m_elapsedTime(0) 45 43 { 46 44 } 47 45 48 TransitionEvent::TransitionEvent(const AtomicString& type, const String& propertyName, double elapsedTime )46 TransitionEvent::TransitionEvent(const AtomicString& type, const String& propertyName, double elapsedTime, const String& pseudoElement) 49 47 : Event(type, true, true) 50 48 , m_propertyName(propertyName) 51 49 , m_elapsedTime(elapsedTime) 50 , m_pseudoElement(pseudoElement) 52 51 { 53 52 } … … 57 56 , m_propertyName(initializer.propertyName) 58 57 , m_elapsedTime(initializer.elapsedTime) 58 , m_pseudoElement(initializer.pseudoElement) 59 59 { 60 60 } … … 74 74 } 75 75 76 const String& TransitionEvent::pseudoElement() const 77 { 78 return m_pseudoElement; 79 } 80 76 81 const AtomicString& TransitionEvent::interfaceName() const 77 82 { -
trunk/Source/WebCore/dom/TransitionEvent.h
r140448 r141119 39 39 String propertyName; 40 40 double elapsedTime; 41 String pseudoElement; 41 42 }; 42 43 … … 47 48 return adoptRef(new TransitionEvent); 48 49 } 49 static PassRefPtr<TransitionEvent> create(const AtomicString& type, const String& propertyName, double elapsedTime )50 static PassRefPtr<TransitionEvent> create(const AtomicString& type, const String& propertyName, double elapsedTime, const String& pseudoElement) 50 51 { 51 return adoptRef(new TransitionEvent(type, propertyName, elapsedTime ));52 return adoptRef(new TransitionEvent(type, propertyName, elapsedTime, pseudoElement)); 52 53 } 53 54 static PassRefPtr<TransitionEvent> create(const AtomicString& type, const TransitionEventInit& initializer) … … 60 61 const String& propertyName() const; 61 62 double elapsedTime() const; 63 const String& pseudoElement() const; 62 64 63 65 virtual const AtomicString& interfaceName() const; … … 65 67 private: 66 68 TransitionEvent(); 67 TransitionEvent(const AtomicString& type, const String& propertyName, double elapsedTime );69 TransitionEvent(const AtomicString& type, const String& propertyName, double elapsedTime, const String& pseudoElement); 68 70 TransitionEvent(const AtomicString& type, const TransitionEventInit& initializer); 69 71 70 72 String m_propertyName; 71 73 double m_elapsedTime; 74 String m_pseudoElement; 72 75 }; 73 76 -
trunk/Source/WebCore/dom/TransitionEvent.idl
r140448 r141119 31 31 [InitializedByEventConstructor] readonly attribute DOMString propertyName; 32 32 [InitializedByEventConstructor] readonly attribute double elapsedTime; 33 [InitializedByEventConstructor] readonly attribute DOMString pseudoElement; 33 34 }; 34 35 -
trunk/Source/WebCore/dom/WebKitTransitionEvent.cpp
r103746 r141119 32 32 33 33 WebKitTransitionEventInit::WebKitTransitionEventInit() 34 : propertyName() 35 , elapsedTime(0) 34 : elapsedTime(0) 36 35 { 37 36 } 38 37 39 38 WebKitTransitionEvent::WebKitTransitionEvent() 40 : m_propertyName() 41 , m_elapsedTime(0) 39 : m_elapsedTime(0) 42 40 { 43 41 } 44 42 45 WebKitTransitionEvent::WebKitTransitionEvent(const AtomicString& type, const String& propertyName, double elapsedTime )43 WebKitTransitionEvent::WebKitTransitionEvent(const AtomicString& type, const String& propertyName, double elapsedTime, const String& pseudoElement) 46 44 : Event(type, true, true) 47 45 , m_propertyName(propertyName) 48 46 , m_elapsedTime(elapsedTime) 47 , m_pseudoElement(pseudoElement) 49 48 { 50 49 } … … 54 53 , m_propertyName(initializer.propertyName) 55 54 , m_elapsedTime(initializer.elapsedTime) 55 , m_pseudoElement(initializer.pseudoElement) 56 56 { 57 57 } … … 71 71 } 72 72 73 const String& WebKitTransitionEvent::pseudoElement() const 74 { 75 return m_pseudoElement; 76 } 77 73 78 const AtomicString& WebKitTransitionEvent::interfaceName() const 74 79 { -
trunk/Source/WebCore/dom/WebKitTransitionEvent.h
r103746 r141119 36 36 String propertyName; 37 37 double elapsedTime; 38 String pseudoElement; 38 39 }; 39 40 … … 44 45 return adoptRef(new WebKitTransitionEvent); 45 46 } 46 static PassRefPtr<WebKitTransitionEvent> create(const AtomicString& type, const String& propertyName, double elapsedTime )47 static PassRefPtr<WebKitTransitionEvent> create(const AtomicString& type, const String& propertyName, double elapsedTime, const String& pseudoElement) 47 48 { 48 return adoptRef(new WebKitTransitionEvent(type, propertyName, elapsedTime ));49 return adoptRef(new WebKitTransitionEvent(type, propertyName, elapsedTime, pseudoElement)); 49 50 } 50 51 static PassRefPtr<WebKitTransitionEvent> create(const AtomicString& type, const WebKitTransitionEventInit& initializer) … … 57 58 const String& propertyName() const; 58 59 double elapsedTime() const; 60 const String& pseudoElement() const; 59 61 60 62 virtual const AtomicString& interfaceName() const; … … 62 64 private: 63 65 WebKitTransitionEvent(); 64 WebKitTransitionEvent(const AtomicString& type, const String& propertyName, double elapsedTime );66 WebKitTransitionEvent(const AtomicString& type, const String& propertyName, double elapsedTime, const String& pseudoElement); 65 67 WebKitTransitionEvent(const AtomicString& type, const WebKitTransitionEventInit& initializer); 66 68 67 69 String m_propertyName; 68 70 double m_elapsedTime; 71 String m_pseudoElement; 69 72 }; 70 73 -
trunk/Source/WebCore/dom/WebKitTransitionEvent.idl
r131172 r141119 29 29 [InitializedByEventConstructor] readonly attribute DOMString propertyName; 30 30 [InitializedByEventConstructor] readonly attribute double elapsedTime; 31 [InitializedByEventConstructor] readonly attribute DOMString pseudoElement; 31 32 }; 32 33 -
trunk/Source/WebCore/page/animation/AnimationController.cpp
r140448 r141119 38 38 #include "Frame.h" 39 39 #include "FrameView.h" 40 #include "PseudoElement.h" 40 41 #include "RenderView.h" 41 42 #include "TransitionEvent.h" … … 181 182 Vector<EventToDispatch>::const_iterator eventsToDispatchEnd = eventsToDispatch.end(); 182 183 for (Vector<EventToDispatch>::const_iterator it = eventsToDispatch.begin(); it != eventsToDispatchEnd; ++it) { 183 if (it->eventType == eventNames().transitionendEvent) 184 Element* element = it->element.get(); 185 if (it->eventType == eventNames().transitionendEvent) { 184 186 #if ENABLE(CSS_TRANSFORMS_ANIMATIONS_TRANSITIONS_UNPREFIXED) 185 it->element->dispatchEvent(TransitionEvent::create(it->eventType, it->name, it->elapsedTime));187 element->dispatchEvent(TransitionEvent::create(it->eventType, it->name, it->elapsedTime, PseudoElement::pseudoElementNameForEvents(element->pseudoId()))); 186 188 #else 187 it->element->dispatchEvent(WebKitTransitionEvent::create(it->eventType, it->name, it->elapsedTime));189 element->dispatchEvent(WebKitTransitionEvent::create(it->eventType, it->name, it->elapsedTime, PseudoElement::pseudoElementNameForEvents(element->pseudoId()))); 188 190 #endif 189 else190 it->element->dispatchEvent(WebKitAnimationEvent::create(it->eventType, it->name, it->elapsedTime));191 } else 192 element->dispatchEvent(WebKitAnimationEvent::create(it->eventType, it->name, it->elapsedTime)); 191 193 } 192 194
Note: See TracChangeset
for help on using the changeset viewer.